aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Peek <mp@FreeBSD.org>2012-02-20 00:53:59 +0000
committerMark Peek <mp@FreeBSD.org>2012-02-20 00:53:59 +0000
commit0bc8d6575fcb65f394796e060efa34444d983b7b (patch)
tree8fac6ecf995bcc87061078175ea5fbbf9c5751ad
parent0019e4ce59d3c558ec308aeb83e80048b72332f6 (diff)
downloadsrc-0bc8d6575fcb65f394796e060efa34444d983b7b.tar.gz
src-0bc8d6575fcb65f394796e060efa34444d983b7b.zip
Import of tcsh-6.18.01vendor/tcsh/6.18.01
Notes
Notes: svn path=/vendor/tcsh/dist/; revision=231921 svn path=/vendor/tcsh/6.18.01/; revision=231922; tag=vendor/tcsh/6.18.01
-rw-r--r--BUGS602
-rw-r--r--Fixes144
-rw-r--r--Imakefile8
-rw-r--r--Makefile.in313
-rw-r--r--Ported23
-rw-r--r--README4
-rw-r--r--WishList11
-rw-r--r--complete.tcsh4
-rwxr-xr-xconfig.guess149
-rw-r--r--config.h.in59
-rwxr-xr-xconfig.sub39
-rw-r--r--config/aix159
-rw-r--r--config/alliant95
-rw-r--r--config/amdahl81
-rw-r--r--config/amiga86
-rw-r--r--config/android110
-rw-r--r--config/apollo85
-rw-r--r--config/bs2000107
-rw-r--r--config/bsd81
-rw-r--r--config/bsd4.45
-rw-r--r--config/bsdreno84
-rw-r--r--config/clipper92
-rw-r--r--config/coh380
-rw-r--r--config/convex91
-rw-r--r--config/cray81
-rw-r--r--config/csos82
-rw-r--r--config/cygwin90
-rw-r--r--config/decosf194
-rw-r--r--config/dgux89
-rw-r--r--config/dgux5.494
-rw-r--r--config/dnix5.383
-rw-r--r--config/emx85
-rw-r--r--config/eta1081
-rw-r--r--config/ews97
-rw-r--r--config/fortune82
-rw-r--r--config/fps50090
-rw-r--r--config/hcx108
-rw-r--r--config/hk6894
-rw-r--r--config/hp-3.280
-rw-r--r--config/hp-5.281
-rw-r--r--config/hpbsd280
-rw-r--r--config/hposf184
-rw-r--r--config/hpux11113
-rw-r--r--config/hpux799
-rw-r--r--config/hpux8100
-rw-r--r--config/iconuxv80
-rw-r--r--config/intel82
-rw-r--r--config/irix144
-rw-r--r--config/irix62140
-rw-r--r--config/isc20282
-rw-r--r--config/isc3.092
-rw-r--r--config/isc4.098
-rw-r--r--config/linux135
-rw-r--r--config/lynx2.184
-rw-r--r--config/mac299
-rw-r--r--config/mach98
-rw-r--r--config/machten94
-rw-r--r--config/masscomp81
-rw-r--r--config/minix101
-rw-r--r--config/mips82
-rw-r--r--config/mtXinu80
-rw-r--r--config/opus86
-rw-r--r--config/os390130
-rw-r--r--config/osf183
-rw-r--r--config/parosf183
-rw-r--r--config/powermaxos92
-rw-r--r--config/pyr82
-rw-r--r--config/pyratt82
-rw-r--r--config/qnx693
-rw-r--r--config/sco+odt84
-rw-r--r--config/sco32v281
-rw-r--r--config/sco32v484
-rw-r--r--config/sco32v599
-rw-r--r--config/sequent121
-rw-r--r--config/sinix97
-rw-r--r--config/sol2106
-rw-r--r--config/sol22106
-rw-r--r--config/sol23112
-rw-r--r--config/sol24112
-rw-r--r--config/sol26112
-rw-r--r--config/sol29119
-rw-r--r--config/stellar81
-rw-r--r--config/sunos3584
-rw-r--r--config/sunos4098
-rw-r--r--config/sunos4198
-rw-r--r--config/sunos41395
-rw-r--r--config/supermax85
-rw-r--r--config/superux890
-rw-r--r--config/sxa96
-rw-r--r--config/sysV6882
-rw-r--r--config/sysV8884
-rw-r--r--config/sysv80
-rw-r--r--config/sysv280
-rw-r--r--config/sysv380
-rw-r--r--config/sysv492
-rw-r--r--config/tc200083
-rw-r--r--config/tekXD8893
-rw-r--r--config/ultrix83
-rw-r--r--config/unixpc82
-rw-r--r--config/uwin79
-rw-r--r--config/vms103
-rw-r--r--config/win32128
-rw-r--r--config/xenix81
-rw-r--r--config_f.h24
-rwxr-xr-xconfigure8591
-rw-r--r--configure.in61
-rw-r--r--cygwin/bindkey.tcsh20
-rw-r--r--cygwin/csh.cshrc82
-rw-r--r--cygwin/csh.login29
-rwxr-xr-xcygwin/postinstall.sh12
-rwxr-xr-xcygwin/preremove.sh2
-rw-r--r--ed.chared.c23
-rw-r--r--ed.inputl.c6
-rw-r--r--ed.refresh.c110
-rw-r--r--ed.screen.c64
-rw-r--r--ed.term.c7
-rw-r--r--gethost.c76
-rw-r--r--glob.c141
-rw-r--r--glob.h2
-rw-r--r--host.defs573
-rwxr-xr-xinstall-sh531
-rw-r--r--nls/C/charset4
-rw-r--r--nls/C/set1912
-rw-r--r--nls/Makefile24
-rw-r--r--nls/Makefile.in119
-rwxr-xr-xnls/catgen12
-rw-r--r--nls/et/charset4
-rw-r--r--nls/et/set1140
-rw-r--r--nls/et/set108
-rw-r--r--nls/et/set116
-rw-r--r--nls/et/set1310
-rw-r--r--nls/et/set144
-rw-r--r--nls/et/set156
-rw-r--r--nls/et/set166
-rw-r--r--nls/et/set1712
-rw-r--r--nls/et/set184
-rw-r--r--nls/et/set1926
-rw-r--r--nls/et/set258
-rw-r--r--nls/et/set2046
-rw-r--r--nls/et/set216
-rw-r--r--nls/et/set2214
-rw-r--r--nls/et/set2312
-rw-r--r--nls/et/set244
-rw-r--r--nls/et/set254
-rw-r--r--nls/et/set2610
-rw-r--r--nls/et/set276
-rw-r--r--nls/et/set3186
-rw-r--r--nls/et/set304
-rw-r--r--nls/et/set446
-rw-r--r--nls/et/set54
-rw-r--r--nls/et/set68
-rw-r--r--nls/et/set724
-rw-r--r--nls/et/set84
-rw-r--r--nls/et/set910
-rw-r--r--nls/finnish/charset4
-rw-r--r--nls/finnish/set1134
-rw-r--r--nls/finnish/set1010
-rw-r--r--nls/finnish/set1110
-rw-r--r--nls/finnish/set124
-rw-r--r--nls/finnish/set1312
-rw-r--r--nls/finnish/set144
-rw-r--r--nls/finnish/set166
-rw-r--r--nls/finnish/set178
-rw-r--r--nls/finnish/set184
-rw-r--r--nls/finnish/set1920
-rw-r--r--nls/finnish/set290
-rw-r--r--nls/finnish/set2022
-rw-r--r--nls/finnish/set2210
-rw-r--r--nls/finnish/set2324
-rw-r--r--nls/finnish/set254
-rw-r--r--nls/finnish/set2610
-rw-r--r--nls/finnish/set274
-rw-r--r--nls/finnish/set294
-rw-r--r--nls/finnish/set3142
-rw-r--r--nls/finnish/set610
-rw-r--r--nls/finnish/set734
-rw-r--r--nls/finnish/set910
-rw-r--r--nls/french/charset4
-rw-r--r--nls/french/set1124
-rw-r--r--nls/french/set106
-rw-r--r--nls/french/set116
-rw-r--r--nls/french/set124
-rw-r--r--nls/french/set1316
-rw-r--r--nls/french/set154
-rw-r--r--nls/french/set166
-rw-r--r--nls/french/set1712
-rw-r--r--nls/french/set184
-rw-r--r--nls/french/set1928
-rw-r--r--nls/french/set2102
-rw-r--r--nls/french/set2060
-rw-r--r--nls/french/set216
-rw-r--r--nls/french/set2214
-rw-r--r--nls/french/set2322
-rw-r--r--nls/french/set254
-rw-r--r--nls/french/set2616
-rw-r--r--nls/french/set276
-rw-r--r--nls/french/set3192
-rw-r--r--nls/french/set3012
-rw-r--r--nls/french/set316
-rw-r--r--nls/french/set430
-rw-r--r--nls/french/set66
-rw-r--r--nls/french/set720
-rw-r--r--nls/french/set84
-rw-r--r--nls/french/set916
-rw-r--r--nls/german/charset4
-rw-r--r--nls/german/set166
-rw-r--r--nls/german/set108
-rw-r--r--nls/german/set134
-rw-r--r--nls/german/set154
-rw-r--r--nls/german/set166
-rw-r--r--nls/german/set176
-rw-r--r--nls/german/set184
-rw-r--r--nls/german/set1912
-rw-r--r--nls/german/set222
-rw-r--r--nls/german/set2010
-rw-r--r--nls/german/set2210
-rw-r--r--nls/german/set2316
-rw-r--r--nls/german/set254
-rw-r--r--nls/german/set266
-rw-r--r--nls/german/set274
-rw-r--r--nls/german/set294
-rw-r--r--nls/german/set3126
-rw-r--r--nls/german/set308
-rw-r--r--nls/german/set318
-rw-r--r--nls/german/set436
-rw-r--r--nls/german/set54
-rw-r--r--nls/german/set66
-rw-r--r--nls/german/set730
-rw-r--r--nls/german/set84
-rw-r--r--nls/german/set96
-rw-r--r--nls/greek/charset4
-rw-r--r--nls/greek/set1270
-rw-r--r--nls/greek/set1012
-rw-r--r--nls/greek/set1116
-rw-r--r--nls/greek/set124
-rw-r--r--nls/greek/set1320
-rw-r--r--nls/greek/set148
-rw-r--r--nls/greek/set1510
-rw-r--r--nls/greek/set168
-rw-r--r--nls/greek/set1724
-rw-r--r--nls/greek/set184
-rw-r--r--nls/greek/set1934
-rw-r--r--nls/greek/set2162
-rw-r--r--nls/greek/set2078
-rw-r--r--nls/greek/set216
-rw-r--r--nls/greek/set2228
-rw-r--r--nls/greek/set2348
-rw-r--r--nls/greek/set256
-rw-r--r--nls/greek/set2622
-rw-r--r--nls/greek/set278
-rw-r--r--nls/greek/set294
-rw-r--r--nls/greek/set3230
-rw-r--r--nls/greek/set3022
-rw-r--r--nls/greek/set3110
-rw-r--r--nls/greek/set486
-rw-r--r--nls/greek/set54
-rw-r--r--nls/greek/set614
-rw-r--r--nls/greek/set756
-rw-r--r--nls/greek/set86
-rw-r--r--nls/greek/set920
-rw-r--r--nls/italian/charset4
-rw-r--r--nls/italian/set118
-rw-r--r--nls/italian/set114
-rw-r--r--nls/italian/set136
-rw-r--r--nls/italian/set154
-rw-r--r--nls/italian/set178
-rw-r--r--nls/italian/set1912
-rw-r--r--nls/italian/set216
-rw-r--r--nls/italian/set2014
-rw-r--r--nls/italian/set228
-rw-r--r--nls/italian/set234
-rw-r--r--nls/italian/set2614
-rw-r--r--nls/italian/set334
-rw-r--r--nls/italian/set304
-rw-r--r--nls/italian/set424
-rw-r--r--nls/italian/set64
-rw-r--r--nls/italian/set718
-rw-r--r--nls/ja/charset4
-rw-r--r--nls/ja/set1272
-rw-r--r--nls/ja/set1012
-rw-r--r--nls/ja/set1116
-rw-r--r--nls/ja/set124
-rw-r--r--nls/ja/set1318
-rw-r--r--nls/ja/set1510
-rw-r--r--nls/ja/set1610
-rw-r--r--nls/ja/set1724
-rw-r--r--nls/ja/set184
-rw-r--r--nls/ja/set2184
-rw-r--r--nls/ja/set216
-rw-r--r--nls/ja/set294
-rw-r--r--nls/ja/set3220
-rw-r--r--nls/ja/set3022
-rw-r--r--nls/ja/set484
-rw-r--r--nls/ja/set54
-rw-r--r--nls/ja/set618
-rw-r--r--nls/ja/set756
-rw-r--r--nls/ja/set86
-rw-r--r--nls/pl/charset4
-rw-r--r--nls/pl/set1180
-rw-r--r--nls/pl/set1010
-rw-r--r--nls/pl/set1114
-rw-r--r--nls/pl/set122
-rw-r--r--nls/pl/set138
-rw-r--r--nls/pl/set142
-rw-r--r--nls/pl/set154
-rw-r--r--nls/pl/set164
-rw-r--r--nls/pl/set1716
-rw-r--r--nls/pl/set182
-rw-r--r--nls/pl/set1922
-rw-r--r--nls/pl/set222
-rw-r--r--nls/pl/set2320
-rw-r--r--nls/pl/set272
-rw-r--r--nls/pl/set312
-rw-r--r--nls/pl/set306
-rw-r--r--nls/pl/set314
-rw-r--r--nls/pl/set52
-rw-r--r--nls/pl/set64
-rw-r--r--nls/pl/set84
-rw-r--r--nls/russian/charset4
-rw-r--r--nls/russian/set1272
-rw-r--r--nls/russian/set1012
-rw-r--r--nls/russian/set1116
-rw-r--r--nls/russian/set124
-rw-r--r--nls/russian/set1316
-rw-r--r--nls/russian/set148
-rw-r--r--nls/russian/set1510
-rw-r--r--nls/russian/set166
-rw-r--r--nls/russian/set1714
-rw-r--r--nls/russian/set184
-rw-r--r--nls/russian/set1916
-rw-r--r--nls/russian/set250
-rw-r--r--nls/russian/set2078
-rw-r--r--nls/russian/set2228
-rw-r--r--nls/russian/set2328
-rw-r--r--nls/russian/set256
-rw-r--r--nls/russian/set2616
-rw-r--r--nls/russian/set2712
-rw-r--r--nls/russian/set294
-rw-r--r--nls/russian/set3018
-rw-r--r--nls/russian/set3110
-rw-r--r--nls/russian/set446
-rw-r--r--nls/russian/set54
-rw-r--r--nls/russian/set618
-rw-r--r--nls/russian/set720
-rw-r--r--nls/russian/set86
-rw-r--r--nls/russian/set98
-rw-r--r--nls/spanish/charset4
-rw-r--r--nls/spanish/set1122
-rw-r--r--nls/spanish/set104
-rw-r--r--nls/spanish/set134
-rw-r--r--nls/spanish/set144
-rw-r--r--nls/spanish/set154
-rw-r--r--nls/spanish/set164
-rw-r--r--nls/spanish/set178
-rw-r--r--nls/spanish/set184
-rw-r--r--nls/spanish/set1926
-rw-r--r--nls/spanish/set296
-rw-r--r--nls/spanish/set2040
-rw-r--r--nls/spanish/set2222
-rw-r--r--nls/spanish/set2328
-rw-r--r--nls/spanish/set254
-rw-r--r--nls/spanish/set268
-rw-r--r--nls/spanish/set276
-rw-r--r--nls/spanish/set3148
-rw-r--r--nls/spanish/set308
-rw-r--r--nls/spanish/set460
-rw-r--r--nls/spanish/set54
-rw-r--r--nls/spanish/set64
-rw-r--r--nls/spanish/set726
-rw-r--r--nls/spanish/set84
-rw-r--r--nls/spanish/set912
-rw-r--r--nls/ukrainian/charset4
-rw-r--r--nls/ukrainian/set1248
-rw-r--r--nls/ukrainian/set1012
-rw-r--r--nls/ukrainian/set1116
-rw-r--r--nls/ukrainian/set124
-rw-r--r--nls/ukrainian/set1318
-rw-r--r--nls/ukrainian/set148
-rw-r--r--nls/ukrainian/set1510
-rw-r--r--nls/ukrainian/set166
-rw-r--r--nls/ukrainian/set1726
-rw-r--r--nls/ukrainian/set184
-rw-r--r--nls/ukrainian/set1922
-rw-r--r--nls/ukrainian/set256
-rw-r--r--nls/ukrainian/set2012
-rw-r--r--nls/ukrainian/set2220
-rw-r--r--nls/ukrainian/set2312
-rw-r--r--nls/ukrainian/set256
-rw-r--r--nls/ukrainian/set2618
-rw-r--r--nls/ukrainian/set2712
-rw-r--r--nls/ukrainian/set294
-rw-r--r--nls/ukrainian/set3012
-rw-r--r--nls/ukrainian/set3110
-rw-r--r--nls/ukrainian/set54
-rw-r--r--nls/ukrainian/set68
-rw-r--r--nls/ukrainian/set712
-rw-r--r--nls/ukrainian/set86
-rw-r--r--nls/ukrainian/set94
-rw-r--r--patchlevel.h8
-rw-r--r--pathnames.h10
-rw-r--r--sh.c223
-rw-r--r--sh.char.c6
-rw-r--r--sh.char.h12
-rw-r--r--sh.decls.h37
-rw-r--r--sh.dir.c20
-rw-r--r--sh.dol.c65
-rw-r--r--sh.err.c114
-rw-r--r--sh.exec.c54
-rw-r--r--sh.exp.c111
-rw-r--r--sh.file.c6
-rw-r--r--sh.func.c138
-rw-r--r--sh.glob.c24
-rw-r--r--sh.h88
-rw-r--r--sh.hist.c1145
-rw-r--r--sh.lex.c32
-rw-r--r--sh.misc.c6
-rw-r--r--sh.parse.c7
-rw-r--r--sh.print.c31
-rw-r--r--sh.proc.c44
-rw-r--r--sh.proc.h4
-rw-r--r--sh.sem.c73
-rw-r--r--sh.set.c100
-rw-r--r--sh.time.c85
-rw-r--r--svn32
-rw-r--r--tc.alloc.c47
-rw-r--r--tc.const.c21
-rw-r--r--tc.decls.h8
-rw-r--r--tc.disc.c6
-rw-r--r--tc.func.c39
-rw-r--r--tc.nls.c32
-rw-r--r--tc.nls.h4
-rw-r--r--tc.os.c43
-rw-r--r--tc.os.h20
-rw-r--r--tc.prompt.c16
-rw-r--r--tc.sig.c18
-rw-r--r--tc.sig.h4
-rw-r--r--tc.str.c101
-rw-r--r--tc.wait.h4
-rw-r--r--tc.who.c166
-rw-r--r--tcsh.man230
-rw-r--r--tcsh.man2html8
-rw-r--r--tcsh.vcproj827
-rw-r--r--tests/aliases.at56
-rw-r--r--tests/arguments.at166
-rw-r--r--tests/commands.at1471
-rw-r--r--tests/expr.at167
-rw-r--r--tests/history.at444
-rw-r--r--tests/lexical.at546
-rw-r--r--tests/mb-eucjp.at97
-rw-r--r--tests/mb-utf8.at97
-rw-r--r--tests/noexec.at141
-rw-r--r--tests/sh.dol.at20
-rw-r--r--tests/subst.at96
-rw-r--r--tests/syntax.at163
-rw-r--r--tests/testsuite.at26
-rw-r--r--tests/variables.at1055
-rw-r--r--tw.color.c7
-rw-r--r--tw.init.c17
-rw-r--r--tw.parse.c142
-rw-r--r--vms.termcap.c29
-rw-r--r--win32/BSDLOGO.BMPbin0 -> 3698 bytes
-rw-r--r--win32/BSDLOGO.ICObin0 -> 766 bytes
-rw-r--r--win32/BSDLOGO.RC2
-rw-r--r--win32/CODING20
-rw-r--r--win32/ChangeLog686
-rw-r--r--win32/Contributors15
-rw-r--r--win32/Makefile.win32285
-rw-r--r--win32/README.NT605
-rw-r--r--win32/WindowsReadme.1st556
-rw-r--r--win32/bogus.c168
-rw-r--r--win32/clip.c570
-rw-r--r--win32/console.c636
-rw-r--r--win32/customstep.cmd7
-rw-r--r--win32/dirent.c364
-rw-r--r--win32/dirent.h72
-rw-r--r--win32/example.tcshrc211
-rw-r--r--win32/fork.c614
-rw-r--r--win32/forkdata.h76
-rw-r--r--win32/globals.c222
-rw-r--r--win32/io.c479
-rw-r--r--win32/msg/Makefile49
-rw-r--r--win32/msg/makerc.pl43
-rw-r--r--win32/msg/makercjp.pl31
-rw-r--r--win32/msg/makercrc.pl35
-rw-r--r--win32/msg/stubdll.c7
-rw-r--r--win32/msg/test.c33
-rw-r--r--win32/nt.bind.c1351
-rw-r--r--win32/nt.char.c127
-rw-r--r--win32/nt.const.c50
-rw-r--r--win32/nt.screen.c539
-rw-r--r--win32/nt.who.c275
-rw-r--r--win32/ntb1.c35
-rw-r--r--win32/ntb2.c34
-rw-r--r--win32/ntfunc.c1207
-rw-r--r--win32/ntport.h511
-rw-r--r--win32/ps.c371
-rw-r--r--win32/signal.c728
-rw-r--r--win32/signal.h125
-rw-r--r--win32/stdio.c628
-rw-r--r--win32/support.c941
-rw-r--r--win32/tcshrc.rc99
-rw-r--r--win32/version.h14
502 files changed, 38796 insertions, 10355 deletions
diff --git a/BUGS b/BUGS
new file mode 100644
index 000000000000..5bfe59500749
--- /dev/null
+++ b/BUGS
@@ -0,0 +1,602 @@
+# $tcsh: BUGS,v 3.5 2006/03/02 18:46:44 christos Exp $
+============
+Bugs in TCSH
+============
+-IAN! idallen@ncf.ca
+April 2002
+
+--------------------------------------------------------------------------------
+| *FIXED*
+| From: idallen
+| Subject: Can't redirect output of "source"
+| % echo "date" >file
+| % source file >output
+| Thu Sep 3 17:47:19 EDT 1987
+--------------------------------------------------------------------------------
+
+From: idallen
+Subject: nice is not cumulative
+ % nice date
+ % nice nice date
+
+ Both have a nice of 4; nice does not accumulate.
+
+From: idallen
+Subject: no warning on integer overflow
+ % @ x=99999999999999999999999
+ % echo $x
+ -159383553
+
+From: idallen
+Subject: goto seeks backwards in terminal input
+ % goto x
+ goto? ignored
+ goto? ignored
+ goto? ignored
+ goto? x:
+ % goto x
+
+ The terminal is now hung - you have to break out.
+
+From: idallen
+Subject: nice applied to too many commands
+ % nice +20 simple `long`
+
+ The CSH shell applies the nice to both commands "simple" and "long".
+
+From: idallen
+Subject: redirection always happens in single-line "if"
+ if ( 0 ) echo hi > date
+
+ The file date is created empty.
+
+From: idallen
+Subject: Expanding variable with newline generates syntax error
+ % set x="abc\
+ def"
+ % echo "$x"
+ Unmatched ".
+
+From: idallen
+Subject: Expanding variable with newline generates extra word
+ % set x="abc\
+ def"
+ % echo $x
+ abc def
+ % set y=( $x ) ; echo $#y
+ 3
+
+From: idallen
+Subject: Modifier ":e" doesn't work on history
+ CSH is missing an entry in a case statement for it.
+
+From: idallen
+Subject: Shell messages appear on stdout; get redirected
+ If a program in a shell script exits with a signal that the shell
+ reports (e.g. Terminated), the report appears on standard output
+ and if the output of the shell script is redirected the report
+ gets sent there and you never find out.
+
+From: Steve Hayman <sahayman>
+Subject: No error message given for failure to NICE
+ % nice -10 date
+ Fri May 30 12:11:12 EDT 1986
+ CSH never checks the error returns from nice().
+
+From: Ray Butterworth <rbutterworth>
+Subject: CSH history reading takes '#' as a comment
+ % echo a b # c d
+ a b # c d
+ % exit
+ % login
+ % history
+ ...
+ 99 echo a b
+
+ '#' indicates a comment when reading from a shell script file,
+ and of course CSH thinks it is reading from a file when it reads
+ the history back in.
+
+From: idallen
+Subject: csh: No current job, even if only one job
+ % somecommand ^Z
+ Suspended
+ % bg
+ [1] somecommand &
+ % fg
+ fg: No current job.
+
+ The C shell always turns off the current job indicator for a job
+ that is put in the background with "bg" -- even if it is the only job.
+
+From: idallen (Ian! D. Allen)
+Subject: Redirection ignored inside if ( { cmd >xxx } ) ....
+ % if ( { date >out } ) echo hi
+ Sun Apr 14 13:24:31 EDT 2002
+ hi
+
+ The shell does not set up its file descriptors for the forked
+ command. The redirection is completely ignored.
+
+>From idallen
+Subject: Error in CSH script causes script exit
+ If a script has an error in a built-in command (e.g. redirection file not
+ found), the script exits instead of continuing.
+
+From: idallen (Ian! D. Allen)
+Subject: Variables $$, $# don't accept :-modifiers
+ echo $$:q $#:q
+ 12345:q 0:q
+
+From: idallen (Ian! D. Allen)
+Subject: Variable $* (a synonym for argv) doesn't accept subscripts.
+ % set argv=( a b c d )
+ % echo $argv[2]
+ b
+ % echo $*[2]
+ echo: No match.
+
+>From idallen
+Subject: Using WHICH from CSH
+ The WHICH command tells the wrong thing if you've created
+ a new file and haven't done a REHASH. WHICH thinks you
+ get the new file, but the CSH will give you the old one.
+
+From: idallen (Ian! D. Allen)
+Subject: Redirected input to built-in functions misbehaves badly
+ % date | echo hi
+ hi
+ % % jobs
+ [1] + Running date |
+
+ Note the duplicate prompt and spurious job entry.
+
+ % % date | echo hi
+ hi
+ % % date | echo hi
+ hi
+ % % jobs
+ [1] + Running date |
+ [2] - Running date |
+ [3] Running date |
+ % fg
+ date |
+ % fg
+ date |
+ fg: No such job (badjob).
+ % fg
+ [tcsh shell hangs here in an infinite loop]
+
+ Just a general mess of mishandled processes.
+
+From: idallen (Ian! D. Allen)
+Subject: stopped pipes generate spurious job ID
+ % date | sleep 99
+ ^Z
+ Suspended
+ [1] 123 456
+
+>From idallen(idallen )
+Subject: NICE and NOHUP have no effect as last component of sub-shells.
+ % nice +10 ps -laxtd0
+ UID PID PPID CP PRI NI RSS WCHAN STAT TT TIME COMMAND
+ 47 3559 1 0 15 0 33 ff000 S d0 0:16 -csh (csh)
+ 47 7606 3559125 76 10 23 R N d0 0:01 ps -laxtd0
+ % (nice +10 ps -laxtd0)
+ UID PID PPID CP PRI NI RSS WCHAN STAT TT TIME COMMAND
+ 47 3559 1 3 15 0 33 ff000 S d0 0:16 -csh (csh)
+ 47 7605 3559 92 48 0 23 R d0 0:01 ps -laxtd0
+
+ % (nice ps lx)
+ ... Shows no nice.
+ % (nice ps lx;date)
+ ... Works.
+ % (nohup sleep 999)&
+ ... Doesn't ignore SIGHUP.
+ % (nohup sleep 999;date)&
+ ... Works.
+ % echo `nice ps lx >/dev/tty`
+ ... Shows no nice.
+ % echo `nice ps lx >/dev/tty;date`
+ ... Works.
+ % echo `nohup sleep 999`
+ ... Doesn't ignore SIGHUP.
+ % echo `nohup sleep 999;date`
+ ... Works.
+
+>From idallen
+Subject: you can't nest back-quotes
+ % echo ` echo \`pwd\` `
+ Unmatched `.
+
+From: idallen (Ian! D. Allen)
+Subject: GLOB not applied to names in setenv or unsetenv
+ % setenv `echo abc` def
+
+ It doesn't set abc, it sets the nasty variable: `echo abc`
+
+ % unsetenv `echo abc def ghi`
+
+ Doesn't unset abc or def or ghi
+
+>From idallen Thu Mar 15 09:48:35 1984
+Subject: Stopping jobs in list of command names throws away the rest.
+ % a ; b ; c
+ CSH documents that if you stop B, C will immediately start.
+ It doesn't. The rest of the list gets thrown away.
+
+From: idallen (Ian! D. Allen)
+Subject: Stopping jobs in source'd file aborts the rest of the file.
+ With the file TEST containing:
+
+ mail
+ echo Hi There you never see this
+
+ and typing
+
+ % source TEST
+
+ and then using ^Z to stop MAIL, the rest of the TEST file is abandoned.
+ This is especially annoying in one's .login or .cshrc.
+
+>From idallen
+Subject: CSH doesn't handle EXIT when it sees it.
+ % date; exit 99 ; date ; date
+ Wed Mar 14 19:21:51 EST 1984
+ Wed Mar 14 19:21:52 EST 1984
+ Wed Mar 14 19:21:53 EST 1984
+
+ The shell doesn't flush pending input when the EXIT is seen.
+ The shell then exits with status 0 instead of status 99.
+
+>From idallen
+Subject: CSH mishandles suspend in subshells.
+ % ( date; suspend; date )
+ Sun Mar 4 01:28:28 EST 1984
+
+ Suspended
+ % fg
+ ( date; suspend; date )
+
+ Suspended (tty input)
+ ...and you can never get it started again.
+
+>From idallenSun Mar 18 01:28:16
+Subject: ECHO mis-handles interrupts and errors in back-quotes
+ % echo `sleep 999`
+ <hit break>
+ [1] 24244
+ % jobs
+ [1] Interrupt ` ... `
+
+ Note the inability of CSH to tell you the command name used inside
+ the back-quotes.
+
+>From idallen
+Subject: CSH botches $#X where X is environment var
+ % echo $#path
+ 4
+ % echo $#PATH
+ /usr/ucb:/bin:/usr/bin:/usr/public
+
+>From idallen Wed Apr 18, 1984
+Subject: Inconsistent handling of variables
+ The manual says that "set x=word" assigns a single word to x.
+ To assign multiple words, one is supposed to use "set x=(words)".
+ But, CSH allows "set x=`date`", which sets x to the many words
+ resulting from `date`, and $x[1] prints "Mon".
+
+ One observes that if x and y are single-word variables, the statements:
+ % set x=word2
+ % set y[1]=word2
+ are identical; both replace the contents of the variable with word2.
+
+ But, you can't assign a word to y[1] if y doesn't exist, even though
+ you can (of course) assign a word to plain "y" if y doesn't exist.
+
+>From idallen(Ian! D. Allen)
+Subject: extra next level when nested single-line IF line ends in THEN
+ Any IF line that ends in THEN is taken as another nesting level, and
+ requires a corresponding ENDIF:
+
+ if ( 0 ) then
+ if ( 0 ) echo This line ends with then
+ endif
+ echo You do not see this.
+ endif # This shouldn't be needed; but it is.
+ echo Now you do.
+
+>From idallen
+Subject: EXEC doesn't close the file descriptors
+
+ /* This program will demonstrate that CSH leaves internal
+ * file descriptors open across an EXEC built-in command.
+ *
+ * % exec ./a.out
+ */
+ main()
+ {
+ int i;
+
+ for( i=0; i < 20; i++ ){
+ printf("%d = %d\n", i, isatty(i) );
+ }
+ }
+
+ The output shows:
+ > exec ./a.out
+ 0 = 1
+ 1 = 1
+ 2 = 1
+ 3 = 1
+ 4 = 1
+ 5 = 1
+ 6 = 0
+ 7 = 0
+ 8 = 0
+ 9 = 0
+ ...
+
+From: idallen
+Subject: can't test success of CD, CHDIR, etc.
+ cd nosuchdir || echo CD failed
+ cd nosuchdir && echo CD failed
+ cd nosuchdir ; echo CD failed
+
+ None of the above work in CSH.
+
+>From idallen Mon Dec 16 21:40:32 1985
+Subject: GLOB loses memory on directories
+ echo /*/*/*
+
+ If you interrupt the above GLOB, CSH loses memory.
+
+From: idallen
+Subject: C Shells don't parse when looking for labels.
+ The shells just look at the first word on each line. You can
+ cause the shell to branch in to the middle of a HERE document:
+
+ #!/bin/csh -f
+ onintr quit
+ sleep 999
+ cat << EOF
+ quit:
+ echo Amazing how this prints.
+ exit 88 # this exit is taken when break is hit
+ EOF
+ quit:
+ echo You never get here.
+
+>From arwhite Thu Aug 26 13:53:58 1982
+Subject: CSH/Bourne shell inconsistent newlines
+ "`command`" deletes newlines from the command in the cshell, not in the
+ Bourne shell.
+
+>From idallen (Ian! D. Allen)
+Subject: aliases aren't seen after redirection
+ % date >x
+ % >x date
+
+ % alias foo date
+ % foo >x
+ % >x foo
+ foo: Command not found.
+
+>From idallen (Ian! D. Allen)
+Subject: $< misbehaves in pipes
+
+ % date | /bin/echo aaa $< bbb
+ abcdef
+ aaa a bbb
+ % bcdef
+ bcdef: Command not found.
+
+>From chris@pixutl.UUCP (chris) Fri Oct 5 14:01:13 1984
+Subject: bug in CSH (history)
+ There are a couple of bugs in the 'history' command of /bin/csh (and
+ offspring, such as newcsh):
+
+ 1) The maximum number of arguments to the history command is set to 2.
+ % history -h -r 2 # fails
+
+>From idallen
+Subject: C Shell expression operators explained
+
+ Some odd CSH context-sensitive features. There is ambiguity on how
+ !~ != and !( should be interpreted:
+
+ 1 - % ~idallen/study # a valid command line
+ 2 - % !~ # doesn't work
+ 3 - % echo " !~ " # no history
+ 4 - % if ( abc !~ def ) echo hi
+
+ 1 - % =xxx # a valid command line
+ 2 - % != # doesn't work
+ 3 - % echo " != " # no history
+ 4 - % if ( 1 != 2 ) echo hi
+
+ 1 - % ( date ) # a valid command line
+ 2 - % !( # doesn't work
+ 3 - % echo " !( " # no history
+ 4 - % if ( !( 1 + 1 ) ) echo hi
+
+ The C Shell parser isn't clever enough to distinguish any of cases 2,
+ 3, or 4, so it always behaves as if the character pair was part of an
+ expression, not a history substitution.
+
+--------------------------------------------------------------------------------
+| *NOT A BUG*
+| >From idallenThu Jun 27 08:20:08 1985
+| Subject: Re: Using > vs. | on shell built-in commands.
+|
+| CSH cannot put the output of the JOBS command into a pipe. In fact,
+| the output is going into the pipe, but the output is empty. You
+| couldn't know this, but these shells implement piped built-in commands
+| by forking the shell to create an independent process for which the
+| main shell can wait. But the internal process table is cleaned
+| out after a fork(), since a forked shell is just like a subshell
+| and must have its own clean process table in which to enter its own
+| running jobs. So by the time the JOBS command executes, it's in a
+| child shell that has no jobs running. Hence, the output is empty.
+| "echo `jobs`" and "( jobs )" are both empty, for the same reason.
+--------------------------------------------------------------------------------
+
+From: jjg@security.UUCP (Jeff Glass)
+Subject: csh and I/O redirection
+
+ put these four lines in a file, say cshtest :
+
+ #! /bin/csh -f
+ cat << END | ( sh & )
+ echo hi there
+ END
+
+ ( the intent is to send some commands to sh to be executed in the
+ background, without csh printing the job number of the sh. )
+
+ now, from csh, enter the command
+
+ source cshtest
+
+ and note that you see the message "hi there".
+ now enter the commands
+
+ chmod +x cshtest
+ ./cshtest
+
+ and you get no output.
+
+ removing either the parentheses or the ampersand causes the message
+ to appear, but not quietly in the background. I don't understand why
+ it works when source'd but not when exec'd, either.
+
+--------------------------------------------------------------------------------
+| *FIXED*
+| From: matt@prism.UUCP
+| Subject: Pointless csh puzzle
+|
+| Here's a pointless little csh puzzle: In the c-shell, it is
+| possible to set and environment variable whose name consist of
+| more than one word, in the obvious way:
+|
+| % setenv "FOO BAR" quux
+|
+| The printenv builtin will show it residing happily in the
+| environment. Now for the puzzle: can anyone find a way to GET
+| TO the value of this variable, using only csh builtins? In
+| other words, is there an <expression> such that
+|
+| % echo <expression>
+|
+| will print "quux" on the screen, where <expression> is formed
+| only from csh commands?
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+| *FIXED*
+| >From tim@ISM780B.UUCP Wed Nov 20 18:00:00 1985
+| Subject: Re: C-shell puzzles
+|
+| Here's another good C shell quirk:
+|
+| $ echo foo
+| foo
+| $ repeat 3 echo foo
+| foo
+| foo
+| foo
+| $ repeat 3 repeat 3 echo foo
+| foo
+| foo
+| foo
+| foo
+| foo
+| $ repeat $N repeat $M echo foo # $N and $M are integers
+| [ $N + $M - 1 foo's ]
+| $ repeat $N1 repeat $N2 ... repeat $Nk echo foo
+| [ $N1 + $N2 + ... + $Nk - k + 1 foo's ]
+| $
+--------------------------------------------------------------------------------
+
+>From pur-ee!uiucdcsb!liberte Mon Dec 30 23:20:31 EST 1985
+Subject: Csh null strings
+
+ There are at least two different-sized null strings in csh.
+ But sometimes they are equal anyway.
+
+ % set x = ""
+ % set y = "`echo`"
+ % echo $#x $#y
+ 1 0
+
+ % set x =
+ % set y = `echo`
+ % echo $#x $#y
+ 1 0
+
+ % set x = ("")
+ % set y = ("`echo`")
+ % echo $#x $#y
+ 1 0
+
+ % set x = ()
+ % set y = (`echo`)
+ % echo $#x $#y
+ 0 0
+
+ % if (() == "`echo`") echo huh
+ % if (() == ("`echo`")) echo huh
+ huh
+ % if ("" == ("`echo`")) echo huh
+ % if ("" == "`echo`") echo "huh?"
+ huh?
+
+
+>On Jul 18, 8:15am, mark@peek.org (Mark Peek) wrote:
+>-- Subject: Updated tcsh-6.12.0 release date?
+>
+>| Hi Christos,
+>| I know I've been (part of) the cause of slipping the release date out
+>| for tcsh-6.12.0. :-) Do you have an updated date for releasing it?
+>| I'm trying to determine whether it will fit in the time frame for
+>| shipment with the next FreeBSD 5.0-DP release.
+>
+>I hope to release it sometime next week. There are only minor changes in it.
+>Is that convenient, or would you like me to push it more?
+
+I sent a note to the FreeBSD release engineers and they're inclined
+to hold off on including the new version in the release which they're
+branching later today. If DP2 slips out a bit they might consider
+including it. I'd say go ahead with your current schedule and I'll
+import it whenever it is available. I definitely will be including it
+into the next -stable FreeBSD 4.7 release.
+
+BTW, one of the release engineers pointed out a bug with using
+jobcmd. If you use the example in the book to update an xterm and
+then run something like
+ grep bar `cat file.list`
+It screws up the xterm title bar containing "Faulty alias 'jobcmd'
+removed" plus the list of files from the cat command.
+
+The good news is that I was able to reproduce this at home last
+night. The bad news is that it is working fine right now here at
+work. Oh wait, let me log in remotely and look at the alias I was
+using...got it! The command fails if you use:
+
+ alias jobcmd 'echo -n "^[]2;\!#^G"'
+
+but works fine if you use: (note the switch of ' and " quotes)
+
+ alias jobcmd "echo -n '^[]2;\!#^G'"
+
+Note: I used the above by vi'ing a file and sourcing it from the shell.
+
+If you can confirm, I think this just needs to be updated in the man page.
+
+>Thanks for all the help BTW...
+
+No problem. I like fixing bugs and contributing code...especially for
+a great piece of software like tcsh that I use *all* the time. Thank
+you for keeping it going!
+
+Mark
diff --git a/Fixes b/Fixes
index c3cae1ef0c97..8eac9d46fed4 100644
--- a/Fixes
+++ b/Fixes
@@ -1,3 +1,147 @@
+ 6. V6.18.01 - 20120214
+ 5. fix interruptible wait again
+ 4. ignore bogus compiler overflow message
+ 3. cleanup ifdefs in utmp code, and provide default array entries
+ 2. Ignore #machine entries in host.defs
+ 1. Detect missing ) in gethost.c (Corinna Vinschen)
+
+104. V6.18.00 - 20120114
+103. remove unused variables.
+102. Make gethost use definitions for x __x__ and __x automatically.
+101. More utmp fixes
+100. V6.17.10 - 20120105
+ 99. Add more FreeBSD/NetBSD machines
+ 98. Add portability wrapper for gencat
+ 97. Fix warning for write in SYSMALLOC systems.
+ 96. V6.17.09 - 20120102
+ 95. revert gencat handling to pre-cygwin fixes (without the env settings)
+ 94. remove stray endutent()
+ 93. V6.17.08 - 20111230
+ 92. Remove - from gencat
+ 91. Provide support for malloc_usable_size() so that linux works again
+ without SYSMALLOC
+ 90. Add support for FreeBSD's utmpx.
+ 89. V6.17.07 - 20111227
+ 88. Fix debian bug #645238: tcsh segfaults when prompt includes %j and
+ there are more than 10 jobs.
+ 87. PR/155: Default $anyerror to set for backward compatibility
+ 86. PR/149: Don't print -1 in %j (Vojtech Vitek)
+ 85. handle -- on chdir commands as the end of options processing so that
+ they can process a directory like -x without resorting to ./-x
+ (Andrew Stevenson)
+ 84. Handle write(2) returning ENOENT from SoFS, thanks ++HAL (Robert Byrnes)
+ 83. PR/38: Null check for jobs (Kurt Miller)
+ 82. Fix spelling correction correcting ./foo -> ../foo2 (jean-luc leger)
+ 81. PR/120: string0 in filetest does not have enough space.
+ 80. V6.17.06 - 20110415
+ 79. PR/110: Add $anyerror to select behavior. Default to the new one.
+ 78. Don't try to spell commands that are correct (Rouben Rostamian)
+ [./tcsh -f; set path=($path 2); mkdir foo2; cd foo2; touch foo;
+ chmod +x foo; set correct=cmd; ./foo -> ../foo]
+ 77. Don't push the syntax struct on the cleanup stack, because on foo;bar
+ if foo fails, we will free bar prematurely (Ben Miller)
+ 76. Avoid infinite loop while trying to print the pid of a dying process
+ to a closed file (Bob Arendt)
+ 75. Handle completion of ${ variables (Anthony Mallet)
+ 74. Add --disable-nls-catalogs (Corinna Vinschen)
+ 73. convert message catalogs to UTF-8 (Werner Fink)
+ 72. check that the NLS path works before setting $NLSPATH.
+ 71. use SYSMALLOC for GLIBC (Werner Fink)
+ 70. use mallinfo for SYSMALLOC (Corinna Vinschen)
+ 69. V6.17.05 - 20110201
+ 68. Use mkstemp() if there for here docs (Werner Fink)
+ 67. Fix handling of errors and exit values in builtins (Werner Fink)
+ 66. Better pty name detection (Werner Fink)
+ 65. Enable NLS catalogs on Cygwin (Corinna Vinschen)
+ 64. NLSPATH handling fixes (Corinna Vinschen)
+ 63. Avoid infrequent exit when tcsh cd's into a non-existent directory
+ https://bugzilla.novell.com/show_bug.cgi?id=293395 (Werner Fink)
+ 62. Don't try to spell check full path binaries that are correct because
+ they can cause hangs when other nfs partitions are hung. (Werner Fink)
+ 61. Avoid nested interrupts when exiting causing history writing to fail
+ https://bugzilla.novell.com/show_bug.cgi?id=331627 (Werner Fink)
+ 60. Instead of giving an error or ignoring lines with missing eol at eof,
+ process them.
+ 59. Avoid leaking fd's in mail check (Werner Fink)
+ 58. Add cygwin_xcrypt() (Corinna Vinschen)
+ 57. Recognize i686 (Corinna Vinschen)
+ 56. Rename cygwin32 to cygwin and bring it up-to-date with modern cygwin
+ settings (Corinna Vinschen)
+ 55. Avoid double slashes in cdpath (Corinna Vinschen)
+ 54. V6.17.04 - 20110118
+ 53. Revert PR/110, breaks the test suite.
+ 52. V6.17.03 - 20110117
+ 51. PR/102: Complain on input files with missing trailing \n
+ 50. PR/104: If atime == mtime we don't have new mail.
+ 49. PR/113: Don't allow illegal variable names to be set.
+ 48. PR/112: don't set $REMOTEHOST on the local machine.
+ 47. PR/110: exit status of the pipeline should be the status of the last
+ command.
+ 46. Android support (Corinna Vinschen)
+ 45. Add AUTOSET_KANJI which works around the Shift-JIS encoding that
+ translates unshifted 7 bit ASCII (Werner Fink)
+ 44. Handle mb{r,}towc() returning 0 by setting the return value to NUL
+ (Jean-Luc Leger)
+ 43. PR/109: make wait interruptible (Vojtech Vitek)
+ 42. resource limit fixes: signed vs. unsigned, megabyte issue, doc issues
+ (Robert Byrnes)
+ 41. remove .bat and .cmd handling for executables on cygwin (Corinna Vinschen)
+ 40. Don't echo history while history -L or history -M
+ 39. Check for EOS before ** from Greg Dionne
+ 38. Don't fork in backeval from Bryan Mason
+ 37. Better globstar support from Greg Dionne
+ 36. Error out when processing the last incomplete line instead of silently
+ ignoring it (Anders Kaseorg)
+ 35. Fix SEGV from echo ``
+ 34. Better fixes for histchars and promptchars (nargs)
+ 33. Fix win32 issue calling fmalloc/ffree from non-thread-safe context.
+ (Fabio Fabbri)
+ 32. V6.17.02 - 20100512
+ 31. PR/79: nargs: Better handling for promptchars.
+ 30. PR/97: Add parseoctal to retain compatibility with previous versions (Jim
+ Zajkowski)
+ 29. PR/84: Performance fixes for large history merges (add
+ hashtable (Ted Anderson)
+ 28. Revert previous #23; people should use $histlit if they want this
+ feature.
+ 27. Don't kill "hup" background jobs when a child of the shell exits.
+ From Debian.
+ 26. Ignore \r\n in the command line options for OS's that don't strip
+ these from #!; from Debian
+ 25. Fix enhanced missing patch (Greg Dionne)
+ 24. Callers of rt_mbtowc don't grok -2 as a return. Return -1 for now.
+ (Corinna Vinschen)
+ 23. Turn HistLit on while recording history to avoid \!\! losing its \.
+ From Debian
+ 22. set autoexpand; set histchars="";\n<tab> crash. From Debian
+ 21. V6.17.01 - 20100506
+ 20. unset verbose while we are reading the history file to avoid echoing
+ to the terminal. (Jeffrey Bastian)
+ 19. globstar addition, Enhance addition, euid, euser, gid variables
+ (Greg Dionne)
+ 18. Make 'e' in vi mode work like 'b' - use wordchars (Alistair Crooks)
+ 17. Handle UTF-16 surrogates (Corinna Vinschen)
+ 16. Make tcsh work on systems where sizeof(wchar_t) == 2 (Corinna Vinschen)
+ 15. Better support for Solaris >= 2.9 (Thomas Uhle)
+ 14. Change internal expression calculations to long long so that we can
+ deal with > 32 bit time, inodes, uids, file sizes etc.
+ 13. Add new linux resource limits.
+ 12. Don't print 'Exit X' when printexitvalue is set in `` expressions
+ (Jeff Bastian)
+ 11. Add more LS_COLORS vars (M.H. Anderson)
+ 10. Reduce whitespace in Makefile (Don Estabrook)
+ 9. Manual page fixes (Alan R. S. Bueno)
+ 8. Remove history in loops bug from the documentation (Holger Weiss)
+ 7. Add autorehash (Holger Weiss)
+ 6. Add history.at (Ted Anderson)
+ 5. Better NLSPATH handling (Norm Jacobs)
+ 4. Fix hostname building from utmp (Cyrus Rahman)
+ 3. Handle pending signals before flush so that the the history file does
+ not get truncated. (Ted Anderson)
+ 2. Fix AsciiOnly setting that broke 8 bit input. (Juergen Keil)
+ 1. remember to closedir in mailchk (from Werner Fink, reported by
+ David Binderman)
+
21. V6.17.00 - 20090710
20. Fix dataroot autoconf issue.
19. Fix directory stuff for unit tests.
diff --git a/Imakefile b/Imakefile
index 3855ff95ccfd..7bedd7182636 100644
--- a/Imakefile
+++ b/Imakefile
@@ -1,5 +1,5 @@
XCOMM
-XCOMM $tcsh: Imakefile,v 1.86 2007/03/19 23:25:02 christos Exp $
+XCOMM $tcsh: Imakefile,v 1.87 2010/01/28 19:01:05 christos Exp $
XCOMM
XCOMM Imakefile for tcsh 6.12
XCOMM Marc Horowitz, MIT SIPB
@@ -93,7 +93,11 @@ ones. Please send in your fixes and additions! */
# if (OSMinorVersion < 6)
# define ConfigH sol24
# else
-# define ConfigH sol26
+# if (OSMinorVersion < 9)
+# define ConfigH sol26
+# else
+# define ConfigH sol29
+# endif
# endif
# endif
# endif
diff --git a/Makefile.in b/Makefile.in
index 784e4092964a..cff1487ee070 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,4 +1,4 @@
-# $tcsh: Makefile.in,v 3.40 2009/06/24 22:09:05 christos Exp $
+# $tcsh: Makefile.in,v 3.49 2011/02/05 17:35:31 christos Exp $
# Makefile.in 4.3 6/11/83
#
# C Shell with process control; VM/UNIX VAX Makefile
@@ -26,22 +26,27 @@ CF=-c
CPPFLAGS=-I. -I$(srcdir)
LFLAGS=
-#LFLAGS= -Zn10000 # hpux lint
+# hpux lint
+#LFLAGS= -Zn10000
-CFLAGS = @CFLAGS@ # This is set by autoconf.
-#CFLAGS= -g # debug
-#CFLAGS= -O # production
-#CFLAGS= # Broken optimizers....
+# This is set by autoconf:
+CFLAGS = @CFLAGS@
+# debug:
+#CFLAGS= -g
+# production:
+#CFLAGS= -O
+# Broken optimizers....
+#CFLAGS=
#CFLAGS= -g -pg -DPROF
#CFLAGS= -O -pg -DPROF
# gcc 1.00-1.37
-#CFLAGS= -O -finline-functions -fstrength-reduce
+#CFLAGS= -O -finline-functions -fstrength-reduce
# gcc 1.37-1.40
-#CFLAGS= -O -fcombine-regs -finline-functions -fstrength-reduce
+#CFLAGS= -O -fcombine-regs -finline-functions -fstrength-reduce
# add -msoft-float for 68881 machines.
# gcc 2.0
@@ -67,8 +72,10 @@ CFLAGS = @CFLAGS@ # This is set by autoconf.
#CFLAGS= -O -Mnodebug -Mnoperfmon
# DEC Alpha OSF/1
-#CFLAGS= -O2 -Olimit 2000 ## Normal Optimization
-#CFLAGS= -O3 -Olimit 2000 ## Full Optimization - may not work
+## Normal Optimization
+#CFLAGS= -O2 -Olimit 2000
+## Full Optimization - may not work
+#CFLAGS= -O3 -Olimit 2000
#CF=-j
#SUF=u
#.SUFFIXES: .u
@@ -77,7 +84,8 @@ CFLAGS = @CFLAGS@ # This is set by autoconf.
# global optimizer! (-O3).
# On SGI 4.0+ you need to add -D__STDC__ too.
#CFLAGS= -O3
-#CFLAGS= -O3 -Olimit 2000 ## Ultrix 4.2a
+## Ultrix 4.2a
+#CFLAGS= -O3 -Olimit 2000
#CF=-j
#SUF=u
#.SUFFIXES: .u ## Ultrix and gnu-make need that
@@ -110,14 +118,14 @@ CFLAGS = @CFLAGS@ # This is set by autoconf.
# CFLAGS= -O3
# SINIX RMx00
-#CFLAGS= -O # -D_POSIX_SOURCE # -kansi
+#CFLAGS= -O# -D_POSIX_SOURCE# -kansi
# Apollo's with cc [apollo builtins don't work with gcc]
# and apollo should not define __STDC__ if it does not have
# the standard header files. RT's (aos4.3) need that too;
# you might want to skip the -O on the rt's... Not very wise.
# AIX/ESA needs -D_IBMESA on command line (this may disappear by GA)
-#DFLAGS=-U__STDC__
+#DFLAGS=-U__STDC__
#DFLAGS=-D_IBMESA
# On aix2.2.1 we need more compiler space.
#DFLAGS=-Nd4000 -Nn3000
@@ -142,17 +150,25 @@ DFLAGS = -D_PATH_TCSHELL='"${bindir}/tcsh"' @DFLAGS@ @CPPFLAGS@
################################################################
## LDFLAGS. Define something here if you need to
################################################################
-LDFLAGS= @LDFLAGS@ ## This is set by autoconf.
-#LDFLAGS= ## The simplest, suitable for all.
-#LDFLAGS= -s ## Stripped. Takes less space on disk.
-#LDFLAGS= -s -n ## Pure executable. Spares paging over
-# ## the network for machines with local
-# ## swap but external /usr/local/bin .
-#LDFLAGS= -s -n -Bstatic ## Without dynamic linking. (SunOS/cc)
-#LDFLAGS= -s -n -static ## Without dynamic linking. (SunOS/gcc)
-#LDFLAGS= -Wl,-s,-n ## Stripped, shared text (Unicos)
-#LDFLAGS= -s -static ## Link statically. (linux)
-#LDFLAGS= -s -N ## Impure executable (linux)
+## This is set by autoconf:
+LDFLAGS= @LDFLAGS@
+## The simplest, suitable for all.
+#LDFLAGS=
+## Stripped. Takes less space on disk.
+#LDFLAGS= -s
+## Pure executable. Spares paging over the network for machines with
+## local swap but external /usr/local/bin .
+#LDFLAGS= -s -n
+## Without dynamic linking. (SunOS/cc)
+#LDFLAGS= -s -n -Bstatic
+## Without dynamic linking. (SunOS/gcc)
+#LDFLAGS= -s -n -static
+## Stripped, shared text (Unicos)
+#LDFLAGS= -Wl,-s,-n
+## Link statically. (linux)
+#LDFLAGS= -s -static
+## Impure executable (linux)
+#LDFLAGS= -s -N
################################################################
## SBINLDFLAGS. Flags to build a tcsh suitable for installation in
@@ -164,53 +180,100 @@ SBINLDFLAGS=-Wl,-R/etc/lib,-I/etc/lib/ld.so.1,-ldl,-Bstatic
################################################################
## LIBES. Pick one, or roll your own.
################################################################
-LIBES= @LIBS@ ## This is set by autoconf.
-#LIBES= -ltermcap ## BSD style things
-#LIBES= -ltermcap ## SunOS, HP-UX, pyramid
-#LIBES= -ltermcap ## Linux
-#LIBES= -ltermcap -lshadow ## Linux with PW_SHADOW
-#LIBES= -ltermcap -lsec ## Tek XD88/10 (UTekV) with PW_SHADOW
-#LIBES= -ltermcap -lsec ## Motorola MPC (sysV88) with PW_SHADOW
-#LIBES= -ltermcap -lcs ## Mach
-#LIBES= -ltermcap -lbsd ## DEC osf1 on the alpha
-#LIBES= -ltermcap -lbsd ## Intel paragon
-#LIBES= -ltermcap -lbsd ## Clipper intergraph
-#LIBES= -ltermcap -lseq ## Sequent's Dynix
-#LIBES= -ltermcap -lauth ## Ultrix with Enhanced Security
-#LIBES= -ltermcap -ldir -lx ## Xenix 386 style things
-#LIBES= -ltermcap -lndir -lsocket -ljobs ## masscomp RTU6.0
-#LIBES= -lcurses ## AIX on the rt
-#LIBES= -lcurses ## TitanOS on the stellar
-#LIBES= -ltermlib -lsocket -lnsl ## SysV4 w/o BSDTIMES or Solaris 2
-#LIBES= -lcurses ## SysV3 w/o networking
-#LIBES= -lcurses -lnet ## SysV3 with networking
-#LIBES= -lcurses -ldir ## SysV2 w/o networking & dirlib
-#LIBES= -lcurses -ldir -lnet ## SysV2 with networking & dirlib
-#LIBES= -lcurses -lbsd ## AIX on the IBM 370 or rs6000 or ps2
-#LIBES= -lcurses -lbsd ## ETA10
-#LIBES= -lcurses -lbsd ## Irix3.1 on the SGI-IRIS4D
-#LIBES= -lcurses -lbsd -lc_s ## Irix3.3 on the SGI-IRIS4D w/o yp
-#LIBES= -lcurses -lsun -lbsd -lc_s ## Irix3.3 on the SGI-IRIS4D with yp
-#LIBES= -lcurses -lsocket -lbsd ## Amdahl UTS 2.1
-#LIBES= -lcurses -lsocket ## Intel's hypercube.
-#LIBES= -lcurses -lsocket ## ns32000 based Opus.
-#LIBES= -lcurses -lcposix ## ISC 2.2 without networking
-#LIBES= -lcposix -lc_s -lcurses -linet ## ISC 2.2 with networking
-#LIBES= -lcurses -lsec -lc_s ## ISC 2.0.2 without networking
-#LIBES= -lcurses -linet -lsec -lc_s ## ISC 2.0.2 with networking
-#LIBES= -lcurses -lintl -lcrypt ## SCO SysVR3.2v2.0
-#LIBES= -lcurses -lintl -lsocket -lcrypt ## SCO+ODT1.1
-#LIBES= -lposix -ltermcap ## A/UX 2.0
-#LIBES= -lposix -ltermcap -lc_s ## A/UX 3.0
-#LIBES= -ldirent -lcurses ## att3b1 cc w/o shared lib & dirlib
-#LIBES= -shlib -ldirent -lcurses ## att3b1 gcc with shared lib & dirlib
-#LIBES= -ltermlib -lsocket -lnsl -lc /usr/ucblib/libucb.a ## SysV4 with BSDTIMES
-#LIBES= -lcurses -lnsl -lsocket -lc /usr/ucblib/libucb.a ## Stardent Vistra
-#LIBES= -ltermc ## emx under OS/2
-#LIBES= ## Minix, VMS_POSIX
-#LIBES= -ltermcap -lcrypt ## Multiflow
-#LIBES= -ltermcap -lcrypt ## NetBSD
-#LIBES= -lcurses ## DDE Supermax
+## This is set by autoconf.
+LIBES= @LIBS@
+## BSD style things
+#LIBES= -ltermcap
+## SunOS, HP-UX, pyramid
+#LIBES= -ltermcap
+## Linux
+#LIBES= -ltermcap
+## Linux with PW_SHADOW
+#LIBES= -ltermcap -lshadow
+## Tek XD88/10 (UTekV) with PW_SHADOW
+#LIBES= -ltermcap -lsec
+## Motorola MPC (sysV88) with PW_SHADOW
+#LIBES= -ltermcap -lsec
+## Mach
+#LIBES= -ltermcap -lcs
+## DEC osf1 on the alpha
+#LIBES= -ltermcap -lbsd
+## Intel paragon
+#LIBES= -ltermcap -lbsd
+## Clipper intergraph
+#LIBES= -ltermcap -lbsd
+## Sequent's Dynix
+#LIBES= -ltermcap -lseq
+## Ultrix with Enhanced Security
+#LIBES= -ltermcap -lauth
+## Xenix 386 style things
+#LIBES= -ltermcap -ldir -lx
+## masscomp RTU6.0
+#LIBES= -ltermcap -lndir -lsocket -ljobs
+## AIX on the rt
+#LIBES= -lcurses
+## TitanOS on the stellar
+#LIBES= -lcurses
+## SysV4 w/o BSDTIMES or Solaris 2
+#LIBES= -ltermlib -lsocket -lnsl
+## SysV3 w/o networking
+#LIBES= -lcurses
+## SysV3 with networking
+#LIBES= -lcurses -lnet
+## SysV2 w/o networking & dirlib
+#LIBES= -lcurses -ldir
+## SysV2 with networking & dirlib
+#LIBES= -lcurses -ldir -lnet
+## AIX on the IBM 370 or rs6000 or ps2
+#LIBES= -lcurses -lbsd
+## ETA10
+#LIBES= -lcurses -lbsd
+## Irix3.1 on the SGI-IRIS4D
+#LIBES= -lcurses -lbsd
+## Irix3.3 on the SGI-IRIS4D w/o yp
+#LIBES= -lcurses -lbsd -lc_s
+## Irix3.3 on the SGI-IRIS4D with yp
+#LIBES= -lcurses -lsun -lbsd -lc_s
+## Amdahl UTS 2.1
+#LIBES= -lcurses -lsocket -lbsd
+## Intel's hypercube.
+#LIBES= -lcurses -lsocket
+## ns32000 based Opus.
+#LIBES= -lcurses -lsocket
+## ISC 2.2 without networking
+#LIBES= -lcurses -lcposix
+## ISC 2.2 with networking
+#LIBES= -lcposix -lc_s -lcurses -linet
+## ISC 2.0.2 without networking
+#LIBES= -lcurses -lsec -lc_s
+## ISC 2.0.2 with networking
+#LIBES= -lcurses -linet -lsec -lc_s
+## SCO SysVR3.2v2.0
+#LIBES= -lcurses -lintl -lcrypt
+## SCO+ODT1.1
+#LIBES= -lcurses -lintl -lsocket -lcrypt
+## A/UX 2.0
+#LIBES= -lposix -ltermcap
+## A/UX 3.0
+#LIBES= -lposix -ltermcap -lc_s
+## att3b1 cc w/o shared lib & dirlib
+#LIBES= -ldirent -lcurses
+## att3b1 gcc with shared lib & dirlib
+#LIBES= -shlib -ldirent -lcurses
+## SysV4 with BSDTIMES
+#LIBES= -ltermlib -lsocket -lnsl -lc /usr/ucblib/libucb.a
+## Stardent Vistra
+#LIBES= -lcurses -lnsl -lsocket -lc /usr/ucblib/libucb.a
+## emx under OS/2
+#LIBES= -ltermc
+## Minix, VMS_POSIX
+#LIBES=
+## Multiflow
+#LIBES= -ltermcap -lcrypt
+## NetBSD
+#LIBES= -ltermcap -lcrypt
+## DDE Supermax
+#LIBES= -lcurses
################################################################
## EXTRAFLAGS and EXTRALIBS
@@ -222,8 +285,10 @@ LIBES= @LIBS@ ## This is set by autoconf.
#
#Solaris and HPUX require the BSD libraries with AFS.
#We use -lc to use only what we require.
-#AFSAUXLIB = -lsocket -lnsl -lc -lucb # Solaris
-#AFSAUXLIB = -lc -lBSD # HPUX
+# Solaris
+#AFSAUXLIB = -lsocket -lnsl -lc -lucb
+# HPUX
+#AFSAUXLIB = -lc -lBSD
#
#AFSLIB = -L$(AFSLIBDIR) -L$(AFSLIBDIR)/afs -lkauth -lprot -lubik\
# -lauth -lrxkad -lsys -ldes -lrx -llwp -lcom_err\
@@ -244,26 +309,38 @@ EXTRALIBS = @HESLIB@ $(AFSLIB) @LIBICONV@
# will lose the editor and job control.
# This is for setting your C preprocessor value.
-CPP = @CPP@ # This is set by autoconf.
+# This is set by autoconf.
+CPP = @CPP@
# The -B tells gcc to use /bin/ld. This is to avoid using the gnu ld, which
# on the suns does not know how to make dynamically linked binaries.
-CC = @CC@ # This is set by autoconf.
+# This is set by autoconf.
+CC = @CC@
#CC= gcc -Wall -Wmissing-prototypes -Wstrict-prototypes -Wpointer-arith -Werror -Wmissing-declarations -Wredundant-decls -Wnested-externs -Wsign-compare -Wcast-qual -Wreturn-type -Wswitch -Wshadow -Wwrite-strings -Wextra
-#CC= gcc -Wall -pipe -B/bin/ # -ansi -pedantic
-#CC= gcc -m486 -pipe -Wall # Generate code for Intel 486 (linux)
-#CC= shlicc # BSDI2.1 w/ shared libraries
+# -ansi -pedantic
+#CC= gcc -Wall -pipe -B/bin/
+# Generate code for Intel 486 (linux)
+#CC= gcc -m486 -pipe -Wall
+# BSDI2.1 w/ shared libraries
+#CC= shlicc
#CC= cc
#CC= occ
#CC= acc
#CC= pcc
#CC= hc -w
-#CC= c89 # For VMS/POSIX
-#CC= /bin/cc # For suns, w/o gcc and SVR4
-#CC= /usr/lib/sun.compile/cc # FPS 500 (+FPX) with Sun C compiler
-#CC= /opt/SUNWspro/bin/cc # Solaris 2.1
-#CC= scc # Alliant fx2800
-#CC= cc -h0,ansi,novector,float0 # for NEC SX-4
+# For VMS/POSIX
+#CC= c89
+# For suns, w/o gcc and SVR4
+#CC= /bin/cc
+# FPS 500 (+FPX) with Sun C compiler
+#CC= /usr/lib/sun.compile/cc
+# Solaris 2.1
+#CC= /opt/SUNWspro/bin/cc
+# Alliant fx2800
+#CC= scc
+# for NEC SX-4
+#CC= cc -h0,ansi,novector,float0
#CC= lcc -wa
+CC_FOR_GETHOST = @CC_FOR_GETHOST@
ED= ed
AS= as
RM= rm
@@ -272,8 +349,10 @@ VGRIND= csh /usr/ucb/vgrind
CTAGS= /usr/ucb/ctags
#XSTR= /usr/ucb/xstr
SCCS= /usr/local/sccs
-PARALLEL=12 # Make the multi-max run fast.
-#P=& # Use Sequent's parallel make
+# Make the multi-max run fast.
+PARALLEL=12
+# Use Sequent's parallel make
+#P=&
P=
prefix=@prefix@
exec_prefix=@exec_prefix@
@@ -282,12 +361,17 @@ mandir=@datarootdir@/man
MANSECT=1
DESTBIN=${DESTDIR}${bindir}
DESTMAN=${DESTDIR}${mandir}/man${MANSECT}
-# DESTMAN=${DESTDIR}/catman/man${MANSECT} # A/UX
-# DESTMAN=${DESTDIR}/usr/share/man/man${MANSECT} # Stardent Vistra (SysVR4)
-# DESTMAN=/usr/catman/1l # Amiga unix (SysVR4)
+# A/UX
+# DESTMAN=${DESTDIR}/catman/man${MANSECT}
+# Stardent Vistra (SysVR4)
+# DESTMAN=${DESTDIR}/usr/share/man/man${MANSECT}
+# Amiga unix (SysVR4)
+# DESTMAN=/usr/catman/1l
EXEEXT=@EXEEXT@
FTPAREA=/usr/spool/ftp
+BUILD_CATALOGS = @BUILD_CATALOGS@
+
ASSRCS= sh.c sh.dir.c sh.dol.c sh.err.c sh.exec.c sh.char.c \
sh.exp.c sh.file.c sh.func.c sh.glob.c sh.hist.c sh.init.c \
sh.lex.c sh.misc.c sh.parse.c sh.print.c sh.proc.c sh.sem.c \
@@ -330,9 +414,9 @@ AVSRCS= Fixes MAKEDIFFS MAKESHAR NewThings README FAQ \
host.defs gethost.c tcsh.man2html configure.in configure config.h.in \
tests/testsuite.at
TESTFILES= tests/aliases.at tests/arguments.at tests/commands.at \
- tests/expr.at tests/lexical.at tests/mb-eucjp.at tests/mb-utf8.at \
- tests/noexec.at tests/syntax.at tests/subst.at tests/variables.at \
- tests/sh.dol.at
+ tests/expr.at tests/lexical.at tests/mb-eucjp.at \
+ tests/mb-utf8.at tests/noexec.at tests/syntax.at tests/subst.at \
+ tests/variables.at tests/sh.dol.at
VHSRCS=${PVSRCS} ${AVSRCS}
@@ -345,7 +429,7 @@ DISTSRCS= ${PSSRCS} ${TWSRCS} ${EDSRCS} ${TCSRCS} ${AVSRCS} $(TESTFILES)
OBJS= ${SHOBJS} ${TWOBJS} ${EDOBJS} ${TCOBJS}
-all: ${BUILD}
+all: ${BUILD} catalogs
tcsh$(EXEEXT):$(P) ${OBJS}
rm -f tcsh$(EXEEXT) core
@@ -365,7 +449,7 @@ pure:$(P) ${OBJS}
gethost: gethost.c sh.err.h tc.const.h sh.h
rm -f gethost
- ${CC} -o gethost ${LDFLAGS} ${CFLAGS} ${CPPFLAGS} ${DFLAGS} $(srcdir)/gethost.c ${LIBES} ${EXTRALIBS}
+ ${CC_FOR_GETHOST} -o gethost ${CPPFLAGS} $(srcdir)/gethost.c
tc.defs.c: gethost host.defs
@rm -f $@.tmp
@@ -463,7 +547,7 @@ $(srcdir)/tests/package.m4: $(srcdir)/configure.in
echo 'm4_define([AT_PACKAGE_BUGREPORT], [@PACKAGE_BUGREPORT@])'; \
} >$(srcdir)/tests/package.m4
-$(srcdir)/tests/testsuite: $(srcdir)/tests/package.m4 $(srcdir}/tests/testsuite.at $(TESTFILES)
+$(srcdir)/tests/testsuite: $(srcdir)/tests/package.m4 $(srcdir)/tests/testsuite.at $(TESTFILES)
autom4te --language=autotest -I $(srcdir)/tests \
$(srcdir)/tests/testsuite.at -o $@.tmp
mv $@.tmp $@
@@ -511,20 +595,36 @@ vgrind:
install-strip: install
-install: tcsh$(EXEEXT)
+install: tcsh$(EXEEXT) install.catalogs install.man
-mkdir -p ${DESTBIN}
-mv -f ${DESTBIN}/tcsh$(EXEEXT) ${DESTBIN}/tcsh.old
cp tcsh$(EXEEXT) ${DESTBIN}/tcsh$(EXEEXT)
-strip ${DESTBIN}/tcsh$(EXEEXT)
chmod 755 ${DESTBIN}/tcsh$(EXEEXT)
+install.catalogs:
+ @test "x${BUILD_CATALOGS}" = "xyes" && (cd nls; ${MAKE} install DESTDIR=${DESTDIR}) || exit 0
+
install.man: tcsh.man
-mkdir -p ${DESTMAN}
-rm -f ${DESTMAN}/tcsh.${MANSECT}
cp $(srcdir)/tcsh.man ${DESTMAN}/tcsh.${MANSECT}
chmod 444 ${DESTMAN}/tcsh.${MANSECT}
-install.cygwin: install install.man
+# Amiga Unix
+#install.man: tcsh.man
+# compress tcsh.man
+# cp tcsh.man.Z ${DESTMAN}/tcsh.Z
+# chmod 444 ${DESTMAN}/tcsh.Z
+
+# Apple A/UX
+#install.man: tcsh.man
+# -rm -f ${DESTMAN}/tcsh.${MANSECT}.Z
+# nroff -man tcsh.man | compress > ${DESTMAN}/tcsh.${MANSECT}.Z
+# chmod 444 ${DESTMAN}/tcsh.${MANSECT}.Z
+
+install.cygwin: install
+ -gzip ${DESTMAN}/tcsh.${MANSECT}
-mkdir -p ${DESTDIR}${prefix}/share/doc/tcsh
cp ${srcdir}/FAQ ${srcdir}/Fixes ${DESTDIR}${prefix}/share/doc/tcsh
cp ${srcdir}/NewThings ${srcdir}/README ${DESTDIR}${prefix}/share/doc/tcsh
@@ -542,24 +642,15 @@ install.cygwin: install install.man
cp -p ${srcdir}/cygwin/postinstall.sh ${DESTDIR}/etc/postinstall/tcsh.sh
cp -p ${srcdir}/cygwin/preremove.sh ${DESTDIR}/etc/preremove/tcsh.sh
-# Amiga Unix
-#install.man: tcsh.man
-# compress tcsh.man
-# cp tcsh.man.Z ${DESTMAN}/tcsh.Z
-# chmod 444 ${DESTMAN}/tcsh.Z
-
-# Apple A/UX
-#install.man: tcsh.man
-# -rm -f ${DESTMAN}/tcsh.${MANSECT}.Z
-# nroff -man tcsh.man | compress > ${DESTMAN}/tcsh.${MANSECT}.Z
-# chmod 444 ${DESTMAN}/tcsh.${MANSECT}.Z
-
-clean:
+clean: clean.catalogs
${RM} -f a.out strings x.c xs.c tcsh$(EXEEXT) tcsh.a _MAKE_LOG gethost
${RM} -f *.${SUF} *.i *.s
${RM} -f sh.prof.c ed.defns.h tc.const.h sh.err.h tc.defs.c
${RM} -f tcsh.*.m tcsh.*.cat
+clean.catalogs:
+ @test "x${BUILD_CATALOGS}" = "xyes" && (cd nls; ${MAKE} clean) || exit 0
+
veryclean: clean
${RM} -f Makefile config.h config_p.h
${RM} -f config.status config.cache config.log tcsh.ps
@@ -607,7 +698,7 @@ shar:
rm -rf tcsh-${VERSION}
catalogs:
- @(cd nls; make catalogs)
+ @test "x${BUILD_CATALOGS}" = "xyes" && (cd nls; ${MAKE} catalogs) || exit 0
tcsh-${VERSION}.tar.Z:
rm -rf tcsh-${VERSION}
diff --git a/Ported b/Ported
index 43d29bcac914..ca1ac3bd7546 100644
--- a/Ported
+++ b/Ported
@@ -7,7 +7,7 @@ find it out-of-date, or you have additions or changes, please let me know.
christos
-VENDOR : sun
+VENDOR : Sun
MODELS : sun3, sun4, sun386i
COMPILER: cc, gcc, acc
CFLAGS : normal
@@ -18,7 +18,7 @@ ENVIRON : n/a
NOTES : Don't compile with /usr/5bin/cc
VERSION : 6.08
-VENDOR : sun
+VENDOR : Sun
MODELS : sun4, ultra
COMPILER: cc, gcc
CFLAGS : normal
@@ -34,18 +34,29 @@ NOTES : The sunpro compiler cannot compile tcsh with -O, it crashes
: point failures of programs exec'ed from tcsh.
VERSION : 6.08
-VENDOR : sun
+VENDOR : Sun
MODELS : ultra
COMPILER: WorkShop cc
CFLAGS : normal
LIBES : -lcurses -lsocket -lnsl
-OS : solaris 2.6
+OS : solaris 2.6, 2.7, 8
CONFIG : sol26
ENVIRON : n/a
NOTES : none
VERSION : 6.08
-VENDOR : sun
+VENDOR : Sun
+MODELS : ultra, i686, x86_64
+COMPILER: Sun Studio cc
+CFLAGS : normal
+LIBES : -lcurses -lsocket -lnsl
+OS : solaris 9, 10
+CONFIG : sol29
+ENVIRON : n/a
+NOTES : none
+VERSION : 6.18
+
+VENDOR : Sun
MODELS : i386
COMPILER: cc, gcc
CFLAGS : -D__STDC__=0
@@ -56,7 +67,7 @@ ENVIRON : n/a
NOTES : n/a
VERSION : 6.04.13
-VENDOR : sun
+VENDOR : Sun
MODELS : sun4
COMPILER: gcc
CFLAGS : normal
diff --git a/README b/README
index ae06b57b2eaa..b05f58993ef9 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-This is tcsh version 6.17.00. Tcsh is a version of the Berkeley
+This is tcsh version 6.18.01. Tcsh is a version of the Berkeley
C-Shell, with the addition of: a command line editor, command and file
name completion, listing, etc. and a bunch of small additions to the
shell itself.
@@ -87,7 +87,7 @@ To install tcsh:
10) Enjoy.
-12) PLEASE file any bug reports (and fixes), code for new features at:
+11) PLEASE file any bug reports (and fixes), code for new features at:
http://bugs.gw.com/
diff --git a/WishList b/WishList
index 6eb5acfbda32..6a2a0d97a9e5 100644
--- a/WishList
+++ b/WishList
@@ -52,17 +52,6 @@ ey )
- bhooglan
_________________________________________________________________
- I'm a long-time faithful user of tcsh, and one thing has always bugged
- me -- the need to type "rehash" at a prompt when adding a new command.
- My suggestions is to change tcsh so before printing "Command not
- found.", it first searches its entire path and rebuilds its hash
- table. Only after doing this, and if the command is still not in the
- path, then print "Command not found.". I realize there are some
- extreme cases in which this is suboptimal, but in most cases with
- normal users this would be a big win, and simplify the manual and
- perhaps even the code.
- _________________________________________________________________
-
Wish "tcsh -l" would accept other flags. At least "-c".
Currently I can't get ssh to have the right environment unless it is a
diff --git a/complete.tcsh b/complete.tcsh
index 4e13bf883343..4fb1ad2dd7db 100644
--- a/complete.tcsh
+++ b/complete.tcsh
@@ -1,5 +1,5 @@
#
-# $tcsh: complete.tcsh,v 1.51 2007/10/01 21:51:59 christos Exp $
+# $tcsh: complete.tcsh,v 1.52 2010/05/07 17:54:13 christos Exp $
# example file using the new completion code
#
# Debian GNU/Linux
@@ -636,7 +636,7 @@ if ($?_complete) then
complete nmap 'n@-e@`ifconfig -l`@' 'p/*/$hostnames/'
complete perldoc 'n@*@`\ls -1 /usr/libdata/perl/5.*/pod | sed s%\\.pod.\*\$%%`@'
complete postfix 'n/*/(start stop reload abort flush check)/'
- complete postmap 'n/1/(hash: regexp:)' 'c/hash:/f/' 'c/regexp:/f/'
+ complete postmap 'n/1/(hash: regexp:)/' 'c/hash:/f/' 'c/regexp:/f/'
complete rcsdiff 'p@1@`\ls -1a RCS | sed -e "s/\(.*\),v/\1/"`@'
complete X 'c/-/(I a ac allowMouseOpenFail allowNonLocalModInDev \
allowNonLocalXvidtune ar1 ar2 audit auth bestRefresh \
diff --git a/config.guess b/config.guess
index e3a2116a7dcd..c2246a4f7f4c 100755
--- a/config.guess
+++ b/config.guess
@@ -1,10 +1,10 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
# Free Software Foundation, Inc.
-timestamp='2009-06-10'
+timestamp='2009-12-30'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -27,16 +27,16 @@ timestamp='2009-06-10'
# the same distribution terms that you use for the rest of that program.
-# Originally written by Per Bothner <per@bothner.com>.
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
+# Originally written by Per Bothner. Please send patches (context
+# diff format) to <config-patches@gnu.org> and include a ChangeLog
+# entry.
#
# This script attempts to guess a canonical system name similar to
# config.sub. If it succeeds, it prints the system name on stdout, and
# exits with 0. Otherwise, it exits with 1.
#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
me=`echo "$0" | sed -e 's,.*/,,'`
@@ -56,8 +56,9 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
+Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -333,6 +334,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+ echo i386-pc-auroraux${UNAME_RELEASE}
+ exit ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
eval $set_cc_for_build
SUN_ARCH="i386"
@@ -807,12 +811,12 @@ EOF
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
exit ;;
- *:Interix*:[3456]*)
+ *:Interix*:*)
case ${UNAME_MACHINE} in
x86)
echo i586-pc-interix${UNAME_RELEASE}
exit ;;
- EM64T | authenticamd | genuineintel)
+ authenticamd | genuineintel | EM64T)
echo x86_64-unknown-interix${UNAME_RELEASE}
exit ;;
IA64)
@@ -854,6 +858,20 @@ EOF
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep -q ld.so.1
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit ;;
arm*:Linux:*:*)
eval $set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
@@ -876,6 +894,17 @@ EOF
frv:Linux:*:*)
echo frv-unknown-linux-gnu
exit ;;
+ i*86:Linux:*:*)
+ LIBC=gnu
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ exit ;;
ia64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
@@ -901,39 +930,18 @@ EOF
#endif
#endif
EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^CPU/{
- s: ::g
- p
- }'`"
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
;;
or32:Linux:*:*)
echo or32-unknown-linux-gnu
exit ;;
- ppc:Linux:*:*)
- echo powerpc-unknown-linux-gnu
- exit ;;
- ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-gnu
- exit ;;
- alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
- EV5) UNAME_MACHINE=alphaev5 ;;
- EV56) UNAME_MACHINE=alphaev56 ;;
- PCA56) UNAME_MACHINE=alphapca56 ;;
- PCA57) UNAME_MACHINE=alphapca56 ;;
- EV6) UNAME_MACHINE=alphaev6 ;;
- EV67) UNAME_MACHINE=alphaev67 ;;
- EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
- objdump --private-headers /bin/sh | grep -q ld.so.1
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
- exit ;;
padre:Linux:*:*)
echo sparc-unknown-linux-gnu
exit ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+ exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
@@ -942,8 +950,11 @@ EOF
*) echo hppa-unknown-linux-gnu ;;
esac
exit ;;
- parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-gnu
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-gnu
+ exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-gnu
exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
echo ${UNAME_MACHINE}-ibm-linux
@@ -966,58 +977,6 @@ EOF
xtensa*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
- i*86:Linux:*:*)
- # The BFD linker knows what the default object file format is, so
- # first see if it will tell us. cd to the root directory to prevent
- # problems with other programs or directories called `ld' in the path.
- # Set LC_ALL=C to ensure ld outputs messages in English.
- ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
- | sed -ne '/supported targets:/!d
- s/[ ][ ]*/ /g
- s/.*supported targets: *//
- s/ .*//
- p'`
- case "$ld_supported_targets" in
- elf32-i386)
- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
- ;;
- esac
- # Determine whether the default compiler is a.out or elf
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <features.h>
- #ifdef __ELF__
- # ifdef __GLIBC__
- # if __GLIBC__ >= 2
- LIBC=gnu
- # else
- LIBC=gnulibc1
- # endif
- # else
- LIBC=gnulibc1
- # endif
- #else
- #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
- LIBC=gnu
- #else
- LIBC=gnuaout
- #endif
- #endif
- #ifdef __dietlibc__
- LIBC=dietlibc
- #endif
-EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^LIBC/{
- s: ::g
- p
- }'`"
- test x"${LIBC}" != x && {
- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
- exit
- }
- test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
- ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
# earlier versions are messed up and put the nodename in both
@@ -1247,6 +1206,16 @@ EOF
*:Darwin:*:*)
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
case $UNAME_PROCESSOR in
+ i386)
+ eval $set_cc_for_build
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ UNAME_PROCESSOR="x86_64"
+ fi
+ fi ;;
unknown) UNAME_PROCESSOR=powerpc ;;
esac
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
diff --git a/config.h.in b/config.h.in
index 09aa898b62e8..0ba48c4237d3 100644
--- a/config.h.in
+++ b/config.h.in
@@ -10,9 +10,6 @@
/* Define to 1 if you have the <auth.h> header file. */
#undef HAVE_AUTH_H
-/* Define to 1 if you have the `catgets' function. */
-#undef HAVE_CATGETS
-
/* Define to 1 if you have the <crypt.h> header file. */
#undef HAVE_CRYPT_H
@@ -39,6 +36,9 @@
/* Define to 1 if you have the `dup2' function. */
#undef HAVE_DUP2
+/* Define to 1 if you have the <features.h> header file. */
+#undef HAVE_FEATURES_H
+
/* Define to 1 if you have the `getauthid' function. */
#undef HAVE_GETAUTHID
@@ -54,7 +54,10 @@
/* Define to 1 if you have the `getutent' function. */
#undef HAVE_GETUTENT
-/* Define if you have the iconv() function. */
+/* Define to 1 if you have the `getutxent' function. */
+#undef HAVE_GETUTXENT
+
+/* Define if you have the iconv() function and it works. */
#undef HAVE_ICONV
/* Define to 1 if you have the <inttypes.h> header file. */
@@ -63,6 +66,9 @@
/* Define to 1 if the system has the type `long long'. */
#undef HAVE_LONG_LONG
+/* Define to 1 if you have the `mallinfo' function. */
+#undef HAVE_MALLINFO
+
/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
#undef HAVE_MBRTOWC
@@ -75,6 +81,9 @@
/* Define to 1 if you have the `memset' function. */
#undef HAVE_MEMSET
+/* Define to 1 if you have the `mkstemp' function. */
+#undef HAVE_MKSTEMP
+
/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
#undef HAVE_NDIR_H
@@ -84,6 +93,9 @@
/* Define to 1 if you have the `nl_langinfo' function. */
#undef HAVE_NL_LANGINFO
+/* Define to 1 if you have the <paths.h> header file. */
+#undef HAVE_PATHS_H
+
/* Define to 1 if you have the `sbrk' function. */
#undef HAVE_SBRK
@@ -118,22 +130,34 @@
/* Define to 1 if you have the `strstr' function. */
#undef HAVE_STRSTR
-/* Define to 1 if `d_ino' is member of `struct dirent'. */
+/* Define to 1 if `d_ino' is a member of `struct dirent'. */
#undef HAVE_STRUCT_DIRENT_D_INO
-/* Define to 1 if `ss_family' is member of `struct sockaddr_storage'. */
+/* Define to 1 if `ss_family' is a member of `struct sockaddr_storage'. */
#undef HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY
-/* Define to 1 if `ut_host' is member of `struct utmp'. */
+/* Define to 1 if `ut_host' is a member of `struct utmpx'. */
+#undef HAVE_STRUCT_UTMPX_UT_HOST
+
+/* Define to 1 if `ut_tv' is a member of `struct utmpx'. */
+#undef HAVE_STRUCT_UTMPX_UT_TV
+
+/* Define to 1 if `ut_user' is a member of `struct utmpx'. */
+#undef HAVE_STRUCT_UTMPX_UT_USER
+
+/* Define to 1 if `ut_xtime' is a member of `struct utmpx'. */
+#undef HAVE_STRUCT_UTMPX_UT_XTIME
+
+/* Define to 1 if `ut_host' is a member of `struct utmp'. */
#undef HAVE_STRUCT_UTMP_UT_HOST
-/* Define to 1 if `ut_tv' is member of `struct utmp'. */
+/* Define to 1 if `ut_tv' is a member of `struct utmp'. */
#undef HAVE_STRUCT_UTMP_UT_TV
-/* Define to 1 if `ut_user' is member of `struct utmp'. */
+/* Define to 1 if `ut_user' is a member of `struct utmp'. */
#undef HAVE_STRUCT_UTMP_UT_USER
-/* Define to 1 if `ut_xtime' is member of `struct utmp'. */
+/* Define to 1 if `ut_xtime' is a member of `struct utmp'. */
#undef HAVE_STRUCT_UTMP_UT_XTIME
/* Define to 1 if you have the `sysconf' function. */
@@ -177,6 +201,9 @@
/* Support NLS. */
#undef NLS
+/* Support NLS catalogs. */
+#undef NLS_CATALOGS
+
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
@@ -189,6 +216,9 @@
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
/* Define to the version of this package. */
#undef PACKAGE_VERSION
@@ -204,6 +234,11 @@
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
+/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
+ <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
+ #define below would cause a syntax error. */
+#undef _UINT32_T
+
/* Define to empty if `const' does not conform to ANSI C. */
#undef const
@@ -225,6 +260,10 @@
/* Define to `int' if <sys/types.h> doesn't define. */
#undef uid_t
+/* Define to the type of an unsigned integer type of width exactly 32 bits if
+ such a type exists and the standard includes do not define it. */
+#undef uint32_t
+
/* Define to empty if the keyword `volatile' does not work. Warning: valid
code using `volatile' can become incorrect without. Disable with care. */
#undef volatile
diff --git a/config.sub b/config.sub
index eb0389a693f3..85186096a9e1 100755
--- a/config.sub
+++ b/config.sub
@@ -1,10 +1,10 @@
#! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
# Free Software Foundation, Inc.
-timestamp='2009-06-11'
+timestamp='2009-12-31'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -32,13 +32,16 @@ timestamp='2009-06-11'
# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
+# diff and a properly formatted GNU ChangeLog entry.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
# If it is invalid, we print an error message on stderr and exit with code 1.
# Otherwise, we print the canonical config type on stdout and succeed.
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
# that are meaningful with *any* GNU software.
@@ -72,8 +75,9 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
+Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -149,7 +153,7 @@ case $os in
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray)
+ -apple | -axis | -knuth | -cray | -microblaze)
os=
basic_machine=$1
;;
@@ -284,6 +288,7 @@ case $basic_machine in
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
| pyramid \
+ | rx \
| score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
@@ -291,13 +296,14 @@ case $basic_machine in
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
| spu | strongarm \
| tahoe | thumb | tic4x | tic80 | tron \
+ | ubicom32 \
| v850 | v850e \
| we32k \
| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
| z8k | z80)
basic_machine=$basic_machine-unknown
;;
- m6811 | m68hc11 | m6812 | m68hc12)
+ m6811 | m68hc11 | m6812 | m68hc12 | picochip)
# Motorola 68HC11/12.
basic_machine=$basic_machine-unknown
os=-none
@@ -340,7 +346,7 @@ case $basic_machine in
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
@@ -368,7 +374,7 @@ case $basic_machine in
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
| pyramid-* \
- | romp-* | rs6000-* \
+ | romp-* | rs6000-* | rx-* \
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
@@ -377,6 +383,7 @@ case $basic_machine in
| tahoe-* | thumb-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
| tron-* \
+ | ubicom32-* \
| v850-* | v850e-* | vax-* \
| we32k-* \
| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
@@ -726,6 +733,9 @@ case $basic_machine in
basic_machine=ns32k-utek
os=-sysv
;;
+ microblaze)
+ basic_machine=microblaze-xilinx
+ ;;
mingw32)
basic_machine=i386-pc
os=-mingw32
@@ -1247,6 +1257,9 @@ case $os in
# First match some system type aliases
# that might get confused with valid system types.
# -solaris* is a basic system type, with this one exception.
+ -auroraux)
+ os=-auroraux
+ ;;
-solaris1 | -solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'`
;;
@@ -1268,8 +1281,8 @@ case $os in
# -sysv* is not here because it comes later, after sysvr4.
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
- | -kopensolaris* \
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+ | -sym* | -kopensolaris* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* | -aros* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
@@ -1290,7 +1303,7 @@ case $os in
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1423,6 +1436,8 @@ case $os in
-dicos*)
os=-dicos
;;
+ -nacl*)
+ ;;
-none)
;;
*)
diff --git a/config/aix b/config/aix
new file mode 100644
index 000000000000..8bd9ef03014b
--- /dev/null
+++ b/config/aix
@@ -0,0 +1,159 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+#ifndef _h_config
+#define _h_config
+
+#ifdef PL8CC
+/* for an RT running the IBM Sys. V version of AIX. -- tells the compiler
+ reasonable things. MUST BE the fist thing the compiler sees */
+\option MAXD(20000,20000) MAXS(50000,50000) MAXL(20000,20000) MAXH(20000,20000);
+\option MAXA(20000,20000) MAXP(500) EL_SIZE(20000) ET_SIZE(30000);
+\option OPTIONS UNSAFE;
+#endif
+
+#if defined(_AIX) && defined(_I386) && defined(aiws)
+# undef aiws /* not an rt */
+#endif /* _AIX && _386 && aiws */
+
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#if defined(_IBMR2)
+#define POSIX
+#else
+#undef POSIX
+#endif
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#ifndef aiws
+#define POSIXJOBS
+#else
+#undef POSIXJOBS
+#endif
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#ifndef aiws
+# define BSDJOBS
+#else
+# undef BSDJOBS
+#endif
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#ifndef aiws
+# define BSDTIMES
+#else
+# undef BSDTIMES
+#endif
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#ifndef aiws
+# define BSDLIMIT
+#else
+# undef BSDLIMIT
+#endif
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#if defined(_IBMR2) || defined(aiws)
+# define TERMIO
+#else
+# undef TERMIO
+#endif /* _IBMR2 || aiws */
+
+/*
+ * SYSVRELYour machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#ifndef aiws
+# define SYSVREL 0
+#else
+# define SYSVREL 2
+#endif /* aiws */
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+/*
+ * IBMAIX You are running aix on the ps2, rs6000, on ibm370
+ */
+#define IBMAIX
+
+/*
+ * TCF You have the transparent computing facility.
+ */
+#if !defined(_IBMR2) && !defined(aiws)
+# define TCF /* ps2 and 370 have TCF */
+#else
+# undef TCF /* The rs6000 and the rt does not have TCF yet */
+#endif
+
+#if defined(_AIX) && defined(_I386)
+# define _AIXPS2 /* give a more sane name */
+#endif /* _AIX && _386 */
+
+#if defined(_AIXPS2)
+# define _NO_PROTO
+# define _BSD
+# define _BSD_INCLUDES
+#endif /* _AIXPS2 */
+
+#if defined(_IBMR2)
+# define _POSIX_SOURCE
+# define _ALL_SOURCE /* for window size etc, extra tty chars etc. */
+#endif
+
+/*
+ * Function pointer comparisons are broken
+ */
+#ifdef aiws
+#define void int
+#endif /* aiws */
+
+/* > 2GB file support (stat64 etc.) */
+#define _LARGE_FILES
+
+#endif /* _h_config */
diff --git a/config/alliant b/config/alliant
new file mode 100644
index 000000000000..13fd1aa3db92
--- /dev/null
+++ b/config/alliant
@@ -0,0 +1,95 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+#ifndef _h_config
+#define _h_config
+
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#ifdef NEW_OS /* XXX: How to make the ifdef automatic */
+#define POSIX
+#else
+#undef POSIX
+#endif
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#ifdef NEW_OS
+#define POSIXJOBS
+#else
+#undef POSIXJOBS
+#endif
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#undef TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#ifndef alliant
+# define alliant
+#endif
+#ifdef NEW_OS
+#define BSDWAIT
+#endif
+
+#endif /* _h_config */
diff --git a/config/amdahl b/config/amdahl
new file mode 100644
index 000000000000..78a5779bf8dc
--- /dev/null
+++ b/config/amdahl
@@ -0,0 +1,81 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ * From: neulynne@uts.uni-c.dk (Mogens Lynnerup), thanks!
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#endif /* _h_config */
diff --git a/config/amiga b/config/amiga
new file mode 100644
index 000000000000..f53c8ed31a1e
--- /dev/null
+++ b/config/amiga
@@ -0,0 +1,86 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#undef TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#ifndef SYSMALLOC
+#define SYSMALLOC
+#endif
+
+#endif /* _h_config */
+
diff --git a/config/android b/config/android
new file mode 100644
index 000000000000..c896f882e0ea
--- /dev/null
+++ b/config/android
@@ -0,0 +1,110 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * This is the config file for Linux systems
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SVID systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ *
+ * Note: Linux should work with any SYSVREL < 3.
+ */
+#define SYSVREL 1
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/*
+ * Get the name space we want.
+ *
+ * The more recent defaults for gcc (e.g. on Red Hat 7.0)
+ * also define _POSIX_C_SOURCE, which throws our code off.
+ */
+
+#define _BSD_SOURCE
+#define _SVID_SOURCE
+#define _POSIX_SOURCE
+#define _XOPEN_SOURCE 500
+#define _GNU_SOURCE
+
+/*
+ * Large file support from <features.h>
+ */
+
+#define _LARGEFILE_SOURCE
+#define _LARGEFILE64_SOURCE
+#define _FILE_OFFSET_BITS 64
+
+/****************** local defines *********************/
+#ifndef _PATH_TCSHELL
+#define _PATH_TCSHELL "/system/bin/tcsh"
+#endif
+#define ECHO_STYLE BOTH_ECHO
+
+#define NO_CRYPT
+
+#endif /* _h_config */
diff --git a/config/apollo b/config/apollo
new file mode 100644
index 000000000000..58697026bae0
--- /dev/null
+++ b/config/apollo
@@ -0,0 +1,85 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#undef TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#define _PID_T
+
+/* The Apollo system allows paths prepended with double slashes. */
+#define HAVE_SLASHSLASH 1
+
+#endif /* _h_config */
diff --git a/config/bs2000 b/config/bs2000
new file mode 100644
index 000000000000..4e91eb648d86
--- /dev/null
+++ b/config/bs2000
@@ -0,0 +1,107 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+
+#undef _FILE_OFFSET_BITS
+
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, or 3, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 4
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null [they are back!]
+ */
+#undef YPBUGS
+
+/*
+ * NISPLUS Make sure that fd's 0, 1, and 2 always are open so that
+ * Sun's NIS+ doesn't get them, making ~-expansion hang.
+ */
+#undef NISPLUS
+
+/*
+ * ECHO_STYLE Optionally change the behavior of the builtin echo
+ * BOTH_ECHO: Support both bsd options (-n) and sysv escapes (\nnn)
+ * BSD_ECHO: Support only -n
+ * SYSV_ECHO: Support only sysv escapes (\nnn)
+ * NONE_ECHO: Pure echo.
+ */
+#define ECHO_STYLE BOTH_ECHO
+
+/****************** local defines *********************/
+/*
+ * From: peter@zeus.dialix.oz.au (Peter Wemm)
+ * If exec() fails look first for a #! [word] [word]...
+ * Work around OS deficiency which cannot start #!/bin/sh scripts
+ */
+#define HASHBANG
+
+#define setmode(fd,mode) /*nothing*/
+
+#endif /* _h_config */
diff --git a/config/bsd b/config/bsd
new file mode 100644
index 000000000000..6fd07df929f5
--- /dev/null
+++ b/config/bsd
@@ -0,0 +1,81 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#undef TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+
+#endif /* _h_config */
diff --git a/config/bsd4.4 b/config/bsd4.4
index 6be4ebb35070..e799d1cd67d6 100644
--- a/config/bsd4.4
+++ b/config/bsd4.4
@@ -96,13 +96,8 @@
# define _PATH_TCSHELL "/usr/contrib/bin/tcsh"
# endif
-# undef NLS_CATALOGS
-
#elif defined(__APPLE__)
# define SYSMALLOC
-
-#else
-# define NLS_CATALOGS
#endif
#endif /* _h_config */
diff --git a/config/bsdreno b/config/bsdreno
new file mode 100644
index 000000000000..04e93341c31b
--- /dev/null
+++ b/config/bsdreno
@@ -0,0 +1,84 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+/*
+ * RENO This is the BSDRENO release
+ */
+#define RENO
+#endif /* _h_config */
diff --git a/config/clipper b/config/clipper
new file mode 100644
index 000000000000..32fe63fd9929
--- /dev/null
+++ b/config/clipper
@@ -0,0 +1,92 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ * SVR4 has a dummy rusage structure, so we don't use it.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending on the version of SYSV
+ * you are running, or set it to 0 if you are not SYSV based.
+ */
+#define SYSVREL 4
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/*
+ * ECHO_STYLE Optionally change the behavior of the builtin echo
+ * BOTH_ECHO: Support both bsd options (-n) and sysv escapes (\nnn)
+ * BSD_ECHO: Support only -n
+ * SYSV_ECHO: Support only sysv escapes (\nnn)
+ * NONE_ECHO: Pure echo.
+ */
+#define ECHO_STYLE BSD_ECHO /* BSD options only */
+
+/****************** local defines *********************/
+#define NAMEI_BUG
+
+#endif /* _h_config */
diff --git a/config/coh3 b/config/coh3
new file mode 100644
index 000000000000..bb39d5e9785e
--- /dev/null
+++ b/config/coh3
@@ -0,0 +1,80 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#endif /* _h_config */
diff --git a/config/convex b/config/convex
new file mode 100644
index 000000000000..5221f98a8193
--- /dev/null
+++ b/config/convex
@@ -0,0 +1,91 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities. BSDJOBS must also be defined.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ * This is fixed in sunos 4.1, broken in 4.0..
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+/*
+ * WARP warp symlinks, assuming your kernel supports it
+ */
+#if defined(__convex__) && !defined(convex)
+# define convex
+#endif
+#ifdef convex
+# define WARP
+#endif
+
+#endif /* _h_config */
diff --git a/config/cray b/config/cray
new file mode 100644
index 000000000000..dce7084d9529
--- /dev/null
+++ b/config/cray
@@ -0,0 +1,81 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+
+#endif /* _h_config */
diff --git a/config/csos b/config/csos
new file mode 100644
index 000000000000..0ef96761f1e8
--- /dev/null
+++ b/config/csos
@@ -0,0 +1,82 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#define BACKPIPE /* Fork pipelines backwards */
+
+#endif /* _h_config */
diff --git a/config/cygwin b/config/cygwin
new file mode 100644
index 000000000000..bd8094ff2948
--- /dev/null
+++ b/config/cygwin
@@ -0,0 +1,90 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * This is the config file for Cygwin systems
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SVID systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ *
+ * Note: Linux should work with any SYSVREL < 3.
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#ifndef _PATH_TCSHELL
+#define _PATH_TCSHELL "/bin/tcsh"
+#endif
+#define ECHO_STYLE BOTH_ECHO
+
+/* Cygwin allows paths prepended with double slashes (network paths). */
+#define HAVE_SLASHSLASH 1
+
+#endif /* _h_config */
diff --git a/config/decosf1 b/config/decosf1
new file mode 100644
index 000000000000..a055ba657ac8
--- /dev/null
+++ b/config/decosf1
@@ -0,0 +1,94 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+#ifndef _h_config
+#define _h_config
+
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+ /*
+ * We undef this for OSF/1 because it causes pipeline failures.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#define _BSD /* BSD emulation */
+
+#define _POSIX_PII_SOCKET /* need this for socklen_t */
+
+#ifdef notdef
+# define DECOSF1 120 /* For version 1.2 */
+#endif
+# define DECOSF1 200 /* For version 2.00 */
+
+#define YPBUGS
+
+#endif /* _h_config */
diff --git a/config/dgux b/config/dgux
new file mode 100644
index 000000000000..ac79cbb3d0c6
--- /dev/null
+++ b/config/dgux
@@ -0,0 +1,89 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#undef TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+/*
+ * Make dgux look like BSD...
+ */
+#define _BSD_SOURCE
+#define _BSD_WAIT_FLAVOR
+#define _BSD_TTY_FLAVOR
+#define _BSD_SIGNAL_FLAVOR
+#define _DGUX_SOURCE
+
+#endif /* _h_config */
diff --git a/config/dgux5.4 b/config/dgux5.4
new file mode 100644
index 000000000000..bba730b76e75
--- /dev/null
+++ b/config/dgux5.4
@@ -0,0 +1,94 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+#ifndef _h_config
+#define _h_config
+
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, or 3, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/*
+ * ECHO_STYLE Optionally change the behavior of the builtin echo
+ * BOTH_ECHO: Support both bsd options (-n) and sysv escapes (\nnn)
+ * BSD_ECHO: Support only -n
+ * SYSV_ECHO: Support only sysv escapes (\nnn)
+ * NONE_ECHO: Pure echo.
+ */
+#define ECHO_STYLE BSD_ECHO /* BSD options only */
+
+/****************** local defines *********************/
+#define NAMEI_BUG
+
+#define _POSIX_SOURCE
+#define _DGUX_SOURCE
+
+#endif /* _h_config */
diff --git a/config/dnix5.3 b/config/dnix5.3
new file mode 100644
index 000000000000..78cca84b5574
--- /dev/null
+++ b/config/dnix5.3
@@ -0,0 +1,83 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#define DNIX
+
+#undef REMOTEHOST
+#endif /* _h_config */
diff --git a/config/emx b/config/emx
new file mode 100644
index 000000000000..c22782c95429
--- /dev/null
+++ b/config/emx
@@ -0,0 +1,85 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ *
+ * configuration file for emx: OS/2 unix emulation
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 2
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#define NO_CRYPT
+#define BACKPIPE
+#define CASE_INSENSITIVE
+#endif /* _h_config */
diff --git a/config/eta10 b/config/eta10
new file mode 100644
index 000000000000..664878bb5223
--- /dev/null
+++ b/config/eta10
@@ -0,0 +1,81 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#define SYSMALLOC
+#endif /* _h_config */
diff --git a/config/ews b/config/ews
new file mode 100644
index 000000000000..5a1c6337e674
--- /dev/null
+++ b/config/ews
@@ -0,0 +1,97 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ *
+ * NEC EWS-UX/V(Rel4.0) R3000
+ * by Maurice LeBrun (mjl@dino.ph.utexas.edu) 2/16/93.
+ *
+ * Notes:
+ * You must specify -I/usr/include when compiling.
+ * When linking use LIBES= -ltermcap -lc
+ */
+#ifndef _h_config
+#define _h_config
+
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, or 3, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 4
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/*
+ * ECHO_STYLE Optionally change the behavior of the builtin echo
+ * BOTH_ECHO: Support both bsd options (-n) and sysv escapes (\nnn)
+ * BSD_ECHO: Support only -n
+ * SYSV_ECHO: Support only sysv escapes (\nnn)
+ * NONE_ECHO: Pure echo.
+ */
+#define ECHO_STYLE BOTH_ECHO
+
+/****************** local defines *********************/
+
+#endif /* _h_config */
diff --git a/config/fortune b/config/fortune
new file mode 100644
index 000000000000..ee1123661616
--- /dev/null
+++ b/config/fortune
@@ -0,0 +1,82 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#undef TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 1
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#define HAVENOLIMIT
+
+#endif /* _h_config */
diff --git a/config/fps500 b/config/fps500
new file mode 100644
index 000000000000..3d4662355709
--- /dev/null
+++ b/config/fps500
@@ -0,0 +1,90 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ *
+ * From kean@fps.ucs.orst.edu (Kean Stump)
+ * FPS 500 +FPX with Sun C compiler
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ * This is fixed in sunos 4.1, broken in 4.0..
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+/*
+ * SUNOS4 You are running SunOS 4 (on a Sun 2, 3, 4, or 386i)
+ */
+#define SUNOS4
+#define fps500
+
+#endif /* _h_config */
diff --git a/config/hcx b/config/hcx
new file mode 100644
index 000000000000..a58e133c1a6a
--- /dev/null
+++ b/config/hcx
@@ -0,0 +1,108 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Configuration file for Harris Tahoe running CX/UX 5.1, CX/UX 7.1
+ * Compile in ucb universe; tested with gcc 1.42 and cc.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#ifdef _CX_UX
+# undef TERMIO
+#else
+# define TERMIO
+#endif
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+
+#ifdef _CX_UX
+/*
+ * ECHO_STYLE Optionally change the behavior of the builtin echo
+ * BOTH_ECHO: Support both bsd options (-n) and sysv escapes (\nnn)
+ * BSD_ECHO: Support only -n
+ * SYSV_ECHO: Support only sysv escapes (\nnn)
+ * NONE_ECHO: Pure echo.
+ */
+#define ECHO_STYLE BOTH_ECHO /* Both BSD and SYSV options */
+#endif
+
+
+/****************** local defines *********************/
+/*
+ * It appears like 5.x defines hcx and does not define _CX_UX and
+ * 7.x defines _CX_UX and does not define hcx. In tcsh we currently
+ * use _CX_UX, maybe in the future we should try something neutral
+ */
+
+#if defined(hcx) && !defined(_CX_UX)
+# define _CX_UX
+#endif
+
+#endif /* _h_config */
diff --git a/config/hk68 b/config/hk68
new file mode 100644
index 000000000000..2b8ff6889724
--- /dev/null
+++ b/config/hk68
@@ -0,0 +1,94 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 1
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#define HOSTTYPE "hk68"
+#define HK68
+/*
+ * short names
+ */
+#define endpwent endpwen
+#define sys_nerr sys_ner
+#define sys_errlist sys_err
+#define localtime localti
+#define getpwent getpwen
+#define setpwent setpwen
+#define tgetflag tgetfla
+#define getpwnam getpwna
+
+#endif /* _h_config */
diff --git a/config/hp-3.2 b/config/hp-3.2
new file mode 100644
index 000000000000..4922b3c492a0
--- /dev/null
+++ b/config/hp-3.2
@@ -0,0 +1,80 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#endif /* _h_config */
diff --git a/config/hp-5.2 b/config/hp-5.2
new file mode 100644
index 000000000000..7b42272eb595
--- /dev/null
+++ b/config/hp-5.2
@@ -0,0 +1,81 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+
+#endif /* _h_config */
diff --git a/config/hpbsd2 b/config/hpbsd2
new file mode 100644
index 000000000000..f76a9d983e19
--- /dev/null
+++ b/config/hpbsd2
@@ -0,0 +1,80 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+#ifndef _h_config
+#define _h_config
+
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#undef TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#endif /* _h_config */
diff --git a/config/hposf1 b/config/hposf1
new file mode 100644
index 000000000000..8d6a8c058fda
--- /dev/null
+++ b/config/hposf1
@@ -0,0 +1,84 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+
+#define MACH /* to get setpath */
+#define _BSD /* BSD emulation */
+
+#endif /* _h_config */
diff --git a/config/hpux11 b/config/hpux11
new file mode 100644
index 000000000000..414c37d2203b
--- /dev/null
+++ b/config/hpux11
@@ -0,0 +1,113 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+#if defined(__hpux) && !defined(hpux)
+# define hpux
+#endif /* __hpux && !hpux */
+
+#if __STDC__ && !defined(__GNUC__)
+# define _POSIX_SOURCE
+# ifndef _HPUX_SOURCE
+# define _HPUX_SOURCE
+# endif /* !_HPUX_SOURCE */
+#endif
+
+/*
+ * We need to define the following, otherwise we get:
+ * #error "Large Files (ILP32) not supported in strict ANSI mode."
+ */
+#ifndef __STDC_EXT__
+#define __STDC_EXT__
+#endif
+
+/* for access to large files from 32 bit apps
+ * define the following. Removes the need to
+ * redefine stat, fstat and lstat in sh.h
+ */
+#define _FILE_OFFSET_BITS 64
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * ECHO_STYLE Optionally change the behavior of the builtin echo
+ * BOTH_ECHO: Support both bsd options (-n) and sysv escapes (\nnn)
+ * BSD_ECHO: Support only -n
+ * SYSV_ECHO: Support only sysv escapes (\nnn)
+ * NONE_ECHO: Pure echo.
+ */
+#define ECHO_STYLE BOTH_ECHO /* Both BSD and SYSV options */
+
+/****************** local defines *********************/
+#define NAMEI_BUG /* Great! you broke that one too */
+
+#define HPUXVERSION 1100 /* For HP-UX version 11.00 */
+#define _XOPEN_SOURCE_EXTENDED /* for socklen_t */
+
+#endif /* _h_config */
diff --git a/config/hpux7 b/config/hpux7
new file mode 100644
index 000000000000..7f4cb4f98fa2
--- /dev/null
+++ b/config/hpux7
@@ -0,0 +1,99 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#ifdef __hpux
+# define POSIX
+#else
+# undef POSIX
+#endif
+
+#if defined(__hpux) && !defined(hpux)
+# define hpux
+#endif /* __hpux && !hpux */
+
+#if __STDC__ && !defined(__GNUC__)
+# define _POSIX_SOURCE
+# ifndef _HPUX_SOURCE
+# define _HPUX_SOURCE
+# endif /* !_HPUX_SOURCE */
+#endif
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#ifdef __hpux
+# define POSIXJOBS
+#else
+# undef POSIXJOBS
+#endif
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/****************** local defines *********************/
+#ifdef __hpux
+# define NAMEI_BUG /* Great! you broke that one too */
+#endif
+
+#define HPUXVERSION 700 /* For HP-UX version 7.00 */
+
+#endif /* _h_config */
diff --git a/config/hpux8 b/config/hpux8
new file mode 100644
index 000000000000..defe3ab5edbd
--- /dev/null
+++ b/config/hpux8
@@ -0,0 +1,100 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+#if defined(__hpux) && !defined(hpux)
+# define hpux
+#endif /* __hpux && !hpux */
+
+#if __STDC__ && !defined(__GNUC__)
+# define _POSIX_SOURCE
+# ifndef _HPUX_SOURCE
+# define _HPUX_SOURCE
+# endif /* !_HPUX_SOURCE */
+#endif
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * ECHO_STYLE Optionally change the behavior of the builtin echo
+ * BOTH_ECHO: Support both bsd options (-n) and sysv escapes (\nnn)
+ * BSD_ECHO: Support only -n
+ * SYSV_ECHO: Support only sysv escapes (\nnn)
+ * NONE_ECHO: Pure echo.
+ */
+#define ECHO_STYLE BOTH_ECHO /* Both BSD and SYSV options */
+
+/****************** local defines *********************/
+#define NAMEI_BUG /* Great! you broke that one too */
+
+#define HPUXVERSION 800 /* For HP-UX version 8.00 */
+
+#define _XOPEN_SOURCE_EXTENDED
+
+#endif /* _h_config */
diff --git a/config/iconuxv b/config/iconuxv
new file mode 100644
index 000000000000..d238bdcdf52e
--- /dev/null
+++ b/config/iconuxv
@@ -0,0 +1,80 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#endif /* _h_config */
diff --git a/config/intel b/config/intel
new file mode 100644
index 000000000000..723c9de41484
--- /dev/null
+++ b/config/intel
@@ -0,0 +1,82 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#define INTEL
+
+#endif /* _h_config */
diff --git a/config/irix b/config/irix
new file mode 100644
index 000000000000..a4160fb27d34
--- /dev/null
+++ b/config/irix
@@ -0,0 +1,144 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#ifdef mips
+# define POSIX
+#else
+# undef POSIX
+#endif
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#ifdef mips
+# define BSDJOBS
+#else
+# undef BSDJOBS
+#endif
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#ifdef mips
+# define BSDTIMES
+#else
+# undef BSDTIMES
+#endif
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#ifdef mips
+# define BSDLIMIT
+#else
+# undef BSDLIMIT
+#endif
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#ifdef mips
+# if defined(SYSTYPE_SVR4) || defined(_SYSTYPE_SVR4)
+# define SYSVREL 4
+# else
+# define SYSVREL 3
+# endif /* SYSTYPE_SVR4 || _SYSTYPE_SVR4 */
+#else
+/*
+ * For the 3000:
+ * We may not technically be compliant, and I don't know whether we are
+ * SVR1 or SVR2. We're pretty System V-ish, though, so we won't say 0.
+ * We'll guess 1. There are no checks for SYSVREL <= 1 vs. SYSVREL >= 2 at
+ * current writing anyway.
+ */
+# define SYSVREL 1
+#endif
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#define YPBUGS
+
+/*
+ * ECHO_STYLE Optionally change the behavior of the builtin echo
+ * BOTH_ECHO: Support both bsd options (-n) and sysv escapes (\nnn)
+ * BSD_ECHO: Support only -n
+ * SYSV_ECHO: Support only sysv escapes (\nnn)
+ * NONE_ECHO: Pure echo.
+ */
+#define ECHO_STYLE BOTH_ECHO /* Both BSD and SYSV options */
+
+/****************** local defines *********************/
+#ifdef mips
+/*
+ * IRIS4D You are running on an Iris 4D
+ */
+# define IRIS4D
+
+/*
+ * IRIX3_3 You are running IRIX 3.3 (or later)
+ */
+# define IRIX3_3
+#endif
+
+#ifdef m68000
+/*
+ * IRIS3D You are running on an Iris 3000 series
+ */
+# define IRIS3D
+#endif
+
+/*
+ * lookupname/namei ignores tailing '/' on files
+ */
+#define NAMEI_BUG
+
+#endif /* _h_config */
diff --git a/config/irix62 b/config/irix62
new file mode 100644
index 000000000000..5f91aac62eb5
--- /dev/null
+++ b/config/irix62
@@ -0,0 +1,140 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#ifdef mips
+# define POSIX
+#else
+# undef POSIX
+#endif
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#ifdef mips
+# define BSDTIMES
+#else
+# undef BSDTIMES
+#endif
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#ifdef mips
+# define BSDLIMIT
+#else
+# undef BSDLIMIT
+#endif
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#ifdef mips
+# if defined(SYSTYPE_SVR4) || defined(_SYSTYPE_SVR4)
+# define SYSVREL 4
+# else
+# define SYSVREL 3
+# endif /* SYSTYPE_SVR4 || _SYSTYPE_SVR4 */
+#else
+/*
+ * For the 3000:
+ * We may not technically be compliant, and I don't know whether we are
+ * SVR1 or SVR2. We're pretty System V-ish, though, so we won't say 0.
+ * We'll guess 1. There are no checks for SYSVREL <= 1 vs. SYSVREL >= 2 at
+ * current writing anyway.
+ */
+# define SYSVREL 1
+#endif
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#define YPBUGS
+
+/*
+ * ECHO_STYLE Optionally change the behavior of the builtin echo
+ * BOTH_ECHO: Support both bsd options (-n) and sysv escapes (\nnn)
+ * BSD_ECHO: Support only -n
+ * SYSV_ECHO: Support only sysv escapes (\nnn)
+ * NONE_ECHO: Pure echo.
+ */
+#define ECHO_STYLE BOTH_ECHO /* Both BSD and SYSV options */
+
+/****************** local defines *********************/
+#ifdef mips
+/*
+ * IRIS4D You are running on an Iris 4D
+ */
+# define IRIS4D
+
+/*
+ * IRIX3_3 You are running IRIX 3.3 (or later)
+ */
+# define IRIX3_3
+#endif
+
+#ifdef m68000
+/*
+ * IRIS3D You are running on an Iris 3000 series
+ */
+# define IRIS3D
+#endif
+
+/*
+ * lookupname/namei ignores tailing '/' on files
+ */
+#define NAMEI_BUG
+
+#endif /* _h_config */
diff --git a/config/isc202 b/config/isc202
new file mode 100644
index 000000000000..abf4db21f00d
--- /dev/null
+++ b/config/isc202
@@ -0,0 +1,82 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#define ISC202
+
+#endif /* _h_config */
diff --git a/config/isc3.0 b/config/isc3.0
new file mode 100644
index 000000000000..7a29614b561f
--- /dev/null
+++ b/config/isc3.0
@@ -0,0 +1,92 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+/*
+ * ISC You are running ISC's version of unix
+ */
+#ifndef ISC
+# define ISC
+#endif
+#ifdef POSIX
+# ifndef _POSIX_SOURCE
+# define _POSIX_SOURCE
+# endif /* _POSIX_SOURCE */
+#endif /* POSIX */
+
+#endif /* _h_config */
diff --git a/config/isc4.0 b/config/isc4.0
new file mode 100644
index 000000000000..1a05122ce4ea
--- /dev/null
+++ b/config/isc4.0
@@ -0,0 +1,98 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+/*
+ * ISC You are running ISC's version of unix
+ */
+#ifndef ISC
+# define ISC
+#endif
+#ifdef POSIX
+# ifndef _POSIX_SOURCE
+# define _POSIX_SOURCE
+# endif /* _POSIX_SOURCE */
+#endif /* POSIX */
+
+/*
+ * Avoid a bug in isc-4.0 where progeny of posix processes incorrectly
+ * inherited posix attributes
+ */
+#define ISC_POSIX_EXEC_BUG
+
+#endif /* _h_config */
diff --git a/config/linux b/config/linux
new file mode 100644
index 000000000000..cce57449c8bb
--- /dev/null
+++ b/config/linux
@@ -0,0 +1,135 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * This is the config file for Linux systems
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SVID systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ *
+ * Note: Linux should work with any SYSVREL < 3.
+ */
+#define SYSVREL 2
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/*
+ * Get the name space we want.
+ *
+ * The more recent defaults for gcc (e.g. on Red Hat 7.0)
+ * also define _POSIX_C_SOURCE, which throws our code off.
+ */
+
+#define __STRICT_ANSI__
+#ifndef _BSD_SOURCE
+# define _BSD_SOURCE
+#endif
+#ifndef _SVID_SOURCE
+# define _SVID_SOURCE
+#endif
+#ifndef _POSIX_SOURCE
+# define _POSIX_SOURCE
+#endif
+#ifndef _XOPEN_SOURCE
+# define _XOPEN_SOURCE 500
+#endif
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE
+#endif
+
+/*
+ * Large file support from <features.h>
+ */
+
+#ifndef _LARGEFILE_SOURCE
+# define _LARGEFILE_SOURCE
+#endif
+#ifndef _LARGEFILE64_SOURCE
+# define _LARGEFILE64_SOURCE
+#endif
+#ifndef _FILE_OFFSET_BITS
+# define _FILE_OFFSET_BITS 64
+#endif
+
+/****************** local defines *********************/
+#ifndef _PATH_TCSHELL
+#define _PATH_TCSHELL "/bin/tcsh"
+#endif
+#define ECHO_STYLE BOTH_ECHO
+
+#if !defined(SYSMALLOC)
+# define SYSMALLOC
+#endif
+#if !defined(NISPLUS)
+# define NISPLUS
+#endif
+#if !defined(POSIX)
+# define POSIX
+#endif
+
+#endif /* _h_config */
diff --git a/config/lynx2.1 b/config/lynx2.1
new file mode 100644
index 000000000000..a5e48f14aa51
--- /dev/null
+++ b/config/lynx2.1
@@ -0,0 +1,84 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#undef TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#define SYSMALLOC
+#ifndef NULL
+#define NULL 0
+#endif
+#endif /* _h_config */
diff --git a/config/mac2 b/config/mac2
new file mode 100644
index 000000000000..16ab5cbe02e2
--- /dev/null
+++ b/config/mac2
@@ -0,0 +1,99 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * For A/UX < 2.00 you can undefine POSIX and POSIXJOBS, delete
+ * -ZP in CFLAGS and -lposix in LIBES
+ */
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+#ifndef _POSIX_SOURCE
+#define _POSIX_SOURCE
+#endif
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 2
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/***************** local defines *********************/
+/*
+ * OREO You are running Apple Unix.
+ */
+#define OREO
+
+#ifndef _BSD_SOURCE
+# define _BSD_SOURCE
+#endif /* _BSD_SOURCE */
+#ifndef _SYSV_SOURCE
+# define _SYSV_SOURCE
+#endif /* _SYSV_SOURCE */
+
+#endif /* _h_config */
diff --git a/config/mach b/config/mach
new file mode 100644
index 000000000000..0fa191d39aa6
--- /dev/null
+++ b/config/mach
@@ -0,0 +1,98 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#if defined(NeXT) && !defined(__STRICT_BSD__)
+# undef VFORK
+#endif
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#undef TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#ifdef NeXT
+# define environ _environ
+#else
+# ifdef notdef
+# define SETENV_IN_LIB /* read comment in sh.func.c */
+# define setenv(x,y) Setenv(x,y)
+# endif
+#endif
+
+/* this define is necessary for NeXT users running 3.1 without */
+/* POSIX to avoid undefined symbols during final link */
+/* You'll need to define __NeXT31__ */
+#if defined(__NeXT31__) && !defined(POSIX)
+# define _TERMIOS_H_
+#endif /* __NeXT31__ && !POSIX */
+
+#endif /* _h_config */
diff --git a/config/machten b/config/machten
new file mode 100644
index 000000000000..21ec25b61f5d
--- /dev/null
+++ b/config/machten
@@ -0,0 +1,94 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+
+#ifdef __bsdi__
+/*
+ * _PATH_TCSHELL if you've change the installation location (vix)
+ */
+# define _PATH_TCSHELL "/usr/contrib/bin/tcsh"
+
+#endif
+
+#ifdef __MACHTEN__
+# define _PATH_TCSHELL "/usr/bin/tcsh"
+# define SYSMALLOC
+#endif
+
+#endif /* _h_config */
diff --git a/config/masscomp b/config/masscomp
new file mode 100644
index 000000000000..ff1dc5943e9a
--- /dev/null
+++ b/config/masscomp
@@ -0,0 +1,81 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#undef TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#define RTU6
+#endif /* _h_config */
diff --git a/config/minix b/config/minix
new file mode 100644
index 000000000000..1a96c1ad048c
--- /dev/null
+++ b/config/minix
@@ -0,0 +1,101 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * This is the config file for minix-386 systems
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSVREL compliant (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, or 3, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+
+#ifndef i386
+#define i386 /* gcc may define this for you already. */
+#endif /* i386 */
+
+ /*
+ * the following symbol must be defined as a non-zero
+ * value (not just defined) for <minix/config.h>
+ */
+#define INTEL_32BITS 1
+
+#define HAVENOLIMIT
+#define _POSIX_SOURCE
+#define _MINIX
+
+/*
+ * define if you are on vmd system
+ */
+#undef _MINIX_VMD
+
+#undef REMOTEHOST
+#endif /* _h_config */
diff --git a/config/mips b/config/mips
new file mode 100644
index 000000000000..678974fa8e0f
--- /dev/null
+++ b/config/mips
@@ -0,0 +1,82 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#undef TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#define MIPS
+
+#endif /* _h_config */
diff --git a/config/mtXinu b/config/mtXinu
new file mode 100644
index 000000000000..7d43501a3ff0
--- /dev/null
+++ b/config/mtXinu
@@ -0,0 +1,80 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#undef TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#define YPBUGS
+
+/****************** local defines *********************/
+#endif /* _h_config */
diff --git a/config/opus b/config/opus
new file mode 100644
index 000000000000..7e0bae675e3b
--- /dev/null
+++ b/config/opus
@@ -0,0 +1,86 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+/*
+ * The preprocessor only defines 'unix' and 'ns32000',
+ * which is not enough to decide about HOSTTYPE.
+ */
+#define OPUS
+
+#endif /* _h_config */
diff --git a/config/os390 b/config/os390
new file mode 100644
index 000000000000..375333541bdc
--- /dev/null
+++ b/config/os390
@@ -0,0 +1,130 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#ifdef BSDJOBS
+# undef BSDJOBS
+#endif
+
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, or 3, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 4
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null [they are back!]
+ */
+#undef YPBUGS
+
+/*
+ * NISPLUS Make sure that fd's 0, 1, and 2 always are open so that
+ * Sun's NIS+ doesn't get them, making ~-expansion hang.
+ */
+#undef NISPLUS
+
+/*
+ * ECHO_STYLE Optionally change the behavior of the builtin echo
+ * BOTH_ECHO: Support both bsd options (-n) and sysv escapes (\nnn)
+ * BSD_ECHO: Support only -n
+ * SYSV_ECHO: Support only sysv escapes (\nnn)
+ * NONE_ECHO: Pure echo.
+ */
+#define ECHO_STYLE BOTH_ECHO
+
+/****************** local defines *********************/
+/*
+ * OS Release dependent
+ * Work around OS deficiency which cannot start #!/bin/sh scripts
+ */
+/* #define HASHBANG */
+
+/*
+ * OS/390 c89 compilation environment varies dramatically
+ * without each of the following.
+ */
+#define MAXSIG 38
+#define _OE_SOCKETS
+#define _POSIX_SOURCE
+#define _XOPEN_SOURCE
+#define _XOPEN_SOURCE_EXTENDED 1
+
+/*
+ This stuff is supposed to be needed for ioctl() but does not work yet.
+#include <types.h>
+#include <ioctl.h>
+#include <rtrouteh.h>
+#include <if.h>
+ */
+
+/*
+ * gcc has been ported to os/390 let's make sure that OS dependent
+ * stuff works for gcc users (???)
+ */
+#ifndef __MVS__
+#define __MVS__
+#endif
+
+#endif /* _h_config */
diff --git a/config/osf1 b/config/osf1
new file mode 100644
index 000000000000..d66e5546d233
--- /dev/null
+++ b/config/osf1
@@ -0,0 +1,83 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#undef TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+
+#define MACH
+
+#endif /* _h_config */
diff --git a/config/parosf1 b/config/parosf1
new file mode 100644
index 000000000000..3b03afa7e36a
--- /dev/null
+++ b/config/parosf1
@@ -0,0 +1,83 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ * For Intel paragon OSF/1
+ */
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#undef TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+
+#define MACH
+
+#endif /* _h_config */
diff --git a/config/powermaxos b/config/powermaxos
new file mode 100644
index 000000000000..7f4ccf9d2efa
--- /dev/null
+++ b/config/powermaxos
@@ -0,0 +1,92 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ * SVR4 has a dummy rusage structure, so we don't use it.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending on the version of SYSV
+ * you are running, or set it to 0 if you are not SYSV based.
+ */
+#define SYSVREL 4
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/*
+ * ECHO_STYLE Optionally change the behavior of the builtin echo
+ * BOTH_ECHO: Support both bsd options (-n) and sysv escapes (\nnn)
+ * BSD_ECHO: Support only -n
+ * SYSV_ECHO: Support only sysv escapes (\nnn)
+ * NONE_ECHO: Pure echo.
+ */
+#define ECHO_STYLE BSD_ECHO /* BSD options only */
+
+/****************** local defines *********************/
+#define NAMEI_BUG
+
+#endif /* _h_config */
diff --git a/config/pyr b/config/pyr
new file mode 100644
index 000000000000..a635ef2fe8f6
--- /dev/null
+++ b/config/pyr
@@ -0,0 +1,82 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#undef TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#define BSD
+
+#endif /* _h_config */
diff --git a/config/pyratt b/config/pyratt
new file mode 100644
index 000000000000..28a62a8be82d
--- /dev/null
+++ b/config/pyratt
@@ -0,0 +1,82 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 4
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#undef BSD
+
+#endif /* _h_config */
diff --git a/config/qnx6 b/config/qnx6
new file mode 100644
index 000000000000..95e9c11b164e
--- /dev/null
+++ b/config/qnx6
@@ -0,0 +1,93 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * POSIXSIGS Use the POSIX signal facilities to emulate BSD signals.
+ */
+#define POSIXSIGS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDSIGS You have 4.2-style signals, rather than USG style.
+ * Note: POSIX systems should not define this unless they
+ * have sigvec() and friends (ie: 4.3BSD-RENO, HP-UX).
+ */
+#undef BSDSIGS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS and BSDSIGS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+
+#endif /* _h_config */
diff --git a/config/sco+odt b/config/sco+odt
new file mode 100644
index 000000000000..396f5a3ecba9
--- /dev/null
+++ b/config/sco+odt
@@ -0,0 +1,84 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * For Sco Unix 3.2.0 and ODT 1.0
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#define SCO
+#define ODT
+#endif /* _h_config */
diff --git a/config/sco32v2 b/config/sco32v2
new file mode 100644
index 000000000000..85c8078ed327
--- /dev/null
+++ b/config/sco32v2
@@ -0,0 +1,81 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#define SCO
+#endif /* _h_config */
diff --git a/config/sco32v4 b/config/sco32v4
new file mode 100644
index 000000000000..d83b09115d57
--- /dev/null
+++ b/config/sco32v4
@@ -0,0 +1,84 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * For OpenServer Release 5.0.x
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#define SCO
+#define ODT
+#endif /* _h_config */
diff --git a/config/sco32v5 b/config/sco32v5
new file mode 100644
index 000000000000..7f123b973198
--- /dev/null
+++ b/config/sco32v5
@@ -0,0 +1,99 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * For OpenServer Release 5.0.x
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 4
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/*
+ * NISPLUS Make sure that fd's 0, 1, and 2 always are open so that
+ * Sun's NIS+ doesn't get them, making ~-expansion hang.
+ * Also just generally a good idea.
+ */
+#define NISPLUS
+
+/*
+ * ECHO_STYLE Optionally change the behavior of the builtin echo
+ * BOTH_ECHO: Support both bsd options (-n) and sysv escapes (\nnn)
+ * BSD_ECHO: Support only -n
+ * SYSV_ECHO: Support only sysv escapes (\nnn)
+ * NONE_ECHO: Pure echo.
+ */
+#define ECHO_STYLE SYSV_ECHO /* SYSV options only */
+/****************** local defines *********************/
+#define SCO
+#define ODT
+#endif /* _h_config */
diff --git a/config/sequent b/config/sequent
new file mode 100644
index 000000000000..ae72e949fd4e
--- /dev/null
+++ b/config/sequent
@@ -0,0 +1,121 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#ifdef _SEQUENT_
+# define POSIX
+#else /* _SEQUENT_ */
+# undef POSIX
+#endif /* _SEQUENT_ */
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#ifdef _SEQUENT_
+# define POSIXJOBS
+#else /* _SEQUENT_ */
+# undef POSIXJOBS
+#endif /* _SEQUENT_ */
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#ifdef _SEQUENT_
+# undef BSDTIMES
+#else /* _SEQUENT_ */
+# define BSDTIMES
+#endif /* _SEQUENT_ */
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#ifdef _SEQUENT_
+# undef BSDLIMIT
+#else /* _SEQUENT_ */
+# define BSDLIMIT
+#endif /* _SEQUENT_ */
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#ifdef _SEQUENT_
+# define TERMIO
+#else /* _SEQUENT_ */
+# undef TERMIO
+#endif /* _SEQUENT_ */
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#ifdef _SEQUENT_
+# define SYSVREL 4
+#else /* _SEQUENT_ */
+# define SYSVREL 0
+#endif /* _SEQUENT_ */
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ * This is fixed in sunos 4.1, broken in 4.0..
+ */
+#ifdef _SEQUENT_
+# undef YPBUGS
+#else /* _SEQUENT_ */
+# define YPBUGS
+#endif /* _SEQUENT_ */
+
+/*
+ * BSD Your system has <strings.h> instead of <string.h>
+ */
+#ifdef _SEQUENT_
+#undef BSD
+#else /* _SEQUENT_ */
+#define BSD
+#endif /* _SEQUENT_ */
+
+/****************** local defines *********************/
+
+#ifdef _SEQUENT_
+#define NAMEI_BUG
+#endif /* _h_config */
diff --git a/config/sinix b/config/sinix
new file mode 100644
index 000000000000..4ca430962550
--- /dev/null
+++ b/config/sinix
@@ -0,0 +1,97 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, or 3, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 4
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null [they are back!]
+ */
+#define YPBUGS
+
+/*
+ * NISPLUS Make sure that fd's 0, 1, and 2 always are open so that
+ * Sun's NIS+ doesn't get them, making ~-expansion hang.
+ */
+#define NISPLUS
+
+/*
+ * ECHO_STYLE Optionally change the behavior of the builtin echo
+ * BOTH_ECHO: Support both bsd options (-n) and sysv escapes (\nnn)
+ * BSD_ECHO: Support only -n
+ * SYSV_ECHO: Support only sysv escapes (\nnn)
+ * NONE_ECHO: Pure echo.
+ */
+#define ECHO_STYLE BSD_ECHO /* BSD options only */
+
+/****************** local defines *********************/
+#define SOLARIS2 24
+
+#endif /* _h_config */
diff --git a/config/sol2 b/config/sol2
new file mode 100644
index 000000000000..1a7516cfeae6
--- /dev/null
+++ b/config/sol2
@@ -0,0 +1,106 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, or 3, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 4
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/*
+ * ECHO_STYLE Optionally change the behavior of the builtin echo
+ * BOTH_ECHO: Support both bsd options (-n) and sysv escapes (\nnn)
+ * BSD_ECHO: Support only -n
+ * SYSV_ECHO: Support only sysv escapes (\nnn)
+ * NONE_ECHO: Pure echo.
+ */
+#define ECHO_STYLE BSD_ECHO /* BSD options only */
+
+/****************** local defines *********************/
+#define SOLARIS2 21
+
+/*
+ * Fix http://bugs.opensolaris.org/view_bug.do?bug_id=6593766
+ * All XPG4 and XPG4.2 applications should use __XPG4_CHAR_CLASS__
+ * The degree character(?) is not part of ASCII. It is part of extended-ASCII
+ * and needs wide char to get this to working. Hence we need to enable the
+ * macro __XPG4_CHAR_CLASS__ in config_f.h header file under tcsh to get
+ * this to working.
+ */
+#define __XPG4_CHAR_CLASS__
+
+/*
+ * lookupname/namei ignores tailing '/' on files
+ */
+#define NAMEI_BUG
+
+#endif /* _h_config */
diff --git a/config/sol22 b/config/sol22
new file mode 100644
index 000000000000..54c22f381af1
--- /dev/null
+++ b/config/sol22
@@ -0,0 +1,106 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, or 3, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 4
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/*
+ * ECHO_STYLE Optionally change the behavior of the builtin echo
+ * BOTH_ECHO: Support both bsd options (-n) and sysv escapes (\nnn)
+ * BSD_ECHO: Support only -n
+ * SYSV_ECHO: Support only sysv escapes (\nnn)
+ * NONE_ECHO: Pure echo.
+ */
+#define ECHO_STYLE BSD_ECHO /* BSD options only */
+
+/****************** local defines *********************/
+#define SOLARIS2 22
+
+/*
+ * Fix http://bugs.opensolaris.org/view_bug.do?bug_id=6593766
+ * All XPG4 and XPG4.2 applications should use __XPG4_CHAR_CLASS__
+ * The degree character(?) is not part of ASCII. It is part of extended-ASCII
+ * and needs wide char to get this to working. Hence we need to enable the
+ * macro __XPG4_CHAR_CLASS__ in config_f.h header file under tcsh to get
+ * this to working.
+ */
+#define __XPG4_CHAR_CLASS__
+
+/*
+ * lookupname/namei ignores tailing '/' on files
+ */
+#define NAMEI_BUG
+
+#endif /* _h_config */
diff --git a/config/sol23 b/config/sol23
new file mode 100644
index 000000000000..4165f2ee5d91
--- /dev/null
+++ b/config/sol23
@@ -0,0 +1,112 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, or 3, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 4
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null [they are back!]
+ */
+#define YPBUGS
+
+/*
+ * NISPLUS Make sure that fd's 0, 1, and 2 always are open so that
+ * Sun's NIS+ doesn't get them, making ~-expansion hang.
+ */
+#define NISPLUS
+
+/*
+ * ECHO_STYLE Optionally change the behavior of the builtin echo
+ * BOTH_ECHO: Support both bsd options (-n) and sysv escapes (\nnn)
+ * BSD_ECHO: Support only -n
+ * SYSV_ECHO: Support only sysv escapes (\nnn)
+ * NONE_ECHO: Pure echo.
+ */
+#define ECHO_STYLE BSD_ECHO /* BSD options only */
+
+/****************** local defines *********************/
+#define SOLARIS2 23
+
+/*
+ * Fix http://bugs.opensolaris.org/view_bug.do?bug_id=6593766
+ * All XPG4 and XPG4.2 applications should use __XPG4_CHAR_CLASS__
+ * The degree character(?) is not part of ASCII. It is part of extended-ASCII
+ * and needs wide char to get this to working. Hence we need to enable the
+ * macro __XPG4_CHAR_CLASS__ in config_f.h header file under tcsh to get
+ * this to working.
+ */
+#define __XPG4_CHAR_CLASS__
+
+/*
+ * lookupname/namei ignores tailing '/' on files
+ */
+#define NAMEI_BUG
+
+#endif /* _h_config */
diff --git a/config/sol24 b/config/sol24
new file mode 100644
index 000000000000..697af74dfb49
--- /dev/null
+++ b/config/sol24
@@ -0,0 +1,112 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, or 3, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 4
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null [they are back!]
+ */
+#define YPBUGS
+
+/*
+ * NISPLUS Make sure that fd's 0, 1, and 2 always are open so that
+ * Sun's NIS+ doesn't get them, making ~-expansion hang.
+ */
+#define NISPLUS
+
+/*
+ * ECHO_STYLE Optionally change the behavior of the builtin echo
+ * BOTH_ECHO: Support both bsd options (-n) and sysv escapes (\nnn)
+ * BSD_ECHO: Support only -n
+ * SYSV_ECHO: Support only sysv escapes (\nnn)
+ * NONE_ECHO: Pure echo.
+ */
+#define ECHO_STYLE BSD_ECHO /* BSD options only */
+
+/****************** local defines *********************/
+#define SOLARIS2 24
+
+/*
+ * Fix http://bugs.opensolaris.org/view_bug.do?bug_id=6593766
+ * All XPG4 and XPG4.2 applications should use __XPG4_CHAR_CLASS__
+ * The degree character(?) is not part of ASCII. It is part of extended-ASCII
+ * and needs wide char to get this to working. Hence we need to enable the
+ * macro __XPG4_CHAR_CLASS__ in config_f.h header file under tcsh to get
+ * this to working.
+ */
+#define __XPG4_CHAR_CLASS__
+
+/*
+ * lookupname/namei ignores tailing '/' on files
+ */
+#define NAMEI_BUG
+
+#endif /* _h_config */
diff --git a/config/sol26 b/config/sol26
new file mode 100644
index 000000000000..a47f40e824d4
--- /dev/null
+++ b/config/sol26
@@ -0,0 +1,112 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, or 3, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 4
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null [they are back!]
+ */
+#define YPBUGS
+
+/*
+ * NISPLUS Make sure that fd's 0, 1, and 2 always are open so that
+ * Sun's NIS+ doesn't get them, making ~-expansion hang.
+ */
+#define NISPLUS
+
+/*
+ * ECHO_STYLE Optionally change the behavior of the builtin echo
+ * BOTH_ECHO: Support both bsd options (-n) and sysv escapes (\nnn)
+ * BSD_ECHO: Support only -n
+ * SYSV_ECHO: Support only sysv escapes (\nnn)
+ * NONE_ECHO: Pure echo.
+ */
+#define ECHO_STYLE BSD_ECHO /* BSD options only */
+
+/****************** local defines *********************/
+#define SOLARIS2 26
+
+/*
+ * Fix http://bugs.opensolaris.org/view_bug.do?bug_id=6593766
+ * All XPG4 and XPG4.2 applications should use __XPG4_CHAR_CLASS__
+ * The degree character(?) is not part of ASCII. It is part of extended-ASCII
+ * and needs wide char to get this to working. Hence we need to enable the
+ * macro __XPG4_CHAR_CLASS__ in config_f.h header file under tcsh to get
+ * this to working.
+ */
+#define __XPG4_CHAR_CLASS__
+
+/*
+ * lookupname/namei ignores tailing '/' on files
+ */
+#define NAMEI_BUG
+
+#endif /* _h_config */
diff --git a/config/sol29 b/config/sol29
new file mode 100644
index 000000000000..5261a096fed3
--- /dev/null
+++ b/config/sol29
@@ -0,0 +1,119 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * This is the config file for Solaris systems.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending on the version of SYSV
+ * you are running, or set it to 0 if you are not SYSV based.
+ */
+#define SYSVREL 4
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null [they are back!]
+ */
+#define YPBUGS
+
+/*
+ * NISPLUS Make sure that fd's 0, 1, and 2 always are open so that
+ * Sun's NIS+ doesn't get them, making ~-expansion hang.
+ */
+#define NISPLUS
+
+/*
+ * Large file support
+ */
+#define _LARGEFILE_SOURCE
+#define _LARGEFILE64_SOURCE
+#define _FILE_OFFSET_BITS 64
+
+/*
+ * ECHO_STYLE Optionally change the behavior of the builtin echo
+ * BOTH_ECHO: Support both bsd options (-n) and sysv escapes (\nnn)
+ * BSD_ECHO: Support only -n
+ * SYSV_ECHO: Support only sysv escapes (\nnn)
+ * NONE_ECHO: Pure echo.
+ */
+#define ECHO_STYLE BSD_ECHO /* BSD options only */
+
+/****************** local defines *********************/
+#define SOLARIS2 29
+
+/*
+ * Fix http://bugs.opensolaris.org/view_bug.do?bug_id=6593766
+ * All XPG4 and XPG4.2 applications should use __XPG4_CHAR_CLASS__
+ * The degree character(?) is not part of ASCII. It is part of extended-ASCII
+ * and needs wide char to get this to working. Hence we need to enable the
+ * macro __XPG4_CHAR_CLASS__ in config_f.h header file under tcsh to get
+ * this to working.
+ */
+#define __XPG4_CHAR_CLASS__
+
+/*
+ * lookupname/namei ignores tailing '/' on files
+ */
+#define NAMEI_BUG
+
+#endif /* _h_config */
diff --git a/config/stellar b/config/stellar
new file mode 100644
index 000000000000..490842595270
--- /dev/null
+++ b/config/stellar
@@ -0,0 +1,81 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, or 3, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#define BACKPIPE
+#endif /* _h_config */
diff --git a/config/sunos35 b/config/sunos35
new file mode 100644
index 000000000000..8c521d8c89ed
--- /dev/null
+++ b/config/sunos35
@@ -0,0 +1,84 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#undef TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ * do this for all flavors of SunOS and anything else that has YP.
+ */
+#define YPBUGS
+
+/****************** local defines *********************/
+#define strtoul(a, b, c) ((unsigned long)strtol((a), (b), (c)))
+#define BSD /* We really look like BSD 4.2 */
+
+#endif /* _h_config */
diff --git a/config/sunos40 b/config/sunos40
new file mode 100644
index 000000000000..c85d845f4943
--- /dev/null
+++ b/config/sunos40
@@ -0,0 +1,98 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#undef TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3 or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ * This is fixed in sunos 4.1, broken in 4.0..
+ */
+#define YPBUGS
+
+/****************** local defines *********************/
+/*
+ * SUNOS4 You are running SunOS 4 (on a Sun 2, 3, 4, or 386i)
+ */
+#define SUNOS4
+
+/*
+ * STRCOLLBUG See comment in tc.os.c
+ */
+#define STRCOLLBUG
+
+/*
+ * SETLOCALEBUG SunOS tries to free the constant locale args!
+ */
+#define SETLOCALEBUG
+
+#define strtoul(a, b, c) ((unsigned long)strtol((a), (b), (c)))
+
+#endif /* _h_config */
diff --git a/config/sunos41 b/config/sunos41
new file mode 100644
index 000000000000..42c8f4d59af8
--- /dev/null
+++ b/config/sunos41
@@ -0,0 +1,98 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3 or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ * This is fixed in sunos 4.1, broken in 4.0..
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+/*
+ * SUNOS4 You are running SunOS 4 (on a Sun 2, 3, 4, or 386i)
+ */
+#define SUNOS4
+
+/*
+ * STRCOLLBUG See comment in tc.os.c
+ */
+#define STRCOLLBUG
+
+/*
+ * SETLOCALEBUG SunOS tries to free the constant locale args!
+ */
+#define SETLOCALEBUG
+
+#define strtoul(a, b, c) ((unsigned long)strtol((a), (b), (c)))
+
+#endif /* _h_config */
diff --git a/config/sunos413 b/config/sunos413
new file mode 100644
index 000000000000..55b884f4c5a4
--- /dev/null
+++ b/config/sunos413
@@ -0,0 +1,95 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3 or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ * This is fixed in sunos 4.1, broken in 4.0..
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+/*
+ * SUNOS4 You are running SunOS 4 (on a Sun 2, 3, 4, or 386i)
+ */
+#define SUNOS4
+
+/*
+ * SETLOCALEBUG SunOS tries to free the constant locale args!
+ */
+#define SETLOCALEBUG
+
+#define NAMEI_BUG
+
+#define strtoul(a, b, c) ((unsigned long)strtol((a), (b), (c)))
+
+#endif /* _h_config */
diff --git a/config/supermax b/config/supermax
new file mode 100644
index 000000000000..eabbe679b562
--- /dev/null
+++ b/config/supermax
@@ -0,0 +1,85 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ *
+ * 1992, June 1 - gerard@tscs.tscs.com
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+
+#undef REMOTEHOST
+
+#endif /* _h_config */
diff --git a/config/superux8 b/config/superux8
new file mode 100644
index 000000000000..baa364c2d8a4
--- /dev/null
+++ b/config/superux8
@@ -0,0 +1,90 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ * SVR4 has a dummy rusage structure, so we don't use it.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending on the version of SYSV
+ * you are running, or set it to 0 if you are not SYSV based.
+ */
+#define SYSVREL 4
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/*
+ * ECHO_STYLE Optionally change the behavior of the builtin echo
+ * BOTH_ECHO: Support both bsd options (-n) and sysv escapes (\nnn)
+ * BSD_ECHO: Support only -n
+ * SYSV_ECHO: Support only sysv escapes (\nnn)
+ * NONE_ECHO: Pure echo.
+ */
+#define ECHO_STYLE BSD_ECHO /* BSD options only */
+
+/****************** local defines *********************/
+#endif /* _h_config */
diff --git a/config/sxa b/config/sxa
new file mode 100644
index 000000000000..f1d2aab0519e
--- /dev/null
+++ b/config/sxa
@@ -0,0 +1,96 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ * PFU/Fujitsu A-xx computer
+ * running
+ * SX/A Edition 60 or later, without BSD/X option.
+ * (for systems with BSD/X, use config.bsd and /usr/bsd/bin/cc)
+ *
+ * Use followings in Makefile.
+ * w/o BSD/X
+ * CC= /bin/cc
+ * with BSD/X
+ * CC= /usr/bsd/bin/cc
+ *
+ * define KANJI in config_f.h if you need it.
+ */
+
+#ifndef _h_config
+#define _h_config
+
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+/*
+ * SX/A does not have NLS
+ */
+#endif /* _h_config */
diff --git a/config/sysV68 b/config/sysV68
new file mode 100644
index 000000000000..a33dfb5c005b
--- /dev/null
+++ b/config/sysV68
@@ -0,0 +1,82 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ *
+ * 1992, June 1 - gerard@tscs.tscs.com
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#endif /* _h_config */
diff --git a/config/sysV88 b/config/sysV88
new file mode 100644
index 000000000000..3a37ed45e445
--- /dev/null
+++ b/config/sysV88
@@ -0,0 +1,84 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#ifndef sysV88
+#define sysV88 /* Motorola MPC */
+#endif /* !sysV88 */
+
+#endif /* _h_config */
diff --git a/config/sysv b/config/sysv
new file mode 100644
index 000000000000..1ef033f0421c
--- /dev/null
+++ b/config/sysv
@@ -0,0 +1,80 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 1
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#endif /* _h_config */
diff --git a/config/sysv2 b/config/sysv2
new file mode 100644
index 000000000000..62a3f9b8c64d
--- /dev/null
+++ b/config/sysv2
@@ -0,0 +1,80 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 2
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#endif /* _h_config */
diff --git a/config/sysv3 b/config/sysv3
new file mode 100644
index 000000000000..bb39d5e9785e
--- /dev/null
+++ b/config/sysv3
@@ -0,0 +1,80 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#endif /* _h_config */
diff --git a/config/sysv4 b/config/sysv4
new file mode 100644
index 000000000000..7f4ccf9d2efa
--- /dev/null
+++ b/config/sysv4
@@ -0,0 +1,92 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ * SVR4 has a dummy rusage structure, so we don't use it.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending on the version of SYSV
+ * you are running, or set it to 0 if you are not SYSV based.
+ */
+#define SYSVREL 4
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/*
+ * ECHO_STYLE Optionally change the behavior of the builtin echo
+ * BOTH_ECHO: Support both bsd options (-n) and sysv escapes (\nnn)
+ * BSD_ECHO: Support only -n
+ * SYSV_ECHO: Support only sysv escapes (\nnn)
+ * NONE_ECHO: Pure echo.
+ */
+#define ECHO_STYLE BSD_ECHO /* BSD options only */
+
+/****************** local defines *********************/
+#define NAMEI_BUG
+
+#endif /* _h_config */
diff --git a/config/tc2000 b/config/tc2000
new file mode 100644
index 000000000000..b0df9464f7de
--- /dev/null
+++ b/config/tc2000
@@ -0,0 +1,83 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ *
+ * for bbn butterfly tc2000
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#undef TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3 or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ * This is fixed in sunos 4.1, broken in 4.0..
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#endif /* _h_config */
diff --git a/config/tekXD88 b/config/tekXD88
new file mode 100644
index 000000000000..c22158a0576b
--- /dev/null
+++ b/config/tekXD88
@@ -0,0 +1,93 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ *
+ * Tektronix XD88/10 UTekV 3.2e config.h
+ * by Kaveh Ghazi (ghazi@caip.rutgers.edu) 9/23/92.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/*
+ * ECHO_STYLE Optionally change the behavior of the builtin echo
+ * BOTH_ECHO: Support both bsd options (-n) and sysv escapes (\nnn)
+ * BSD_ECHO: Support only -n
+ * SYSV_ECHO: Support only sysv escapes (\nnn)
+ * NONE_ECHO: Pure echo.
+ */
+#define ECHO_STYLE BOTH_ECHO
+
+/****************** local defines *********************/
+#define UTekV /* There is no UTekV specific define, so I made one up */
+#endif /* _h_config */
diff --git a/config/ultrix b/config/ultrix
new file mode 100644
index 000000000000..c6d1598e21c9
--- /dev/null
+++ b/config/ultrix
@@ -0,0 +1,83 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#define VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#define BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#define BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#undef TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+
+#define NAMEI_BUG
+
+#endif /* _h_config */
diff --git a/config/unixpc b/config/unixpc
new file mode 100644
index 000000000000..244727951f86
--- /dev/null
+++ b/config/unixpc
@@ -0,0 +1,82 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * UNIXpc (aka att3b1, aka att7300)
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 1
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+#define UNIXPC
+
+#endif /* _h_config */
diff --git a/config/uwin b/config/uwin
new file mode 100644
index 000000000000..86efea68d840
--- /dev/null
+++ b/config/uwin
@@ -0,0 +1,79 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#define BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+#endif /* _h_config */
diff --git a/config/vms b/config/vms
new file mode 100644
index 000000000000..3bacaf870384
--- /dev/null
+++ b/config/vms
@@ -0,0 +1,103 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * This is the config file for VMS-POSIX systems
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities. says so in $posix/unistd.h ...
+ */
+#define POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SVID systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SVSVREL Your machine is SVID compliant (Sys V, HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SVID to 1, 2, or 3, depending the version of System V
+ * you are running. Or set it to 0 if you are not SVID based
+ */
+#define SVSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+
+#ifndef _POSIX_SOURCE
+# define _POSIX_SOURCE
+#endif
+
+#ifndef vax
+# define vax
+#endif
+
+#ifndef VAX
+# define VAX
+#endif
+
+#ifndef _VMS_POSIX
+# define _VMS_POSIX
+#endif
+
+#define HAVENOLIMIT
+#define NO_CRYPT
+
+/* Avoid conflicts with the standard library */
+#define glob vms_glob
+#define globfree vms_globfree
+
+#undef SYSMALLOC
+#define SYSMALLOC
+
+#undef AUTOLOGOUT
+#endif /* _h_config */
diff --git a/config/win32 b/config/win32
new file mode 100644
index 000000000000..65436d5d4d39
--- /dev/null
+++ b/config/win32
@@ -0,0 +1,128 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * This is the config file for Win32 systems
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#define POSIX
+
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SVID systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSV based (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ *
+ * Note: Linux should work with any SYSVREL < 3.
+ */
+#define SYSVREL 0
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+
+#define HAVE_DUP2 1
+#define HAVE_STRUCT_UTMP_UT_HOST 1
+#define HAVE_DIRENT_H 1
+#define PROTOTYPES 1
+#define HAVE_GETCWD 1
+#define HAVE_GETHOSTNAME 1
+#define HAVE_MEMMOVE 1
+#define HAVE_MEMSET 1
+#define HAVE_NICE 1
+#define HAVE_SBRK 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRSTR 1
+#define HAVE_WCHAR_H 1
+#define GETPGRP_VOID 1
+#define HAVE_DECL_GETPGRP 1
+#define HAVE_STRUCT_DIRENT_D_INO 1
+#define HAVE_STRERROR 1
+
+#define SHORT_STRINGS
+
+#define SIZEOF_WCHAR_T 2
+
+#define RCSID(id) static char *rcsid = (id);
+
+// fake defines
+#define HAVE_SETPGID 1
+/****************** local defines *********************/
+
+#define _PATH_TCSHELL "/bin/tcsh"
+#define ECHO_STYLE BOTH_ECHO
+
+
+#undef REMOTEHOST
+
+#define CASE_INSENSITIVE
+#define HASHBANG
+
+#define _CRT_SECURE_NO_DEPRECATE 1
+#define _CRT_NONSTDC_NO_DEPRECATE 1
+#include <limits.h>
+#include <ntport.h>
+
+#include "config_f.h"
+#undef REMOTEHOST
+#undef AUTOLOGOUT
+#endif /* _h_config */
diff --git a/config/xenix b/config/xenix
new file mode 100644
index 000000000000..9092456abc1f
--- /dev/null
+++ b/config/xenix
@@ -0,0 +1,81 @@
+/*
+ * config.h -- configure various defines for tcsh
+ *
+ * All source files should #include this FIRST.
+ *
+ * Edit this to match your system type.
+ */
+
+#ifndef _h_config
+#define _h_config
+/****************** System dependant compilation flags ****************/
+/*
+ * POSIX This system supports IEEE Std 1003.1-1988 (POSIX).
+ */
+#undef POSIX
+
+/*
+ * POSIXJOBS This system supports the optional IEEE Std 1003.1-1988 (POSIX)
+ * job control facilities.
+ */
+#undef POSIXJOBS
+
+/*
+ * VFORK This machine has a vfork().
+ * It used to be that for job control to work, this define
+ * was mandatory. This is not the case any more.
+ * If you think you still need it, but you don't have vfork,
+ * define this anyway and then do #define vfork fork.
+ * I do this anyway on a Sun because of yellow pages brain damage,
+ * [should not be needed under 4.1]
+ * and on the iris4d cause SGI's fork is sufficiently "virtual"
+ * that vfork isn't necessary. (Besides, SGI's vfork is weird).
+ * Note that some machines eg. rs6000 have a vfork, but not
+ * with the berkeley semantics, so we cannot use it there either.
+ */
+#undef VFORK
+
+/*
+ * BSDJOBS You have BSD-style job control (both process groups and
+ * a tty that deals correctly
+ */
+#undef BSDJOBS
+
+/*
+ * BSDTIMES You have BSD-style process time stuff (like rusage)
+ * This may or may not be true. For example, Apple Unix
+ * (OREO) has BSDJOBS but not BSDTIMES.
+ */
+#undef BSDTIMES
+
+/*
+ * BSDLIMIT You have BSD-style resource limit stuff (getrlimit/setrlimit)
+ */
+#undef BSDLIMIT
+
+/*
+ * TERMIO You have struct termio instead of struct sgttyb.
+ * This is usually the case for SYSV systems, where
+ * BSD uses sgttyb. POSIX systems should define this
+ * anyway, even though they use struct termios.
+ */
+#define TERMIO
+
+/*
+ * SYSVREL Your machine is SYSVREL compliant (HPUX, A/UX)
+ * NOTE: don't do this if you are on a Pyramid -- tcsh is
+ * built in a BSD universe.
+ * Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
+ * you are running. Or set it to 0 if you are not SYSV based
+ */
+#define SYSVREL 3
+
+/*
+ * YPBUGS Work around Sun YP bugs that cause expansion of ~username
+ * to send command output to /dev/null
+ */
+#undef YPBUGS
+
+/****************** local defines *********************/
+
+#endif /* _h_config */
diff --git a/config_f.h b/config_f.h
index 1fd39210d35f..433730e32a97 100644
--- a/config_f.h
+++ b/config_f.h
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/config_f.h,v 3.42 2009/06/25 12:10:56 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/config_f.h,v 3.47 2011/02/05 20:34:55 christos Exp $ */
/*
* config_f.h -- configure various defines for tcsh
*
@@ -50,19 +50,11 @@
* WIDE_STRINGS Represent strings using wide characters
* Allows proper function in multibyte encodings like UTF-8
*/
-#if defined (SHORT_STRINGS) && defined (NLS) && SIZEOF_WCHAR_T >= 4 && defined (HAVE_MBRTOWC) && !defined (WINNT_NATIVE) && !defined(_OSD_POSIX)
+#if defined (SHORT_STRINGS) && defined (NLS) && !defined (WINNT_NATIVE) && !defined(_OSD_POSIX)
# define WIDE_STRINGS
-#endif
-
-/*
- * NLS_CATALOGS:Use Native Language System catalogs for
- * international messages.
- * Routines like catopen() are needed
- * if you don't have <nl_types.h>, you don't want
- * to define this.
- */
-#if defined (NLS) && defined (HAVE_CATGETS)
-# define NLS_CATALOGS
+# if SIZEOF_WCHAR_T < 4
+# define UTF16_STRINGS
+# endif
#endif
/*
@@ -143,7 +135,7 @@
* This can be much slower and no memory statistics will be
* provided.
*/
-#if defined(__MACHTEN__) || defined(PURIFY) || defined(MALLOC_TRACE) || defined(_OSD_POSIX) || defined(__MVS__)
+#if defined(__MACHTEN__) || defined(PURIFY) || defined(MALLOC_TRACE) || defined(_OSD_POSIX) || defined(__MVS__) || defined (__CYGWIN__) || defined(__GLIBC__)
# define SYSMALLOC
#else
# undef SYSMALLOC
@@ -197,10 +189,6 @@
/* Consistency checks */
#ifdef WIDE_STRINGS
-# if SIZEOF_WCHAR_T < 4
- #error "wchar_t must be at least 4 bytes for WIDE_STRINGS"
-# endif
-
# ifdef WINNT_NATIVE
#error "WIDE_STRINGS cannot be used together with WINNT_NATIVE"
# endif
diff --git a/configure b/configure
index b4b0f8b4cb32..04775a13ebbe 100755
--- a/configure
+++ b/configure
@@ -1,62 +1,85 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for tcsh 6.17.00.
+# Generated by GNU Autoconf 2.68 for tcsh 6.18.01.
#
# Report bugs to <http://bugs.gw.com/>.
#
+#
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+# Foundation, Inc.
+#
+#
# This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
-## --------------------- ##
-## M4sh Initialization. ##
-## --------------------- ##
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
NULLCMD=:
- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
else
- case `(set -o) 2>/dev/null` in
- *posix*) set -o posix ;;
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
esac
-
fi
-
-
-# PATH needs CR
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
else
- PATH_SEPARATOR=:
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
fi
- rm -f conf$$.sh
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
fi
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
- as_unset=unset
-else
- as_unset=false
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
fi
@@ -65,20 +88,19 @@ fi
# there to prevent editors from complaining about space-tab.
# (If _AS_PATH_WALK were called with IFS unset, it would disable word
# splitting by setting IFS to empty value.)
-as_nl='
-'
IFS=" "" $as_nl"
# Find who we are. Look in the path if we contain no directory separator.
-case $0 in
+as_myself=
+case $0 in #((
*[\\/]* ) as_myself=$0 ;;
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
IFS=$as_save_IFS
;;
@@ -89,354 +111,329 @@ if test "x$as_myself" = x; then
as_myself=$0
fi
if test ! -f "$as_myself"; then
- echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
- { (exit 1); exit 1; }
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
fi
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
done
PS1='$ '
PS2='> '
PS4='+ '
# NLS nuisances.
-for as_var in \
- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
- LC_TELEPHONE LC_TIME
-do
- if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
- eval $as_var=C; export $as_var
- else
- ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
- fi
-done
-
-# Required to use basename.
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
- as_basename=basename
-else
- as_basename=false
-fi
-
-
-# Name of the executable.
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{
- s//\1/
- q
- }
- /^X\/\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\/\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
# CDPATH.
-$as_unset CDPATH
-
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
if test "x$CONFIG_SHELL" = x; then
- if (eval ":") 2>/dev/null; then
- as_have_required=yes
+ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
else
- as_have_required=no
+ case \`(set -o) 2>/dev/null\` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
fi
-
- if test $as_have_required = yes && (eval ":
-(as_func_return () {
- (exit \$1)
-}
-as_func_success () {
- as_func_return 0
-}
-as_func_failure () {
- as_func_return 1
-}
-as_func_ret_success () {
- return 0
-}
-as_func_ret_failure () {
- return 1
-}
+"
+ as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
exitcode=0
-if as_func_success; then
- :
-else
- exitcode=1
- echo as_func_success failed.
-fi
-
-if as_func_failure; then
- exitcode=1
- echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
- :
-else
- exitcode=1
- echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
- exitcode=1
- echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
- :
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+ exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1"
+ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+ if (eval "$as_required") 2>/dev/null; then :
+ as_have_required=yes
else
- exitcode=1
- echo positional parameters were not saved.
+ as_have_required=no
fi
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-test \$exitcode = 0) || { (exit 1); exit 1; }
-
-(
- as_lineno_1=\$LINENO
- as_lineno_2=\$LINENO
- test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
- test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
-") 2> /dev/null; then
- :
else
- as_candidate_shells=
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
- case $as_dir in
+ as_found=:
+ case $as_dir in #(
/*)
for as_base in sh bash ksh sh5; do
- as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
+ # Try only shells that exist, to save several forks.
+ as_shell=$as_dir/$as_base
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ CONFIG_SHELL=$as_shell as_have_required=yes
+ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ break 2
+fi
+fi
done;;
esac
+ as_found=false
done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
IFS=$as_save_IFS
- for as_shell in $as_candidate_shells $SHELL; do
- # Try only shells that exist, to save several forks.
- if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
- { ("$as_shell") 2> /dev/null <<\_ASEOF
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in
- *posix*) set -o posix ;;
-esac
-
+ if test "x$CONFIG_SHELL" != x; then :
+ # We cannot yet assume a decent shell, so we have to provide a
+ # neutralization value for shells without unset; and this also
+ # works around shells that cannot unset nonexistent variables.
+ # Preserve -v and -x to the replacement shell.
+ BASH_ENV=/dev/null
+ ENV=/dev/null
+ (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+ export CONFIG_SHELL
+ case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+ esac
+ exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
fi
-
-:
-_ASEOF
-}; then
- CONFIG_SHELL=$as_shell
- as_have_required=yes
- if { "$as_shell" 2> /dev/null <<\_ASEOF
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in
- *posix*) set -o posix ;;
-esac
-
+ if test x$as_have_required = xno; then :
+ $as_echo "$0: This script requires a shell more modern than all"
+ $as_echo "$0: the shells that I found on your system."
+ if test x${ZSH_VERSION+set} = xset ; then
+ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ else
+ $as_echo "$0: Please tell bug-autoconf@gnu.org and
+$0: http://bugs.gw.com/ about your system, including any
+$0: error possibly output before this message. Then install
+$0: a modern shell, or manually run the script under such a
+$0: shell if you do have one."
+ fi
+ exit 1
fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
-
-:
-(as_func_return () {
- (exit $1)
-}
-as_func_success () {
- as_func_return 0
-}
-as_func_failure () {
- as_func_return 1
-}
-as_func_ret_success () {
- return 0
-}
-as_func_ret_failure () {
- return 1
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
}
+as_unset=as_fn_unset
-exitcode=0
-if as_func_success; then
- :
-else
- exitcode=1
- echo as_func_success failed.
-fi
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
-if as_func_failure; then
- exitcode=1
- echo as_func_failure succeeded.
-fi
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
-if as_func_ret_success; then
- :
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
else
- exitcode=1
- echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
- exitcode=1
- echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = "$1" ); then
- :
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
else
- exitcode=1
- echo positional parameters were not saved.
-fi
-
-test $exitcode = 0) || { (exit 1); exit 1; }
-
-(
- as_lineno_1=$LINENO
- as_lineno_2=$LINENO
- test "x$as_lineno_1" != "x$as_lineno_2" &&
- test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
-
-_ASEOF
-}; then
- break
-fi
-
-fi
-
- done
-
- if test "x$CONFIG_SHELL" != x; then
- for as_var in BASH_ENV ENV
- do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
- done
- export CONFIG_SHELL
- exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
-fi
-
-
- if test $as_have_required = no; then
- echo This script requires a shell more modern than all the
- echo shells that I found on your system. Please install a
- echo modern shell, or manually run the script under such a
- echo shell if you do have one.
- { (exit 1); exit 1; }
-fi
-
-
-fi
-
-fi
-
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
-(eval "as_func_return () {
- (exit \$1)
-}
-as_func_success () {
- as_func_return 0
-}
-as_func_failure () {
- as_func_return 1
-}
-as_func_ret_success () {
- return 0
-}
-as_func_ret_failure () {
- return 1
-}
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
-exitcode=0
-if as_func_success; then
- :
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
else
- exitcode=1
- echo as_func_success failed.
-fi
-
-if as_func_failure; then
- exitcode=1
- echo as_func_failure succeeded.
+ as_expr=false
fi
-if as_func_ret_success; then
- :
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
else
- exitcode=1
- echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
- exitcode=1
- echo as_func_ret_failure succeeded.
+ as_basename=false
fi
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
- :
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
else
- exitcode=1
- echo positional parameters were not saved.
+ as_dirname=false
fi
-test \$exitcode = 0") || {
- echo No shell found that supports shell functions.
- echo Please tell autoconf@gnu.org about your system,
- echo including any error possibly output before this
- echo message
-}
-
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
- as_lineno_1=$LINENO
- as_lineno_2=$LINENO
- test "x$as_lineno_1" != "x$as_lineno_2" &&
- test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
- # uniformly replaced by the line number. The first 'sed' inserts a
- # line-number line after each line using $LINENO; the second 'sed'
- # does the real work. The second script uses 'N' to pair each
- # line-number line with the line containing $LINENO, and appends
- # trailing '-' during substitution so that $LINENO is not a special
- # case at line end.
- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
- # scripts with optimization help from Paolo Bonzini. Blame Lee
- # E. McMahon (1931-1989) for sed's syntax. :-)
+ as_lineno_1=$LINENO as_lineno_1a=$LINENO
+ as_lineno_2=$LINENO as_lineno_2a=$LINENO
+ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
sed -n '
p
/[$]LINENO/=
@@ -453,8 +450,7 @@ test \$exitcode = 0") || {
s/-\n.*//
' >$as_me.lineno &&
chmod +x "$as_me.lineno" ||
- { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
- { (exit 1); exit 1; }; }
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
# Don't try to exec as it changes $[0], causing all sort of problems
# (the dirname of $[0] is not the place where we might find the
@@ -464,49 +460,40 @@ test \$exitcode = 0") || {
exit
}
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
- as_dirname=dirname
-else
- as_dirname=false
-fi
-
ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
+case `echo -n x` in #(((((
-n*)
- case `echo 'x\c'` in
+ case `echo 'xy\c'` in
*c*) ECHO_T=' ';; # ECHO_T is single tab character.
- *) ECHO_C='\c';;
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
esac;;
*)
ECHO_N='-n';;
esac
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
else
rm -f conf$$.dir
- mkdir conf$$.dir
-fi
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
- as_ln_s='ln -s'
- # ... but there are two gotchas:
- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
as_ln_s='cp -p'
-elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
+ fi
else
as_ln_s='cp -p'
fi
@@ -514,7 +501,7 @@ rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
if mkdir -p . 2>/dev/null; then
- as_mkdir_p=:
+ as_mkdir_p='mkdir -p "$as_dir"'
else
test -d ./-p && rmdir ./-p
as_mkdir_p=false
@@ -531,12 +518,12 @@ else
as_test_x='
eval sh -c '\''
if test -d "$1"; then
- test -d "$1/.";
+ test -d "$1/.";
else
- case $1 in
- -*)set "./$1";;
+ case $1 in #(
+ -*)set "./$1";;
esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
???[sx]*):;;*)false;;esac;fi
'\'' sh
'
@@ -550,11 +537,11 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-exec 7<&0 </dev/null 6>&1
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
# Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
# so uname gets run too.
ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
@@ -569,14 +556,14 @@ cross_compiling=no
subdirs=
MFLAGS=
MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='tcsh'
PACKAGE_TARNAME='tcsh'
-PACKAGE_VERSION='6.17.00'
-PACKAGE_STRING='tcsh 6.17.00'
+PACKAGE_VERSION='6.18.01'
+PACKAGE_STRING='tcsh 6.18.01'
PACKAGE_BUGREPORT='http://bugs.gw.com/'
+PACKAGE_URL=''
ac_unique_file="tc.vers.c"
# Factoring default headers for most tests.
@@ -615,69 +602,85 @@ ac_includes_default="\
# include <unistd.h>
#endif"
-ac_subst_vars='SHELL
-PATH_SEPARATOR
-PACKAGE_NAME
-PACKAGE_TARNAME
-PACKAGE_VERSION
-PACKAGE_STRING
-PACKAGE_BUGREPORT
-exec_prefix
-prefix
-program_transform_name
-bindir
-sbindir
-libexecdir
-datarootdir
-datadir
-sysconfdir
-sharedstatedir
-localstatedir
-includedir
-oldincludedir
-docdir
-infodir
-htmldir
-dvidir
-pdfdir
-psdir
-libdir
-localedir
-mandir
-DEFS
-ECHO_C
-ECHO_N
-ECHO_T
-LIBS
-build_alias
-host_alias
-target_alias
-build
-build_cpu
-build_vendor
-build_os
-host
-host_cpu
-host_vendor
-host_os
-CC
-CFLAGS
-LDFLAGS
-CPPFLAGS
-ac_ct_CC
-EXEEXT
-OBJEXT
-CPP
-GREP
-EGREP
-LIBICONV
-LTLIBICONV
-DFLAGS
-HESDEF
-HESLIB
+ac_subst_vars='LTLIBOBJS
LIBOBJS
-LTLIBOBJS'
+BUILD_CATALOGS
+HESLIB
+HESDEF
+DFLAGS
+LTLIBICONV
+LIBICONV
+CC_FOR_GETHOST
+GENCAT
+EGREP
+GREP
+CPP
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+with_gnu_ld
+enable_rpath
+with_libiconv_prefix
+enable_nls
+enable_nls_catalogs
+with_hesiod
+'
ac_precious_vars='build_alias
host_alias
target_alias
@@ -692,6 +695,8 @@ CPP'
# Initialize some variables set by options.
ac_init_help=
ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
# The variables have the same names as the options, with
# dashes changed to underlines.
cache_file=/dev/null
@@ -747,8 +752,9 @@ do
fi
case $ac_option in
- *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
- *) ac_optarg=yes ;;
+ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *=) ac_optarg= ;;
+ *) ac_optarg=yes ;;
esac
# Accept the important Cygnus configure options, so we can diagnose typos.
@@ -790,13 +796,20 @@ do
datarootdir=$ac_optarg ;;
-disable-* | --disable-*)
- ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
# Reject names that are not valid shell variable names.
- expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
- { (exit 1); exit 1; }; }
- ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
- eval enable_$ac_feature=no ;;
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=no ;;
-docdir | --docdir | --docdi | --doc | --do)
ac_prev=docdir ;;
@@ -809,13 +822,20 @@ do
dvidir=$ac_optarg ;;
-enable-* | --enable-*)
- ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
# Reject names that are not valid shell variable names.
- expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
- { (exit 1); exit 1; }; }
- ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
- eval enable_$ac_feature=\$ac_optarg ;;
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=\$ac_optarg ;;
-exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
| --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
@@ -1006,22 +1026,36 @@ do
ac_init_version=: ;;
-with-* | --with-*)
- ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
# Reject names that are not valid shell variable names.
- expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid package name: $ac_package" >&2
- { (exit 1); exit 1; }; }
- ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
- eval with_$ac_package=\$ac_optarg ;;
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=\$ac_optarg ;;
-without-* | --without-*)
- ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
# Reject names that are not valid shell variable names.
- expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid package name: $ac_package" >&2
- { (exit 1); exit 1; }; }
- ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
- eval with_$ac_package=no ;;
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=no ;;
--x)
# Obsolete; use --with-x.
@@ -1041,26 +1075,26 @@ do
| --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
x_libraries=$ac_optarg ;;
- -*) { echo "$as_me: error: unrecognized option: $ac_option
-Try \`$0 --help' for more information." >&2
- { (exit 1); exit 1; }; }
+ -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
;;
*=*)
ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
# Reject names that are not valid shell variable names.
- expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
- { (exit 1); exit 1; }; }
+ case $ac_envvar in #(
+ '' | [0-9]* | *[!_$as_cr_alnum]* )
+ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+ esac
eval $ac_envvar=\$ac_optarg
export $ac_envvar ;;
*)
# FIXME: should be removed in autoconf 3.0.
- echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- echo "$as_me: WARNING: invalid host type: $ac_option" >&2
- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
;;
esac
@@ -1068,23 +1102,36 @@ done
if test -n "$ac_prev"; then
ac_option=--`echo $ac_prev | sed 's/_/-/g'`
- { echo "$as_me: error: missing argument to $ac_option" >&2
- { (exit 1); exit 1; }; }
+ as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
fi
-# Be sure to have absolute directory names.
+# Check all directory arguments for consistency.
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
libdir localedir mandir
do
eval ac_val=\$$ac_var
+ # Remove trailing slashes.
+ case $ac_val in
+ */ )
+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+ eval $ac_var=\$ac_val;;
+ esac
+ # Be sure to have absolute directory names.
case $ac_val in
[\\/$]* | ?:[\\/]* ) continue;;
NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
esac
- { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
- { (exit 1); exit 1; }; }
+ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
done
# There might be people who depend on the old broken behavior: `$host'
@@ -1098,8 +1145,8 @@ target=$target_alias
if test "x$host_alias" != x; then
if test "x$build_alias" = x; then
cross_compiling=maybe
- echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used." >&2
+ $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used" >&2
elif test "x$build_alias" != "x$host_alias"; then
cross_compiling=yes
fi
@@ -1114,23 +1161,21 @@ test "$silent" = yes && exec 6>/dev/null
ac_pwd=`pwd` && test -n "$ac_pwd" &&
ac_ls_di=`ls -di .` &&
ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
- { echo "$as_me: error: Working directory cannot be determined" >&2
- { (exit 1); exit 1; }; }
+ as_fn_error $? "working directory cannot be determined"
test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
- { echo "$as_me: error: pwd does not report name of working directory" >&2
- { (exit 1); exit 1; }; }
+ as_fn_error $? "pwd does not report name of working directory"
# Find the source files, if location was not specified.
if test -z "$srcdir"; then
ac_srcdir_defaulted=yes
# Try the directory containing this script, then the parent directory.
- ac_confdir=`$as_dirname -- "$0" ||
-$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$0" : 'X\(//\)[^/]' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$0" |
+ ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_myself" : 'X\(//\)[^/]' \| \
+ X"$as_myself" : 'X\(//\)$' \| \
+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -1157,13 +1202,11 @@ else
fi
if test ! -r "$srcdir/$ac_unique_file"; then
test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
- { (exit 1); exit 1; }; }
+ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
fi
ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
ac_abs_confdir=`(
- cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
- { (exit 1); exit 1; }; }
+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
pwd)`
# When building in place, set srcdir=.
if test "$ac_abs_confdir" = "$ac_pwd"; then
@@ -1189,7 +1232,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures tcsh 6.17.00 to adapt to many kinds of systems.
+\`configure' configures tcsh 6.18.01 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1203,7 +1246,7 @@ Configuration:
--help=short display options specific to this package
--help=recursive display the short help of all the included packages
-V, --version display version information and exit
- -q, --quiet, --silent do not print \`checking...' messages
+ -q, --quiet, --silent do not print \`checking ...' messages
--cache-file=FILE cache test results in FILE [disabled]
-C, --config-cache alias for \`--cache-file=config.cache'
-n, --no-create do not create output files
@@ -1211,9 +1254,9 @@ Configuration:
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
+ [$ac_default_prefix]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [PREFIX]
+ [PREFIX]
By default, \`make install' will install all the files in
\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
@@ -1223,25 +1266,25 @@ for instance \`--prefix=\$HOME'.
For better control, use the options below.
Fine tuning of the installation directories:
- --bindir=DIR user executables [EPREFIX/bin]
- --sbindir=DIR system admin executables [EPREFIX/sbin]
- --libexecdir=DIR program executables [EPREFIX/libexec]
- --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data [PREFIX/var]
- --libdir=DIR object code libraries [EPREFIX/lib]
- --includedir=DIR C header files [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc [/usr/include]
- --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
- --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
- --infodir=DIR info documentation [DATAROOTDIR/info]
- --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
- --mandir=DIR man documentation [DATAROOTDIR/man]
- --docdir=DIR documentation root [DATAROOTDIR/doc/tcsh]
- --htmldir=DIR html documentation [DOCDIR]
- --dvidir=DIR dvi documentation [DOCDIR]
- --pdfdir=DIR pdf documentation [DOCDIR]
- --psdir=DIR ps documentation [DOCDIR]
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/tcsh]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
_ACEOF
cat <<\_ACEOF
@@ -1254,15 +1297,17 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of tcsh 6.17.00:";;
+ short | recursive ) echo "Configuration of tcsh 6.18.01:";;
esac
cat <<\_ACEOF
Optional Features:
+ --disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--disable-rpath do not hardcode runtime library paths
--disable-nls Disable NLS support
+ --disable-nls-catalogs Disable NLS catalog support
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -1278,7 +1323,7 @@ Some influential environment variables:
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
nonstandard directory <lib dir>
LIBS libraries to pass to the linker, e.g. -l<library>
- CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
you have headers in a nonstandard directory <include dir>
CPP C preprocessor
@@ -1293,15 +1338,17 @@ fi
if test "$ac_init_help" = "recursive"; then
# If there are subdirs, report their specific --help.
for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
- test -d "$ac_dir" || continue
+ test -d "$ac_dir" ||
+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+ continue
ac_builddir=.
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
# A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -1337,7 +1384,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
echo &&
$SHELL "$ac_srcdir/configure" --help=recursive
else
- echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
fi || ac_status=$?
cd "$ac_pwd" || { ac_status=$?; break; }
done
@@ -1346,22 +1393,765 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-tcsh configure 6.17.00
-generated by GNU Autoconf 2.61
+tcsh configure 6.18.01
+generated by GNU Autoconf 2.68
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
exit
fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } > conftest.i && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=$ac_status
+fi
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if eval \${$3+:} false; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_header_compiler=yes
+else
+ ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ ac_header_preproc=yes
+else
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+ yes:no: )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## ---------------------------------- ##
+## Report this to http://bugs.gw.com/ ##
+## ---------------------------------- ##"
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
+# --------------------------------------------
+# Tries to find the compile-time value of EXPR in a program that includes
+# INCLUDES, setting VAR accordingly. Returns whether the value could be
+# computed
+ac_fn_c_compute_int ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_hi=$ac_mid; break
+else
+ as_fn_arith $ac_mid + 1 && ac_lo=$as_val
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_lo=$ac_mid; break
+else
+ as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ ac_lo= ac_hi=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_hi=$ac_mid
+else
+ as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in #((
+?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
+'') ac_retval=1 ;;
+esac
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+static long int longval () { return $2; }
+static unsigned long int ulongval () { return $2; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ return 1;
+ if (($2) < 0)
+ {
+ long int i = longval ();
+ if (i != ($2))
+ return 1;
+ fprintf (f, "%ld", i);
+ }
+ else
+ {
+ unsigned long int i = ulongval ();
+ if (i != ($2))
+ return 1;
+ fprintf (f, "%lu", i);
+ }
+ /* Do not output a trailing newline, as this causes \r\n confusion
+ on some platforms. */
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ echo >>conftest.val; read $3 <conftest.val; ac_retval=0
+else
+ ac_retval=1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f conftest.val
+
+ fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_compute_int
+
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=no"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_type
+
+# ac_fn_c_find_uintX_t LINENO BITS VAR
+# ------------------------------------
+# Finds an unsigned integer type with width BITS, setting cache variable VAR
+# accordingly.
+ac_fn_c_find_uintX_t ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5
+$as_echo_n "checking for uint$2_t... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=no"
+ # Order is important - never check a type that is potentially smaller
+ # than half of the expected target width.
+ for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \
+ 'unsigned long long int' 'unsigned short int' 'unsigned char'; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ case $ac_type in #(
+ uint$2_t) :
+ eval "$3=yes" ;; #(
+ *) :
+ eval "$3=\$ac_type" ;;
+esac
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ if eval test \"x\$"$3"\" = x"no"; then :
+
+else
+ break
+fi
+ done
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_find_uintX_t
+
+# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
+# ----------------------------------------------------
+# Tries to find if the field MEMBER exists in type AGGR, after including
+# INCLUDES, setting cache variable VAR accordingly.
+ac_fn_c_check_member ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
+$as_echo_n "checking for $2.$3... " >&6; }
+if eval \${$4+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$5
+int
+main ()
+{
+static $2 ac_aggr;
+if (ac_aggr.$3)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$4=yes"
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$5
+int
+main ()
+{
+static $2 ac_aggr;
+if (sizeof ac_aggr.$3)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$4=yes"
+else
+ eval "$4=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$4
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_member
+
+# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
+# ---------------------------------------------
+# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
+# accordingly.
+ac_fn_c_check_decl ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ as_decl_name=`echo $2|sed 's/ *(.*//'`
+ as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+#ifndef $as_decl_name
+#ifdef __cplusplus
+ (void) $as_decl_use;
+#else
+ (void) $as_decl_name;
+#endif
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_decl
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $2 (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_func
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by tcsh $as_me 6.17.00, which was
-generated by GNU Autoconf 2.61. Invocation command line was
+It was created by tcsh $as_me 6.18.01, which was
+generated by GNU Autoconf 2.68. Invocation command line was
$ $0 $@
@@ -1397,8 +2187,8 @@ for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
- echo "PATH: $as_dir"
-done
+ $as_echo "PATH: $as_dir"
+ done
IFS=$as_save_IFS
} >&5
@@ -1432,12 +2222,12 @@ do
| -silent | --silent | --silen | --sile | --sil)
continue ;;
*\'*)
- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
esac
case $ac_pass in
- 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
2)
- ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+ as_fn_append ac_configure_args1 " '$ac_arg'"
if test $ac_must_keep_next = true; then
ac_must_keep_next=false # Got value, back to normal.
else
@@ -1453,13 +2243,13 @@ do
-* ) ac_must_keep_next=true ;;
esac
fi
- ac_configure_args="$ac_configure_args '$ac_arg'"
+ as_fn_append ac_configure_args " '$ac_arg'"
;;
esac
done
done
-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
# When interrupted or exit'd, cleanup temporary files, and complete
# config.log. We remove comments because anyway the quotes in there
@@ -1471,11 +2261,9 @@ trap 'exit_status=$?
{
echo
- cat <<\_ASBOX
-## ---------------- ##
+ $as_echo "## ---------------- ##
## Cache variables. ##
-## ---------------- ##
-_ASBOX
+## ---------------- ##"
echo
# The following way of writing the cache mishandles newlines in values,
(
@@ -1484,12 +2272,13 @@ _ASBOX
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
- *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
- *) $as_unset $ac_var ;;
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
esac ;;
esac
done
@@ -1508,128 +2297,136 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
)
echo
- cat <<\_ASBOX
-## ----------------- ##
+ $as_echo "## ----------------- ##
## Output variables. ##
-## ----------------- ##
-_ASBOX
+## ----------------- ##"
echo
for ac_var in $ac_subst_vars
do
eval ac_val=\$$ac_var
case $ac_val in
- *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
esac
- echo "$ac_var='\''$ac_val'\''"
+ $as_echo "$ac_var='\''$ac_val'\''"
done | sort
echo
if test -n "$ac_subst_files"; then
- cat <<\_ASBOX
-## ------------------- ##
+ $as_echo "## ------------------- ##
## File substitutions. ##
-## ------------------- ##
-_ASBOX
+## ------------------- ##"
echo
for ac_var in $ac_subst_files
do
eval ac_val=\$$ac_var
case $ac_val in
- *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
esac
- echo "$ac_var='\''$ac_val'\''"
+ $as_echo "$ac_var='\''$ac_val'\''"
done | sort
echo
fi
if test -s confdefs.h; then
- cat <<\_ASBOX
-## ----------- ##
+ $as_echo "## ----------- ##
## confdefs.h. ##
-## ----------- ##
-_ASBOX
+## ----------- ##"
echo
cat confdefs.h
echo
fi
test "$ac_signal" != 0 &&
- echo "$as_me: caught signal $ac_signal"
- echo "$as_me: exit $exit_status"
+ $as_echo "$as_me: caught signal $ac_signal"
+ $as_echo "$as_me: exit $exit_status"
} >&5
rm -f core *.core core.conftest.* &&
rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
exit $exit_status
' 0
for ac_signal in 1 2 13 15; do
- trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
done
ac_signal=0
# confdefs.h avoids OS command line length limits that DEFS can exceed.
rm -f -r conftest* confdefs.h
+$as_echo "/* confdefs.h */" > confdefs.h
+
# Predefined preprocessor variables.
cat >>confdefs.h <<_ACEOF
#define PACKAGE_NAME "$PACKAGE_NAME"
_ACEOF
-
cat >>confdefs.h <<_ACEOF
#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
_ACEOF
-
cat >>confdefs.h <<_ACEOF
#define PACKAGE_VERSION "$PACKAGE_VERSION"
_ACEOF
-
cat >>confdefs.h <<_ACEOF
#define PACKAGE_STRING "$PACKAGE_STRING"
_ACEOF
-
cat >>confdefs.h <<_ACEOF
#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
_ACEOF
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
# Let the site file select an alternate cache file if it wants to.
-# Prefer explicitly selected file to automatically selected ones.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
if test -n "$CONFIG_SITE"; then
- set x "$CONFIG_SITE"
+ # We do not want a PATH search for config.site.
+ case $CONFIG_SITE in #((
+ -*) ac_site_file1=./$CONFIG_SITE;;
+ */*) ac_site_file1=$CONFIG_SITE;;
+ *) ac_site_file1=./$CONFIG_SITE;;
+ esac
elif test "x$prefix" != xNONE; then
- set x "$prefix/share/config.site" "$prefix/etc/config.site"
+ ac_site_file1=$prefix/share/config.site
+ ac_site_file2=$prefix/etc/config.site
else
- set x "$ac_default_prefix/share/config.site" \
- "$ac_default_prefix/etc/config.site"
+ ac_site_file1=$ac_default_prefix/share/config.site
+ ac_site_file2=$ac_default_prefix/etc/config.site
fi
-shift
-for ac_site_file
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
do
- if test -r "$ac_site_file"; then
- { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
-echo "$as_me: loading site script $ac_site_file" >&6;}
+ test "x$ac_site_file" = xNONE && continue
+ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
sed 's/^/| /' "$ac_site_file" >&5
- . "$ac_site_file"
+ . "$ac_site_file" \
+ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
fi
done
if test -r "$cache_file"; then
- # Some versions of bash will fail to source /dev/null (special
- # files actually), so we avoid doing that.
- if test -f "$cache_file"; then
- { echo "$as_me:$LINENO: loading cache $cache_file" >&5
-echo "$as_me: loading cache $cache_file" >&6;}
+ # Some versions of bash will fail to source /dev/null (special files
+ # actually), so we avoid doing that. DJGPP emulates it as a regular file.
+ if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
case $cache_file in
[\\/]* | ?:[\\/]* ) . "$cache_file";;
*) . "./$cache_file";;
esac
fi
else
- { echo "$as_me:$LINENO: creating cache $cache_file" >&5
-echo "$as_me: creating cache $cache_file" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
>$cache_file
fi
@@ -1643,68 +2440,56 @@ for ac_var in $ac_precious_vars; do
eval ac_new_val=\$ac_env_${ac_var}_value
case $ac_old_set,$ac_new_set in
set,)
- { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
ac_cache_corrupted=: ;;
,set)
- { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
ac_cache_corrupted=: ;;
,);;
*)
if test "x$ac_old_val" != "x$ac_new_val"; then
- { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
-echo "$as_me: former value: $ac_old_val" >&2;}
- { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
-echo "$as_me: current value: $ac_new_val" >&2;}
- ac_cache_corrupted=:
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
fi;;
esac
# Pass precious variables to config.status.
if test "$ac_new_set" = set; then
case $ac_new_val in
- *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
*) ac_arg=$ac_var=$ac_new_val ;;
esac
case " $ac_configure_args " in
*" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
- *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+ *) as_fn_append ac_configure_args " '$ac_arg'" ;;
esac
fi
done
if $ac_cache_corrupted; then
- { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
-echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
- { (exit 1); exit 1; }; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
@@ -1714,12 +2499,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
ac_config_headers="$ac_config_headers config.h"
ac_config_commands="$ac_config_commands ./atconfig"
-
ac_aux_dir=
for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
if test -f "$ac_dir/install-sh"; then
@@ -1737,9 +2522,7 @@ for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
fi
done
if test -z "$ac_aux_dir"; then
- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
-echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
- { (exit 1); exit 1; }; }
+ as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
fi
# These three variables are undocumented and unsupported,
@@ -1751,37 +2534,122 @@ ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+ ./ | .// | /[cC]/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+ done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
# Make sure we can run config.sub.
$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
- { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
-echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
- { (exit 1); exit 1; }; }
+ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-{ echo "$as_me:$LINENO: checking build system type" >&5
-echo $ECHO_N "checking build system type... $ECHO_C" >&6; }
-if test "${ac_cv_build+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+ $as_echo_n "(cached) " >&6
else
ac_build_alias=$build_alias
test "x$ac_build_alias" = x &&
ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
test "x$ac_build_alias" = x &&
- { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
-echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
- { (exit 1); exit 1; }; }
+ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
- { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
-echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
- { (exit 1); exit 1; }; }
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5
-echo "${ECHO_T}$ac_cv_build" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
case $ac_cv_build in
*-*-*) ;;
-*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
-echo "$as_me: error: invalid value of canonical build" >&2;}
- { (exit 1); exit 1; }; };;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
esac
build=$ac_cv_build
ac_save_IFS=$IFS; IFS='-'
@@ -1797,28 +2665,24 @@ IFS=$ac_save_IFS
case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-{ echo "$as_me:$LINENO: checking host system type" >&5
-echo $ECHO_N "checking host system type... $ECHO_C" >&6; }
-if test "${ac_cv_host+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+ $as_echo_n "(cached) " >&6
else
if test "x$host_alias" = x; then
ac_cv_host=$ac_cv_build
else
ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
- { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
-echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
- { (exit 1); exit 1; }; }
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
fi
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5
-echo "${ECHO_T}$ac_cv_host" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
case $ac_cv_host in
*-*-*) ;;
-*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
-echo "$as_me: error: invalid value of canonical host" >&2;}
- { (exit 1); exit 1; }; };;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
esac
host=$ac_cv_host
ac_save_IFS=$IFS; IFS='-'
@@ -1835,18 +2699,16 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-{ echo "$as_me:$LINENO: checking cached host tuple" >&5
-echo $ECHO_N "checking cached host tuple... $ECHO_C" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking cached host tuple" >&5
+$as_echo_n "checking cached host tuple... " >&6; }
if { test x"${ac_cv_host_system_type+set}" = x"set" &&
test x"$ac_cv_host_system_type" != x"$host"; }; then
- { echo "$as_me:$LINENO: result: different" >&5
-echo "${ECHO_T}different" >&6; }
- { { echo "$as_me:$LINENO: error: remove config.cache and re-run configure" >&5
-echo "$as_me: error: remove config.cache and re-run configure" >&2;}
- { (exit 1); exit 1; }; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: different" >&5
+$as_echo "different" >&6; }
+ as_fn_error $? "remove config.cache and re-run configure" "$LINENO" 5
else
- { echo "$as_me:$LINENO: result: ok" >&5
-echo "${ECHO_T}ok" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
fi
ac_cv_host_system_type="$host"
@@ -1901,6 +2763,11 @@ case "${host}" in
tcsh_config_file=os390
;;
+ ## Android
+ *-*-android*)
+ tcsh_config_file=android
+ ;;
+
## Linux
*-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu)
tcsh_config_file=linux
@@ -2001,9 +2868,12 @@ case "${host}" in
*-*-solaris2.[45] ) # Should handle sparc, x86 and powerpc
tcsh_config_file=sol24
;;
- *-*-solaris2.* ) # Should handle sparc, x86 and powerpc
+ *-*-solaris2.[678] ) # Should handle sparc, x86 and powerpc
tcsh_config_file=sol26
;;
+ *-*-solaris2.* ) # Should handle sparc, x86 and powerpc
+ tcsh_config_file=sol29
+ ;;
## Dell SVR4
*-dell-sysv4* )
@@ -2053,7 +2923,7 @@ case "${host}" in
## Red Hat Cygwin
*-cygwin)
- tcsh_config_file=cygwin32
+ tcsh_config_file=cygwin
;;
## mips-compaq-nonstopux
@@ -2072,13 +2942,9 @@ case "${host}" in
;;
* )
- { { echo "$as_me:$LINENO: error: Tcsh can't guess the configuration file name
-for \`${host}' systems.
-Check tcsh's \`Ported' file for manual configuration instructions." >&5
-echo "$as_me: error: Tcsh can't guess the configuration file name
+ as_fn_error $? "Tcsh can't guess the configuration file name
for \`${host}' systems.
-Check tcsh's \`Ported' file for manual configuration instructions." >&2;}
- { (exit 1); exit 1; }; }
+Check tcsh's \`Ported' file for manual configuration instructions." "$LINENO" 5
;;
esac
@@ -2087,7 +2953,6 @@ echo "Tcsh will use configuration file \`$tcsh_config_file'."
cp ${srcdir}/config/${tcsh_config_file} config_p.h
-
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -2096,10 +2961,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2109,25 +2974,25 @@ for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
-done
+ done
IFS=$as_save_IFS
fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -2136,10 +3001,10 @@ if test -z "$ac_cv_prog_CC"; then
ac_ct_CC=$CC
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_CC"; then
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
@@ -2149,25 +3014,25 @@ for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_CC="gcc"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
-done
+ done
IFS=$as_save_IFS
fi
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
fi
if test "x$ac_ct_CC" = x; then
@@ -2175,12 +3040,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
@@ -2193,10 +3054,10 @@ if test -z "$CC"; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2206,25 +3067,25 @@ for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
-done
+ done
IFS=$as_save_IFS
fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -2233,10 +3094,10 @@ fi
if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2247,18 +3108,18 @@ for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
ac_prog_rejected=yes
continue
fi
ac_cv_prog_CC="cc"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
-done
+ done
IFS=$as_save_IFS
if test $ac_prog_rejected = yes; then
@@ -2277,11 +3138,11 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -2292,10 +3153,10 @@ if test -z "$CC"; then
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2305,25 +3166,25 @@ for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
-done
+ done
IFS=$as_save_IFS
fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -2336,10 +3197,10 @@ if test -z "$CC"; then
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_CC"; then
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
@@ -2349,25 +3210,25 @@ for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_CC="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
-done
+ done
IFS=$as_save_IFS
fi
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -2379,12 +3240,8 @@ done
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
@@ -2394,51 +3251,37 @@ fi
fi
-test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&5
-echo "$as_me: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
# Provide some information about the compiler.
-echo "$as_me:$LINENO: checking for C compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compiler --version >&5") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compiler -v >&5") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compiler -V >&5") 2>&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
@@ -2450,42 +3293,38 @@ main ()
}
_ACEOF
ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.exe b.out"
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
# Try to create an executable without -o first, disregard a.out.
# It will help us diagnose broken compilers, and finding out an intuition
# of exeext.
-{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; }
-ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-#
-# List of possible output files, starting from the most likely.
-# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
-# only as a last resort. b.out is created by i960 compilers.
-ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
-#
-# The IRIX 6 linker writes into existing files which may not be
-# executable, retaining their permissions. Remove them first so a
-# subsequent execution test works.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
ac_rmfiles=
for ac_file in $ac_files
do
case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
* ) ac_rmfiles="$ac_rmfiles $ac_file";;
esac
done
rm -f $ac_rmfiles
-if { (ac_try="$ac_link_default"
+if { { ac_try="$ac_link_default"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
(eval "$ac_link_default") 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
# Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
# in a Makefile. We should not override ac_cv_exeext if it was cached,
@@ -2495,14 +3334,14 @@ for ac_file in $ac_files ''
do
test -f "$ac_file" || continue
case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
;;
[ab].out )
# We found the default executable, but exeext='' is most
# certainly right.
break;;
*.* )
- if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
then :; else
ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
fi
@@ -2521,78 +3360,41 @@ test "$ac_cv_exeext" = no && ac_cv_exeext=
else
ac_file=''
fi
-
-{ echo "$as_me:$LINENO: result: $ac_file" >&5
-echo "${ECHO_T}$ac_file" >&6; }
-if test -z "$ac_file"; then
- echo "$as_me: failed program was:" >&5
+if test -z "$ac_file"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
-See \`config.log' for more details." >&5
-echo "$as_me: error: C compiler cannot create executables
-See \`config.log' for more details." >&2;}
- { (exit 77); exit 77; }; }
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
fi
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
ac_exeext=$ac_cv_exeext
-# Check that the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5
-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; }
-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
-# If not cross compiling, check that we can run a simple program.
-if test "$cross_compiling" != yes; then
- if { ac_try='./$ac_file'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cross_compiling=no
- else
- if test "$cross_compiling" = maybe; then
- cross_compiling=yes
- else
- { { echo "$as_me:$LINENO: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
- fi
- fi
-fi
-{ echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-
-rm -f a.out a.exe conftest$ac_cv_exeext b.out
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
ac_clean_files=$ac_clean_files_save
-# Check that the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $cross_compiling" >&5
-echo "${ECHO_T}$cross_compiling" >&6; }
-
-{ echo "$as_me:$LINENO: checking for suffix of executables" >&5
-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }
-if { (ac_try="$ac_link"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
(eval "$ac_link") 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
# If both `conftest.exe' and `conftest' are `present' (well, observable)
# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
# work properly (i.e., refer to `conftest.exe'), while it won't with
@@ -2600,37 +3402,90 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
for ac_file in conftest.exe conftest conftest.*; do
test -f "$ac_file" || continue
case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
*.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
break;;
* ) break;;
esac
done
else
- { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
fi
-
-rm -f conftest$ac_cv_exeext
-{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
-echo "${ECHO_T}$ac_cv_exeext" >&6; }
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
rm -f conftest.$ac_ext
EXEEXT=$ac_cv_exeext
ac_exeext=$EXEEXT
-{ echo "$as_me:$LINENO: checking for suffix of object files" >&5
-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }
-if test "${ac_cv_objext+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+ { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if { ac_try='./conftest$ac_cv_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
@@ -2642,51 +3497,46 @@ main ()
}
_ACEOF
rm -f conftest.o conftest.obj
-if { (ac_try="$ac_compile"
+if { { ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
(eval "$ac_compile") 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
for ac_file in conftest.o conftest.obj conftest.*; do
test -f "$ac_file" || continue;
case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
*) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
break;;
esac
done
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
fi
-
rm -f conftest.$ac_cv_objext conftest.$ac_ext
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
-echo "${ECHO_T}$ac_cv_objext" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
OBJEXT=$ac_cv_objext
ac_objext=$OBJEXT
-{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+ $as_echo_n "(cached) " >&6
else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
@@ -2700,54 +3550,34 @@ main ()
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
ac_compiler_gnu=yes
else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_compiler_gnu=no
+ ac_compiler_gnu=no
fi
-
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
ac_cv_c_compiler_gnu=$ac_compiler_gnu
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
-GCC=`test $ac_compiler_gnu = yes && echo yes`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
ac_test_CFLAGS=${CFLAGS+set}
ac_save_CFLAGS=$CFLAGS
-{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+ $as_echo_n "(cached) " >&6
else
ac_save_c_werror_flag=$ac_c_werror_flag
ac_c_werror_flag=yes
ac_cv_prog_cc_g=no
CFLAGS="-g"
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
@@ -2758,34 +3588,11 @@ main ()
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
ac_cv_prog_cc_g=yes
else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- CFLAGS=""
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
@@ -2796,35 +3603,12 @@ main ()
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- :
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_compile "$LINENO"; then :
- ac_c_werror_flag=$ac_save_c_werror_flag
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
CFLAGS="-g"
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
@@ -2835,42 +3619,18 @@ main ()
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
ac_cv_prog_cc_g=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
fi
-
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
ac_c_werror_flag=$ac_save_c_werror_flag
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
if test "$ac_test_CFLAGS" = set; then
CFLAGS=$ac_save_CFLAGS
elif test $ac_cv_prog_cc_g = yes; then
@@ -2886,18 +3646,14 @@ else
CFLAGS=
fi
fi
-{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
-echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+ $as_echo_n "(cached) " >&6
else
ac_cv_prog_cc_c89=no
ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdarg.h>
#include <stdio.h>
@@ -2954,31 +3710,9 @@ for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
do
CC="$ac_save_CC $ac_arg"
- rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
+ if ac_fn_c_try_compile "$LINENO"; then :
ac_cv_prog_cc_c89=$ac_arg
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
fi
-
rm -f core conftest.err conftest.$ac_objext
test "x$ac_cv_prog_cc_c89" != "xno" && break
done
@@ -2989,17 +3723,19 @@ fi
# AC_CACHE_VAL
case "x$ac_cv_prog_cc_c89" in
x)
- { echo "$as_me:$LINENO: result: none needed" >&5
-echo "${ECHO_T}none needed" >&6; } ;;
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
xno)
- { echo "$as_me:$LINENO: result: unsupported" >&5
-echo "${ECHO_T}unsupported" >&6; } ;;
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
*)
CC="$CC $ac_cv_prog_cc_c89"
- { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+fi
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
@@ -3012,15 +3748,15 @@ ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
fi
if test -z "$CPP"; then
- if test "${ac_cv_prog_CPP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ if ${ac_cv_prog_CPP+:} false; then :
+ $as_echo_n "(cached) " >&6
else
# Double quotes because CPP needs to be expanded
for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
@@ -3034,11 +3770,7 @@ do
# <limits.h> exists even on freestanding compilers.
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#ifdef __STDC__
# include <limits.h>
@@ -3047,76 +3779,34 @@ cat >>conftest.$ac_ext <<_ACEOF
#endif
Syntax error
_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then
- :
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_cpp "$LINENO"; then :
+else
# Broken: fails on valid input.
continue
fi
-
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <ac_nonexistent.h>
_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then
+if ac_fn_c_try_cpp "$LINENO"; then :
# Broken: success on invalid input.
continue
else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
# Passes both tests.
ac_preproc_ok=:
break
fi
-
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
break
fi
@@ -3128,8 +3818,8 @@ fi
else
ac_cv_prog_CPP=$CPP
fi
-{ echo "$as_me:$LINENO: result: $CPP" >&5
-echo "${ECHO_T}$CPP" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
do
@@ -3139,11 +3829,7 @@ do
# <limits.h> exists even on freestanding compilers.
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#ifdef __STDC__
# include <limits.h>
@@ -3152,83 +3838,40 @@ cat >>conftest.$ac_ext <<_ACEOF
#endif
Syntax error
_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then
- :
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_cpp "$LINENO"; then :
+else
# Broken: fails on valid input.
continue
fi
-
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <ac_nonexistent.h>
_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then
+if ac_fn_c_try_cpp "$LINENO"; then :
# Broken: success on invalid input.
continue
else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
# Passes both tests.
ac_preproc_ok=:
break
fi
-
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
- :
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
else
- { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&5
-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
fi
ac_ext=c
@@ -3239,45 +3882,40 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
-echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
-if test "${ac_cv_path_GREP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- # Extract the first word of "grep ggrep" to use in msg output
-if test -z "$GREP"; then
-set dummy grep ggrep; ac_prog_name=$2
-if test "${ac_cv_path_GREP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+ $as_echo_n "(cached) " >&6
else
+ if test -z "$GREP"; then
ac_path_GREP_found=false
-# Loop through the user's path and test for each of PROGNAME-LIST
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
- for ac_prog in grep ggrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
- # Check for GNU ac_path_GREP and select it if it is found.
+ for ac_prog in grep ggrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
# Check for GNU $ac_path_GREP
case `"$ac_path_GREP" --version 2>&1` in
*GNU*)
ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
*)
ac_count=0
- echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+ $as_echo_n 0123456789 >"conftest.in"
while :
do
cat "conftest.in" "conftest.in" >"conftest.tmp"
mv "conftest.tmp" "conftest.in"
cp "conftest.in" "conftest.nl"
- echo 'GREP' >> "conftest.nl"
+ $as_echo 'GREP' >> "conftest.nl"
"$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- ac_count=`expr $ac_count + 1`
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
if test $ac_count -gt ${ac_path_GREP_max-0}; then
# Best one so far, save it but keep looking for a better one
ac_cv_path_GREP="$ac_path_GREP"
@@ -3289,77 +3927,61 @@ case `"$ac_path_GREP" --version 2>&1` in
rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
esac
-
- $ac_path_GREP_found && break 3
+ $ac_path_GREP_found && break 3
+ done
+ done
done
-done
-
-done
IFS=$as_save_IFS
-
-
-fi
-
-GREP="$ac_cv_path_GREP"
-if test -z "$GREP"; then
- { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
else
ac_cv_path_GREP=$GREP
fi
-
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
-echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
GREP="$ac_cv_path_GREP"
-{ echo "$as_me:$LINENO: checking for egrep" >&5
-echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
-if test "${ac_cv_path_EGREP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+ $as_echo_n "(cached) " >&6
else
if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
then ac_cv_path_EGREP="$GREP -E"
else
- # Extract the first word of "egrep" to use in msg output
-if test -z "$EGREP"; then
-set dummy egrep; ac_prog_name=$2
-if test "${ac_cv_path_EGREP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
+ if test -z "$EGREP"; then
ac_path_EGREP_found=false
-# Loop through the user's path and test for each of PROGNAME-LIST
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
- for ac_prog in egrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
- # Check for GNU ac_path_EGREP and select it if it is found.
+ for ac_prog in egrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
# Check for GNU $ac_path_EGREP
case `"$ac_path_EGREP" --version 2>&1` in
*GNU*)
ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
*)
ac_count=0
- echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+ $as_echo_n 0123456789 >"conftest.in"
while :
do
cat "conftest.in" "conftest.in" >"conftest.tmp"
mv "conftest.tmp" "conftest.in"
cp "conftest.in" "conftest.nl"
- echo 'EGREP' >> "conftest.nl"
+ $as_echo 'EGREP' >> "conftest.nl"
"$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- ac_count=`expr $ac_count + 1`
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
if test $ac_count -gt ${ac_path_EGREP_max-0}; then
# Best one so far, save it but keep looking for a better one
ac_cv_path_EGREP="$ac_path_EGREP"
@@ -3371,54 +3993,39 @@ case `"$ac_path_EGREP" --version 2>&1` in
rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
esac
-
- $ac_path_EGREP_found && break 3
+ $ac_path_EGREP_found && break 3
+ done
+ done
done
-done
-
-done
IFS=$as_save_IFS
-
-
-fi
-
-EGREP="$ac_cv_path_EGREP"
-if test -z "$EGREP"; then
- { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
+ if test -z "$ac_cv_path_EGREP"; then
+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
else
ac_cv_path_EGREP=$EGREP
fi
-
fi
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
-echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
EGREP="$ac_cv_path_EGREP"
if test $ac_cv_c_compiler_gnu = yes; then
- { echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5
-echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6; }
-if test "${ac_cv_prog_gcc_traditional+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5
+$as_echo_n "checking whether $CC needs -traditional... " >&6; }
+if ${ac_cv_prog_gcc_traditional+:} false; then :
+ $as_echo_n "(cached) " >&6
else
ac_pattern="Autoconf.*'x'"
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sgtty.h>
Autoconf TIOCGETP
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "$ac_pattern" >/dev/null 2>&1; then
+ $EGREP "$ac_pattern" >/dev/null 2>&1; then :
ac_cv_prog_gcc_traditional=yes
else
ac_cv_prog_gcc_traditional=no
@@ -3427,47 +4034,87 @@ rm -f conftest*
if test $ac_cv_prog_gcc_traditional = no; then
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <termio.h>
Autoconf TCGETA
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "$ac_pattern" >/dev/null 2>&1; then
+ $EGREP "$ac_pattern" >/dev/null 2>&1; then :
ac_cv_prog_gcc_traditional=yes
fi
rm -f conftest*
fi
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5
-echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5
+$as_echo "$ac_cv_prog_gcc_traditional" >&6; }
if test $ac_cv_prog_gcc_traditional = yes; then
CC="$CC -traditional"
fi
fi
+# Extract the first word of "gencat", so it can be a program name with args.
+set dummy gencat; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GENCAT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GENCAT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GENCAT="$GENCAT" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_GENCAT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+GENCAT=$ac_cv_path_GENCAT
+if test -n "$GENCAT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GENCAT" >&5
+$as_echo "$GENCAT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+if test "x${cross_compiling}" = xyes ; then
+ CC_FOR_GETHOST="cc"
+else
+ CC_FOR_GETHOST="\$(CC)"
+fi
+
+
if test "x$GCC" != xyes ; then
DFLAGS="$DFLAGS $NON_GNU_DFLAGS"
CFLAGS="$CFLAGS $NON_GNU_CFLAGS"
fi
-{ echo "$as_me:$LINENO: checking for library containing crypt" >&5
-echo $ECHO_N "checking for library containing crypt... $ECHO_C" >&6; }
-if test "${ac_cv_search_crypt+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5
+$as_echo_n "checking for library containing crypt... " >&6; }
+if ${ac_cv_search_crypt+:} false; then :
+ $as_echo_n "(cached) " >&6
else
ac_func_search_save_LIBS=$LIBS
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
@@ -3492,65 +4139,38 @@ for ac_lib in '' crypt; do
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext &&
- $as_test_x conftest$ac_exeext; then
+ if ac_fn_c_try_link "$LINENO"; then :
ac_cv_search_crypt=$ac_res
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext
- if test "${ac_cv_search_crypt+set}" = set; then
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if ${ac_cv_search_crypt+:} false; then :
break
fi
done
-if test "${ac_cv_search_crypt+set}" = set; then
- :
+if ${ac_cv_search_crypt+:} false; then :
+
else
ac_cv_search_crypt=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_search_crypt" >&5
-echo "${ECHO_T}$ac_cv_search_crypt" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_crypt" >&5
+$as_echo "$ac_cv_search_crypt" >&6; }
ac_res=$ac_cv_search_crypt
-if test "$ac_res" != no; then
+if test "$ac_res" != no; then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
-{ echo "$as_me:$LINENO: checking for library containing getspnam" >&5
-echo $ECHO_N "checking for library containing getspnam... $ECHO_C" >&6; }
-if test "${ac_cv_search_getspnam+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing getspnam" >&5
+$as_echo_n "checking for library containing getspnam... " >&6; }
+if ${ac_cv_search_getspnam+:} false; then :
+ $as_echo_n "(cached) " >&6
else
ac_func_search_save_LIBS=$LIBS
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
@@ -3575,65 +4195,38 @@ for ac_lib in '' sec; do
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext &&
- $as_test_x conftest$ac_exeext; then
+ if ac_fn_c_try_link "$LINENO"; then :
ac_cv_search_getspnam=$ac_res
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext
- if test "${ac_cv_search_getspnam+set}" = set; then
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if ${ac_cv_search_getspnam+:} false; then :
break
fi
done
-if test "${ac_cv_search_getspnam+set}" = set; then
- :
+if ${ac_cv_search_getspnam+:} false; then :
+
else
ac_cv_search_getspnam=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_search_getspnam" >&5
-echo "${ECHO_T}$ac_cv_search_getspnam" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getspnam" >&5
+$as_echo "$ac_cv_search_getspnam" >&6; }
ac_res=$ac_cv_search_getspnam
-if test "$ac_res" != no; then
+if test "$ac_res" != no; then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
-{ echo "$as_me:$LINENO: checking for library containing tgetent" >&5
-echo $ECHO_N "checking for library containing tgetent... $ECHO_C" >&6; }
-if test "${ac_cv_search_tgetent+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing tgetent" >&5
+$as_echo_n "checking for library containing tgetent... " >&6; }
+if ${ac_cv_search_tgetent+:} false; then :
+ $as_echo_n "(cached) " >&6
else
ac_func_search_save_LIBS=$LIBS
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
@@ -3658,65 +4251,38 @@ for ac_lib in '' termlib termcap curses ncurses; do
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext &&
- $as_test_x conftest$ac_exeext; then
+ if ac_fn_c_try_link "$LINENO"; then :
ac_cv_search_tgetent=$ac_res
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext
- if test "${ac_cv_search_tgetent+set}" = set; then
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if ${ac_cv_search_tgetent+:} false; then :
break
fi
done
-if test "${ac_cv_search_tgetent+set}" = set; then
- :
+if ${ac_cv_search_tgetent+:} false; then :
+
else
ac_cv_search_tgetent=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_search_tgetent" >&5
-echo "${ECHO_T}$ac_cv_search_tgetent" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_tgetent" >&5
+$as_echo "$ac_cv_search_tgetent" >&6; }
ac_res=$ac_cv_search_tgetent
-if test "$ac_res" != no; then
+if test "$ac_res" != no; then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
-{ echo "$as_me:$LINENO: checking for library containing gethostbyname" >&5
-echo $ECHO_N "checking for library containing gethostbyname... $ECHO_C" >&6; }
-if test "${ac_cv_search_gethostbyname+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
+$as_echo_n "checking for library containing gethostbyname... " >&6; }
+if ${ac_cv_search_gethostbyname+:} false; then :
+ $as_echo_n "(cached) " >&6
else
ac_func_search_save_LIBS=$LIBS
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
@@ -3741,65 +4307,38 @@ for ac_lib in '' nsl; do
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext &&
- $as_test_x conftest$ac_exeext; then
+ if ac_fn_c_try_link "$LINENO"; then :
ac_cv_search_gethostbyname=$ac_res
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext
- if test "${ac_cv_search_gethostbyname+set}" = set; then
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if ${ac_cv_search_gethostbyname+:} false; then :
break
fi
done
-if test "${ac_cv_search_gethostbyname+set}" = set; then
- :
+if ${ac_cv_search_gethostbyname+:} false; then :
+
else
ac_cv_search_gethostbyname=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_search_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_search_gethostbyname" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5
+$as_echo "$ac_cv_search_gethostbyname" >&6; }
ac_res=$ac_cv_search_gethostbyname
-if test "$ac_res" != no; then
+if test "$ac_res" != no; then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
-{ echo "$as_me:$LINENO: checking for library containing connect" >&5
-echo $ECHO_N "checking for library containing connect... $ECHO_C" >&6; }
-if test "${ac_cv_search_connect+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing connect" >&5
+$as_echo_n "checking for library containing connect... " >&6; }
+if ${ac_cv_search_connect+:} false; then :
+ $as_echo_n "(cached) " >&6
else
ac_func_search_save_LIBS=$LIBS
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
@@ -3824,50 +4363,83 @@ for ac_lib in '' socket; do
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext &&
- $as_test_x conftest$ac_exeext; then
+ if ac_fn_c_try_link "$LINENO"; then :
ac_cv_search_connect=$ac_res
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if ${ac_cv_search_connect+:} false; then :
+ break
+fi
+done
+if ${ac_cv_search_connect+:} false; then :
+else
+ ac_cv_search_connect=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_connect" >&5
+$as_echo "$ac_cv_search_connect" >&6; }
+ac_res=$ac_cv_search_connect
+if test "$ac_res" != no; then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext
- if test "${ac_cv_search_connect+set}" = set; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing catgets" >&5
+$as_echo_n "checking for library containing catgets... " >&6; }
+if ${ac_cv_search_catgets+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char catgets ();
+int
+main ()
+{
+return catgets ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' catgets; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_search_catgets=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if ${ac_cv_search_catgets+:} false; then :
break
fi
done
-if test "${ac_cv_search_connect+set}" = set; then
- :
+if ${ac_cv_search_catgets+:} false; then :
+
else
- ac_cv_search_connect=no
+ ac_cv_search_catgets=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_search_connect" >&5
-echo "${ECHO_T}$ac_cv_search_connect" >&6; }
-ac_res=$ac_cv_search_connect
-if test "$ac_res" != no; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_catgets" >&5
+$as_echo "$ac_cv_search_catgets" >&6; }
+ac_res=$ac_cv_search_catgets
+if test "$ac_res" != no; then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
@@ -3890,7 +4462,7 @@ fi
# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then
+if test "${with_gnu_ld+set}" = set; then :
withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
else
with_gnu_ld=no
@@ -3912,8 +4484,8 @@ fi
ac_prog=ld
if test "$GCC" = yes; then
# Check if gcc -print-prog-name=ld gives a path.
- { echo "$as_me:$LINENO: checking for ld used by GCC" >&5
-echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5
+$as_echo_n "checking for ld used by GCC... " >&6; }
case $host in
*-*-mingw*)
# gcc leaves a trailing carriage return which upsets mingw
@@ -3928,7 +4500,7 @@ echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6; }
# Canonicalize the path of ld
ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
done
test -z "$LD" && LD="$ac_prog"
;;
@@ -3942,14 +4514,14 @@ echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6; }
;;
esac
elif test "$with_gnu_ld" = yes; then
- { echo "$as_me:$LINENO: checking for GNU ld" >&5
-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
else
- { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
fi
-if test "${acl_cv_path_LD+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+if ${acl_cv_path_LD+:} false; then :
+ $as_echo_n "(cached) " >&6
else
if test -z "$LD"; then
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
@@ -3962,9 +4534,9 @@ else
# Break only if it was the GNU/non-GNU ld that we prefer.
case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
*GNU* | *'with BFD'*)
- test "$with_gnu_ld" != no && break ;;
+ test "$with_gnu_ld" != no && break ;;
*)
- test "$with_gnu_ld" != yes && break ;;
+ test "$with_gnu_ld" != yes && break ;;
esac
fi
done
@@ -3976,19 +4548,17 @@ fi
LD="$acl_cv_path_LD"
if test -n "$LD"; then
- { echo "$as_me:$LINENO: result: $LD" >&5
-echo "${ECHO_T}$LD" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
fi
-test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
-echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
- { (exit 1); exit 1; }; }
-{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
-if test "${acl_cv_prog_gnu_ld+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${acl_cv_prog_gnu_ld+:} false; then :
+ $as_echo_n "(cached) " >&6
else
# I'd rather use --version here, but apparently some GNU ld's only accept -v.
case `$LD -v 2>&1 </dev/null` in
@@ -3998,17 +4568,17 @@ case `$LD -v 2>&1 </dev/null` in
acl_cv_prog_gnu_ld=no ;;
esac
fi
-{ echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5
-echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5
+$as_echo "$acl_cv_prog_gnu_ld" >&6; }
with_gnu_ld=$acl_cv_prog_gnu_ld
- { echo "$as_me:$LINENO: checking for shared library run path origin" >&5
-echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6; }
-if test "${acl_cv_rpath+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5
+$as_echo_n "checking for shared library run path origin... " >&6; }
+if ${acl_cv_rpath+:} false; then :
+ $as_echo_n "(cached) " >&6
else
CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
@@ -4018,17 +4588,19 @@ else
acl_cv_rpath=done
fi
-{ echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5
-echo "${ECHO_T}$acl_cv_rpath" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5
+$as_echo "$acl_cv_rpath" >&6; }
wl="$acl_cv_wl"
- libext="$acl_cv_libext"
- shlibext="$acl_cv_shlibext"
- hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
- hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
- hardcode_direct="$acl_cv_hardcode_direct"
- hardcode_minus_L="$acl_cv_hardcode_minus_L"
+ acl_libext="$acl_cv_libext"
+ acl_shlibext="$acl_cv_shlibext"
+ acl_libname_spec="$acl_cv_libname_spec"
+ acl_library_names_spec="$acl_cv_library_names_spec"
+ acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+ acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+ acl_hardcode_direct="$acl_cv_hardcode_direct"
+ acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
# Check whether --enable-rpath was given.
-if test "${enable_rpath+set}" = set; then
+if test "${enable_rpath+set}" = set; then :
enableval=$enable_rpath; :
else
enable_rpath=yes
@@ -4037,6 +4609,74 @@ fi
+ acl_libdirstem=lib
+ acl_libdirstem2=
+ case "$host_os" in
+ solaris*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5
+$as_echo_n "checking for 64-bit host... " >&6; }
+if ${gl_cv_solaris_64bit+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#ifdef _LP64
+sixtyfour bits
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "sixtyfour bits" >/dev/null 2>&1; then :
+ gl_cv_solaris_64bit=yes
+else
+ gl_cv_solaris_64bit=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5
+$as_echo "$gl_cv_solaris_64bit" >&6; }
+ if test $gl_cv_solaris_64bit = yes; then
+ acl_libdirstem=lib/64
+ case "$host_cpu" in
+ sparc*) acl_libdirstem2=lib/sparcv9 ;;
+ i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
+ esac
+ fi
+ ;;
+ *)
+ searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+ if test -n "$searchpath"; then
+ acl_save_IFS="${IFS= }"; IFS=":"
+ for searchdir in $searchpath; do
+ if test -d "$searchdir"; then
+ case "$searchdir" in
+ */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+ */../ | */.. )
+ # Better ignore directories of this form. They are misleading.
+ ;;
+ *) searchdir=`cd "$searchdir" && pwd`
+ case "$searchdir" in
+ */lib64 ) acl_libdirstem=lib64 ;;
+ esac ;;
+ esac
+ fi
+ done
+ IFS="$acl_save_IFS"
+ fi
+ ;;
+ esac
+ test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
+
+
+
+
+
+
+
+
@@ -4056,7 +4696,7 @@ fi
# Check whether --with-libiconv-prefix was given.
-if test "${with_libiconv_prefix+set}" = set; then
+if test "${with_libiconv_prefix+set}" = set; then :
withval=$with_libiconv_prefix;
if test "X$withval" = "Xno"; then
use_additional=no
@@ -4076,7 +4716,11 @@ if test "${with_libiconv_prefix+set}" = set; then
else
additional_includedir="$withval/include"
- additional_libdir="$withval/lib"
+ additional_libdir="$withval/$acl_libdirstem"
+ if test "$acl_libdirstem2" != "$acl_libdirstem" \
+ && ! test -d "$withval/$acl_libdirstem"; then
+ additional_libdir="$withval/$acl_libdirstem2"
+ fi
fi
fi
@@ -4085,6 +4729,8 @@ fi
LIBICONV=
LTLIBICONV=
INCICONV=
+ LIBICONV_PREFIX=
+ HAVE_LIBICONV=
rpathdirs=
ltrpathdirs=
names_already_handled=
@@ -4118,22 +4764,52 @@ fi
found_la=
found_so=
found_a=
+ eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
+ if test -n "$acl_shlibext"; then
+ shrext=".$acl_shlibext" # typically: shrext=.so
+ else
+ shrext=
+ fi
if test $use_additional = yes; then
- if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
- found_dir="$additional_libdir"
- found_so="$additional_libdir/lib$name.$shlibext"
- if test -f "$additional_libdir/lib$name.la"; then
- found_la="$additional_libdir/lib$name.la"
- fi
- else
- if test -f "$additional_libdir/lib$name.$libext"; then
- found_dir="$additional_libdir"
- found_a="$additional_libdir/lib$name.$libext"
- if test -f "$additional_libdir/lib$name.la"; then
- found_la="$additional_libdir/lib$name.la"
+ dir="$additional_libdir"
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
fi
fi
fi
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext"; then
+ found_dir="$dir"
+ found_a="$dir/$libname.$acl_libext"
+ fi
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
fi
if test "X$found_dir" = "X"; then
for x in $LDFLAGS $LTLIBICONV; do
@@ -4149,21 +4825,44 @@ fi
case "$x" in
-L*)
dir=`echo "X$x" | sed -e 's/^X-L//'`
- if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
- found_dir="$dir"
- found_so="$dir/lib$name.$shlibext"
- if test -f "$dir/lib$name.la"; then
- found_la="$dir/lib$name.la"
- fi
- else
- if test -f "$dir/lib$name.$libext"; then
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext"; then
found_dir="$dir"
- found_a="$dir/lib$name.$libext"
- if test -f "$dir/lib$name.la"; then
- found_la="$dir/lib$name.la"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
fi
fi
fi
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext"; then
+ found_dir="$dir"
+ found_a="$dir/$libname.$acl_libext"
+ fi
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
;;
esac
if test "X$found_dir" != "X"; then
@@ -4174,7 +4873,9 @@ fi
if test "X$found_dir" != "X"; then
LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name"
if test "X$found_so" != "X"; then
- if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
+ if test "$enable_rpath" = no \
+ || test "X$found_dir" = "X/usr/$acl_libdirstem" \
+ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
else
haveit=
@@ -4187,10 +4888,10 @@ fi
if test -z "$haveit"; then
ltrpathdirs="$ltrpathdirs $found_dir"
fi
- if test "$hardcode_direct" = yes; then
+ if test "$acl_hardcode_direct" = yes; then
LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
else
- if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
+ if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
haveit=
for x in $rpathdirs; do
@@ -4222,7 +4923,7 @@ fi
if test -z "$haveit"; then
LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir"
fi
- if test "$hardcode_minus_L" != no; then
+ if test "$acl_hardcode_minus_L" != no; then
LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
else
LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
@@ -4239,8 +4940,18 @@ fi
fi
additional_includedir=
case "$found_dir" in
- */lib | */lib/)
- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
+ */$acl_libdirstem | */$acl_libdirstem/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+ if test "$name" = 'iconv'; then
+ LIBICONV_PREFIX="$basedir"
+ fi
+ additional_includedir="$basedir/include"
+ ;;
+ */$acl_libdirstem2 | */$acl_libdirstem2/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
+ if test "$name" = 'iconv'; then
+ LIBICONV_PREFIX="$basedir"
+ fi
additional_includedir="$basedir/include"
;;
esac
@@ -4289,9 +5000,11 @@ fi
case "$dep" in
-L*)
additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
- if test "X$additional_libdir" != "X/usr/lib"; then
+ if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
+ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
haveit=
- if test "X$additional_libdir" = "X/usr/local/lib"; then
+ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
+ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
if test -n "$GCC"; then
case $host_os in
linux* | gnu* | k*bsd*-gnu) haveit=yes;;
@@ -4391,21 +5104,21 @@ fi
done
done
if test "X$rpathdirs" != "X"; then
- if test -n "$hardcode_libdir_separator"; then
+ if test -n "$acl_hardcode_libdir_separator"; then
alldirs=
for found_dir in $rpathdirs; do
- alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
+ alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
done
acl_save_libdir="$libdir"
libdir="$alldirs"
- eval flag=\"$hardcode_libdir_flag_spec\"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
libdir="$acl_save_libdir"
LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
else
for found_dir in $rpathdirs; do
acl_save_libdir="$libdir"
libdir="$found_dir"
- eval flag=\"$hardcode_libdir_flag_spec\"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
libdir="$acl_save_libdir"
LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
done
@@ -4423,6 +5136,11 @@ fi
+
+
+
+
+
am_save_CPPFLAGS="$CPPFLAGS"
for element in $INCICONV; do
@@ -4448,19 +5166,15 @@ fi
done
- { echo "$as_me:$LINENO: checking for iconv" >&5
-echo $ECHO_N "checking for iconv... $ECHO_C" >&6; }
-if test "${am_cv_func_iconv+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5
+$as_echo_n "checking for iconv... " >&6; }
+if ${am_cv_func_iconv+:} false; then :
+ $as_echo_n "(cached) " >&6
else
am_cv_func_iconv="no, consider installing GNU libiconv"
am_cv_lib_iconv=no
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdlib.h>
#include <iconv.h>
@@ -4474,42 +5188,15 @@ iconv_t cd = iconv_open("","");
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext &&
- $as_test_x conftest$ac_exeext; then
+if ac_fn_c_try_link "$LINENO"; then :
am_cv_func_iconv=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
if test "$am_cv_func_iconv" != yes; then
am_save_LIBS="$LIBS"
LIBS="$LIBS $LIBICONV"
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdlib.h>
#include <iconv.h>
@@ -4523,53 +5210,145 @@ iconv_t cd = iconv_open("","");
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext &&
- $as_test_x conftest$ac_exeext; then
+if ac_fn_c_try_link "$LINENO"; then :
am_cv_lib_iconv=yes
am_cv_func_iconv=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$am_save_LIBS"
+ fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
+$as_echo "$am_cv_func_iconv" >&6; }
+ if test "$am_cv_func_iconv" = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5
+$as_echo_n "checking for working iconv... " >&6; }
+if ${am_cv_func_iconv_works+:} false; then :
+ $as_echo_n "(cached) " >&6
else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+ am_save_LIBS="$LIBS"
+ if test $am_cv_lib_iconv = yes; then
+ LIBS="$LIBS $LIBICONV"
+ fi
+ if test "$cross_compiling" = yes; then :
+ case "$host_os" in
+ aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+ *) am_cv_func_iconv_works="guessing yes" ;;
+ esac
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <iconv.h>
+#include <string.h>
+int main ()
+{
+ /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
+ returns. */
+ {
+ iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
+ if (cd_utf8_to_88591 != (iconv_t)(-1))
+ {
+ static const char input[] = "\342\202\254"; /* EURO SIGN */
+ char buf[10];
+ const char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_utf8_to_88591,
+ (char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (res == 0)
+ return 1;
+ }
+ }
+ /* Test against Solaris 10 bug: Failures are not distinguishable from
+ successful returns. */
+ {
+ iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
+ if (cd_ascii_to_88591 != (iconv_t)(-1))
+ {
+ static const char input[] = "\263";
+ char buf[10];
+ const char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_ascii_to_88591,
+ (char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (res == 0)
+ return 1;
+ }
+ }
+#if 0 /* This bug could be worked around by the caller. */
+ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */
+ {
+ iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
+ if (cd_88591_to_utf8 != (iconv_t)(-1))
+ {
+ static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ char buf[50];
+ const char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_88591_to_utf8,
+ (char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if ((int)res > 0)
+ return 1;
+ }
+ }
+#endif
+ /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+ provided. */
+ if (/* Try standardized names. */
+ iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
+ /* Try IRIX, OSF/1 names. */
+ && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
+ /* Try AIX names. */
+ && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
+ /* Try HP-UX names. */
+ && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
+ return 1;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ am_cv_func_iconv_works=yes
+else
+ am_cv_func_iconv_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
LIBS="$am_save_LIBS"
- fi
fi
-{ echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5
-echo "${ECHO_T}$am_cv_func_iconv" >&6; }
- if test "$am_cv_func_iconv" = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5
+$as_echo "$am_cv_func_iconv_works" >&6; }
+ case "$am_cv_func_iconv_works" in
+ *no) am_func_iconv=no am_cv_lib_iconv=no ;;
+ *) am_func_iconv=yes ;;
+ esac
+ else
+ am_func_iconv=no am_cv_lib_iconv=no
+ fi
+ if test "$am_func_iconv" = yes; then
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ICONV 1
-_ACEOF
+$as_echo "#define HAVE_ICONV 1" >>confdefs.h
fi
if test "$am_cv_lib_iconv" = yes; then
- { echo "$as_me:$LINENO: checking how to link with libiconv" >&5
-echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6; }
- { echo "$as_me:$LINENO: result: $LIBICONV" >&5
-echo "${ECHO_T}$LIBICONV" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5
+$as_echo_n "checking how to link with libiconv... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5
+$as_echo "$LIBICONV" >&6; }
else
CPPFLAGS="$am_save_CPPFLAGS"
LIBICONV=
@@ -4579,17 +5358,13 @@ echo "${ECHO_T}$LIBICONV" >&6; }
if test "$am_cv_func_iconv" = yes; then
- { echo "$as_me:$LINENO: checking for iconv declaration" >&5
-echo $ECHO_N "checking for iconv declaration... $ECHO_C" >&6; }
- if test "${am_cv_proto_iconv+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5
+$as_echo_n "checking for iconv declaration... " >&6; }
+ if ${am_cv_proto_iconv+:} false; then :
+ $as_echo_n "(cached) " >&6
else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdlib.h>
@@ -4612,40 +5387,20 @@ main ()
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
am_cv_proto_iconv_arg1=""
else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- am_cv_proto_iconv_arg1="const"
+ am_cv_proto_iconv_arg1="const"
fi
-
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"
fi
am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
- { echo "$as_me:$LINENO: result: ${ac_t:-
- }$am_cv_proto_iconv" >&5
-echo "${ECHO_T}${ac_t:-
- }$am_cv_proto_iconv" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result:
+ $am_cv_proto_iconv" >&5
+$as_echo "
+ $am_cv_proto_iconv" >&6; }
cat >>confdefs.h <<_ACEOF
#define ICONV_CONST $am_cv_proto_iconv_arg1
@@ -4654,16 +5409,12 @@ _ACEOF
fi
-{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+ $as_echo_n "(cached) " >&6
else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdlib.h>
#include <stdarg.h>
@@ -4678,47 +5429,23 @@ main ()
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
ac_cv_header_stdc=yes
else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_header_stdc=no
+ ac_cv_header_stdc=no
fi
-
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <string.h>
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "memchr" >/dev/null 2>&1; then
- :
+ $EGREP "memchr" >/dev/null 2>&1; then :
+
else
ac_cv_header_stdc=no
fi
@@ -4728,18 +5455,14 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdlib.h>
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "free" >/dev/null 2>&1; then
- :
+ $EGREP "free" >/dev/null 2>&1; then :
+
else
ac_cv_header_stdc=no
fi
@@ -4749,14 +5472,10 @@ fi
if test $ac_cv_header_stdc = yes; then
# /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then
+ if test "$cross_compiling" = yes; then :
:
else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <ctype.h>
#include <stdlib.h>
@@ -4783,113 +5502,35 @@ main ()
return 0;
}
_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_run "$LINENO"; then :
-( exit $ac_status )
-ac_cv_header_stdc=no
+else
+ ac_cv_header_stdc=no
fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-
fi
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
if test $ac_cv_header_stdc = yes; then
-cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
-_ACEOF
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
fi
# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-
-
-
-
-
-
-
-
-
for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
inttypes.h stdint.h unistd.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- eval "$as_ac_Header=yes"
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- eval "$as_ac_Header=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
- { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
fi
@@ -4897,708 +5538,53 @@ fi
done
-
-
-
-
-
-
-
-for ac_header in auth.h crypt.h inttypes.h shadow.h stdint.h utmp.h utmpx.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- { echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
- { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-else
- # Is the header compilable?
-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_header_compiler=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then
- ac_header_preproc=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
- yes:no: )
- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
- ac_header_preproc=yes
- ;;
- no:yes:* )
- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
- ( cat <<\_ASBOX
-## ---------------------------------- ##
-## Report this to http://bugs.gw.com/ ##
-## ---------------------------------- ##
-_ASBOX
- ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
- { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+for ac_header in auth.h crypt.h features.h inttypes.h paths.h shadow.h stdint.h utmp.h utmpx.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
fi
done
-
for ac_header in wchar.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- { echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
- { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-else
- # Is the header compilable?
-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_header_compiler=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then
- ac_header_preproc=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
- yes:no: )
- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
- ac_header_preproc=yes
- ;;
- no:yes:* )
- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
- ( cat <<\_ASBOX
-## ---------------------------------- ##
-## Report this to http://bugs.gw.com/ ##
-## ---------------------------------- ##
-_ASBOX
- ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
- { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "wchar.h" "ac_cv_header_wchar_h" "$ac_includes_default"
+if test "x$ac_cv_header_wchar_h" = xyes; then :
cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
- { echo "$as_me:$LINENO: checking for wchar_t" >&5
-echo $ECHO_N "checking for wchar_t... $ECHO_C" >&6; }
-if test "${ac_cv_type_wchar_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdio.h>
-#include <wchar.h>
-
-typedef wchar_t ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
- return 0;
-if (sizeof (ac__type_new_))
- return 0;
- ;
- return 0;
-}
+#define HAVE_WCHAR_H 1
_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_type_wchar_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_type_wchar_t=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_wchar_t" >&5
-echo "${ECHO_T}$ac_cv_type_wchar_t" >&6; }
-
-# The cast to long int works around a bug in the HP C Compiler
+ # The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ echo "$as_me:$LINENO: checking size of wchar_t" >&5
-echo $ECHO_N "checking size of wchar_t... $ECHO_C" >&6; }
-if test "${ac_cv_sizeof_wchar_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdio.h>
-#include <wchar.h>
-
- typedef wchar_t ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_lo=0 ac_mid=0
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdio.h>
-#include <wchar.h>
-
- typedef wchar_t ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_hi=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_lo=`expr $ac_mid + 1`
- if test $ac_lo -le $ac_mid; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdio.h>
-#include <wchar.h>
-
- typedef wchar_t ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_hi=-1 ac_mid=-1
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdio.h>
-#include <wchar.h>
-
- typedef wchar_t ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_lo=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_hi=`expr '(' $ac_mid ')' - 1`
- if test $ac_mid -le $ac_hi; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- done
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of wchar_t" >&5
+$as_echo_n "checking size of wchar_t... " >&6; }
+if ${ac_cv_sizeof_wchar_t+:} false; then :
+ $as_echo_n "(cached) " >&6
else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_lo= ac_hi=
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdio.h>
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (wchar_t))" "ac_cv_sizeof_wchar_t" "#include <stdio.h>
#include <wchar.h>
+"; then :
- typedef wchar_t ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_hi=$ac_mid
else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_wchar_t=$ac_lo;;
-'') if test "$ac_cv_type_wchar_t" = yes; then
- { { echo "$as_me:$LINENO: error: cannot compute sizeof (wchar_t)
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (wchar_t)
-See \`config.log' for more details." >&2;}
- { (exit 77); exit 77; }; }
- else
- ac_cv_sizeof_wchar_t=0
- fi ;;
-esac
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdio.h>
-#include <wchar.h>
-
- typedef wchar_t ac__type_sizeof_;
-static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
-static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
- FILE *f = fopen ("conftest.val", "w");
- if (! f)
- return 1;
- if (((long int) (sizeof (ac__type_sizeof_))) < 0)
- {
- long int i = longval ();
- if (i != ((long int) (sizeof (ac__type_sizeof_))))
- return 1;
- fprintf (f, "%ld\n", i);
- }
- else
- {
- unsigned long int i = ulongval ();
- if (i != ((long int) (sizeof (ac__type_sizeof_))))
- return 1;
- fprintf (f, "%lu\n", i);
- }
- return ferror (f) || fclose (f) != 0;
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_sizeof_wchar_t=`cat conftest.val`
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-if test "$ac_cv_type_wchar_t" = yes; then
- { { echo "$as_me:$LINENO: error: cannot compute sizeof (wchar_t)
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (wchar_t)
-See \`config.log' for more details." >&2;}
- { (exit 77); exit 77; }; }
+ if test "$ac_cv_type_wchar_t" = yes; then
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (wchar_t)
+See \`config.log' for more details" "$LINENO" 5; }
else
ac_cv_sizeof_wchar_t=0
fi
fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.val
+
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_wchar_t" >&5
-echo "${ECHO_T}$ac_cv_sizeof_wchar_t" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_wchar_t" >&5
+$as_echo "$ac_cv_sizeof_wchar_t" >&6; }
@@ -5607,145 +5593,12 @@ cat >>confdefs.h <<_ACEOF
_ACEOF
-
-for ac_header in wctype.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- { echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
- { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-else
- # Is the header compilable?
-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_header_compiler=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then
- ac_header_preproc=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
- yes:no: )
- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
- ac_header_preproc=yes
- ;;
- no:yes:* )
- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
- ( cat <<\_ASBOX
-## ---------------------------------- ##
-## Report this to http://bugs.gw.com/ ##
-## ---------------------------------- ##
-_ASBOX
- ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
- { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ for ac_header in wctype.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "wctype.h" "ac_cv_header_wctype_h" "$ac_includes_default"
+if test "x$ac_cv_header_wctype_h" = xyes; then :
cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define HAVE_WCTYPE_H 1
_ACEOF
fi
@@ -5756,24 +5609,15 @@ fi
done
-
-
-
-
-
ac_header_dirent=no
for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
- as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5
-echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
+$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; }
+if eval \${$as_ac_Header+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
#include <$ac_hdr>
@@ -5787,39 +5631,19 @@ return 0;
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
eval "$as_ac_Header=yes"
else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- eval "$as_ac_Header=no"
+ eval "$as_ac_Header=no"
fi
-
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
- { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+eval ac_res=\$$as_ac_Header
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
_ACEOF
ac_header_dirent=$ac_hdr; break
@@ -5828,17 +5652,13 @@ fi
done
# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
if test $ac_header_dirent = dirent.h; then
- { echo "$as_me:$LINENO: checking for library containing opendir" >&5
-echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; }
-if test "${ac_cv_search_opendir+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
+$as_echo_n "checking for library containing opendir... " >&6; }
+if ${ac_cv_search_opendir+:} false; then :
+ $as_echo_n "(cached) " >&6
else
ac_func_search_save_LIBS=$LIBS
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
@@ -5863,66 +5683,39 @@ for ac_lib in '' dir; do
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext &&
- $as_test_x conftest$ac_exeext; then
+ if ac_fn_c_try_link "$LINENO"; then :
ac_cv_search_opendir=$ac_res
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext
- if test "${ac_cv_search_opendir+set}" = set; then
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if ${ac_cv_search_opendir+:} false; then :
break
fi
done
-if test "${ac_cv_search_opendir+set}" = set; then
- :
+if ${ac_cv_search_opendir+:} false; then :
+
else
ac_cv_search_opendir=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
-echo "${ECHO_T}$ac_cv_search_opendir" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
+$as_echo "$ac_cv_search_opendir" >&6; }
ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then
+if test "$ac_res" != no; then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
else
- { echo "$as_me:$LINENO: checking for library containing opendir" >&5
-echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; }
-if test "${ac_cv_search_opendir+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
+$as_echo_n "checking for library containing opendir... " >&6; }
+if ${ac_cv_search_opendir+:} false; then :
+ $as_echo_n "(cached) " >&6
else
ac_func_search_save_LIBS=$LIBS
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
@@ -5947,66 +5740,39 @@ for ac_lib in '' x; do
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext &&
- $as_test_x conftest$ac_exeext; then
+ if ac_fn_c_try_link "$LINENO"; then :
ac_cv_search_opendir=$ac_res
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext
- if test "${ac_cv_search_opendir+set}" = set; then
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if ${ac_cv_search_opendir+:} false; then :
break
fi
done
-if test "${ac_cv_search_opendir+set}" = set; then
- :
+if ${ac_cv_search_opendir+:} false; then :
+
else
ac_cv_search_opendir=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
-echo "${ECHO_T}$ac_cv_search_opendir" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
+$as_echo "$ac_cv_search_opendir" >&6; }
ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then
+if test "$ac_res" != no; then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
fi
-{ echo "$as_me:$LINENO: checking whether stat file-mode macros are broken" >&5
-echo $ECHO_N "checking whether stat file-mode macros are broken... $ECHO_C" >&6; }
-if test "${ac_cv_header_stat_broken+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5
+$as_echo_n "checking whether stat file-mode macros are broken... " >&6; }
+if ${ac_cv_header_stat_broken+:} false; then :
+ $as_echo_n "(cached) " >&6
else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
#include <sys/stat.h>
@@ -6028,53 +5794,27 @@ extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1];
#endif
_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
ac_cv_header_stat_broken=no
else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_header_stat_broken=yes
+ ac_cv_header_stat_broken=yes
fi
-
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5
-echo "${ECHO_T}$ac_cv_header_stat_broken" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5
+$as_echo "$ac_cv_header_stat_broken" >&6; }
if test $ac_cv_header_stat_broken = yes; then
-cat >>confdefs.h <<\_ACEOF
-#define STAT_MACROS_BROKEN 1
-_ACEOF
+$as_echo "#define STAT_MACROS_BROKEN 1" >>confdefs.h
fi
-{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+ $as_echo_n "(cached) " >&6
else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdlib.h>
#include <stdarg.h>
@@ -6089,47 +5829,23 @@ main ()
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
ac_cv_header_stdc=yes
else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_header_stdc=no
+ ac_cv_header_stdc=no
fi
-
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <string.h>
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "memchr" >/dev/null 2>&1; then
- :
+ $EGREP "memchr" >/dev/null 2>&1; then :
+
else
ac_cv_header_stdc=no
fi
@@ -6139,18 +5855,14 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdlib.h>
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "free" >/dev/null 2>&1; then
- :
+ $EGREP "free" >/dev/null 2>&1; then :
+
else
ac_cv_header_stdc=no
fi
@@ -6160,14 +5872,10 @@ fi
if test $ac_cv_header_stdc = yes; then
# /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then
+ if test "$cross_compiling" = yes; then :
:
else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <ctype.h>
#include <stdlib.h>
@@ -6194,106 +5902,28 @@ main ()
return 0;
}
_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_run "$LINENO"; then :
-( exit $ac_status )
-ac_cv_header_stdc=no
+else
+ ac_cv_header_stdc=no
fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-
fi
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
if test $ac_cv_header_stdc = yes; then
-cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
-_ACEOF
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
fi
-{ echo "$as_me:$LINENO: checking for long long" >&5
-echo $ECHO_N "checking for long long... $ECHO_C" >&6; }
-if test "${ac_cv_type_long_long+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-typedef long long ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
- return 0;
-if (sizeof (ac__type_new_))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_type_long_long=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_type_long_long=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5
-echo "${ECHO_T}$ac_cv_type_long_long" >&6; }
-if test $ac_cv_type_long_long = yes; then
+ac_fn_c_check_type "$LINENO" "long long" "ac_cv_type_long_long" "$ac_includes_default"
+if test "x$ac_cv_type_long_long" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LONG_LONG 1
@@ -6302,22 +5932,18 @@ _ACEOF
fi
-{ echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5
-echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6; }
-if test "${ac_cv_type_uid_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
+$as_echo_n "checking for uid_t in sys/types.h... " >&6; }
+if ${ac_cv_type_uid_t+:} false; then :
+ $as_echo_n "(cached) " >&6
else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "uid_t" >/dev/null 2>&1; then
+ $EGREP "uid_t" >/dev/null 2>&1; then :
ac_cv_type_uid_t=yes
else
ac_cv_type_uid_t=no
@@ -6325,34 +5951,26 @@ fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5
-echo "${ECHO_T}$ac_cv_type_uid_t" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5
+$as_echo "$ac_cv_type_uid_t" >&6; }
if test $ac_cv_type_uid_t = no; then
-cat >>confdefs.h <<\_ACEOF
-#define uid_t int
-_ACEOF
+$as_echo "#define uid_t int" >>confdefs.h
-cat >>confdefs.h <<\_ACEOF
-#define gid_t int
-_ACEOF
+$as_echo "#define gid_t int" >>confdefs.h
fi
-{ echo "$as_me:$LINENO: checking type of array argument to getgroups" >&5
-echo $ECHO_N "checking type of array argument to getgroups... $ECHO_C" >&6; }
-if test "${ac_cv_type_getgroups+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking type of array argument to getgroups" >&5
+$as_echo_n "checking type of array argument to getgroups... " >&6; }
+if ${ac_cv_type_getgroups+:} false; then :
+ $as_echo_n "(cached) " >&6
else
- if test "$cross_compiling" = yes; then
+ if test "$cross_compiling" = yes; then :
ac_cv_type_getgroups=cross
else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Thanks to Mike Rendell for this test. */
$ac_includes_default
@@ -6378,51 +5996,23 @@ main ()
return n > 0 && gidset[n] != val.gval;
}
_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+if ac_fn_c_try_run "$LINENO"; then :
ac_cv_type_getgroups=gid_t
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_type_getgroups=int
+ ac_cv_type_getgroups=int
fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-
if test $ac_cv_type_getgroups = cross; then
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <unistd.h>
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "getgroups.*int.*gid_t" >/dev/null 2>&1; then
+ $EGREP "getgroups.*int.*gid_t" >/dev/null 2>&1; then :
ac_cv_type_getgroups=gid_t
else
ac_cv_type_getgroups=int
@@ -6431,69 +6021,17 @@ rm -f conftest*
fi
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_getgroups" >&5
-echo "${ECHO_T}$ac_cv_type_getgroups" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_getgroups" >&5
+$as_echo "$ac_cv_type_getgroups" >&6; }
cat >>confdefs.h <<_ACEOF
#define GETGROUPS_T $ac_cv_type_getgroups
_ACEOF
-{ echo "$as_me:$LINENO: checking for mode_t" >&5
-echo $ECHO_N "checking for mode_t... $ECHO_C" >&6; }
-if test "${ac_cv_type_mode_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-typedef mode_t ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
- return 0;
-if (sizeof (ac__type_new_))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_type_mode_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_type_mode_t=no
-fi
+ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default"
+if test "x$ac_cv_type_mode_t" = xyes; then :
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5
-echo "${ECHO_T}$ac_cv_type_mode_t" >&6; }
-if test $ac_cv_type_mode_t = yes; then
- :
else
cat >>confdefs.h <<_ACEOF
@@ -6502,61 +6040,9 @@ _ACEOF
fi
-{ echo "$as_me:$LINENO: checking for size_t" >&5
-echo $ECHO_N "checking for size_t... $ECHO_C" >&6; }
-if test "${ac_cv_type_size_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-typedef size_t ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
- return 0;
-if (sizeof (ac__type_new_))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_type_size_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_type_size_t=no
-fi
+ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
+if test "x$ac_cv_type_size_t" = xyes; then :
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
-echo "${ECHO_T}$ac_cv_type_size_t" >&6; }
-if test $ac_cv_type_size_t = yes; then
- :
else
cat >>confdefs.h <<_ACEOF
@@ -6565,22 +6051,18 @@ _ACEOF
fi
-{ echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5
-echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6; }
-if test "${ac_cv_type_uid_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
+$as_echo_n "checking for uid_t in sys/types.h... " >&6; }
+if ${ac_cv_type_uid_t+:} false; then :
+ $as_echo_n "(cached) " >&6
else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "uid_t" >/dev/null 2>&1; then
+ $EGREP "uid_t" >/dev/null 2>&1; then :
ac_cv_type_uid_t=yes
else
ac_cv_type_uid_t=no
@@ -6588,87 +6070,43 @@ fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5
-echo "${ECHO_T}$ac_cv_type_uid_t" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5
+$as_echo "$ac_cv_type_uid_t" >&6; }
if test $ac_cv_type_uid_t = no; then
-cat >>confdefs.h <<\_ACEOF
-#define uid_t int
-_ACEOF
+$as_echo "#define uid_t int" >>confdefs.h
-cat >>confdefs.h <<\_ACEOF
-#define gid_t int
-_ACEOF
+$as_echo "#define gid_t int" >>confdefs.h
fi
+ac_fn_c_find_uintX_t "$LINENO" "32" "ac_cv_c_uint32_t"
+case $ac_cv_c_uint32_t in #(
+ no|yes) ;; #(
+ *)
+$as_echo "#define _UINT32_T 1" >>confdefs.h
-{ echo "$as_me:$LINENO: checking for ssize_t" >&5
-echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6; }
-if test "${ac_cv_type_ssize_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
+cat >>confdefs.h <<_ACEOF
+#define uint32_t $ac_cv_c_uint32_t
_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
+;;
+ esac
-#include <sys/types.h>
-typedef ssize_t ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
- return 0;
-if (sizeof (ac__type_new_))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_type_ssize_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
- ac_cv_type_ssize_t=no
-fi
+ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "
+#include <sys/types.h>
+
+"
+if test "x$ac_cv_type_ssize_t" = xyes; then :
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5
-echo "${ECHO_T}$ac_cv_type_ssize_t" >&6; }
-if test $ac_cv_type_ssize_t = yes; then
- :
else
-cat >>confdefs.h <<\_ACEOF
-#define ssize_t int
-_ACEOF
+$as_echo "#define ssize_t int" >>confdefs.h
fi
@@ -6676,88 +6114,23 @@ fi
-{ echo "$as_me:$LINENO: checking for socklen_t" >&5
-echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6; }
-if test "${ac_cv_type_socklen_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
+ac_fn_c_check_type "$LINENO" "socklen_t" "ac_cv_type_socklen_t" "
#include <sys/types.h>
#include <sys/socket.h>
+"
+if test "x$ac_cv_type_socklen_t" = xyes; then :
-typedef socklen_t ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
- return 0;
-if (sizeof (ac__type_new_))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_type_socklen_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_type_socklen_t=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_socklen_t" >&5
-echo "${ECHO_T}$ac_cv_type_socklen_t" >&6; }
-if test $ac_cv_type_socklen_t = yes; then
- :
else
-cat >>confdefs.h <<\_ACEOF
-#define socklen_t int
-_ACEOF
+$as_echo "#define socklen_t int" >>confdefs.h
fi
-{ echo "$as_me:$LINENO: checking for struct dirent.d_ino" >&5
-echo $ECHO_N "checking for struct dirent.d_ino... $ECHO_C" >&6; }
-if test "${ac_cv_member_struct_dirent_d_ino+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#ifdef HAVE_DIRENT_H
+ac_fn_c_check_member "$LINENO" "struct dirent" "d_ino" "ac_cv_member_struct_dirent_d_ino" "#ifdef HAVE_DIRENT_H
# include <dirent.h>
#else
# ifdef HAVE_NDIR_H
@@ -6767,99 +6140,8 @@ cat >>conftest.$ac_ext <<_ACEOF
# endif
# define dirent direct
#endif
-
-int
-main ()
-{
-static struct dirent ac_aggr;
-if (ac_aggr.d_ino)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_member_struct_dirent_d_ino=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#ifdef HAVE_DIRENT_H
-# include <dirent.h>
-#else
-# ifdef HAVE_NDIR_H
-# include <ndir.h>
-# else
-# include <sys/dir.h>
-# endif
-# define dirent direct
-#endif
-
-int
-main ()
-{
-static struct dirent ac_aggr;
-if (sizeof ac_aggr.d_ino)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_member_struct_dirent_d_ino=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_member_struct_dirent_d_ino=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_dirent_d_ino" >&5
-echo "${ECHO_T}$ac_cv_member_struct_dirent_d_ino" >&6; }
-if test $ac_cv_member_struct_dirent_d_ino = yes; then
+"
+if test "x$ac_cv_member_struct_dirent_d_ino" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_STRUCT_DIRENT_D_INO 1
@@ -6868,565 +6150,139 @@ _ACEOF
fi
-{ echo "$as_me:$LINENO: checking for struct utmp.ut_host" >&5
-echo $ECHO_N "checking for struct utmp.ut_host... $ECHO_C" >&6; }
-if test "${ac_cv_member_struct_utmp_ut_host+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
+ac_fn_c_check_member "$LINENO" "struct utmp" "ut_host" "ac_cv_member_struct_utmp_ut_host" "#include <sys/types.h>
#ifdef HAVE_UTMPX_H
#include <utmpx.h>
#define utmp utmpx
#elif defined HAVE_UTMP_H
#include <utmp.h>
#endif
+"
+if test "x$ac_cv_member_struct_utmp_ut_host" = xyes; then :
-int
-main ()
-{
-static struct utmp ac_aggr;
-if (ac_aggr.ut_host)
-return 0;
- ;
- return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTMP_UT_HOST 1
_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_member_struct_utmp_ut_host=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
+
+fi
+ac_fn_c_check_member "$LINENO" "struct utmp" "ut_user" "ac_cv_member_struct_utmp_ut_user" "#include <sys/types.h>
#ifdef HAVE_UTMPX_H
#include <utmpx.h>
#define utmp utmpx
#elif defined HAVE_UTMP_H
#include <utmp.h>
#endif
-
-int
-main ()
-{
-static struct utmp ac_aggr;
-if (sizeof ac_aggr.ut_host)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_member_struct_utmp_ut_host=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_member_struct_utmp_ut_host=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_utmp_ut_host" >&5
-echo "${ECHO_T}$ac_cv_member_struct_utmp_ut_host" >&6; }
-if test $ac_cv_member_struct_utmp_ut_host = yes; then
+"
+if test "x$ac_cv_member_struct_utmp_ut_user" = xyes; then :
cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_UTMP_UT_HOST 1
+#define HAVE_STRUCT_UTMP_UT_USER 1
_ACEOF
fi
-{ echo "$as_me:$LINENO: checking for struct utmp.ut_user" >&5
-echo $ECHO_N "checking for struct utmp.ut_user... $ECHO_C" >&6; }
-if test "${ac_cv_member_struct_utmp_ut_user+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
+ac_fn_c_check_member "$LINENO" "struct utmp" "ut_tv" "ac_cv_member_struct_utmp_ut_tv" "#include <sys/types.h>
#ifdef HAVE_UTMPX_H
#include <utmpx.h>
#define utmp utmpx
#elif defined HAVE_UTMP_H
#include <utmp.h>
#endif
+"
+if test "x$ac_cv_member_struct_utmp_ut_tv" = xyes; then :
-int
-main ()
-{
-static struct utmp ac_aggr;
-if (ac_aggr.ut_user)
-return 0;
- ;
- return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTMP_UT_TV 1
_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_member_struct_utmp_ut_user=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
+
+fi
+ac_fn_c_check_member "$LINENO" "struct utmp" "ut_xtime" "ac_cv_member_struct_utmp_ut_xtime" "#include <sys/types.h>
#ifdef HAVE_UTMPX_H
#include <utmpx.h>
#define utmp utmpx
#elif defined HAVE_UTMP_H
#include <utmp.h>
#endif
-
-int
-main ()
-{
-static struct utmp ac_aggr;
-if (sizeof ac_aggr.ut_user)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_member_struct_utmp_ut_user=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_member_struct_utmp_ut_user=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_utmp_ut_user" >&5
-echo "${ECHO_T}$ac_cv_member_struct_utmp_ut_user" >&6; }
-if test $ac_cv_member_struct_utmp_ut_user = yes; then
+"
+if test "x$ac_cv_member_struct_utmp_ut_xtime" = xyes; then :
cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_UTMP_UT_USER 1
+#define HAVE_STRUCT_UTMP_UT_XTIME 1
_ACEOF
fi
-{ echo "$as_me:$LINENO: checking for struct utmp.ut_tv" >&5
-echo $ECHO_N "checking for struct utmp.ut_tv... $ECHO_C" >&6; }
-if test "${ac_cv_member_struct_utmp_ut_tv+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
+ac_fn_c_check_member "$LINENO" "struct utmpx" "ut_host" "ac_cv_member_struct_utmpx_ut_host" "#include <sys/types.h>
#ifdef HAVE_UTMPX_H
#include <utmpx.h>
#define utmp utmpx
#elif defined HAVE_UTMP_H
#include <utmp.h>
#endif
+"
+if test "x$ac_cv_member_struct_utmpx_ut_host" = xyes; then :
-int
-main ()
-{
-static struct utmp ac_aggr;
-if (ac_aggr.ut_tv)
-return 0;
- ;
- return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTMPX_UT_HOST 1
_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_member_struct_utmp_ut_tv=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
+
+fi
+ac_fn_c_check_member "$LINENO" "struct utmpx" "ut_user" "ac_cv_member_struct_utmpx_ut_user" "#include <sys/types.h>
#ifdef HAVE_UTMPX_H
#include <utmpx.h>
#define utmp utmpx
#elif defined HAVE_UTMP_H
#include <utmp.h>
#endif
-
-int
-main ()
-{
-static struct utmp ac_aggr;
-if (sizeof ac_aggr.ut_tv)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_member_struct_utmp_ut_tv=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_member_struct_utmp_ut_tv=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_utmp_ut_tv" >&5
-echo "${ECHO_T}$ac_cv_member_struct_utmp_ut_tv" >&6; }
-if test $ac_cv_member_struct_utmp_ut_tv = yes; then
+"
+if test "x$ac_cv_member_struct_utmpx_ut_user" = xyes; then :
cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_UTMP_UT_TV 1
+#define HAVE_STRUCT_UTMPX_UT_USER 1
_ACEOF
fi
-{ echo "$as_me:$LINENO: checking for struct utmp.ut_xtime" >&5
-echo $ECHO_N "checking for struct utmp.ut_xtime... $ECHO_C" >&6; }
-if test "${ac_cv_member_struct_utmp_ut_xtime+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
+ac_fn_c_check_member "$LINENO" "struct utmpx" "ut_tv" "ac_cv_member_struct_utmpx_ut_tv" "#include <sys/types.h>
#ifdef HAVE_UTMPX_H
#include <utmpx.h>
#define utmp utmpx
#elif defined HAVE_UTMP_H
#include <utmp.h>
#endif
+"
+if test "x$ac_cv_member_struct_utmpx_ut_tv" = xyes; then :
-int
-main ()
-{
-static struct utmp ac_aggr;
-if (ac_aggr.ut_xtime)
-return 0;
- ;
- return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTMPX_UT_TV 1
_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_member_struct_utmp_ut_xtime=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
+
+fi
+ac_fn_c_check_member "$LINENO" "struct utmpx" "ut_xtime" "ac_cv_member_struct_utmpx_ut_xtime" "#include <sys/types.h>
#ifdef HAVE_UTMPX_H
#include <utmpx.h>
#define utmp utmpx
#elif defined HAVE_UTMP_H
#include <utmp.h>
#endif
-
-int
-main ()
-{
-static struct utmp ac_aggr;
-if (sizeof ac_aggr.ut_xtime)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_member_struct_utmp_ut_xtime=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_member_struct_utmp_ut_xtime=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_utmp_ut_xtime" >&5
-echo "${ECHO_T}$ac_cv_member_struct_utmp_ut_xtime" >&6; }
-if test $ac_cv_member_struct_utmp_ut_xtime = yes; then
+"
+if test "x$ac_cv_member_struct_utmpx_ut_xtime" = xyes; then :
cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_UTMP_UT_XTIME 1
+#define HAVE_STRUCT_UTMPX_UT_XTIME 1
_ACEOF
fi
-{ echo "$as_me:$LINENO: checking for struct sockaddr_storage.ss_family" >&5
-echo $ECHO_N "checking for struct sockaddr_storage.ss_family... $ECHO_C" >&6; }
-if test "${ac_cv_member_struct_sockaddr_storage_ss_family+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
+ac_fn_c_check_member "$LINENO" "struct sockaddr_storage" "ss_family" "ac_cv_member_struct_sockaddr_storage_ss_family" "#include <sys/types.h>
#include <sys/socket.h>
-
-int
-main ()
-{
-static struct sockaddr_storage ac_aggr;
-if (ac_aggr.ss_family)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_member_struct_sockaddr_storage_ss_family=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <sys/socket.h>
-
-int
-main ()
-{
-static struct sockaddr_storage ac_aggr;
-if (sizeof ac_aggr.ss_family)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_member_struct_sockaddr_storage_ss_family=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_member_struct_sockaddr_storage_ss_family=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_sockaddr_storage_ss_family" >&5
-echo "${ECHO_T}$ac_cv_member_struct_sockaddr_storage_ss_family" >&6; }
-if test $ac_cv_member_struct_sockaddr_storage_ss_family = yes; then
+"
+if test "x$ac_cv_member_struct_sockaddr_storage_ss_family" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY 1
@@ -7436,16 +6292,12 @@ _ACEOF
fi
-{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; }
-if test "${ac_cv_c_const+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
+$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
+if ${ac_cv_c_const+:} false; then :
+ $as_echo_n "(cached) " >&6
else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
@@ -7505,53 +6357,27 @@ main ()
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
ac_cv_c_const=yes
else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_c_const=no
+ ac_cv_c_const=no
fi
-
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
-echo "${ECHO_T}$ac_cv_c_const" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
+$as_echo "$ac_cv_c_const" >&6; }
if test $ac_cv_c_const = no; then
-cat >>confdefs.h <<\_ACEOF
-#define const
-_ACEOF
+$as_echo "#define const /**/" >>confdefs.h
fi
-{ echo "$as_me:$LINENO: checking for working volatile" >&5
-echo $ECHO_N "checking for working volatile... $ECHO_C" >&6; }
-if test "${ac_cv_c_volatile+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5
+$as_echo_n "checking for working volatile... " >&6; }
+if ${ac_cv_c_volatile+:} false; then :
+ $as_echo_n "(cached) " >&6
else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
@@ -7565,543 +6391,120 @@ return !x && !y;
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
ac_cv_c_volatile=yes
else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_c_volatile=no
+ ac_cv_c_volatile=no
fi
-
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_volatile" >&5
-echo "${ECHO_T}$ac_cv_c_volatile" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5
+$as_echo "$ac_cv_c_volatile" >&6; }
if test $ac_cv_c_volatile = no; then
-cat >>confdefs.h <<\_ACEOF
-#define volatile
-_ACEOF
+$as_echo "#define volatile /**/" >>confdefs.h
fi
-{ echo "$as_me:$LINENO: checking whether crypt is declared" >&5
-echo $ECHO_N "checking whether crypt is declared... $ECHO_C" >&6; }
-if test "${ac_cv_have_decl_crypt+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include "config_p.h"
+ac_fn_c_check_decl "$LINENO" "crypt" "ac_cv_have_decl_crypt" "#include \"config_p.h\"
$ac_includes_default
#ifdef HAVE_CRYPT_H
#include <crypt.h>
#endif
-
-int
-main ()
-{
-#ifndef crypt
- (void) crypt;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_have_decl_crypt=yes
+"
+if test "x$ac_cv_have_decl_crypt" = xyes; then :
+ ac_have_decl=1
else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_have_decl_crypt=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_have_decl=0
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_crypt" >&5
-echo "${ECHO_T}$ac_cv_have_decl_crypt" >&6; }
-if test $ac_cv_have_decl_crypt = yes; then
cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_CRYPT 1
+#define HAVE_DECL_CRYPT $ac_have_decl
_ACEOF
-
-
-else
- cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_CRYPT 0
-_ACEOF
-
-
-fi
-{ echo "$as_me:$LINENO: checking whether environ is declared" >&5
-echo $ECHO_N "checking whether environ is declared... $ECHO_C" >&6; }
-if test "${ac_cv_have_decl_environ+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include "config_p.h"
+ac_fn_c_check_decl "$LINENO" "environ" "ac_cv_have_decl_environ" "#include \"config_p.h\"
$ac_includes_default
#ifdef HAVE_CRYPT_H
#include <crypt.h>
#endif
-
-int
-main ()
-{
-#ifndef environ
- (void) environ;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_have_decl_environ=yes
+"
+if test "x$ac_cv_have_decl_environ" = xyes; then :
+ ac_have_decl=1
else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_have_decl_environ=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_have_decl=0
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_environ" >&5
-echo "${ECHO_T}$ac_cv_have_decl_environ" >&6; }
-if test $ac_cv_have_decl_environ = yes; then
cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_ENVIRON 1
+#define HAVE_DECL_ENVIRON $ac_have_decl
_ACEOF
-
-
-else
- cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_ENVIRON 0
-_ACEOF
-
-
-fi
-{ echo "$as_me:$LINENO: checking whether gethostname is declared" >&5
-echo $ECHO_N "checking whether gethostname is declared... $ECHO_C" >&6; }
-if test "${ac_cv_have_decl_gethostname+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include "config_p.h"
+ac_fn_c_check_decl "$LINENO" "gethostname" "ac_cv_have_decl_gethostname" "#include \"config_p.h\"
$ac_includes_default
#ifdef HAVE_CRYPT_H
#include <crypt.h>
#endif
-
-int
-main ()
-{
-#ifndef gethostname
- (void) gethostname;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_have_decl_gethostname=yes
+"
+if test "x$ac_cv_have_decl_gethostname" = xyes; then :
+ ac_have_decl=1
else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_have_decl_gethostname=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_have_decl=0
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_gethostname" >&5
-echo "${ECHO_T}$ac_cv_have_decl_gethostname" >&6; }
-if test $ac_cv_have_decl_gethostname = yes; then
cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_GETHOSTNAME 1
-_ACEOF
-
-
-else
- cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_GETHOSTNAME 0
-_ACEOF
-
-
-fi
-{ echo "$as_me:$LINENO: checking whether getpgrp is declared" >&5
-echo $ECHO_N "checking whether getpgrp is declared... $ECHO_C" >&6; }
-if test "${ac_cv_have_decl_getpgrp+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
+#define HAVE_DECL_GETHOSTNAME $ac_have_decl
_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include "config_p.h"
+ac_fn_c_check_decl "$LINENO" "getpgrp" "ac_cv_have_decl_getpgrp" "#include \"config_p.h\"
$ac_includes_default
#ifdef HAVE_CRYPT_H
#include <crypt.h>
#endif
-
-int
-main ()
-{
-#ifndef getpgrp
- (void) getpgrp;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_have_decl_getpgrp=yes
+"
+if test "x$ac_cv_have_decl_getpgrp" = xyes; then :
+ ac_have_decl=1
else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_have_decl_getpgrp=no
+ ac_have_decl=0
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_getpgrp" >&5
-echo "${ECHO_T}$ac_cv_have_decl_getpgrp" >&6; }
-if test $ac_cv_have_decl_getpgrp = yes; then
-
cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_GETPGRP 1
-_ACEOF
-
-
-else
- cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_GETPGRP 0
+#define HAVE_DECL_GETPGRP $ac_have_decl
_ACEOF
-
-fi
-
-
-{ echo "$as_me:$LINENO: checking for setlocale" >&5
-echo $ECHO_N "checking for setlocale... $ECHO_C" >&6; }
-if test "${ac_cv_func_setlocale+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define setlocale to an innocuous variant, in case <limits.h> declares setlocale.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define setlocale innocuous_setlocale
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char setlocale (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef setlocale
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char setlocale ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined __stub_setlocale || defined __stub___setlocale
-choke me
-#endif
-
-int
-main ()
-{
-return setlocale ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext &&
- $as_test_x conftest$ac_exeext; then
- ac_cv_func_setlocale=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_func_setlocale=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_setlocale" >&5
-echo "${ECHO_T}$ac_cv_func_setlocale" >&6; }
-if test $ac_cv_func_setlocale = yes; then
+ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale"
+if test "x$ac_cv_func_setlocale" = xyes; then :
have_setlocale=yes
else
have_setlocale=no
fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_func in catgets dup2 getauthid getcwd gethostname getpwent getutent memmove memset nice nl_langinfo sbrk setpgid setpriority strerror strstr sysconf wcwidth
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext &&
- $as_test_x conftest$ac_exeext; then
- eval "$as_ac_var=yes"
+ac_fn_c_check_func "$LINENO" "catgets" "ac_cv_func_catgets"
+if test "x$ac_cv_func_catgets" = xyes; then :
+ have_catgets=yes
else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- eval "$as_ac_var=no"
+ have_catgets=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval echo '${'$as_ac_var'}'`
- { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_var'}'` = yes; then
+for ac_func in dup2 getauthid getcwd gethostname getpwent getutent getutxent mallinfo memmove memset mkstemp nice nl_langinfo sbrk setpgid setpriority strerror strstr sysconf wcwidth
+do :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
fi
done
-{ echo "$as_me:$LINENO: checking whether getpgrp requires zero arguments" >&5
-echo $ECHO_N "checking whether getpgrp requires zero arguments... $ECHO_C" >&6; }
-if test "${ac_cv_func_getpgrp_void+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getpgrp requires zero arguments" >&5
+$as_echo_n "checking whether getpgrp requires zero arguments... " >&6; }
+if ${ac_cv_func_getpgrp_void+:} false; then :
+ $as_echo_n "(cached) " >&6
else
# Use it with a single arg.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
int
@@ -8112,55 +6515,29 @@ getpgrp (0);
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
ac_cv_func_getpgrp_void=no
else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_func_getpgrp_void=yes
+ ac_cv_func_getpgrp_void=yes
fi
-
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_getpgrp_void" >&5
-echo "${ECHO_T}$ac_cv_func_getpgrp_void" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getpgrp_void" >&5
+$as_echo "$ac_cv_func_getpgrp_void" >&6; }
if test $ac_cv_func_getpgrp_void = yes; then
-cat >>confdefs.h <<\_ACEOF
-#define GETPGRP_VOID 1
-_ACEOF
+$as_echo "#define GETPGRP_VOID 1" >>confdefs.h
fi
- { echo "$as_me:$LINENO: checking whether mbrtowc and mbstate_t are properly declared" >&5
-echo $ECHO_N "checking whether mbrtowc and mbstate_t are properly declared... $ECHO_C" >&6; }
-if test "${ac_cv_func_mbrtowc+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc and mbstate_t are properly declared" >&5
+$as_echo_n "checking whether mbrtowc and mbstate_t are properly declared... " >&6; }
+if ${ac_cv_func_mbrtowc+:} false; then :
+ $as_echo_n "(cached) " >&6
else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <wchar.h>
int
@@ -8175,60 +6552,32 @@ wchar_t wc;
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext &&
- $as_test_x conftest$ac_exeext; then
+if ac_fn_c_try_link "$LINENO"; then :
ac_cv_func_mbrtowc=yes
else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_func_mbrtowc=no
+ ac_cv_func_mbrtowc=no
fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_mbrtowc" >&5
-echo "${ECHO_T}$ac_cv_func_mbrtowc" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mbrtowc" >&5
+$as_echo "$ac_cv_func_mbrtowc" >&6; }
if test $ac_cv_func_mbrtowc = yes; then
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_MBRTOWC 1
-_ACEOF
+$as_echo "#define HAVE_MBRTOWC 1" >>confdefs.h
fi
-{ echo "$as_me:$LINENO: checking whether setpgrp takes no argument" >&5
-echo $ECHO_N "checking whether setpgrp takes no argument... $ECHO_C" >&6; }
-if test "${ac_cv_func_setpgrp_void+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+if test "x${cross_compiling}" != xyes ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether setpgrp takes no argument" >&5
+$as_echo_n "checking whether setpgrp takes no argument... " >&6; }
+if ${ac_cv_func_setpgrp_void+:} false; then :
+ $as_echo_n "(cached) " >&6
else
- if test "$cross_compiling" = yes; then
- { { echo "$as_me:$LINENO: error: cannot check setpgrp when cross compiling" >&5
-echo "$as_me: error: cannot check setpgrp when cross compiling" >&2;}
- { (exit 1); exit 1; }; }
+ if test "$cross_compiling" = yes; then :
+ as_fn_error $? "cannot check setpgrp when cross compiling" "$LINENO" 5
else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
int
@@ -8242,63 +6591,36 @@ main ()
return 0;
}
_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+if ac_fn_c_try_run "$LINENO"; then :
ac_cv_func_setpgrp_void=no
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_func_setpgrp_void=yes
+ ac_cv_func_setpgrp_void=yes
fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_setpgrp_void" >&5
-echo "${ECHO_T}$ac_cv_func_setpgrp_void" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_setpgrp_void" >&5
+$as_echo "$ac_cv_func_setpgrp_void" >&6; }
if test $ac_cv_func_setpgrp_void = yes; then
-cat >>confdefs.h <<\_ACEOF
-#define SETPGRP_VOID 1
-_ACEOF
+$as_echo "#define SETPGRP_VOID 1" >>confdefs.h
fi
-{ echo "$as_me:$LINENO: checking for working strcoll" >&5
-echo $ECHO_N "checking for working strcoll... $ECHO_C" >&6; }
-if test "${ac_cv_func_strcoll_works+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
else
- if test "$cross_compiling" = yes; then
+ ac_cv_func_setpgrp_void=yes
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5
+$as_echo_n "checking for working strcoll... " >&6; }
+if ${ac_cv_func_strcoll_works+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
ac_cv_func_strcoll_works=no
else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
int
@@ -8311,47 +6633,21 @@ return (strcoll ("abc", "def") >= 0 ||
return 0;
}
_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+if ac_fn_c_try_run "$LINENO"; then :
ac_cv_func_strcoll_works=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_func_strcoll_works=no
+ ac_cv_func_strcoll_works=no
fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_strcoll_works" >&5
-echo "${ECHO_T}$ac_cv_func_strcoll_works" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5
+$as_echo "$ac_cv_func_strcoll_works" >&6; }
if test $ac_cv_func_strcoll_works = yes; then
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_STRCOLL 1
-_ACEOF
+$as_echo "#define HAVE_STRCOLL 1" >>confdefs.h
fi
@@ -8361,7 +6657,7 @@ fi
if test "$have_setlocale" != no; then
# Check whether --enable-nls was given.
-if test "${enable_nls+set}" = set; then
+if test "${enable_nls+set}" = set; then :
enableval=$enable_nls;
else
enable_nls=yes
@@ -8369,119 +6665,49 @@ fi
if test "x$enable_nls" != xno; then
-cat >>confdefs.h <<\_ACEOF
-#define NLS 1
-_ACEOF
+$as_echo "#define NLS 1" >>confdefs.h
fi
fi
-
-# Check whether --with-hesiod was given.
-if test "${with_hesiod+set}" = set; then
- withval=$with_hesiod; hesiod="$withval"
+if test "x$enable_nls" != xno -a "$have_catgets" != no -a -n "$GENCAT" ; then
+ # Check whether --enable-nls-catalogs was given.
+if test "${enable_nls_catalogs+set}" = set; then :
+ enableval=$enable_nls_catalogs;
else
- hesiod=no
+ enable_nls_catalogs=yes
fi
-if test "$hesiod" != no; then
- HESLIB="-lhesiod"
- { echo "$as_me:$LINENO: checking for res_send" >&5
-echo $ECHO_N "checking for res_send... $ECHO_C" >&6; }
-if test "${ac_cv_func_res_send+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define res_send to an innocuous variant, in case <limits.h> declares res_send.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define res_send innocuous_res_send
+ if test "x$enable_nls_catalogs" != xno; then
+ BUILD_CATALOGS="yes"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char res_send (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
+$as_echo "#define NLS_CATALOGS 1" >>confdefs.h
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+ fi
+fi
-#undef res_send
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char res_send ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined __stub_res_send || defined __stub___res_send
-choke me
-#endif
-
-int
-main ()
-{
-return res_send ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext &&
- $as_test_x conftest$ac_exeext; then
- ac_cv_func_res_send=yes
+# Check whether --with-hesiod was given.
+if test "${with_hesiod+set}" = set; then :
+ withval=$with_hesiod; hesiod="$withval"
else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_func_res_send=no
+ hesiod=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_res_send" >&5
-echo "${ECHO_T}$ac_cv_func_res_send" >&6; }
-if test $ac_cv_func_res_send = yes; then
+if test "$hesiod" != no; then
+ HESLIB="-lhesiod"
+ ac_fn_c_check_func "$LINENO" "res_send" "ac_cv_func_res_send"
+if test "x$ac_cv_func_res_send" = xyes; then :
:
else
- { echo "$as_me:$LINENO: checking for res_send in -lresolv" >&5
-echo $ECHO_N "checking for res_send in -lresolv... $ECHO_C" >&6; }
-if test "${ac_cv_lib_resolv_res_send+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for res_send in -lresolv" >&5
+$as_echo_n "checking for res_send in -lresolv... " >&6; }
+if ${ac_cv_lib_resolv_res_send+:} false; then :
+ $as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lresolv $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
@@ -8499,39 +6725,18 @@ return res_send ();
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext &&
- $as_test_x conftest$ac_exeext; then
+if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_resolv_res_send=yes
else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_lib_resolv_res_send=no
+ ac_cv_lib_resolv_res_send=no
fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_resolv_res_send" >&5
-echo "${ECHO_T}$ac_cv_lib_resolv_res_send" >&6; }
-if test $ac_cv_lib_resolv_res_send = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_res_send" >&5
+$as_echo "$ac_cv_lib_resolv_res_send" >&6; }
+if test "x$ac_cv_lib_resolv_res_send" = xyes; then :
HESLIB="$HESLIB -lresolv"
fi
@@ -8546,7 +6751,8 @@ fi
-ac_config_files="$ac_config_files Makefile"
+
+ac_config_files="$ac_config_files Makefile nls/Makefile"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@@ -8575,12 +6781,13 @@ _ACEOF
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
- *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
- *) $as_unset $ac_var ;;
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
esac ;;
esac
done
@@ -8588,8 +6795,8 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
(set) 2>&1 |
case $as_nl`(ac_space=' '; set) 2>&1` in #(
*${as_nl}ac_space=\ *)
- # `set' does not quote correctly, so add quotes (double-quote
- # substitution turns \\\\ into \\, and sed turns \\ into \).
+ # `set' does not quote correctly, so add quotes: double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \.
sed -n \
"s/'/'\\\\''/g;
s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
@@ -8611,13 +6818,24 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
:end' >>confcache
if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
if test -w "$cache_file"; then
- test "x$cache_file" != "x/dev/null" &&
- { echo "$as_me:$LINENO: updating cache $cache_file" >&5
-echo "$as_me: updating cache $cache_file" >&6;}
- cat confcache >$cache_file
+ if test "x$cache_file" != "x/dev/null"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+ if test ! -f "$cache_file" || test -h "$cache_file"; then
+ cat confcache >"$cache_file"
+ else
+ case $cache_file in #(
+ */* | ?:*)
+ mv -f confcache "$cache_file"$$ &&
+ mv -f "$cache_file"$$ "$cache_file" ;; #(
+ *)
+ mv -f confcache "$cache_file" ;;
+ esac
+ fi
+ fi
else
- { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
-echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
fi
fi
rm -f confcache
@@ -8630,14 +6848,15 @@ DEFS=-DHAVE_CONFIG_H
ac_libobjs=
ac_ltlibobjs=
+U=
for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
# 1. Remove the extension, and $U if already installed.
ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
- ac_i=`echo "$ac_i" | sed "$ac_script"`
+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
# 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
# will be set to the directory where LIBOBJS objects are built.
- ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
- ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
done
LIBOBJS=$ac_libobjs
@@ -8645,12 +6864,14 @@ LTLIBOBJS=$ac_ltlibobjs
-: ${CONFIG_STATUS=./config.status}
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
-echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
#! $SHELL
# Generated by $as_me.
# Run this file to recreate the current configuration.
@@ -8660,59 +6881,79 @@ cat >$CONFIG_STATUS <<_ACEOF
debug=false
ac_cs_recheck=false
ac_cs_silent=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-## --------------------- ##
-## M4sh Initialization. ##
-## --------------------- ##
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
NULLCMD=:
- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
else
- case `(set -o) 2>/dev/null` in
- *posix*) set -o posix ;;
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
esac
-
fi
-
-
-# PATH needs CR
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
else
- PATH_SEPARATOR=:
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
fi
- rm -f conf$$.sh
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
fi
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
- as_unset=unset
-else
- as_unset=false
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
fi
@@ -8721,20 +6962,19 @@ fi
# there to prevent editors from complaining about space-tab.
# (If _AS_PATH_WALK were called with IFS unset, it would disable word
# splitting by setting IFS to empty value.)
-as_nl='
-'
IFS=" "" $as_nl"
# Find who we are. Look in the path if we contain no directory separator.
-case $0 in
+as_myself=
+case $0 in #((
*[\\/]* ) as_myself=$0 ;;
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
IFS=$as_save_IFS
;;
@@ -8745,32 +6985,111 @@ if test "x$as_myself" = x; then
as_myself=$0
fi
if test ! -f "$as_myself"; then
- echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
- { (exit 1); exit 1; }
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
fi
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
done
PS1='$ '
PS2='> '
PS4='+ '
# NLS nuisances.
-for as_var in \
- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
- LC_TELEPHONE LC_TIME
-do
- if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
- eval $as_var=C; export $as_var
- else
- ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
-done
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
-# Required to use basename.
if expr a : '\(a\)' >/dev/null 2>&1 &&
test "X`expr 00001 : '.*\(...\)'`" = X001; then
as_expr=expr
@@ -8784,13 +7103,17 @@ else
as_basename=false
fi
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
-# Name of the executable.
as_me=`$as_basename -- "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-echo X/"$0" |
+$as_echo X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
@@ -8805,104 +7128,103 @@ echo X/"$0" |
}
s/.*/./; q'`
-# CDPATH.
-$as_unset CDPATH
-
-
-
- as_lineno_1=$LINENO
- as_lineno_2=$LINENO
- test "x$as_lineno_1" != "x$as_lineno_2" &&
- test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
- # uniformly replaced by the line number. The first 'sed' inserts a
- # line-number line after each line using $LINENO; the second 'sed'
- # does the real work. The second script uses 'N' to pair each
- # line-number line with the line containing $LINENO, and appends
- # trailing '-' during substitution so that $LINENO is not a special
- # case at line end.
- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
- # scripts with optimization help from Paolo Bonzini. Blame Lee
- # E. McMahon (1931-1989) for sed's syntax. :-)
- sed -n '
- p
- /[$]LINENO/=
- ' <$as_myself |
- sed '
- s/[$]LINENO.*/&-/
- t lineno
- b
- :lineno
- N
- :loop
- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
- t loop
- s/-\n.*//
- ' >$as_me.lineno &&
- chmod +x "$as_me.lineno" ||
- { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
- { (exit 1); exit 1; }; }
-
- # Don't try to exec as it changes $[0], causing all sort of problems
- # (the dirname of $[0] is not the place where we might find the
- # original and so on. Autoconf is especially sensitive to this).
- . "./$as_me.lineno"
- # Exit status is that of the last command.
- exit
-}
-
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
- as_dirname=dirname
-else
- as_dirname=false
-fi
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
+case `echo -n x` in #(((((
-n*)
- case `echo 'x\c'` in
+ case `echo 'xy\c'` in
*c*) ECHO_T=' ';; # ECHO_T is single tab character.
- *) ECHO_C='\c';;
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
esac;;
*)
ECHO_N='-n';;
esac
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
else
rm -f conf$$.dir
- mkdir conf$$.dir
-fi
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
- as_ln_s='ln -s'
- # ... but there are two gotchas:
- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
as_ln_s='cp -p'
-elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
+ fi
else
as_ln_s='cp -p'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
if mkdir -p . 2>/dev/null; then
- as_mkdir_p=:
+ as_mkdir_p='mkdir -p "$as_dir"'
else
test -d ./-p && rmdir ./-p
as_mkdir_p=false
@@ -8919,12 +7241,12 @@ else
as_test_x='
eval sh -c '\''
if test -d "$1"; then
- test -d "$1/.";
+ test -d "$1/.";
else
- case $1 in
- -*)set "./$1";;
+ case $1 in #(
+ -*)set "./$1";;
esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
???[sx]*):;;*)false;;esac;fi
'\'' sh
'
@@ -8939,13 +7261,19 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
-# Save the log message, to keep $[0] and so on meaningful, and to
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by tcsh $as_me 6.17.00, which was
-generated by GNU Autoconf 2.61. Invocation command line was
+This file was extended by tcsh $as_me 6.18.01, which was
+generated by GNU Autoconf 2.68. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -8958,7 +7286,16 @@ on `(hostname || uname -n) 2>/dev/null | sed 1q`
_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
# Files that config.status was made for.
config_files="$ac_config_files"
config_headers="$ac_config_headers"
@@ -8966,22 +7303,25 @@ config_commands="$ac_config_commands"
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
ac_cs_usage="\
-\`$as_me' instantiates files from templates according to the
-current configuration.
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration. Unless the files
+and actions are specified as TAGs, all are instantiated by default.
-Usage: $0 [OPTIONS] [FILE]...
+Usage: $0 [OPTION]... [TAG]...
-h, --help print this help, then exit
-V, --version print version number and configuration settings, then exit
- -q, --quiet do not print progress messages
+ --config print configuration, then exit
+ -q, --quiet, --silent
+ do not print progress messages
-d, --debug don't remove temporary files
--recheck update $as_me by reconfiguring in the same conditions
- --file=FILE[:TEMPLATE]
- instantiate the configuration file FILE
- --header=FILE[:TEMPLATE]
- instantiate the configuration header FILE
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
Configuration files:
$config_files
@@ -8992,35 +7332,42 @@ $config_headers
Configuration commands:
$config_commands
-Report bugs to <bug-autoconf@gnu.org>."
+Report bugs to <http://bugs.gw.com/>."
_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-tcsh config.status 6.17.00
-configured by $0, generated by GNU Autoconf 2.61,
- with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+tcsh config.status 6.18.01
+configured by $0, generated by GNU Autoconf 2.68,
+ with options \\"\$ac_cs_config\\"
-Copyright (C) 2006 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
ac_pwd='$ac_pwd'
srcdir='$srcdir'
+INSTALL='$INSTALL'
+test -n "\$AWK" || AWK=awk
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-# If no file are specified by the user, then we need to provide default
-# value. By we need to know if files were specified by the user.
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
ac_need_defaults=:
while test $# != 0
do
case $1 in
- --*=*)
+ --*=?*)
ac_option=`expr "X$1" : 'X\([^=]*\)='`
ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
ac_shift=:
;;
+ --*=)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=
+ ac_shift=:
+ ;;
*)
ac_option=$1
ac_optarg=$2
@@ -9033,34 +7380,41 @@ do
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
ac_cs_recheck=: ;;
--version | --versio | --versi | --vers | --ver | --ve | --v | -V )
- echo "$ac_cs_version"; exit ;;
+ $as_echo "$ac_cs_version"; exit ;;
+ --config | --confi | --conf | --con | --co | --c )
+ $as_echo "$ac_cs_config"; exit ;;
--debug | --debu | --deb | --de | --d | -d )
debug=: ;;
--file | --fil | --fi | --f )
$ac_shift
- CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ '') as_fn_error $? "missing file argument" ;;
+ esac
+ as_fn_append CONFIG_FILES " '$ac_optarg'"
ac_need_defaults=false;;
--header | --heade | --head | --hea )
$ac_shift
- CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append CONFIG_HEADERS " '$ac_optarg'"
ac_need_defaults=false;;
--he | --h)
# Conflict between --help and --header
- { echo "$as_me: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&2
- { (exit 1); exit 1; }; };;
+ as_fn_error $? "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
--help | --hel | -h )
- echo "$ac_cs_usage"; exit ;;
+ $as_echo "$ac_cs_usage"; exit ;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
| -silent | --silent | --silen | --sile | --sil | --si | --s)
ac_cs_silent=: ;;
# This is an error.
- -*) { echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2
- { (exit 1); exit 1; }; } ;;
+ -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
- *) ac_config_targets="$ac_config_targets $1"
+ *) as_fn_append ac_config_targets " $1"
ac_need_defaults=false ;;
esac
@@ -9075,30 +7429,37 @@ if $ac_cs_silent; then
fi
_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
- echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
- CONFIG_SHELL=$SHELL
+ set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
export CONFIG_SHELL
- exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ exec "\$@"
fi
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
exec 5>>config.log
{
echo
sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## Running $as_me. ##
_ASBOX
- echo "$ac_log"
+ $as_echo "$ac_log"
} >&5
_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+
+
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# Handling of arguments.
for ac_config_target in $ac_config_targets
@@ -9107,10 +7468,9 @@ do
"config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
"./atconfig") CONFIG_COMMANDS="$CONFIG_COMMANDS ./atconfig" ;;
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "nls/Makefile") CONFIG_FILES="$CONFIG_FILES nls/Makefile" ;;
- *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
- { (exit 1); exit 1; }; };;
+ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
esac
done
@@ -9133,173 +7493,302 @@ fi
# after its creation but before its name has been assigned to `$tmp'.
$debug ||
{
- tmp=
+ tmp= ac_tmp=
trap 'exit_status=$?
- { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+ : "${ac_tmp:=$tmp}"
+ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
' 0
- trap '{ (exit 1); exit 1; }' 1 2 13 15
+ trap 'as_fn_exit 1' 1 2 13 15
}
# Create a (secure) tmp directory for tmp files.
{
tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
- test -n "$tmp" && test -d "$tmp"
+ test -d "$tmp"
} ||
{
tmp=./conf$$-$RANDOM
(umask 077 && mkdir "$tmp")
-} ||
-{
- echo "$me: cannot create a temporary directory in ." >&2
- { (exit 1); exit 1; }
-}
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
-#
-# Set up the sed scripts for CONFIG_FILES section.
-#
-
-# No need to generate the scripts if there are no CONFIG_FILES.
-# This happens for instance when ./config.status config.h
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
if test -n "$CONFIG_FILES"; then
-_ACEOF
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+ eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\\r'
+else
+ ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+{
+ echo "cat >conf$$subs.awk <<_ACEOF" &&
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+ echo "_ACEOF"
+} >conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
- cat >conf$$subs.sed <<_ACEOF
-SHELL!$SHELL$ac_delim
-PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
-PACKAGE_NAME!$PACKAGE_NAME$ac_delim
-PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
-PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
-PACKAGE_STRING!$PACKAGE_STRING$ac_delim
-PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
-exec_prefix!$exec_prefix$ac_delim
-prefix!$prefix$ac_delim
-program_transform_name!$program_transform_name$ac_delim
-bindir!$bindir$ac_delim
-sbindir!$sbindir$ac_delim
-libexecdir!$libexecdir$ac_delim
-datarootdir!$datarootdir$ac_delim
-datadir!$datadir$ac_delim
-sysconfdir!$sysconfdir$ac_delim
-sharedstatedir!$sharedstatedir$ac_delim
-localstatedir!$localstatedir$ac_delim
-includedir!$includedir$ac_delim
-oldincludedir!$oldincludedir$ac_delim
-docdir!$docdir$ac_delim
-infodir!$infodir$ac_delim
-htmldir!$htmldir$ac_delim
-dvidir!$dvidir$ac_delim
-pdfdir!$pdfdir$ac_delim
-psdir!$psdir$ac_delim
-libdir!$libdir$ac_delim
-localedir!$localedir$ac_delim
-mandir!$mandir$ac_delim
-DEFS!$DEFS$ac_delim
-ECHO_C!$ECHO_C$ac_delim
-ECHO_N!$ECHO_N$ac_delim
-ECHO_T!$ECHO_T$ac_delim
-LIBS!$LIBS$ac_delim
-build_alias!$build_alias$ac_delim
-host_alias!$host_alias$ac_delim
-target_alias!$target_alias$ac_delim
-build!$build$ac_delim
-build_cpu!$build_cpu$ac_delim
-build_vendor!$build_vendor$ac_delim
-build_os!$build_os$ac_delim
-host!$host$ac_delim
-host_cpu!$host_cpu$ac_delim
-host_vendor!$host_vendor$ac_delim
-host_os!$host_os$ac_delim
-CC!$CC$ac_delim
-CFLAGS!$CFLAGS$ac_delim
-LDFLAGS!$LDFLAGS$ac_delim
-CPPFLAGS!$CPPFLAGS$ac_delim
-ac_ct_CC!$ac_ct_CC$ac_delim
-EXEEXT!$EXEEXT$ac_delim
-OBJEXT!$OBJEXT$ac_delim
-CPP!$CPP$ac_delim
-GREP!$GREP$ac_delim
-EGREP!$EGREP$ac_delim
-LIBICONV!$LIBICONV$ac_delim
-LTLIBICONV!$LTLIBICONV$ac_delim
-DFLAGS!$DFLAGS$ac_delim
-HESDEF!$HESDEF$ac_delim
-HESLIB!$HESLIB$ac_delim
-LIBOBJS!$LIBOBJS$ac_delim
-LTLIBOBJS!$LTLIBOBJS$ac_delim
-_ACEOF
+ . ./conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 62; then
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ if test $ac_delim_n = $ac_delim_num; then
break
elif $ac_last_try; then
- { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
- { (exit 1); exit 1; }; }
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
else
ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
fi
done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = ""
-ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
-if test -n "$ac_eof"; then
- ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
- ac_eof=`expr $ac_eof + 1`
-fi
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
-cat >>$CONFIG_STATUS <<_ACEOF
-cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
+ print line
+}
+
+_ACAWK
_ACEOF
-sed '
-s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
-s/^/s,@/; s/!/@,|#_!!_#|/
-:n
-t n
-s/'"$ac_delim"'$/,g/; t
-s/$/\\/; p
-N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
-' >>$CONFIG_STATUS <conf$$subs.sed
-rm -f conf$$subs.sed
-cat >>$CONFIG_STATUS <<_ACEOF
-:end
-s/|#_!!_#|//g
-CEOF$ac_eof
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
# trailing colons and then remove the whole line if VPATH becomes empty
# (actually we leave an empty line to preserve line numbers).
if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=/{
-s/:*\$(srcdir):*/:/
-s/:*\${srcdir}:*/:/
-s/:*@srcdir@:*/:/
-s/^\([^=]*=[ ]*\):*/\1/
+ ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
+h
+s///
+s/^/:/
+s/[ ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
s/:*$//
+x
+s/\(=[ ]*\).*/\1/
+G
+s/\n//
s/^[^=]*=[ ]*$//
}'
fi
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
fi # test -n "$CONFIG_FILES"
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
-for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+ ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+ if test -z "$ac_tt"; then
+ break
+ elif $ac_last_try; then
+ as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any. Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[ ]*#[ ]*define[ ][ ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ for (key in D) D_is_set[key] = 1
+ FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+ line = \$ 0
+ split(line, arg, " ")
+ if (arg[1] == "#") {
+ defundef = arg[2]
+ mac1 = arg[3]
+ } else {
+ defundef = substr(arg[1], 2)
+ mac1 = arg[2]
+ }
+ split(mac1, mac2, "(") #)
+ macro = mac2[1]
+ prefix = substr(line, 1, index(line, defundef) - 1)
+ if (D_is_set[macro]) {
+ # Preserve the white space surrounding the "#".
+ print prefix "define", macro P[macro] D[macro]
+ next
+ } else {
+ # Replace #undef with comments. This is necessary, for example,
+ # in the case of _POSIX_SOURCE, which is predefined and required
+ # on some systems where configure will not decide to define it.
+ if (defundef == "undef") {
+ print "/*", prefix defundef, macro, "*/"
+ next
+ }
+ }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS"
+shift
+for ac_tag
do
case $ac_tag in
:[FHLC]) ac_mode=$ac_tag; continue;;
esac
case $ac_mode$ac_tag in
:[FHL]*:*);;
- :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
-echo "$as_me: error: Invalid tag $ac_tag." >&2;}
- { (exit 1); exit 1; }; };;
+ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
:[FH]-) ac_tag=-:-;;
:[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
esac
@@ -9318,7 +7807,7 @@ echo "$as_me: error: Invalid tag $ac_tag." >&2;}
for ac_f
do
case $ac_f in
- -) ac_f="$tmp/stdin";;
+ -) ac_f="$ac_tmp/stdin";;
*) # Look for the file first in the build tree, then in the source tree
# (if the path is not absolute). The absolute path cannot be DOS-style,
# because $ac_f cannot contain `:'.
@@ -9327,26 +7816,34 @@ echo "$as_me: error: Invalid tag $ac_tag." >&2;}
[\\/$]*) false;;
*) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
esac ||
- { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
-echo "$as_me: error: cannot find input file: $ac_f" >&2;}
- { (exit 1); exit 1; }; };;
+ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
esac
- ac_file_inputs="$ac_file_inputs $ac_f"
+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ as_fn_append ac_file_inputs " '$ac_f'"
done
# Let's still pretend it is `configure' which instantiates (i.e., don't
# use $as_me), people would be surprised to read:
# /* config.h. Generated by config.status. */
- configure_input="Generated from "`IFS=:
- echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
if test x"$ac_file" != x-; then
configure_input="$ac_file. $configure_input"
- { echo "$as_me:$LINENO: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`$as_echo "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
case $ac_tag in
- *:-:* | *:-) cat >"$tmp/stdin";;
+ *:-:* | *:-) cat >"$ac_tmp/stdin" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
esac
;;
esac
@@ -9356,7 +7853,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$ac_file" : 'X\(//\)[^/]' \| \
X"$ac_file" : 'X\(//\)$' \| \
X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$ac_file" |
+$as_echo X"$ac_file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -9374,55 +7871,15 @@ echo X"$ac_file" |
q
}
s/.*/./; q'`
- { as_dir="$ac_dir"
- case $as_dir in #(
- -*) as_dir=./$as_dir;;
- esac
- test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
- as_dirs=
- while :; do
- case $as_dir in #(
- *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
- *) as_qdir=$as_dir;;
- esac
- as_dirs="'$as_qdir' $as_dirs"
- as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$as_dir" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- test -d "$as_dir" && break
- done
- test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-echo "$as_me: error: cannot create directory $as_dir" >&2;}
- { (exit 1); exit 1; }; }; }
+ as_dir="$ac_dir"; as_fn_mkdir_p
ac_builddir=.
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
# A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -9456,14 +7913,18 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
# CONFIG_FILE
#
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# If the template does not know about datarootdir, expand it.
# FIXME: This hack should be removed a few years after 2.60.
ac_datarootdir_hack=; ac_datarootdir_seen=
-
-case `sed -n '/datarootdir/ {
+ac_sed_dataroot='
+/datarootdir/ {
p
q
}
@@ -9471,36 +7932,37 @@ case `sed -n '/datarootdir/ {
/@docdir@/p
/@infodir@/p
/@localedir@/p
-/@mandir@/p
-' $ac_file_inputs` in
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
*datarootdir*) ac_datarootdir_seen=yes;;
*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
- { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_datarootdir_hack='
s&@datadir@&$datadir&g
s&@docdir@&$docdir&g
s&@infodir@&$infodir&g
s&@localedir@&$localedir&g
s&@mandir@&$mandir&g
- s&\\\${datarootdir}&$datarootdir&g' ;;
+ s&\\\${datarootdir}&$datarootdir&g' ;;
esac
_ACEOF
# Neutralize VPATH when `$srcdir' = `.'.
# Shell code in configure.ac might set extrasub.
# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF
- sed "$ac_vpsub
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
$extrasub
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
:t
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s&@configure_input@&$configure_input&;t t
+s|@configure_input@|$ac_sed_conf_input|;t t
s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
s&@srcdir@&$ac_srcdir&;t t
s&@abs_srcdir@&$ac_abs_srcdir&;t t
s&@top_srcdir@&$ac_top_srcdir&;t t
@@ -9508,124 +7970,55 @@ s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
s&@builddir@&$ac_builddir&;t t
s&@abs_builddir@&$ac_abs_builddir&;t t
s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
$ac_datarootdir_hack
-" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
- { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
- { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
- { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined. Please make sure it is defined." >&5
-echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined. Please make sure it is defined." >&2;}
-
- rm -f "$tmp/stdin"
+ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
+ "$ac_tmp/out"`; test -z "$ac_out"; } &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&2;}
+
+ rm -f "$ac_tmp/stdin"
case $ac_file in
- -) cat "$tmp/out"; rm -f "$tmp/out";;
- *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
- esac
+ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+ esac \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
;;
:H)
#
# CONFIG_HEADER
#
-_ACEOF
-
-# Transform confdefs.h into a sed script `conftest.defines', that
-# substitutes the proper values into config.h.in to produce config.h.
-rm -f conftest.defines conftest.tail
-# First, append a space to every undef/define line, to ease matching.
-echo 's/$/ /' >conftest.defines
-# Then, protect against being on the right side of a sed subst, or in
-# an unquoted here document, in config.status. If some macros were
-# called several times there might be several #defines for the same
-# symbol, which is useless. But do not sort them, since the last
-# AC_DEFINE must be honored.
-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
-# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where
-# NAME is the cpp macro being defined, VALUE is the value it is being given.
-# PARAMS is the parameter list in the macro definition--in most cases, it's
-# just an empty string.
-ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*'
-ac_dB='\\)[ (].*,\\1define\\2'
-ac_dC=' '
-ac_dD=' ,'
-
-uniq confdefs.h |
- sed -n '
- t rset
- :rset
- s/^[ ]*#[ ]*define[ ][ ]*//
- t ok
- d
- :ok
- s/[\\&,]/\\&/g
- s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p
- s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p
- ' >>conftest.defines
-
-# Remove the space that was appended to ease matching.
-# Then replace #undef with comments. This is necessary, for
-# example, in the case of _POSIX_SOURCE, which is predefined and required
-# on some systems where configure will not decide to define it.
-# (The regexp can be short, since the line contains either #define or #undef.)
-echo 's/ $//
-s,^[ #]*u.*,/* & */,' >>conftest.defines
-
-# Break up conftest.defines:
-ac_max_sed_lines=50
-
-# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1"
-# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2"
-# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1"
-# et cetera.
-ac_in='$ac_file_inputs'
-ac_out='"$tmp/out1"'
-ac_nxt='"$tmp/out2"'
-
-while :
-do
- # Write a here document:
- cat >>$CONFIG_STATUS <<_ACEOF
- # First, check the format of the line:
- cat >"\$tmp/defines.sed" <<\\CEOF
-/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def
-/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def
-b
-:def
-_ACEOF
- sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS
- echo 'CEOF
- sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS
- ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in
- sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail
- grep . conftest.tail >/dev/null || break
- rm -f conftest.defines
- mv conftest.tail conftest.defines
-done
-rm -f conftest.defines conftest.tail
-
-echo "ac_result=$ac_in" >>$CONFIG_STATUS
-cat >>$CONFIG_STATUS <<\_ACEOF
if test x"$ac_file" != x-; then
- echo "/* $configure_input */" >"$tmp/config.h"
- cat "$ac_result" >>"$tmp/config.h"
- if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then
- { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
-echo "$as_me: $ac_file is unchanged" >&6;}
+ {
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+ } >"$ac_tmp/config.h" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
else
- rm -f $ac_file
- mv "$tmp/config.h" $ac_file
+ rm -f "$ac_file"
+ mv "$ac_tmp/config.h" "$ac_file" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
fi
else
- echo "/* $configure_input */"
- cat "$ac_result"
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+ || as_fn_error $? "could not create -" "$LINENO" 5
fi
- rm -f "$tmp/out12"
;;
- :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5
-echo "$as_me: executing $ac_file commands" >&6;}
+ :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
;;
esac
@@ -9634,7 +8027,7 @@ echo "$as_me: executing $ac_file commands" >&6;}
"./atconfig":C) cat >./atconfig <<ATEOF
# Configurable variable values for building test suites.
# Generated by $0.
-# Copyright (C) 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
+# Copyright (C) 2010 Free Software Foundation, Inc.
# The test suite will define top_srcdir=$at_top_srcdir/../.. etc.
at_testdir='.'
@@ -9659,11 +8052,13 @@ ATEOF
done # for ac_tag
-{ (exit 0); exit 0; }
+as_fn_exit 0
_ACEOF
-chmod +x $CONFIG_STATUS
ac_clean_files=$ac_clean_files_save
+test $ac_write_fail = 0 ||
+ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
# configure is writing to config.log, and then calls config.status.
# config.status does its own redirection, appending to config.log.
@@ -9683,6 +8078,10 @@ if test "$no_create" != yes; then
exec 5>>config.log
# Use ||, not &&, to avoid exiting from the if with $? = 1, which
# would make configure fail if this is the last instruction.
- $ac_cs_success || { (exit 1); exit 1; }
+ $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
fi
diff --git a/configure.in b/configure.in
index c6e6d51543c2..c336e54a0e57 100644
--- a/configure.in
+++ b/configure.in
@@ -7,13 +7,16 @@ dnl You'll also need a version of config.guess from a gnu package
dnl
dnl Written by Kaveh Ghazi (ghazi@caip.rutgers.edu) 5/11/96.
dnl
+dnl $tcsh: configure.in,v 3.99 2012/02/13 16:33:50 christos Exp $
AC_PREREQ([2.59])dnl Minimum Autoconf version required.
-AC_INIT([tcsh], [6.17.00], [http://bugs.gw.com/])
+AC_INIT([tcsh], [6.18.01], [http://bugs.gw.com/])
+AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_SRCDIR([tc.vers.c])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_TESTDIR([.], [.])
+AC_PROG_INSTALL
AC_CANONICAL_HOST
AC_MSG_CHECKING([cached host tuple])
@@ -78,6 +81,11 @@ case "${host}" in
tcsh_config_file=os390
;;
+ ## Android
+ *-*-android*)
+ tcsh_config_file=android
+ ;;
+
## Linux
*-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu)
tcsh_config_file=linux
@@ -178,9 +186,12 @@ case "${host}" in
*-*-solaris2.[45] ) # Should handle sparc, x86 and powerpc
tcsh_config_file=sol24
;;
- *-*-solaris2.* ) # Should handle sparc, x86 and powerpc
+ *-*-solaris2.[678] ) # Should handle sparc, x86 and powerpc
tcsh_config_file=sol26
;;
+ *-*-solaris2.* ) # Should handle sparc, x86 and powerpc
+ tcsh_config_file=sol29
+ ;;
## Dell SVR4
*-dell-sysv4* )
@@ -230,7 +241,7 @@ case "${host}" in
## Red Hat Cygwin
*-cygwin)
- tcsh_config_file=cygwin32
+ tcsh_config_file=cygwin
;;
## mips-compaq-nonstopux
@@ -270,6 +281,16 @@ AC_PROG_CC
AC_PROG_CPP
AC_PROG_GCC_TRADITIONAL
+AC_PATH_PROG([GENCAT], [gencat])
+
+dnl Require build CC to create gethost helper when cross building
+if test "x${cross_compiling}" = xyes ; then
+ CC_FOR_GETHOST="cc"
+else
+ CC_FOR_GETHOST="\$(CC)"
+fi
+AC_SUBST(CC_FOR_GETHOST)
+
if test "x$GCC" != xyes ; then
DFLAGS="$DFLAGS $NON_GNU_DFLAGS"
CFLAGS="$CFLAGS $NON_GNU_CFLAGS"
@@ -281,10 +302,12 @@ AC_SEARCH_LIBS(getspnam, sec)
AC_SEARCH_LIBS(tgetent, termlib termcap curses ncurses)
AC_SEARCH_LIBS(gethostbyname, nsl)
AC_SEARCH_LIBS(connect, socket)
+AC_SEARCH_LIBS(catgets, catgets)
AM_ICONV
dnl Checks for header files
-AC_CHECK_HEADERS([auth.h crypt.h inttypes.h shadow.h stdint.h utmp.h utmpx.h])
+AC_CHECK_HEADERS([auth.h crypt.h features.h inttypes.h paths.h] dnl
+ [shadow.h stdint.h utmp.h utmpx.h])
AC_CHECK_HEADERS([wchar.h],
[AC_CHECK_SIZEOF([wchar_t], [], [dnl
#include <stdio.h>
@@ -300,6 +323,7 @@ AC_TYPE_GETGROUPS
AC_TYPE_MODE_T
AC_TYPE_SIZE_T
AC_TYPE_UID_T
+AC_TYPE_UINT32_T
AC_DEFUN([AC_TYPE_SSIZE_T], [
AC_CHECK_TYPE(ssize_t,,
@@ -334,7 +358,9 @@ AC_CHECK_MEMBERS([struct dirent.d_ino], , ,
# define dirent direct
#endif])
AC_CHECK_MEMBERS([struct utmp.ut_host, struct utmp.ut_user, struct utmp.ut_tv,
- struct utmp.ut_xtime], , ,
+ struct utmp.ut_xtime, struct utmpx.ut_host,
+ struct utmpx.ut_user, struct utmpx.ut_tv,
+ struct utmpx.ut_xtime], , ,
[#include <sys/types.h>
#ifdef HAVE_UTMPX_H
#include <utmpx.h>
@@ -359,12 +385,17 @@ AC_INCLUDES_DEFAULT([])
#endif
])
AC_CHECK_FUNC([setlocale], [have_setlocale=yes], [have_setlocale=no])
-AC_CHECK_FUNCS([catgets dup2 getauthid getcwd gethostname getpwent] dnl
- [getutent memmove memset nice nl_langinfo sbrk setpgid setpriority] dnl
- [strerror strstr sysconf wcwidth])
+AC_CHECK_FUNC([catgets], [have_catgets=yes], [have_catgets=no])
+AC_CHECK_FUNCS([dup2 getauthid getcwd gethostname getpwent] dnl
+ [getutent getutxent mallinfo memmove memset mkstemp nice] dnl
+ [nl_langinfo sbrk setpgid setpriority strerror strstr sysconf wcwidth])
AC_FUNC_GETPGRP
AC_FUNC_MBRTOWC
-AC_FUNC_SETPGRP
+if test "x${cross_compiling}" != xyes ; then
+ AC_FUNC_SETPGRP
+else
+ ac_cv_func_setpgrp_void=yes
+fi
AC_FUNC_STRCOLL
dnl This is not good enough; we need sockaddr_storage too.
@@ -424,6 +455,15 @@ if test "$have_setlocale" != no; then
fi
fi
+if test "x$enable_nls" != xno -a "$have_catgets" != no -a -n "$GENCAT" ; then
+ AC_ARG_ENABLE([nls-catalogs], AS_HELP_STRING([--disable-nls-catalogs], [Disable NLS catalog support]),
+ [], [enable_nls_catalogs=yes])
+ if test "x$enable_nls_catalogs" != xno; then
+ BUILD_CATALOGS="yes"
+ AC_DEFINE([NLS_CATALOGS], [1], [Support NLS catalogs.])
+ fi
+fi
+
AC_ARG_WITH(hesiod,
[ --with-hesiod=PREFIX Use Hesiod lookup for ~ expansion],
[hesiod="$withval"], [hesiod=no])
@@ -439,6 +479,7 @@ if test "$hesiod" != no; then
fi
AC_SUBST(HESDEF)
AC_SUBST(HESLIB)
+AC_SUBST(BUILD_CATALOGS)
-AC_CONFIG_FILES([Makefile])
+AC_CONFIG_FILES([Makefile nls/Makefile])
AC_OUTPUT
diff --git a/cygwin/bindkey.tcsh b/cygwin/bindkey.tcsh
new file mode 100644
index 000000000000..c31d366cc58e
--- /dev/null
+++ b/cygwin/bindkey.tcsh
@@ -0,0 +1,20 @@
+# Example bindkey.tcsh which binds some of the common xterm/linux/cygwin
+# terminal keys.
+bindkey -e # Force EMACS key binding
+
+bindkey "^[[2~" yank # Insert key
+bindkey "^[[3~" delete-char # Delete key
+bindkey "^[[H" beginning-of-line # Home key
+bindkey "^[[F" end-of-line # End key
+bindkey "^[[5~" up-history # Page up key
+bindkey "^[[6~" down-history # Page down key
+
+bindkey "^[[C" forward-char # Cursor right
+bindkey "^[[D" backward-char # Cursor left
+bindkey "^[[A" up-history # Cursor up
+bindkey "^[[B" down-history # Cursor down
+bindkey "^[^[[D" backward-word # Alt Cursor left
+bindkey "^[^[[C" forward-word # Alt Cursor right
+
+bindkey "^?" backward-delete-char # However the BS key is defined...
+bindkey "^H" backward-delete-char # However the BS key is defined...
diff --git a/cygwin/csh.cshrc b/cygwin/csh.cshrc
new file mode 100644
index 000000000000..d59f30f1bd55
--- /dev/null
+++ b/cygwin/csh.cshrc
@@ -0,0 +1,82 @@
+#
+# Example /etc/csh.cshrc for Cygwin
+#
+onintr -
+
+if ( -d /etc/profile.d ) then
+ set nonomatch
+ foreach _s ( /etc/profile.d/*.csh )
+ if ( -r $_s ) then
+ source $_s
+ endif
+ end
+ unset _s nonomatch
+endif
+
+if (! ${?prompt}) goto end
+
+# This is an interactive session
+
+# Now read in the key bindings of the tcsh
+if ($?tcsh && -r /etc/profile.d/bindkey.tcsh) then
+ source /etc/profile.d/bindkey.tcsh
+endif
+
+# On Cygwin it's possible to start tcsh without having any Cygwin /bin
+# path in $PATH. This breaks complete.tcsh starting with tcsh 6.15.00.
+# For that reason we add /bin to $PATH temporarily here. We remove it
+# afterwards because it's added again (and correctly so) in /etc/csh.login.
+set path=( /bin $path:q )
+
+# Source the completion extension for tcsh
+if ($?tcsh && -r /etc/profile.d/complete.tcsh) then
+ source /etc/profile.d/complete.tcsh
+endif
+
+# Reset $PATH.
+set path=( $path[2-]:q )
+
+# If we find $HOME/.{t}cshrc we skip our settings used for interactive sessions.
+if (-r "$HOME/.cshrc" || -r "$HOME/.tcshrc") goto end
+
+# Set prompt
+if ($?tcsh) then
+ set prompt='[%n@%m %c02]$ '
+else
+ set prompt=\[`id -un`@`hostname`\]\$\
+endif
+
+# Some neat default settings.
+set autocorrect=1
+set autolist=ambiguous
+unset autologout
+set complete=enhance
+set correct=cmd
+set echo_style=both
+set ellipsis
+set fignore=(.o \~)
+set histdup=erase
+set history=100
+unset ignoreeof
+set listjobs=long
+set listmaxrows=23
+#set noglob
+set notify=1
+set rmstar=1
+set savehist=( $history merge )
+set showdots=1
+set symlinks=expand
+
+# Some neat aliases
+alias ++ pushd
+alias -- popd
+alias d dirs
+alias h history
+alias j jobs
+alias l 'ls -C'
+alias la 'ls -a'
+alias ll 'ls -l'
+alias ls 'ls --color'
+
+end:
+ onintr
diff --git a/cygwin/csh.login b/cygwin/csh.login
new file mode 100644
index 000000000000..876b3e33c140
--- /dev/null
+++ b/cygwin/csh.login
@@ -0,0 +1,29 @@
+#
+# Example /etc/csh.login for Cygwin
+#
+unsetenv TEMP
+unsetenv TMP
+
+set path=( /usr/local/bin /usr/bin /bin $path:q )
+
+if ( ! ${?USER} ) then
+ set user="`id -un`"
+endif
+if ( ! ${?HOME} ) then
+ set home=/home/$USER
+endif
+if ( ! -d "$HOME" ) then
+ mkdir -p "$HOME"
+endif
+
+if ( ! ${?term} || "$term" == "unknown" || "$tty" == "conin" ) then
+ set term=cygwin
+endif
+
+setenv MAKE_MODE unix
+
+setenv SHELL /bin/tcsh
+
+umask 022
+
+cd
diff --git a/cygwin/postinstall.sh b/cygwin/postinstall.sh
new file mode 100755
index 000000000000..017f3fba6fa1
--- /dev/null
+++ b/cygwin/postinstall.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+rm -f /usr/bin/csh /usr/bin/csh.exe /usr/bin/csh.lnk /usr/share/man/man1/csh.1*
+cd /bin
+ln -s tcsh csh
+cd /usr/share/man/man1
+ln -s tcsh.1 csh.1
+[ -e /etc/csh.cshrc ] || cp /etc/defaults/etc/csh.cshrc /etc
+[ -e /etc/csh.login ] || cp /etc/defaults/etc/csh.login /etc
+[ -e /etc/profile.d/bindkey.tcsh ] || \
+ cp /etc/defaults/etc/profile.d/bindkey.tcsh /etc/profile.d
+[ -e /etc/profile.d/complete.tcsh ] || \
+ cp /etc/defaults/etc/profile.d/complete.tcsh /etc/profile.d
diff --git a/cygwin/preremove.sh b/cygwin/preremove.sh
new file mode 100755
index 000000000000..0e0fde08f02f
--- /dev/null
+++ b/cygwin/preremove.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+rm -f /usr/bin/csh /usr/bin/csh.exe /usr/bin/csh.lnk /usr/share/man/man1/csh.1*
diff --git a/ed.chared.c b/ed.chared.c
index 1ab5a91b6644..8d00326c3db1 100644
--- a/ed.chared.c
+++ b/ed.chared.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/ed.chared.c,v 3.95 2009/06/25 21:15:37 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/ed.chared.c,v 3.98 2010/05/08 00:37:39 christos Exp $ */
/*
* ed.chared.c: Character editing functions.
*/
@@ -72,7 +72,7 @@
#include "sh.h"
-RCSID("$tcsh: ed.chared.c,v 3.95 2009/06/25 21:15:37 christos Exp $")
+RCSID("$tcsh: ed.chared.c,v 3.98 2010/05/08 00:37:39 christos Exp $")
#include "ed.h"
#include "tw.h"
@@ -506,7 +506,7 @@ excl_sw:
if (*q == ':') /* short form: !:arg */
--q;
- if (*q != HIST) {
+ if (HIST != '\0' && *q != HIST) {
/*
* Search for a space, tab, or colon. See if we have a number (as
* in !1234:xyz). Remember the number.
@@ -716,8 +716,9 @@ c_excl(Char *p)
*/
nr_exp = 0;
for (;;) {
- while (*p != HIST && p < Cursor)
- ++p;
+ if (HIST != '\0')
+ while (*p != HIST && p < Cursor)
+ ++p;
for (i = 1; (p - i) >= InputBuf && p[-i] == '\\'; i++)
continue;
if (i % 2 == 0)
@@ -729,8 +730,6 @@ c_excl(Char *p)
++nr_exp;
}
}
-
- return nr_exp;
}
@@ -745,13 +744,13 @@ c_substitute(void)
* for white space, the beginning of the line, or a history character.
*/
for (p = Cursor - 1;
- p > InputBuf && *p != ' ' && *p != '\t' && *p != HIST; --p)
+ p > InputBuf && *p != ' ' && *p != '\t' && *p && *p != HIST; --p)
continue;
/*
* If we found a history character, go expand it.
*/
- if (*p == HIST)
+ if (HIST != '\0' && *p == HIST)
nr_exp = c_excl(p);
else
nr_exp = 0;
@@ -832,11 +831,11 @@ c_eword(Char *p, Char *high, int n)
while ((p < high) && Isspace(*p))
p++;
- if (Isalnum(*p))
- while ((p < high) && Isalnum(*p))
+ if (isword(*p))
+ while ((p < high) && isword(*p))
p++;
else
- while ((p < high) && !(Isspace(*p) || Isalnum(*p)))
+ while ((p < high) && !(Isspace(*p) || isword(*p)))
p++;
}
diff --git a/ed.inputl.c b/ed.inputl.c
index 248130a1fec1..df17f87051d6 100644
--- a/ed.inputl.c
+++ b/ed.inputl.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/ed.inputl.c,v 3.70 2009/06/25 21:15:37 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/ed.inputl.c,v 3.71 2010/12/22 17:26:04 christos Exp $ */
/*
* ed.inputl.c: Input line handling.
*/
@@ -32,7 +32,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: ed.inputl.c,v 3.70 2009/06/25 21:15:37 christos Exp $")
+RCSID("$tcsh: ed.inputl.c,v 3.71 2010/12/22 17:26:04 christos Exp $")
#include "ed.h"
#include "ed.defns.h" /* for the function names */
@@ -683,7 +683,7 @@ GetNextCommand(KEYCMD *cmdnum, Char *ch)
#ifdef DSPMBYTE
_enable_mbdisp &&
#else
- MB_LEN_MAX == 1 &&
+ MB_CUR_MAX == 1 &&
#endif
!adrof(STRnokanji) && (*ch & META)) {
MetaNext = 0;
diff --git a/ed.refresh.c b/ed.refresh.c
index afba75ec5169..e1e574d43bb3 100644
--- a/ed.refresh.c
+++ b/ed.refresh.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/ed.refresh.c,v 3.46 2006/08/23 15:03:14 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/ed.refresh.c,v 3.47 2011/02/27 00:14:51 christos Exp $ */
/*
* ed.refresh.c: Lower level screen refreshing functions
*/
@@ -32,7 +32,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: ed.refresh.c,v 3.46 2006/08/23 15:03:14 christos Exp $")
+RCSID("$tcsh: ed.refresh.c,v 3.47 2011/02/27 00:14:51 christos Exp $")
#include "ed.h"
/* #define DEBUG_UPDATE */
@@ -61,31 +61,31 @@ extern
void PutPlusOne (Char, int);
static void cpy_pad_spaces (Char *, Char *, int);
#if defined(DEBUG_UPDATE) || defined(DEBUG_REFRESH) || defined(DEBUG_LITERAL)
-static void dprintf (char *, ...);
+static void reprintf (char *, ...);
#ifdef DEBUG_UPDATE
static void dprintstr (char *, const Char *, const Char *);
static void
dprintstr(char *str, const Char *f, const Char *t)
{
- dprintf("%s:\"", str);
+ reprintf("%s:\"", str);
while (f < t) {
if (ASC(*f) & ~ASCII)
- dprintf("[%x]", *f++);
+ reprintf("[%x]", *f++);
else
- dprintf("%c", CTL_ESC(ASCII & ASC(*f++)));
+ reprintf("%c", CTL_ESC(ASCII & ASC(*f++)));
}
- dprintf("\"\r\n");
+ reprintf("\"\r\n");
}
#endif /* DEBUG_UPDATE */
-/* dprintf():
+/* reprintf():
* Print to $DEBUGTTY, so that we can test editing on one pty, and
* print debugging stuff on another. Don't interrupt the shell while
* debugging cause you'll mangle up the file descriptors!
*/
static void
-dprintf(char *fmt, ...)
+reprintf(char *fmt, ...)
{
static int fd = -1;
char *dtty;
@@ -242,9 +242,9 @@ Vdraw(Char c, int width) /* draw char c onto V lines */
{
#ifdef DEBUG_REFRESH
# ifdef SHORT_STRINGS
- dprintf("Vdrawing %6.6o '%c' %d\r\n", (unsigned)c, (int)(c & ASCII), width);
+ reprintf("Vdrawing %6.6o '%c' %d\r\n", (unsigned)c, (int)(c & ASCII), width);
# else
- dprintf("Vdrawing %3.3o '%c' %d\r\n", (unsigned)c, (int)c, width);
+ reprintf("Vdrawing %3.3o '%c' %d\r\n", (unsigned)c, (int)c, width);
# endif /* SHORT_STRNGS */
#endif /* DEBUG_REFRESH */
@@ -263,7 +263,7 @@ Vdraw(Char c, int width) /* draw char c onto V lines */
vcursor_v++;
#ifdef DEBUG_REFRESH
if (vcursor_v >= TermV) { /* should NEVER happen. */
- dprintf("\r\nVdraw: vcursor_v overflow! Vcursor_v == %d > %d\r\n",
+ reprintf("\r\nVdraw: vcursor_v overflow! Vcursor_v == %d > %d\r\n",
vcursor_v, TermV);
abort();
}
@@ -328,8 +328,8 @@ Refresh(void)
Char oldgetting;
#ifdef DEBUG_REFRESH
- dprintf("Prompt = :%s:\r\n", short2str(Prompt));
- dprintf("InputBuf = :%s:\r\n", short2str(InputBuf));
+ reprintf("Prompt = :%s:\r\n", short2str(Prompt));
+ reprintf("InputBuf = :%s:\r\n", short2str(InputBuf));
#endif /* DEBUG_REFRESH */
oldgetting = GettingInput;
GettingInput = 0; /* avoid re-entrance via SIGWINCH */
@@ -382,12 +382,12 @@ Refresh(void)
Vdraw('\0', 1); /* put NUL on end */
#if defined (DEBUG_REFRESH)
- dprintf("TermH=%d, vcur_h=%d, vcur_v=%d, Vdisplay[0]=\r\n:%80.80s:\r\n",
+ reprintf("TermH=%d, vcur_h=%d, vcur_v=%d, Vdisplay[0]=\r\n:%80.80s:\r\n",
TermH, vcursor_h, vcursor_v, short2str(Vdisplay[0]));
#endif /* DEBUG_REFRESH */
#ifdef DEBUG_UPDATE
- dprintf("updating %d lines.\r\n", new_vcv);
+ reprintf("updating %d lines.\r\n", new_vcv);
#endif /* DEBUG_UPDATE */
for (cur_line = 0; cur_line <= new_vcv; cur_line++) {
/* NOTE THAT update_line MAY CHANGE Display[cur_line] */
@@ -405,7 +405,7 @@ Refresh(void)
cpy_pad_spaces(Display[cur_line], Vdisplay[cur_line], TermH);
}
#ifdef DEBUG_REFRESH
- dprintf("\r\nvcursor_v = %d, OldvcV = %d, cur_line = %d\r\n",
+ reprintf("\r\nvcursor_v = %d, OldvcV = %d, cur_line = %d\r\n",
vcursor_v, OldvcV, cur_line);
#endif /* DEBUG_REFRESH */
if (OldvcV > new_vcv) {
@@ -416,7 +416,7 @@ Refresh(void)
}
OldvcV = new_vcv; /* set for next time */
#ifdef DEBUG_REFRESH
- dprintf("\r\nCursorH = %d, CursorV = %d, cur_h = %d, cur_v = %d\r\n",
+ reprintf("\r\nCursorH = %d, CursorV = %d, cur_h = %d, cur_v = %d\r\n",
CursorH, CursorV, cur_h, cur_v);
#endif /* DEBUG_REFRESH */
#ifdef WINNT_NATIVE
@@ -461,9 +461,9 @@ str_insert(Char *d, int dat, int dlen, Char *s, int num)
num = dlen - dat;
#ifdef DEBUG_REFRESH
- dprintf("str_insert() starting: %d at %d max %d, d == \"%s\"\n",
+ reprintf("str_insert() starting: %d at %d max %d, d == \"%s\"\n",
num, dat, dlen, short2str(d));
- dprintf("s == \"%s\"n", short2str(s));
+ reprintf("s == \"%s\"n", short2str(s));
#endif /* DEBUG_REFRESH */
/* open up the space for num chars */
@@ -475,9 +475,9 @@ str_insert(Char *d, int dat, int dlen, Char *s, int num)
d[dlen] = '\0'; /* just in case */
}
#ifdef DEBUG_REFRESH
- dprintf("str_insert() after insert: %d at %d max %d, d == \"%s\"\n",
+ reprintf("str_insert() after insert: %d at %d max %d, d == \"%s\"\n",
num, dat, dlen, short2str(d));
- dprintf("s == \"%s\"n", short2str(s));
+ reprintf("s == \"%s\"n", short2str(s));
#endif /* DEBUG_REFRESH */
/* copy the characters */
@@ -485,9 +485,9 @@ str_insert(Char *d, int dat, int dlen, Char *s, int num)
*a++ = *s++;
#ifdef DEBUG_REFRESH
- dprintf("str_insert() after copy: %d at %d max %d, d == \"%s\"\n",
+ reprintf("str_insert() after copy: %d at %d max %d, d == \"%s\"\n",
num, dat, dlen, d, short2str(s));
- dprintf("s == \"%s\"n", short2str(s));
+ reprintf("s == \"%s\"n", short2str(s));
#endif /* DEBUG_REFRESH */
}
@@ -505,7 +505,7 @@ str_delete(Char *d, int dat, int dlen, int num)
}
#ifdef DEBUG_REFRESH
- dprintf("str_delete() starting: %d at %d max %d, d == \"%s\"\n",
+ reprintf("str_delete() starting: %d at %d max %d, d == \"%s\"\n",
num, dat, dlen, short2str(d));
#endif /* DEBUG_REFRESH */
@@ -518,7 +518,7 @@ str_delete(Char *d, int dat, int dlen, int num)
d[dlen] = '\0'; /* just in case */
}
#ifdef DEBUG_REFRESH
- dprintf("str_delete() after delete: %d at %d max %d, d == \"%s\"\n",
+ reprintf("str_delete() after delete: %d at %d max %d, d == \"%s\"\n",
num, dat, dlen, short2str(d));
#endif /* DEBUG_REFRESH */
}
@@ -608,7 +608,7 @@ update_line(Char *old, Char *new, int cur_line)
*/
if (*ofd == '\0' && *nfd == '\0') {
#ifdef DEBUG_UPDATE
- dprintf("no difference.\r\n");
+ reprintf("no difference.\r\n");
#endif /* DEBUG_UPDATE */
return;
}
@@ -768,13 +768,13 @@ update_line(Char *old, Char *new, int cur_line)
sx = (int) ((nls - nse) - (ols - ose));
#ifdef DEBUG_UPDATE
- dprintf("\n");
- dprintf("ofd %d, osb %d, ose %d, ols %d, oe %d\n",
+ reprintf("\n");
+ reprintf("ofd %d, osb %d, ose %d, ols %d, oe %d\n",
ofd - old, osb - old, ose - old, ols - old, oe - old);
- dprintf("nfd %d, nsb %d, nse %d, nls %d, ne %d\n",
+ reprintf("nfd %d, nsb %d, nse %d, nls %d, ne %d\n",
nfd - new, nsb - new, nse - new, nls - new, ne - new);
- dprintf("xxx-xxx:\"00000000001111111111222222222233333333334\"\r\n");
- dprintf("xxx-xxx:\"01234567890123456789012345678901234567890\"\r\n");
+ reprintf("xxx-xxx:\"00000000001111111111222222222233333333334\"\r\n");
+ reprintf("xxx-xxx:\"01234567890123456789012345678901234567890\"\r\n");
dprintstr("old- oe", old, oe);
dprintstr("new- ne", new, ne);
dprintstr("old-ofd", old, ofd);
@@ -837,7 +837,7 @@ update_line(Char *old, Char *new, int cur_line)
*/
if ((nsb != nfd) && fx > 0 && ((p - old) + fx < TermH)) {
#ifdef DEBUG_UPDATE
- dprintf("first diff insert at %d...\r\n", nfd - new);
+ reprintf("first diff insert at %d...\r\n", nfd - new);
#endif /* DEBUG_UPDATE */
/*
* Move to the first char to insert, where the first diff is.
@@ -848,7 +848,7 @@ update_line(Char *old, Char *new, int cur_line)
*/
if (nsb != ne) {
#ifdef DEBUG_UPDATE
- dprintf("with stuff to keep at end\r\n");
+ reprintf("with stuff to keep at end\r\n");
#endif /* DEBUG_UPDATE */
/*
* insert fx chars of new starting at nfd
@@ -856,7 +856,7 @@ update_line(Char *old, Char *new, int cur_line)
if (fx > 0) {
#ifdef DEBUG_UPDATE
if (!T_CanIns)
- dprintf(" ERROR: cannot insert in early first diff\n");
+ reprintf(" ERROR: cannot insert in early first diff\n");
#endif /* DEBUG_UPDATE */
Insert_write(nfd, fx);
str_insert(old, (int) (ofd - old), TermH, nfd, fx);
@@ -869,7 +869,7 @@ update_line(Char *old, Char *new, int cur_line)
}
else {
#ifdef DEBUG_UPDATE
- dprintf("without anything to save\r\n");
+ reprintf("without anything to save\r\n");
#endif /* DEBUG_UPDATE */
so_write(nfd, (nsb - nfd));
str_cp(ofd, nfd, (int) (nsb - nfd));
@@ -881,7 +881,7 @@ update_line(Char *old, Char *new, int cur_line)
}
else if (fx < 0) {
#ifdef DEBUG_UPDATE
- dprintf("first diff delete at %d...\r\n", ofd - old);
+ reprintf("first diff delete at %d...\r\n", ofd - old);
#endif /* DEBUG_UPDATE */
/*
* move to the first char to delete where the first diff is
@@ -892,7 +892,7 @@ update_line(Char *old, Char *new, int cur_line)
*/
if (osb != oe) {
#ifdef DEBUG_UPDATE
- dprintf("with stuff to save at end\r\n");
+ reprintf("with stuff to save at end\r\n");
#endif /* DEBUG_UPDATE */
/*
* fx is less than zero *always* here but we check for code
@@ -901,7 +901,7 @@ update_line(Char *old, Char *new, int cur_line)
if (fx < 0) {
#ifdef DEBUG_UPDATE
if (!T_CanDel)
- dprintf(" ERROR: cannot delete in first diff\n");
+ reprintf(" ERROR: cannot delete in first diff\n");
#endif /* DEBUG_UPDATE */
DeleteChars(-fx);
str_delete(old, (int) (ofd - old), TermH, -fx);
@@ -915,14 +915,14 @@ update_line(Char *old, Char *new, int cur_line)
}
else {
#ifdef DEBUG_UPDATE
- dprintf("but with nothing left to save\r\n");
+ reprintf("but with nothing left to save\r\n");
#endif /* DEBUG_UPDATE */
/*
* write (nsb-nfd) chars of new starting at nfd
*/
so_write(nfd, (nsb - nfd));
#ifdef DEBUG_REFRESH
- dprintf("cleareol %d\n", (oe - old) - (ne - new));
+ reprintf("cleareol %d\n", (oe - old) - (ne - new));
#endif /* DEBUG_UPDATE */
#ifndef WINNT_NATIVE
ClearEOL((oe - old) - (ne - new));
@@ -943,7 +943,7 @@ update_line(Char *old, Char *new, int cur_line)
if (sx < 0) {
#ifdef DEBUG_UPDATE
- dprintf("second diff delete at %d...\r\n", (ose - old) + fx);
+ reprintf("second diff delete at %d...\r\n", (ose - old) + fx);
#endif /* DEBUG_UPDATE */
/*
* Check if we have stuff to delete
@@ -958,7 +958,7 @@ update_line(Char *old, Char *new, int cur_line)
*/
if (ols != oe) {
#ifdef DEBUG_UPDATE
- dprintf("with stuff to save at end\r\n");
+ reprintf("with stuff to save at end\r\n");
#endif /* DEBUG_UPDATE */
/*
* Again a duplicate test.
@@ -966,7 +966,7 @@ update_line(Char *old, Char *new, int cur_line)
if (sx < 0) {
#ifdef DEBUG_UPDATE
if (!T_CanDel)
- dprintf(" ERROR: cannot delete in second diff\n");
+ reprintf(" ERROR: cannot delete in second diff\n");
#endif /* DEBUG_UPDATE */
DeleteChars(-sx);
}
@@ -981,11 +981,11 @@ update_line(Char *old, Char *new, int cur_line)
if (olen > TermH)
olen = TermH;
#ifdef DEBUG_UPDATE
- dprintf("but with nothing left to save\r\n");
+ reprintf("but with nothing left to save\r\n");
#endif /* DEBUG_UPDATE */
so_write(nse, (nls - nse));
#ifdef DEBUG_REFRESH
- dprintf("cleareol %d\n", olen - (ne - new));
+ reprintf("cleareol %d\n", olen - (ne - new));
#endif /* DEBUG_UPDATE */
#ifndef WINNT_NATIVE
ClearEOL(olen - (ne - new));
@@ -1003,7 +1003,7 @@ update_line(Char *old, Char *new, int cur_line)
*/
if ((nsb != nfd) && (osb - ofd) <= (nsb - nfd) && (fx == 0)) {
#ifdef DEBUG_UPDATE
- dprintf("late first diff insert at %d...\r\n", nfd - new);
+ reprintf("late first diff insert at %d...\r\n", nfd - new);
#endif /* DEBUG_UPDATE */
MoveToChar(nfd - new);
@@ -1012,7 +1012,7 @@ update_line(Char *old, Char *new, int cur_line)
*/
if (nsb != ne) {
#ifdef DEBUG_UPDATE
- dprintf("with stuff to keep at end\r\n");
+ reprintf("with stuff to keep at end\r\n");
#endif /* DEBUG_UPDATE */
/*
* We have to recalculate fx here because we set it
@@ -1026,7 +1026,7 @@ update_line(Char *old, Char *new, int cur_line)
*/
#ifdef DEBUG_UPDATE
if (!T_CanIns)
- dprintf(" ERROR: cannot insert in late first diff\n");
+ reprintf(" ERROR: cannot insert in late first diff\n");
#endif /* DEBUG_UPDATE */
Insert_write(nfd, fx);
str_insert(old, (int) (ofd - old), TermH, nfd, fx);
@@ -1040,7 +1040,7 @@ update_line(Char *old, Char *new, int cur_line)
}
else {
#ifdef DEBUG_UPDATE
- dprintf("without anything to save\r\n");
+ reprintf("without anything to save\r\n");
#endif /* DEBUG_UPDATE */
so_write(nfd, (nsb - nfd));
str_cp(ofd, nfd, (int) (nsb - nfd));
@@ -1052,18 +1052,18 @@ update_line(Char *old, Char *new, int cur_line)
*/
if (sx >= 0) {
#ifdef DEBUG_UPDATE
- dprintf("second diff insert at %d...\r\n", nse - new);
+ reprintf("second diff insert at %d...\r\n", nse - new);
#endif /* DEBUG_UPDATE */
MoveToChar(nse - new);
if (ols != oe) {
#ifdef DEBUG_UPDATE
- dprintf("with stuff to keep at end\r\n");
+ reprintf("with stuff to keep at end\r\n");
#endif /* DEBUG_UPDATE */
if (sx > 0) {
/* insert sx chars of new starting at nse */
#ifdef DEBUG_UPDATE
if (!T_CanIns)
- dprintf(" ERROR: cannot insert in second diff\n");
+ reprintf(" ERROR: cannot insert in second diff\n");
#endif /* DEBUG_UPDATE */
Insert_write(nse, sx);
}
@@ -1075,7 +1075,7 @@ update_line(Char *old, Char *new, int cur_line)
}
else {
#ifdef DEBUG_UPDATE
- dprintf("without anything to save\r\n");
+ reprintf("without anything to save\r\n");
#endif /* DEBUG_UPDATE */
so_write(nse, (nls - nse));
@@ -1087,7 +1087,7 @@ update_line(Char *old, Char *new, int cur_line)
}
}
#ifdef DEBUG_UPDATE
- dprintf("done.\r\n");
+ reprintf("done.\r\n");
#endif /* DEBUG_UPDATE */
}
diff --git a/ed.screen.c b/ed.screen.c
index cf36717a34f7..8bcbdacacdd6 100644
--- a/ed.screen.c
+++ b/ed.screen.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/ed.screen.c,v 3.76 2009/06/25 21:15:37 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/ed.screen.c,v 3.78 2011/02/27 00:14:38 christos Exp $ */
/*
* ed.screen.c: Editor/termcap-curses interface
*/
@@ -32,7 +32,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: ed.screen.c,v 3.76 2009/06/25 21:15:37 christos Exp $")
+RCSID("$tcsh: ed.screen.c,v 3.78 2011/02/27 00:14:38 christos Exp $")
#include "ed.h"
#include "tc.h"
@@ -1562,6 +1562,28 @@ GetSize(int *lins, int *cols)
#endif /* SIG_WINDOW */
+#ifdef KNOWsize
+static void
+UpdateVal(const Char *tag, int value, Char *termcap, Char *backup)
+{
+ Char *ptr, *p;
+ if ((ptr = Strstr(termcap, tag)) == NULL) {
+ (void)Strcpy(backup, termcap);
+ return;
+ } else {
+ size_t len = (ptr - termcap) + Strlen(tag);
+ (void)Strncpy(backup, termcap, len);
+ backup[len] = '\0';
+ p = Itoa(value, 0, 0);
+ (void) Strcat(backup + len, p);
+ xfree(p);
+ ptr = Strchr(ptr, ':');
+ if (ptr)
+ (void) Strcat(backup, ptr);
+ }
+}
+#endif
+
void
ChangeSize(int lins, int cols)
{
@@ -1609,43 +1631,9 @@ ChangeSize(int lins, int cols)
(void) Strncpy(termcap, ptr, TC_BUFSIZE);
termcap[TC_BUFSIZE-1] = '\0';
- /* update termcap string; first do columns */
- buf[0] = 'c';
- buf[1] = 'o';
- buf[2] = '#';
- buf[3] = '\0';
- if ((ptr = Strstr(termcap, buf)) == NULL) {
- (void) Strcpy(backup, termcap);
- }
- else {
- size_t len = (ptr - termcap) + Strlen(buf);
- (void) Strncpy(backup, termcap, len);
- backup[len] = '\0';
- p = Itoa(Val(T_co), 0, 0);
- (void) Strcat(backup + len, p);
- xfree(p);
- ptr = Strchr(ptr, ':');
- (void) Strcat(backup, ptr);
- }
+ UpdateVal(STRco, Val(T_co), termcap, backup);
+ UpdateVal(STRli, Val(T_li), termcap, backup);
- /* now do lines */
- buf[0] = 'l';
- buf[1] = 'i';
- buf[2] = '#';
- buf[3] = '\0';
- if ((ptr = Strstr(backup, buf)) == NULL) {
- (void) Strcpy(termcap, backup);
- }
- else {
- size_t len = (ptr - backup) + Strlen(buf);
- (void) Strncpy(termcap, backup, len);
- termcap[len] = '\0';
- p = Itoa(Val(T_li), 0, 0);
- (void) Strcat(termcap, p);
- xfree(p);
- ptr = Strchr(ptr, ':');
- (void) Strcat(termcap, ptr);
- }
/*
* Chop the termcap string at TC_BUFSIZE-1 characters to avoid
* core-dumps in the termcap routines
diff --git a/ed.term.c b/ed.term.c
index a235e11c96dc..85800073892f 100644
--- a/ed.term.c
+++ b/ed.term.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/ed.term.c,v 1.36 2006/03/02 18:46:44 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/ed.term.c,v 1.38 2011/02/25 23:58:34 christos Exp $ */
/*
* ed.term.c: Low level terminal interface
*/
@@ -33,8 +33,8 @@
#include "sh.h"
#ifndef WINNT_NATIVE
-RCSID("$tcsh: ed.term.c,v 1.36 2006/03/02 18:46:44 christos Exp $")
-
+RCSID("$tcsh: ed.term.c,v 1.38 2011/02/25 23:58:34 christos Exp $")
+#include <assert.h>
#include "ed.h"
int didsetty = 0;
@@ -633,6 +633,7 @@ dosetty(Char **v, struct command *t)
i = m->m_type;
st = len = strlen(ttylist[z][m->m_type].t_name);
}
+ assert(i != -1);
x = (ttylist[z][i].t_setmask & m->m_value) ? '+' : '\0';
x = (ttylist[z][i].t_clrmask & m->m_value) ? '-' : x;
diff --git a/gethost.c b/gethost.c
index efc095b8702f..65c9a2993f2b 100644
--- a/gethost.c
+++ b/gethost.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/gethost.c,v 1.12 2006/03/02 18:46:44 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/gethost.c,v 1.15 2012/01/15 17:14:54 christos Exp $ */
/*
* gethost.c: Create version file from prototype
*/
@@ -32,7 +32,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: gethost.c,v 1.12 2006/03/02 18:46:44 christos Exp $")
+RCSID("$tcsh: gethost.c,v 1.15 2012/01/15 17:14:54 christos Exp $")
#ifdef SCO
# define perror __perror
@@ -91,6 +91,7 @@ static const char *keyword[] =
static int findtoken (char *);
static char *gettoken (char **, char *);
+static char *pname;
int main (int, char *[]);
@@ -141,13 +142,78 @@ gettoken(char **pptr, char *token)
*pptr = ptr;
return token;
}
+
+static char *
+cat(const char *a, const char *b, size_t len)
+{
+ size_t l;
+ char *r;
+
+ if (len == 0)
+ len = strlen(b);
+ l = strlen(a) + len + 1;
+ if ((r = malloc(l)) == NULL)
+ abort();
+ snprintf(r, l, "%s%.*s", a, (int)len, b);
+ return r;
+}
+
+static const char *
+explode(const char *defs)
+{
+ static const char def[] = "defined("; /* ) */
+ static char *buf;
+ size_t len;
+ const char *ptr, *bptr, *eptr = NULL, *name;
+ size_t buflen = 0;
+
+ if (strstr(defs, "#machine(" /* ) */))
+ return defs;
+
+ free(buf);
+ buf = strdup("("); /* ) */
+ for (ptr = defs; (bptr = strstr(ptr, def)) != NULL; ptr = eptr + 1) {
+ if (ptr != bptr)
+ buf = cat(buf, ptr, bptr - ptr);
+ if ((eptr = strchr(ptr + sizeof(def) - 1, ')')) == NULL) {
+ (void) fprintf(stderr, "%s: missing close paren `%s'\n",
+ pname, defs);
+ return defs;
+ }
+ buf = cat(buf, bptr, eptr - bptr + 1);
+ name = bptr + sizeof(def) - 1;
+ len = eptr - name;
+ if (len < 1) {
+ (void) fprintf(stderr, "%s: empty define `%s'\n",
+ pname, defs);
+ return defs;
+ }
+ if (*name != '_') {
+ char *undername = malloc(len + 10);
+ buf = cat(buf, " || defined(", 0);
+ snprintf(undername, len + 10, "__%.*s__)", (int)len,
+ name);
+ buf = cat(buf, undername, len + 5);
+ buf = cat(buf, " || defined(", 0);
+ snprintf(undername, len + 10, "__%.*s)", (int)len,
+ name);
+ buf = cat(buf, undername, len + 3);
+ }
+ }
+ if (!eptr) {
+ (void) fprintf(stderr, "%s: invalid input `%s'\n", pname, defs);
+ return defs;
+ }
+ buf = cat(buf, eptr + 1, 0);
+ buf = cat(buf, ")", 0);
+ return buf;
+}
int
main(int argc, char *argv[])
{
char line[INBUFSIZE];
- char *pname;
const char *fname = "stdin";
char *ptr, *tok;
char defs[INBUFSIZE];
@@ -231,7 +297,7 @@ main(int argc, char *argv[])
break;
case T_NONE:
- if (state != S_CODE && defs && *defs != '\0') {
+ if (state != S_CODE && *defs != '\0') {
(void) fprintf(stderr, "%s: \"%s\", %d: Discarded\n",
pname, fname, lineno);
if (++errs == 30) {
@@ -280,7 +346,7 @@ main(int argc, char *argv[])
else {
if (tok && *tok)
(void) fprintf(stdout, "# if (%s) && !defined(_%s_)\n",
- defs, keyword[token]);
+ explode(defs), keyword[token]);
else
(void) fprintf(stdout, "# if !defined(_%s_)\n",
keyword[token]);
diff --git a/glob.c b/glob.c
index a828f63b9b73..368040328815 100644
--- a/glob.c
+++ b/glob.c
@@ -83,7 +83,7 @@ typedef unsigned short Char;
static int glob1 (Char *, glob_t *, int);
static int glob2 (struct strbuf *, const Char *, glob_t *, int);
static int glob3 (struct strbuf *, const Char *, const Char *,
- glob_t *, int);
+ const Char *, glob_t *, int);
static void globextend (const char *, glob_t *);
static int match (const char *, const Char *, const Char *,
int);
@@ -329,7 +329,7 @@ glob(const char *pattern, int flags, int (*errfunc) (const char *, int),
len = mblen((const char *)(patnext - 1), MB_LEN_MAX);
if (len == -1)
- (void)mblen(NULL, 0);
+ TCSH_IGNORE(mblen(NULL, 0));
else if (len > 1) {
*bufnext++ = (Char) c;
while (--len != 0)
@@ -389,10 +389,13 @@ glob(const char *pattern, int flags, int (*errfunc) (const char *, int),
break;
case STAR:
pglob->gl_flags |= GLOB_MAGCHAR;
- /* collapse adjacent stars to one, to avoid
- * exponential behavior
+ /* collapse adjacent stars to one [or three if globstar],
+ * to avoid exponential behavior
*/
- if (bufnext == patbuf || bufnext[-1] != M_ALL)
+ if (bufnext == patbuf || bufnext[-1] != M_ALL ||
+ ((flags & GLOB_STAR) != 0 &&
+ (bufnext - 1 == patbuf || bufnext[-2] != M_ALL ||
+ bufnext - 2 == patbuf || bufnext[-3] != M_ALL)))
*bufnext++ = M_ALL;
break;
default:
@@ -524,25 +527,79 @@ glob2(struct strbuf *pathbuf, const Char *pattern, glob_t *pglob, int no_match)
}
else { /* need expansion, recurse */
pathbuf->len = orig_len;
- return (glob3(pathbuf, pattern, p, pglob, no_match));
+ return (glob3(pathbuf, pattern, p, pattern, pglob, no_match));
}
}
/* NOTREACHED */
}
+static size_t
+One_Char_mbtowc(__Char *pwc, const Char *s, size_t n)
+{
+#ifdef WIDE_STRINGS
+ char buf[MB_LEN_MAX], *p;
+ if (n > MB_LEN_MAX)
+ n = MB_LEN_MAX;
+ p = buf;
+ while (p < buf + n && (*p++ = LCHAR(*s++)) != 0)
+ ;
+ return one_mbtowc(pwc, buf, n);
+#else
+ *pwc = *s & CHAR;
+ return 1;
+#endif
+}
+
static int
glob3(struct strbuf *pathbuf, const Char *pattern, const Char *restpattern,
- glob_t *pglob, int no_match)
+ const Char *pglobstar, glob_t *pglob, int no_match)
{
DIR *dirp;
struct dirent *dp;
+ struct stat sbuf;
int err;
Char m_not = (pglob->gl_flags & GLOB_ALTNOT) ? M_ALTNOT : M_NOT;
size_t orig_len;
+ int globstar = 0;
+ int chase_symlinks = 0;
+ const Char *termstar = NULL;
strbuf_terminate(pathbuf);
- errno = 0;
+ orig_len = pathbuf->len;
+ errno = err = 0;
+
+ while (pglobstar < restpattern) {
+ __Char wc;
+ size_t width = One_Char_mbtowc(&wc, pglobstar, MB_LEN_MAX);
+ if ((pglobstar[0] & M_MASK) == M_ALL &&
+ (pglobstar[width] & M_MASK) == M_ALL) {
+ globstar = 1;
+ chase_symlinks = (pglobstar[2 * width] & M_MASK) == M_ALL;
+ termstar = pglobstar + (2 + chase_symlinks) * width;
+ break;
+ }
+ pglobstar += width;
+ }
+
+ if (globstar) {
+ err = pglobstar==pattern && termstar==restpattern ?
+ *restpattern == EOS ?
+ glob2(pathbuf, restpattern - 1, pglob, no_match) :
+ glob2(pathbuf, restpattern + 1, pglob, no_match) :
+ glob3(pathbuf, pattern, restpattern, termstar, pglob, no_match);
+ if (err)
+ return err;
+ pathbuf->len = orig_len;
+ strbuf_terminate(pathbuf);
+ }
+
+ if (*pathbuf->s && (Lstat(pathbuf->s, &sbuf) || !S_ISDIR(sbuf.st_mode)
+#ifdef S_IFLINK
+ && ((globstar && !chase_symlinks) || !S_ISLNK(sbuf.st_mode))
+#endif
+ ))
+ return 0;
if (!(dirp = Opendir(pathbuf->s))) {
/* todo: don't call for ENOENT or ENOTDIR? */
@@ -553,23 +610,37 @@ glob3(struct strbuf *pathbuf, const Char *pattern, const Char *restpattern,
return (0);
}
- err = 0;
-
- orig_len = pathbuf->len;
/* search directory for matching names */
while ((dp = readdir(dirp)) != NULL) {
/* initial DOT must be matched literally */
if (dp->d_name[0] == DOT && *pattern != DOT)
- continue;
+ if (!(pglob->gl_flags & GLOB_DOT) || !dp->d_name[1] ||
+ (dp->d_name[1] == DOT && !dp->d_name[2]))
+ continue; /*unless globdot and not . or .. */
pathbuf->len = orig_len;
strbuf_append(pathbuf, dp->d_name);
strbuf_terminate(pathbuf);
- if (match(pathbuf->s + orig_len, pattern, restpattern, (int) m_not)
- == no_match)
- continue;
- err = glob2(pathbuf, restpattern, pglob, no_match);
- if (err)
- break;
+
+ if (globstar) {
+#ifdef S_IFLNK
+ if (!chase_symlinks &&
+ (Lstat(pathbuf->s, &sbuf) || S_ISLNK(sbuf.st_mode)))
+ continue;
+#endif
+ if (match(pathbuf->s + orig_len, pattern, termstar,
+ (int)m_not) == no_match)
+ continue;
+ strbuf_append1(pathbuf, SEP);
+ strbuf_terminate(pathbuf);
+ if ((err = glob2(pathbuf, pglobstar, pglob, no_match)) != 0)
+ break;
+ } else {
+ if (match(pathbuf->s + orig_len, pattern, restpattern,
+ (int) m_not) == no_match)
+ continue;
+ if ((err = glob2(pathbuf, restpattern, pglob, no_match)) != 0)
+ break;
+ }
}
/* todo: check error from readdir? */
closedir(dirp);
@@ -613,24 +684,6 @@ globextend(const char *path, glob_t *pglob)
pathv[pglob->gl_offs + pglob->gl_pathc] = NULL;
}
-static size_t
-One_Char_mbtowc(__Char *pwc, const Char *s, size_t n)
-{
-#ifdef WIDE_STRINGS
- char buf[MB_LEN_MAX], *p;
-
- if (n > MB_LEN_MAX)
- n = MB_LEN_MAX;
- p = buf;
- while (p < buf + n && (*p++ = LCHAR(*s++)) != 0)
- ;
- return one_mbtowc(pwc, buf, n);
-#else
- *pwc = *s & CHAR;
- return 1;
-#endif
-}
-
/*
* pattern matching function for filenames. Each occurrence of the *
* pattern causes a recursion level.
@@ -650,17 +703,17 @@ match(const char *name, const Char *pat, const Char *patend, int m_not)
lwk = one_mbtowc(&wk, name, MB_LEN_MAX);
switch (c & M_MASK) {
case M_ALL:
+ while (pat < patend && (*pat & M_MASK) == M_ALL) /* eat consecutive '*' */
+ pat += One_Char_mbtowc(&wc, pat, MB_LEN_MAX);
if (pat == patend)
- return (1);
- for (;;) {
- if (match(name, pat, patend, m_not))
- return (1);
+ return (1);
+ while (!match(name, pat, patend, m_not)) {
if (*name == EOS)
- break;
+ return (0);
name += lwk;
lwk = one_mbtowc(&wk, name, MB_LEN_MAX);
}
- return (0);
+ return (1);
case M_ONE:
if (*name == EOS)
return (0);
@@ -691,9 +744,9 @@ match(const char *name, const Char *pat, const Char *patend, int m_not)
return (0);
break;
default:
- name += lwk;
- if (samecase(wk) != samecase(wc))
+ if (*name == EOS || samecase(wk) != samecase(wc))
return (0);
+ name += lwk;
break;
}
}
diff --git a/glob.h b/glob.h
index 0a6fd39722ae..13451ed6a6e0 100644
--- a/glob.h
+++ b/glob.h
@@ -80,6 +80,8 @@ typedef struct {
#define GLOB_TILDE 0x0800 /* Expand tilde names from the passwd file. */
#define GLOB_ALTNOT 0x1000 /* use alternate glob character [^ not !] */
#define GLOB_QUOTE 0x2000 /* XXX: source compatibility */
+#define GLOB_STAR 0x4000 /* use glob ** to recurse directories */
+#define GLOB_DOT 0x8000 /* don't skip dotfiles (except . and ..) */
#define GLOB_ABEND GLOB_ABORTED /* source compatibility */
/* #endif */
diff --git a/host.defs b/host.defs
index 38fe156799a0..9cec8fa9acb4 100644
--- a/host.defs
+++ b/host.defs
@@ -1,5 +1,5 @@
-newcode :
-/* $Header: /p/tcsh/cvsroot/tcsh/host.defs,v 1.46 2008/09/25 14:41:05 christos Exp $ */
+newcode :
+/* $Header: /p/tcsh/cvsroot/tcsh/host.defs,v 1.55 2012/01/11 20:20:15 christos Exp $ */
/*
* host.defs: Hosttype/Machtype etc.
*/
@@ -33,9 +33,9 @@ newcode :
*/
#include "sh.h"
-RCSID("$tcsh: host.defs,v 1.46 2008/09/25 14:41:05 christos Exp $")
+RCSID("$tcsh: host.defs,v 1.55 2012/01/11 20:20:15 christos Exp $")
-endcode :
+endcode :
macro : M_mips64el : (defined(mips64) || defined(__mips64)) && (defined(MIPSEL) || defined(__MIPSEL))
macro : M_mips64eb : (defined(mips64) || defined(__mips64)) && (defined(MIPSEB) || defined(__MIPSEB))
@@ -44,10 +44,11 @@ macro : M_mipseb : (!defined(M_mips64eb)) && (defined(mips) || defined(__mips))
macro : M_i386 : (defined(i386) || defined(__i386__))
macro : M_i486 : (defined(i486) || defined(__i486__))
macro : M_i586 : (defined(i586) || defined(__i586__))
+macro : M_i686 : (defined(i686) || defined(__i686__))
macro : M_intel : (defined(M_i386) || defined(M_i486) || defined(M_i586))
newdef : defined(ns32000)
-newcode :
+newcode :
static char *
isamultimax(int flag)
{
@@ -56,12 +57,12 @@ isamultimax(int flag)
else
return flag ? "mach" : "ns32000";
}
-endcode :
+endcode :
enddef :
newdef : defined(cray)
-newcode :
+newcode :
/*
* On crays, find the current machine type via the target() syscall
* We need ctype.h to convert the name returned to lower case
@@ -79,7 +80,7 @@ getcray(void)
if (target(MC_GET_SYSTEM, &data) != -1) {
static char hosttype_buf[sizeof(data.mc_pmt)+1];
- char *p = (char *) &(data.mc_pmt);
+ unsigned char *p = (unsigned char *) &(data.mc_pmt);
char *q = hosttype_buf;
int n;
@@ -95,18 +96,18 @@ getcray(void)
/* replace dashes with underscores if present */
while ((q = strchr(hosttype_buf, '-')) != NULL)
*q = '_';
- return hosttype_buf; /* Return in static buffer */
+ return hosttype_buf; /* Return in static buffer */
}
else
# endif /* MC_GET_SYSTEM */
return "cray"; /* target() failed */
}
-endcode :
+endcode :
enddef :
newdef : defined(convex)
-newcode :
+newcode :
/*
* On convex, find the current machine type via the getsysinfo() syscall
*/
@@ -117,7 +118,7 @@ static char *
getconvex(void)
{
struct system_information sysinfo;
- static char result[8];
+ static char result[8];
if (getsysinfo(SYSINFO_SIZE, &sysinfo) == -1)
return "convex";
@@ -165,11 +166,64 @@ getconvex(void)
return "convex";
}
}
-endcode :
+endcode :
enddef :
+newdef : defined(__linux__) || defined(__CYGWIN__) || defined(__GNU__) || defined(__GLIBC__)
+newcode :
+# include "tw.h"
+#include <sys/utsname.h>
+static char mach[256];
+static char host[256];
+static char ostype[32];
+static void populate(void)
+{
+ struct utsname uts;
+ int e = uname(&uts);
+ const char *p = short2str(tgetenv(STROSTYPE));
+ if (p == NULL) {
+#if defined(__ANDROID__)
+ p = "android";
+#elif defined(__CYGWIN__)
+ p = "cygwin";
+#else
+ p = "linux";
+#endif
+ }
+ xsnprintf(ostype, sizeof(ostype), "%s", p);
+ xsnprintf(mach, sizeof(mach), "%s", e != -1 ? uts.machine : "unknown");
+ xsnprintf(host, sizeof(host), "%s-%s",
+ e != -1 ? uts.machine : "unknown", ostype);
+}
+
+static char *
+getmach(void)
+{
+ if (!mach[0])
+ populate();
+ return mach;
+}
+
+static char *
+gethost(void)
+{
+ if (!host[0])
+ populate();
+ return host;
+}
+
+static char *
+getostype(void)
+{
+ if (!ostype[0])
+ populate();
+ return ostype;
+}
+
+endcode :
+enddef :
-newcode :
+newcode :
void
getmachine(void)
{
@@ -178,7 +232,7 @@ getmachine(void)
const char *vendor;
const char *machtype;
-endcode :
+endcode :
newdef : defined(HOSTTYPE)
@@ -187,16 +241,16 @@ enddef :
newdef : defined(__PARAGON__)
-comment : Intel Paragon running OSF/1
+comment : Intel Paragon running OSF/1
vendor : : "intel"
hosttype: : "paragon"
ostype : : "osf1"
-machtype: defined(M_i386) : "i386"
+machtype: defined(M_i386) : "i386"
enddef :
newdef : defined(AMIX)
-comment : Amiga running Amix 2.02
+comment : Amiga running Amix 2.02
vendor : : "commodore"
hosttype: : "amiga"
ostype : : "Amix"
@@ -205,41 +259,40 @@ enddef :
newdef : defined(accel)
-comment : celerity Accel
-vendor : : "celerity"
-hosttype: : "celerityACCEL"
+comment : celerity Accel
+vendor : : "celerity"
+hosttype: : "celerityACCEL"
ostype : : "unix"
machtype: : "accel"
enddef :
newdef : defined(_VMS_POSIX)
-comment : digital vax or alpha running vms posix
+comment : digital vax or alpha running vms posix
vendor : : "dec"
hosttype: : "VMS-POSIX"
ostype : : "vms"
-machtype: defined(__alpha) : "alpha"
-machtype: defined(__vax) || defined(vax) : "vax"
-machtype: defined(__vax__) : "vax"
+machtype: defined(alpha) : "alpha"
+machtype: defined(vax) : "vax"
enddef :
newdef : defined(__hp_osf)
-comment : Hewlett Packard running OSF/1
+comment : Hewlett Packard running OSF/1
vendor : : "hp"
-hosttype: defined(__pa_risc) : "hp9000s700-osf1"
-hosttype: : "hp-osf1"
-ostype : : "osf1"
-machtype: defined(__pa_risc) : "pa_risc"
+hosttype: defined(pa_risc) : "hp9000s700-osf1"
+hosttype: : "hp-osf1"
+ostype : : "osf1"
+machtype: defined(pa_risc) : "pa_risc"
enddef :
newdef : defined(hp9000)
-comment : Hewlett Packard running MORE/bsd
-vendor : : "hp"
+comment : Hewlett Packard running MORE/bsd
+vendor : : "hp"
hosttype: defined(hp300) : "hp300"
hosttype: defined(hp800) : "hp800"
-hosttype: : "hp9000"
+hosttype: : "hp9000"
ostype : defined(BSD4_4) : "bsd44"
ostype : : "mtXinu"
machtype: defined(hp300) : "m68k"
@@ -248,54 +301,55 @@ enddef :
newdef : defined(hpux) || defined(__hpux)
-comment : Hewlett Packard running HP/UX
+comment : Hewlett Packard running HP/UX
vendor : : "hp"
-hosttype: defined(__hp9000s700) : "hp9000s700"
-hosttype: defined(__hp9000s800) || defined(hp9000s800) : "hp9000s800"
+hosttype: defined(hp9000s800) : "hp9000s800"
+hosttype: defined(hp9000s700) : "hp9000s700"
hosttype: defined(hp9000s500) : "hp9000s500"
-hosttype: defined(__hp9000s300) || defined(hp9000s300) : "hp9000s300"
-hosttype: : "hp"
+hosttype: defined(hp9000s300) : "hp9000s300"
+hosttype: : "hp"
ostype : : "hpux"
-machtype: defined(__hp9000s700) : "pa_risc"
-machtype: defined(__hp9000s800) || defined(hp9000s800) : "pa_risc"
+machtype: defined(hp9000s800) : "pa_risc"
+machtype: defined(hp9000s700) : "pa_risc"
machtype: defined(hp9000s500) : "m68k"
-machtype: defined(__hp9000s300) || defined(hp9000s300) : "m68k"
+machtype: defined(hp9000s300) : "m68k"
enddef :
newdef : defined(apollo)
-comment : Hewlett Packard apollo running Domain/OS
+comment : Hewlett Packard apollo running Domain/OS
vendor : : "hp"
-hosttype: : "apollo"
+hosttype: : "apollo"
ostype : : "DomainOS"
-machtype: : "m68k"
+machtype: : "m68k"
enddef :
newdef : defined(sun) || defined(__sun__)
-comment : Sun Microsystems series 2 workstation (68010 based)
-comment : Sun Microsystems series 3 workstation (68020 based)
-comment : Sun Microsystems 386i workstation (386 based)
-comment : Sun Microsystems series 4 workstation (SPARC based)
+comment : Sun Microsystems series 2 workstation (68010 based)
+comment : Sun Microsystems series 3 workstation (68020 based)
+comment : Sun Microsystems 386i workstation (386 based)
+comment : Sun Microsystems series 4 workstation (SPARC based)
vendor : : "sun"
hosttype: defined(M_i386) && !defined(__SVR4) : "sun386i"
hosttype: defined(M_i386) && defined(__SVR4) : "i86pc"
-hosttype: defined(mc68010) || defined(__mc68010__) : "sun2"
-hosttype: defined(mc68020) || defined(__mc68020__) : "sun3"
-hosttype: defined(sparc) || defined(__sparc__) : "sun4"
-hosttype: : "sun"
+hosttype: defined(mc68010) : "sun2"
+hosttype: defined(mc68020) : "sun3"
+hosttype: defined(sparc) : "sun4"
+hosttype: : "sun"
ostype : defined(SUNOS3) : "sunos3"
ostype : defined(SUNOS4) : "sunos4"
ostype : defined(SOLARIS2) : "solaris"
-machtype: defined(mc68010) || defined(__mc68010__) : "m68k"
-machtype: defined(mc68020) || defined(__mc68020__) : "m68k"
-machtype: defined(sparc) || defined(__sparc__) : "sparc"
+machtype: defined(mc68010) : "m68k"
+machtype: defined(mc68020) : "m68k"
+machtype: defined(sparcv9) : "sparcv9"
+machtype: defined(sparc) : "sparc"
machtype: defined(M_i386) : "i386"
enddef :
newdef : defined(pyr)
-comment : Pyramid Technology
+comment : Pyramid Technology
vendor : : "pyramid"
hosttype: : "pyramid"
machtype: : "pyramid"
@@ -303,7 +357,7 @@ enddef :
newdef : defined(hcx) || defined(_CX_UX)
-comment : Harris Tahoe running CX/UX
+comment : Harris Tahoe running CX/UX
vendor : : "harris"
hosttype: : "hcx"
ostype : : "hcx"
@@ -312,7 +366,7 @@ enddef :
newdef : defined(tahoe)
-comment : Harris Tahoe
+comment : Harris Tahoe
vendor : : "harris"
hosttype: : "tahoe"
machtype: : "tahoe"
@@ -320,17 +374,17 @@ enddef :
newdef : defined(ibm032)
-comment : RT running IBM AOS4.3 or MACH
+comment : RT running IBM AOS4.3 or MACH
vendor : : "ibm"
hosttype: : "rt"
ostype : defined(MACH) : "mach"
-ostype : : "aos"
+ostype : : "aos"
machtype: : "ibm032"
enddef :
newdef : defined(aiws)
-comment : RT running IBM aix2.x
+comment : RT running IBM aix2.x
vendor : : "ibm"
hosttype: : "rtpc"
ostype : : "aix"
@@ -339,7 +393,7 @@ enddef :
newdef : defined(_AIX370)
-comment : IBM/370 running aix
+comment : IBM/370 running aix
vendor : : "ibm"
hosttype: : "aix370"
ostype : : "aix"
@@ -348,7 +402,7 @@ enddef :
newdef : defined(_IBMESA)
-comment : IBM/ESA running aix
+comment : IBM/ESA running aix
vendor : : "ibm"
hosttype: : "aixESA"
ostype : : "aix"
@@ -357,7 +411,7 @@ enddef :
newdef : defined(_IBMR2)
-comment : IBM/RS6000 running aix
+comment : IBM/RS6000 running aix
vendor : : "ibm"
hosttype: : "rs6000"
ostype : : "aix"
@@ -366,7 +420,7 @@ enddef :
newdef : defined(_AIXPS2)
-comment : IBM/PS2 running aix
+comment : IBM/PS2 running aix
vendor : : "ibm"
hosttype: : "ps2"
ostype : : "aix"
@@ -375,7 +429,7 @@ enddef :
newdef : defined(OREO)
-comment : Macintosh running AU/X
+comment : Macintosh running AU/X
vendor : : "apple"
hosttype: : "mac2"
ostype : : "aux"
@@ -384,7 +438,7 @@ enddef :
newdef : defined(u3b20d)
-comment : AT&T 3B/20 series running SVR2/3
+comment : AT&T 3B/20 series running SVR2/3
vendor : : "att"
hosttype: : "att3b20"
machtype: : "u3b20"
@@ -392,7 +446,7 @@ enddef :
newdef : defined(u3b15)
-comment : AT&T 3B/15 series running SVR2/3
+comment : AT&T 3B/15 series running SVR2/3
vendor : : "att"
hosttype: : "att3b15"
machtype: : "u3b15"
@@ -400,7 +454,7 @@ enddef :
newdef : defined(u3b5)
-comment : AT&T 3B/5 series running SVR2/3
+comment : AT&T 3B/5 series running SVR2/3
vendor : : "att"
hosttype: : "att3b5"
machtype: : "u3b5"
@@ -408,7 +462,7 @@ enddef :
newdef : defined(u3b2)
-comment : AT&T 3B/2 series running SVR2/3
+comment : AT&T 3B/2 series running SVR2/3
vendor : : "att"
hosttype: : "att3b2"
machtype: : "u3b2"
@@ -416,7 +470,7 @@ enddef :
newdef : defined(UNIXPC)
-comment : AT&T UnixPC att3b1/att7300
+comment : AT&T UnixPC att3b1/att7300
vendor : : "att"
hosttype: : "unixpc"
machtype: defined(u3b1) : "u3b1"
@@ -425,7 +479,7 @@ enddef :
newdef : defined(_MINIX)
-comment : Andy Tanenbaum's minix
+comment : Andy Tanenbaum's minix
vendor : defined(M_i386) : "intel"
hosttype: defined(M_i386) : "minix386"
hosttype: : "minix"
@@ -434,41 +488,35 @@ machtype: defined(M_i386) : "i386"
enddef :
+newdef : defined(__gnu_hurd__)
+comment : GNU/HURD
+vendor : defined(M_intel) : "intel"
+hosttype: defined(M_i686) : "i686"
+hosttype: defined(M_i586) : "i586"
+hosttype: defined(M_i486) : "i486"
+hosttype: defined(M_i386) : "i386"
+ostype : : "gnu"
+machtype: defined(M_i686) : "i686-pc-gnu"
+machtype: defined(M_i586) : "i586-pc-gnu"
+machtype: defined(M_i486) : "i486-pc-gnu"
+machtype: defined(M_i386) : "i386-pc-gnu"
+enddef :
+
+
newdef : defined(linux) || defined(__GNU__) || defined(__GLIBC__)
-comment : Linus Torvalds's linux
+comment : Linus Torvalds's linux
vendor : defined(M_intel) : "intel"
-hosttype: defined(__ia64__) : "ia64-linux"
-hosttype: defined(__powerpc64__) : "powerpc64-linux"
-hosttype: defined(__s390x__) : "s390x-linux"
-hosttype: defined(__s390__) : "s390-linux"
-hosttype: defined(__x86_64__) : "x86_64-linux"
-hosttype: defined(M_i586) : "i586-linux"
-hosttype: defined(M_i486) : "i486-linux"
-hosttype: defined(M_i386) : "i386-linux"
-ostype : : "linux"
-machtype: defined(__ia64__) : "ia64"
-machtype: defined(__powerpc64__) : "powerpc64"
-machtype: defined(__s390x__) : "s390x"
-machtype: defined(__s390__) : "s390"
-machtype: defined(__x86_64__) : "x86_64"
-machtype: defined(M_i586) : "i586"
-machtype: defined(M_i486) : "i486"
-machtype: defined(M_i386) : "i386"
-vendor : defined(__alpha) : "dec"
+hosttype: : gethost()
+ostype : : getostype()
+machtype: : getmach()
+vendor : defined(__ANDROID__) : "linux"
+vendor : defined(alpha) : "dec"
vendor : defined(PPC) : "apple"
-hosttype: defined(__alpha) : "alpha"
-hosttype: defined(PPC) : "powerpc"
-machtype: defined(__alpha) : "alpha"
-machtype: defined(PPC) : "powerpc"
-machtype: defined(M_mipsel) : "mipsel"
-machtype: defined(M_mipseb) : "mipseb"
-machtype: defined(M_mips64el) : "mips64el"
-machtype: defined(M_mips64eb) : "mips64eb"
enddef :
newdef : defined(__EMX__)
-comment : OS/2 EMX [unix emulation under OS/2]
+comment : OS/2 EMX [unix emulation under OS/2]
vendor : defined(M_intel) : "intel"
hosttype: defined(M_i386) : "i386-emx"
ostype : : "os2"
@@ -477,7 +525,8 @@ enddef :
newdef : defined(__NetBSD__)
-comment : NetBSD
+comment : NetBSD
+vendor : defined(algor) : "algoritmics"
vendor : defined(arm32) || defined(__arm__) : "acorn"
vendor : defined(alpha) : "digital"
vendor : defined(amiga) : "commodore"
@@ -488,49 +537,71 @@ vendor : defined(m68k) : "motorola"
vendor : defined(mac68k) : "apple"
vendor : defined(pc532) : "national-semi"
vendor : defined(pmax) : "dec"
+vendor : defined(powerpc) : "motorola"
vendor : defined(mips) : "mips"
vendor : defined(sparc) : "sun"
+vendor : defined(sparc64) : "sun"
vendor : defined(sun3) : "sun"
vendor : defined(vax) : "digital"
-hosttype: : "NetBSD"
-ostype : : "NetBSD"
+vendor : defined(x86_64) : "amd"
+hosttype: : "NetBSD"
+ostype : : "NetBSD"
+machtype: defined(alpha) : "alpha"
+machtype: defined(algor) : "algor"
machtype: defined(arm32) || defined(__APCS_32__) : "arm32"
machtype: defined(arm26) || defined(__APCS_26__) : "arm26"
-machtype: defined(arm) || defined(__arm__) : "arm"
+machtype: defined(arm) : "arm"
machtype: defined(sparc) : "sparc"
+machtype: defined(sparc64) : "sparc64"
machtype: defined(mc68020) : "m68k"
machtype: defined(M_i386) : "i386"
machtype: defined(M_mipsel) : "mipsel"
machtype: defined(M_mipseb) : "mipseb"
machtype: defined(mips) : "mips"
machtype: defined(pc532) : "pc532"
+machtype: defined(powerpc) : "powerpc"
machtype: defined(vax) : "vax"
-machtype: defined(alpha) : "alpha"
+machtype: defined(x86_64) : "x86_64"
enddef :
newdef : defined(__FreeBSD__)
-comment : FreeBSD
-vendor : defined(__alpha) : "digital"
+comment : FreeBSD
+vendor : defined(alpha) : "digital"
+vendor : defined(arm32) || defined(__arm__) : "acorn"
vendor : defined(M_intel) : "intel"
+vendor : defined(ia64) : "intel"
+vendor : defined(mips) : "mips"
+vendor : defined(powerpc) : "motorola"
+vendor : defined(sparc) : "sun"
+vendor : defined(sparc64) : "sun"
+vendor : defined(x86_64) : "amd"
hosttype: : "FreeBSD"
ostype : : "FreeBSD"
-machtype: defined(__alpha) : "alpha"
+machtype: defined(alpha) : "alpha"
+machtype: defined(arm32) || defined(__APCS_32__) : "arm32"
+machtype: defined(arm) : "arm"
+machtype: defined(ia64) : "ia64"
machtype: defined(M_i386) : "i386"
+machtype: defined(mips) : "mips"
+machtype: defined(powerpc) : "powerpc"
+machtype: defined(sparc) : "sparc"
+machtype: defined(sparc64) : "sparc64"
+machtype: defined(x86_64) : "x86_64"
enddef :
-newdef : defined(__MidnightBSD__)
+newdef : defined(__MidnightBSD__)
comment : MidnightBSD
-vendor : defined(M_intel) : "intel"
-hosttype: : "MidnightBSD"
-ostype : : "MidnightBSD"
-machtype: defined(M_i386) : "i386"
-enddef :
+vendor : defined(M_intel) : "intel"
+hosttype: : "MidnightBSD"
+ostype : : "MidnightBSD"
+machtype: defined(M_i386) : "i386"
+enddef :
newdef : defined(__386BSD__)
-comment : Bill Jolitz's 386BSD
+comment : Bill Jolitz's 386BSD
vendor : defined(M_intel) : "intel"
hosttype: : "386BSD"
ostype : : "386BSD"
@@ -539,22 +610,22 @@ enddef :
newdef : defined(bsdi)
-comment : BSDI's unix
+comment : BSDI's unix
vendor : defined(M_intel) : "intel"
vendor : defined(sparc) : "sun"
-vendor : defined(__powerpc__) : "motorola"
+vendor : defined(powerpc) : "motorola"
hosttype: defined(M_intel) : "bsd386"
hosttype: defined(sparc) : "bsd-sparc"
-hosttype: defined(__powerpc__) : "bsd-powerpc"
+hosttype: defined(powerpc) : "bsd-powerpc"
ostype : : "bsdi"
machtype: defined(M_i386) : "i386"
machtype: defined(sparc) : "sparc"
-machtype: defined(__powerpc__) : "powerpc"
+machtype: defined(powerpc) : "powerpc"
enddef :
newdef : defined(COHERENT)
-comment : COHERENT's unix
+comment : COHERENT's unix
vendor : defined(_I386) : "intel"
hosttype: : "coh386"
hosttype: : "coherent"
@@ -563,7 +634,7 @@ machtype: defined(_I386) : "i386"
enddef :
newdef : defined(concurrent)
-comment : Concurrent PowerHawk
+comment : Concurrent PowerHawk
vendor : : "concurrent"
hosttype: : "powerhawk"
ostype : : "powermax_os"
@@ -571,7 +642,7 @@ machtype: : "powerhawk"
enddef :
newdef : defined(SCO)
-comment : SCO UNIX System V/386 Release 3.2
+comment : SCO UNIX System V/386 Release 3.2
vendor : : "sco"
hosttype: : "sco386"
ostype : : "sco_unix"
@@ -579,7 +650,7 @@ machtype: : "i386"
enddef :
newdef : defined(M_XENIX) && !defined(M_UNIX)
-comment : SCO XENIX
+comment : SCO XENIX
vendor : : "sco"
hosttype: : "sco_xenix"
ostype : : "sco_xenix"
@@ -589,17 +660,17 @@ enddef :
newdef : defined(ISC) || defined(ISC202)
-comment : Interactive Unix
+comment : Interactive Unix
vendor : : "isc"
hosttype: : "isc386"
ostype : defined(POSIX) : "POSIX"
-ostype : : "SVR3"
+ostype : : "SVR3"
machtype: defined(M_i386) : "i386"
enddef :
newdef : defined(INTEL)
-comment : Intel Unix
+comment : Intel Unix
vendor : : "intel"
hosttype: : "intel386"
ostype : : "intel_unix"
@@ -608,7 +679,7 @@ enddef :
newdef : defined(MACH)
-comment : cmu's mach
+comment : cmu's mach
vendor : : "cmu"
hosttype: defined(M_i386) : "i386-mach"
ostype : : "mach"
@@ -617,7 +688,7 @@ enddef :
newdef : defined(alliant)
-comment : Alliants FSX
+comment : Alliants FSX
vendor : : "alliant"
hosttype: defined(mc68000) : "alliant-fx80"
hosttype: defined(i860) : "alliant-fx2800"
@@ -629,38 +700,38 @@ enddef :
newdef : defined(_FTX)
-comment : Stratus Computer, Inc FTX2 (i860 based)
-comment : Stratus Computer, Inc FTX3 (HPPA based)
+comment : Stratus Computer, Inc FTX2 (i860 based)
+comment : Stratus Computer, Inc FTX3 (HPPA based)
vendor : : "stratus"
hosttype: defined(i860) && defined(_FTX) : "atlantic"
-hosttype: defined(__hppa) && defined(_FTX) : "continuum"
+hosttype: defined(hppa) && defined(_FTX) : "continuum"
ostype : defined(i860) && defined(_FTX) : "ftx2"
-ostype : defined(__hppa) && defined(_FTX) : "ftx3"
+ostype : defined(hppa) && defined(_FTX) : "ftx3"
machtype: defined(i860) : "i860"
-machtype: defined(__hppa) : "hppa"
+machtype: defined(hppa) : "hppa"
enddef :
newdef : defined(sequent) || defined(_SEQUENT_)
-comment : Sequent Balance (32000 based)
-comment : Sequent Symmetry running DYNIX/ptx (386/486 based)
-comment : Sequent Symmetry running DYNIX 3 (386/486 based)
+comment : Sequent Balance (32000 based)
+comment : Sequent Symmetry running DYNIX/ptx (386/486 based)
+comment : Sequent Symmetry running DYNIX 3 (386/486 based)
vendor : : "sequent"
hosttype: defined(M_i386) && defined(sequent) : "symmetry"
hosttype: defined(M_i386) : "ptx"
-hosttype: : "balance"
+hosttype: : "balance"
ostype : defined(M_i386) && !defined(sequent) : "ptx"
-ostype : : "dynix3"
+ostype : : "dynix3"
machtype: defined(M_i386) : "i386"
machtype: defined(ns32000) : "ns32000"
enddef :
newdef : defined(ns32000)
-comment : Encore Computer Corp. Multimax (32000 based)
+comment : Encore Computer Corp. Multimax (32000 based)
vendor : : "encore"
hosttype: defined(CMUCS) : "multimax"
-hosttype: : isamultimax(0)
+hosttype: : isamultimax(0)
ostype : defined(CMUCS) : "mach"
ostype : : isamultimax(1)
machtype: : "ns32000"
@@ -668,16 +739,16 @@ enddef :
newdef : defined(iconuxv)
-comment : Icon 88k running Unix
+comment : Icon 88k running Unix
vendor : : "icon"
hosttype: : "icon"
ostype : : "iconuxv"
-machtype: defined(m88k) || defined(__m88k__) : "m88k"
+machtype: defined(m88k) : "m88k"
enddef :
newdef : defined(_CRAY) && defined(_CRAYCOM)
-comment : Cray Computer Corp. running CSOS
+comment : Cray Computer Corp. running CSOS
vendor : : "ccc"
hosttype: defined(_CRAY2) : "cray"
hosttype: defined(_CRAY3) : "cray"
@@ -690,7 +761,7 @@ enddef :
newdef : defined(cray) && !defined(_CRAYMPP)
-comment : Cray Research Inc. PVP running UNICOS
+comment : Cray Research Inc. PVP running UNICOS
vendor : : "cri"
hosttype: : getcray()
ostype : : "unicos"
@@ -698,17 +769,17 @@ machtype: : getcray()
enddef :
-newdef : defined(cray) && defined(_CRAYT3D)
+newdef : defined(cray) && defined(_CRAYT3D)
comment : Cray Research Inc. running UNICOS MAX
-vendor : : "cri"
-hosttype: : getcray()
-ostype : : "unicosmax"
-machtype: : getcray()
-enddef :
+vendor : : "cri"
+hosttype: : getcray()
+ostype : : "unicosmax"
+machtype: : getcray()
+enddef :
newdef : defined(cray) && defined(_CRAYT3E)
-comment : Cray Research Inc. running UNICOS/mk
+comment : Cray Research Inc. running UNICOS/mk
vendor : : "cri"
hosttype: : getcray()
ostype : : "unicosmk"
@@ -717,8 +788,8 @@ enddef :
newdef : defined(convex)
-comment : Convex
-vendor : : "convex"
+comment : Convex
+vendor : : "convex"
hosttype: : "convex"
ostype : : "convexos"
machtype: : getconvex()
@@ -726,83 +797,81 @@ enddef :
newdef : defined(butterfly)
-comment : BBN Butterfly 1000
+comment : BBN Butterfly 1000
vendor : : "bbn"
hosttype: : "butterfly"
-machtype: defined(mc68020) || defined(__mc68020__) : "m68k"
+machtype: defined(mc68020) : "m68k"
enddef :
newdef : defined(NeXT)
-comment : NeXTStep
+comment : NeXTStep
vendor : : "next"
-hosttype: defined(mc68020) || defined(__mc68020__) : "next"
-hosttype: defined(M_i386) || defined(__i386__) : "intel-pc"
-hosttype: defined(hppa) || defined(__hppa__) : "hp"
-hosttype: defined(sparc) || defined(__sparc__) : "sun"
+hosttype: defined(mc68020) : "next"
+hosttype: defined(M_i386) : "intel-pc"
+hosttype: defined(hppa) : "hp"
+hosttype: defined(sparc) : "sun"
ostype : : "nextstep"
-machtype: defined(mc68020) || defined(__mc68020__) : "m68k"
-machtype: defined(M_i386) || defined(__i386__) : "i386"
-machtype: defined(hppa) || defined(__hppa__) : "hppa"
-machtype: defined(sparc) || defined(__sparc__) : "sparc"
+machtype: defined(mc68020) : "m68k"
+machtype: defined(M_i386) : "i386"
+machtype: defined(hppa) : "hppa"
+machtype: defined(sparc) : "sparc"
enddef :
newdef : defined(__APPLE__) && defined(__MACH__)
-comment : OS X
+comment : OS X
vendor : : "apple"
-hosttype: defined(__i386__) : "intel-pc"
-hosttype: defined(__ppc__) : "powermac"
+hosttype: defined(i386) : "intel-pc"
+hosttype: defined(ppc) : "powermac"
ostype : : "darwin"
-machtype: defined(__i386__) : "i386"
-machtype: defined(__ppc__) : "powerpc"
+machtype: defined(i386) : "i386"
+machtype: defined(ppc) : "powerpc"
enddef :
newdef : defined(sony_news)
-comment : Sony NEWS 800 or 1700 workstation
+comment : Sony NEWS 800 or 1700 workstation
vendor : : "sony"
hosttype: defined(mips) : "news_mips"
-hosttype: defined(mc68020) || defined(__mc68020__) : "news_m68k"
+hosttype: defined(mc68020) : "news_m68k"
ostype : : "News"
-machtype: defined(mc68020) || defined(__mc68020__) : "m68k"
+machtype: defined(mc68020) : "m68k"
machtype: defined(M_mipsel) : "mipsel"
machtype: defined(M_mipseb) : "mipseb"
enddef :
newdef : defined(sgi)
-comment : Silicon Graphics
+comment : Silicon Graphics
vendor : : "sgi"
hosttype: defined(M_mipsel) : "iris4d"
hosttype: defined(M_mipseb) : "iris4d"
-hosttype: defined(mc68000) : "iris3d"
+hosttype: defined(mc68000) : "iris3d"
ostype : : "irix"
machtype: defined(M_mipsel) : "mipsel"
machtype: defined(M_mipseb) : "mipseb"
-machtype: defined(mc68000) : "mc68000"
+machtype: defined(mc68000) : "mc68000"
enddef :
newdef : defined(ultrix) || defined(__ultrix)
-comment : Digital's Ultrix
+comment : Digital's Ultrix
vendor : : "dec"
hosttype: defined(M_mipsel) : "decstation"
hosttype: defined(M_mipseb) : "decmips"
-hosttype: defined(vax) || defined(__vax) : "vax"
-hosttype: defined(__vax__) : "vax"
+hosttype: defined(vax) : "vax"
ostype : : "ultrix"
machtype: defined(M_mipsel) : "mipsel"
machtype: defined(M_mipseb) : "mipseb"
-machtype: defined(vax) || defined (__vax) : "vax"
-hosttype: defined(__vax__) : "vax"
+machtype: defined(vax) : "vax"
enddef :
newdef : defined(MIPS)
-comment : Mips OS
+comment : Mips OS
vendor : : "mips"
-hosttype: defined(M_mipsel) : "mips"
+hosttype: defined(M_mipsel) : "mips"
hosttype: defined(M_mipseb) : "mips"
ostype : : "mips"
machtype: defined(M_mipsel) : "mipsel"
@@ -811,30 +880,30 @@ enddef :
newdef : defined(DECOSF1)
-comment : Digital's alpha running osf1
+comment : Digital's alpha running osf1
vendor : : "dec"
ostype : : "osf1"
-hosttype: defined(__alpha) : "alpha"
-machtype: defined(__alpha) : "alpha"
+hosttype: defined(alpha) : "alpha"
+machtype: defined(alpha) : "alpha"
enddef :
newdef : defined(Lynx)
-comment : Lynx OS 2.1
+comment : Lynx OS 2.1
vendor : : "Lynx"
hosttype: defined(M_mipsel) : "lynxos-mips"
hosttype: defined(M_mipseb) : "lynxos-mips"
hosttype: defined(M_i386) : "lynxos-i386"
-hosttype: defined(i860) || defined(__i860__) : "lynxos-i860"
+hosttype: defined(i860) : "lynxos-i860"
hosttype: defined(m68k) : "lynxos-m68k"
hosttype: defined(m88k) : "lynxos-m88k"
hosttype: defined(sparc) : "lynxos-sparc"
-hosttype: : "lynxos-unknown"
+hosttype: : "lynxos-unknown"
ostype : : "LynxOS"
machtype: defined(M_mipsel) : "mipsel"
machtype: defined(M_mipseb) : "mipseb"
machtype: defined(M_i386) : "i386"
-machtype: defined(i860) || defined(__i860__) : "i860"
+machtype: defined(i860) : "i860"
machtype: defined(m68k) : "m68k"
machtype: defined(m88k) : "m88k"
machtype: defined(sparc) : "sparc"
@@ -842,24 +911,24 @@ enddef :
newdef : defined(masscomp)
-comment : Masscomp
+comment : Masscomp
vendor : : "masscomp"
hosttype: : "masscomp"
ostype : : "masscomp"
enddef :
newdef : defined(__MACHTEN__)
-comment : Machintosh
+comment : Machintosh
vendor : : "Tenon"
hosttype: : "Macintosh"
-ostype : : "MachTen"
+ostype : : "MachTen"
machtype: : "Macintosh"
enddef :
newdef : defined(GOULD_NP1)
-comment : Gould
+comment : Gould
vendor : : "gould"
hosttype: : "gould_np1"
machtype: : "gould"
@@ -867,7 +936,7 @@ enddef :
newdef : defined(MULTIFLOW)
-comment : Multiflow running 4.3BSD
+comment : Multiflow running 4.3BSD
vendor : : "multiflow"
hosttype: : "multiflow"
machtype: : "multiflow"
@@ -876,24 +945,24 @@ enddef :
newdef : defined(SXA)
-comment : PFU/Fujitsu A-xx computer
+comment : PFU/Fujitsu A-xx computer
vendor : : "sxa"
hosttype: : "pfa50"
ostype : defined(_BSDX_) : "e60-bsdx"
-ostype : : "e60"
+ostype : : "e60"
machtype: : "pfa50"
enddef :
newdef : defined(titan)
-comment : (St)Ardent Titan
+comment : (St)Ardent Titan
vendor : : "ardent"
hosttype: : "titan"
enddef :
newdef : defined(stellar)
-comment : Stellar
+comment : Stellar
vendor : : "stellar"
hosttype: : "stellar"
ostype : : "stellix"
@@ -901,8 +970,8 @@ enddef :
newdef : defined(atari)
-comment : Atari TT running SVR4. This machine was never
-comment : commercially available.
+comment : Atari TT running SVR4. This machine was never
+comment : commercially available.
vendor : : "atari"
hosttype: : "atari"
ostype : : "asv"
@@ -910,21 +979,21 @@ enddef :
newdef : defined(OPUS)
-comment : ???
+comment : ???
vendor : : "opus"
hosttype: : "opus"
enddef :
newdef : defined(eta10)
-comment : ETA running SVR3
+comment : ETA running SVR3
vendor : : "eta"
hosttype: : "eta10"
enddef :
newdef : defined(hk68)
-comment : Heurikon HK68 running Uniplus+ 5.0
+comment : Heurikon HK68 running Uniplus+ 5.0
vendor : : "heurikon"
hosttype: : "hk68"
ostype : : "uniplus"
@@ -932,7 +1001,7 @@ enddef :
newdef : defined(NDIX)
-comment : Norsk Data ND 500/5000 running Ndix
+comment : Norsk Data ND 500/5000 running Ndix
vendor : : "norsk"
hosttype: : "nd500"
ostype : : "ndix"
@@ -940,7 +1009,7 @@ enddef :
newdef : defined(AMIGA)
-comment : Amiga running AmigaOS+GG
+comment : Amiga running AmigaOS+GG
vendor : : "commodore"
hosttype: : "amiga"
ostype : : "AmigaOS"
@@ -949,8 +1018,8 @@ enddef :
newdef : defined(uts)
-comment : Amdahl running uts 2.1
-vendor : : "amdahl"
+comment : Amdahl running uts 2.1
+vendor : : "amdahl"
hosttype: : "amdahl"
ostype : : "uts"
machtype: : "amdahl"
@@ -958,55 +1027,55 @@ enddef :
newdef : defined(UTek)
-comment : Tektronix 4300 running UTek (BSD 4.2 / 68020 based)
+comment : Tektronix 4300 running UTek (BSD 4.2 / 68020 based)
vendor : : "tektronix"
-hosttype: : "tek4300"
+hosttype: : "tek4300"
enddef :
newdef : defined(UTekV)
-comment : Tektronix XD88/10 running UTekV 3.2e (SVR3/88100 based)
+comment : Tektronix XD88/10 running UTekV 3.2e (SVR3/88100 based)
vendor : : "tektronix"
-hosttype: : "tekXD88"
+hosttype: : "tekXD88"
enddef :
newdef : defined(__DGUX__)
-comment : Data-General AViiON running DGUX
+comment : Data-General AViiON running DGUX
hosttype: : "aviion"
ostype : : "dgux"
vendor : : "dg"
-machtype: defined(__m88k__) : "m88k"
-machtype: defined(__i386__) : "pentium"
+machtype: defined(m88k) : "m88k"
+machtype: defined(i386) : "pentium"
enddef :
newdef : defined(sysV68)
-comment : Motorola MPC running System V/68 R32V2 (SVR3/68020 based)
+comment : Motorola MPC running System V/68 R32V2 (SVR3/68020 based)
vendor : : "motorola"
-hosttype: : "sysV68"
+hosttype: : "sysV68"
machtype: : "m68k"
enddef :
newdef : defined(supermax)
-comment : DDE Supermax running System V/68 R3 (SVR3/68020 based)
+comment : DDE Supermax running System V/68 R3 (SVR3/68020 based)
vendor : : "supermax"
-hosttype: : "supermax"
+hosttype: : "supermax"
machtype: : "m68k"
enddef :
newdef : defined(sysV88)
-comment : Motorola MPC running System V/88 R32V2 (SVR3/88100 based)
+comment : Motorola MPC running System V/88 R32V2 (SVR3/88100 based)
vendor : : "motorola"
-hosttype: : "sysV88"
+hosttype: : "sysV88"
machtype: : "m88k"
enddef :
newdef : defined(__clipper__)
-comment : Clipper Chipset (Intergraph)
+comment : Clipper Chipset (Intergraph)
vendor : : "intergraph"
hosttype: : "clipper"
machtype: : "clipper"
@@ -1017,7 +1086,7 @@ ostype : : "qnx"
enddef :
newdef : (defined(SNI) || defined(sinix)) && !defined(_OSD_POSIX)
-comment : Fujitsu Siemens Computers (former "Siemens Nixdorf Informationssysteme"): SINIX aka. ReliantUNIX, a SVR4 derivative
+comment : Fujitsu Siemens Computers (former "Siemens Nixdorf Informationssysteme"): SINIX aka. ReliantUNIX, a SVR4 derivative
vendor : : "fsc"
hosttype: defined(M_intel) : "wx200i"
hosttype: defined(MIPSEB) : "rm400"
@@ -1031,7 +1100,7 @@ machtype: : "mips"
enddef :
newdef : defined(_OSD_POSIX)
-comment : Fujitsu Siemens Computers (former "Siemens Nixdorf Informationssysteme"): BS2000 POSIX (mainframe, EBCDIC)
+comment : Fujitsu Siemens Computers (former "Siemens Nixdorf Informationssysteme"): BS2000 POSIX (mainframe, EBCDIC)
vendor : : "fsc"
hosttype: : "bs2000"
ostype : : "osdposix"
@@ -1042,31 +1111,31 @@ machtype: : "bs2000"
enddef :
newdef : defined(__MVS__)
-comment : ibm uss s/390 (mainframe, EBCDIC)
+comment : ibm uss s/390 (mainframe, EBCDIC)
vendor : : "ibm"
-hosttype: : "s390"
-ostype : : "os390"
+hosttype: : "s390"
+ostype : : "os390"
machtype: : "s390"
enddef :
newdef : defined(_SX)
comment : NEC Corporation (SX-4)
-vendor : : "nec"
+vendor : : "nec"
ostype : : "superux"
hosttype: : "sx4"
machtype: : "sx4"
enddef :
-newdef : !defined(SOLARIS2) && (SYSVREL == 4)
+newdef : !defined(SOLARIS2) && (SYSVREL == 4)
comment : Unix System V Release 4.0
-vendor : defined(DELL) : "dell"
+vendor : defined(DELL) : "dell"
hosttype: defined(M_i386) : "i386"
-ostype : : "svr4"
+ostype : : "svr4"
machtype: defined(M_i386) : "i386"
enddef :
newdef : defined(__uxp__) || defined(__uxps__)
-comment : FUJITSU DS/90 7000
+comment : FUJITSU DS/90 7000
vendor : : "fujitsu"
hosttype: : "ds90"
ostype : : "sysv4"
@@ -1074,27 +1143,29 @@ machtype: : "sparc"
enddef :
newdef : defined(__CYGWIN__)
-comment : Cygwin
-hosttype: : "i386-cygwin"
-ostype : : "cygwin"
+comment : Cygwin
+vendor : : "intel"
+hosttype: : gethost()
+ostype : : getostype()
+machtype: : getmach()
enddef :
-newdef : defined(_UWIN)
+newdef : defined(_UWIN)
comment : AT&T Research Unix for Windows
-vendor : : "att"
-hosttype: : "win32.i386"
-machtype: : "i386"
+vendor : : "att"
+hosttype: : "win32.i386"
+machtype: : "i386"
enddef :
-newdef : defined(mc68000) || defined(__mc68000__) || defined(mc68k32) || defined(m68k) || defined(mc68010) || defined(mc68020)
+newdef : defined(mc68000) || defined(mc68k32) || defined(m68k) || defined(mc68010) || defined(mc68020)
hosttype: : "m68k"
vendor : defined(m68k) : "motorola"
machtype: : "m68k"
enddef :
-newdef : defined(m88k) || defined(__m88k__)
+newdef : defined(m88k)
hosttype: : "m88k"
machtype: : "m88k"
enddef :
@@ -1104,20 +1175,20 @@ newdef : defined(M_intel)
hosttype: defined(M_i586) : "i586"
hosttype: defined(M_i486) : "i486"
hosttype: defined(M_i386) : "i386"
-vendor : : "intel"
+vendor : : "intel"
machtype: defined(M_i586) : "i586"
machtype: defined(M_i486) : "i486"
machtype: defined(M_i386) : "i386"
enddef :
-newdef : defined(sparc) || defined(__sparc__)
+newdef : defined(sparc)
hosttype: : "sparc"
machtype: : "sparc"
enddef :
-newdef : defined(i860) || defined(__i860__)
+newdef : defined(i860)
hosttype: : "i860"
machtype: : "i860"
enddef :
@@ -1136,26 +1207,26 @@ enddef :
newdef : SYSVREL == 1
-ostype : : "svr1"
+ostype : : "svr1"
enddef :
newdef : SYSVREL == 2
-ostype : : "svr2"
+ostype : : "svr2"
enddef :
newdef : SYSVREL == 3
-ostype : : "svr3"
+ostype : : "svr3"
enddef :
newdef : SYSVREL == 4
-ostype : : "svr4"
+ostype : : "svr4"
enddef :
-newcode :
+newcode :
#ifndef _hosttype_
hosttype = "unknown";
#endif
@@ -1169,8 +1240,8 @@ newcode :
machtype = "unknown";
#endif
tsetenv(STRHOSTTYPE, str2short(hosttype));
- tsetenv(STRVENDOR, str2short(vendor));
- tsetenv(STROSTYPE, str2short(ostype));
+ tsetenv(STRVENDOR, str2short(vendor));
+ tsetenv(STROSTYPE, str2short(ostype));
tsetenv(STRMACHTYPE, str2short(machtype));
} /* end setmachine */
-endcode :
+endcode :
diff --git a/install-sh b/install-sh
index 6ebe46de6cf4..6781b987bdbc 100755
--- a/install-sh
+++ b/install-sh
@@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2004-12-17.09
+scriptversion=2009-04-28.21; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@@ -39,38 +39,68 @@ scriptversion=2004-12-17.09
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
-# from scratch. It can only install one file at a time, a restriction
-# shared with many OS's install programs.
+# from scratch.
+
+nl='
+'
+IFS=" "" $nl"
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
+doit=${DOITPROG-}
+if test -z "$doit"; then
+ doit_exec=exec
+else
+ doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+ test "$posix_glob" != "?" || {
+ if (set -f) 2>/dev/null; then
+ posix_glob=
+ else
+ posix_glob=:
+ fi
+ }
+'
-# put in absolute paths if you don't have them in your path; or use env. vars.
+posix_mkdir=
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
+# Desired mode of installed file.
+mode=0755
-chmodcmd="$chmodprog 0755"
-chowncmd=
chgrpcmd=
-stripcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
rmcmd="$rmprog -f"
-mvcmd="$mvprog"
+stripcmd=
+
src=
dst=
dir_arg=
-dstarg=
+dst_arg=
+
+copy_on_change=false
no_target_directory=
-usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
or: $0 [OPTION]... SRCFILES... DIRECTORY
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
or: $0 [OPTION]... -d DIRECTORIES...
@@ -80,81 +110,86 @@ In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
In the 4th, create DIRECTORIES.
Options:
--c (ignored)
--d create directories instead of installing files.
--g GROUP $chgrpprog installed files to GROUP.
--m MODE $chmodprog installed files to MODE.
--o USER $chownprog installed files to USER.
--s $stripprog installed files.
--t DIRECTORY install into DIRECTORY.
--T report an error if DSTFILE is a directory.
---help display this help and exit.
---version display version info and exit.
+ --help display this help and exit.
+ --version display version info and exit.
+
+ -c (ignored)
+ -C install only if different (preserve the last data modification time)
+ -d create directories instead of installing files.
+ -g GROUP $chgrpprog installed files to GROUP.
+ -m MODE $chmodprog installed files to MODE.
+ -o USER $chownprog installed files to USER.
+ -s $stripprog installed files.
+ -t DIRECTORY install into DIRECTORY.
+ -T report an error if DSTFILE is a directory.
Environment variables override the default commands:
- CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+ RMPROG STRIPPROG
"
-while test -n "$1"; do
+while test $# -ne 0; do
case $1 in
- -c) shift
- continue;;
+ -c) ;;
- -d) dir_arg=true
- shift
- continue;;
+ -C) copy_on_change=true;;
+
+ -d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
- shift
- shift
- continue;;
+ shift;;
- --help) echo "$usage"; exit 0;;
+ --help) echo "$usage"; exit $?;;
- -m) chmodcmd="$chmodprog $2"
- shift
- shift
- continue;;
+ -m) mode=$2
+ case $mode in
+ *' '* | *' '* | *'
+'* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
-o) chowncmd="$chownprog $2"
- shift
- shift
- continue;;
-
- -s) stripcmd=$stripprog
- shift
- continue;;
-
- -t) dstarg=$2
- shift
- shift
- continue;;
-
- -T) no_target_directory=true
- shift
- continue;;
-
- --version) echo "$0 $scriptversion"; exit 0;;
-
- *) # When -d is used, all remaining arguments are directories to create.
- # When -t is used, the destination is already specified.
- test -n "$dir_arg$dstarg" && break
- # Otherwise, the last argument is the destination. Remove it from $@.
- for arg
- do
- if test -n "$dstarg"; then
- # $@ is not empty: it contains at least $arg.
- set fnord "$@" "$dstarg"
- shift # fnord
- fi
- shift # arg
- dstarg=$arg
- done
+ shift;;
+
+ -s) stripcmd=$stripprog;;
+
+ -t) dst_arg=$2
+ shift;;
+
+ -T) no_target_directory=true;;
+
+ --version) echo "$0 $scriptversion"; exit $?;;
+
+ --) shift
break;;
+
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
+
+ *) break;;
esac
+ shift
done
-if test -z "$1"; then
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+ # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dst_arg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dst_arg"
+ shift # fnord
+ fi
+ shift # arg
+ dst_arg=$arg
+ done
+fi
+
+if test $# -eq 0; then
if test -z "$dir_arg"; then
echo "$0: no input file specified." >&2
exit 1
@@ -164,24 +199,47 @@ if test -z "$1"; then
exit 0
fi
+if test -z "$dir_arg"; then
+ trap '(exit $?); exit' 1 2 13 15
+
+ # Set umask so as not to create temps with too-generous modes.
+ # However, 'strip' requires both read and write access to temps.
+ case $mode in
+ # Optimize common cases.
+ *644) cp_umask=133;;
+ *755) cp_umask=22;;
+
+ *[0-7])
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw='% 200'
+ fi
+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+ *)
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw=,u+rw
+ fi
+ cp_umask=$mode$u_plus_rw;;
+ esac
+fi
+
for src
do
# Protect names starting with `-'.
case $src in
- -*) src=./$src ;;
+ -*) src=./$src;;
esac
if test -n "$dir_arg"; then
dst=$src
- src=
-
- if test -d "$dst"; then
- mkdircmd=:
- chmodcmd=
- else
- mkdircmd=$mkdirprog
- fi
+ dstdir=$dst
+ test -d "$dstdir"
+ dstdir_status=$?
else
+
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
@@ -190,71 +248,199 @@ do
exit 1
fi
- if test -z "$dstarg"; then
+ if test -z "$dst_arg"; then
echo "$0: no destination specified." >&2
exit 1
fi
- dst=$dstarg
+ dst=$dst_arg
# Protect names starting with `-'.
case $dst in
- -*) dst=./$dst ;;
+ -*) dst=./$dst;;
esac
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
if test -n "$no_target_directory"; then
- echo "$0: $dstarg: Is a directory" >&2
+ echo "$0: $dst_arg: Is a directory" >&2
exit 1
fi
- dst=$dst/`basename "$src"`
+ dstdir=$dst
+ dst=$dstdir/`basename "$src"`
+ dstdir_status=0
+ else
+ # Prefer dirname, but fall back on a substitute if dirname fails.
+ dstdir=`
+ (dirname "$dst") 2>/dev/null ||
+ expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$dst" : 'X\(//\)[^/]' \| \
+ X"$dst" : 'X\(//\)$' \| \
+ X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$dst" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'
+ `
+
+ test -d "$dstdir"
+ dstdir_status=$?
fi
fi
- # This sed command emulates the dirname command.
- dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
+ obsolete_mkdir_used=false
+
+ if test $dstdir_status != 0; then
+ case $posix_mkdir in
+ '')
+ # Create intermediate dirs using mode 755 as modified by the umask.
+ # This is like FreeBSD 'install' as of 1997-10-28.
+ umask=`umask`
+ case $stripcmd.$umask in
+ # Optimize common cases.
+ *[2367][2367]) mkdir_umask=$umask;;
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+ *[0-7])
+ mkdir_umask=`expr $umask + 22 \
+ - $umask % 100 % 40 + $umask % 20 \
+ - $umask % 10 % 4 + $umask % 2
+ `;;
+ *) mkdir_umask=$umask,go-w;;
+ esac
+
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
+
+ posix_mkdir=false
+ case $umask in
+ *[123567][0-7][0-7])
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+ ;;
+ *)
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+ if (umask $mkdir_umask &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writeable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ ls_ld_tmpdir=`ls -ld "$tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/d" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+ fi
+ trap '' 0;;
+ esac;;
+ esac
- # Make sure that the destination directory exists.
+ if
+ $posix_mkdir && (
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ )
+ then :
+ else
- # Skip lots of stat calls in the usual case.
- if test ! -d "$dstdir"; then
- defaultIFS='
- '
- IFS="${IFS-$defaultIFS}"
+ # The umask is ridiculous, or mkdir does not conform to POSIX,
+ # or it failed possibly due to a race condition. Create the
+ # directory the slow way, step by step, checking for races as we go.
- oIFS=$IFS
- # Some sh's can't handle IFS=/ for some reason.
- IFS='%'
- set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
- shift
- IFS=$oIFS
+ case $dstdir in
+ /*) prefix='/';;
+ -*) prefix='./';;
+ *) prefix='';;
+ esac
- pathcomp=
+ eval "$initialize_posix_glob"
- while test $# -ne 0 ; do
- pathcomp=$pathcomp$1
+ oIFS=$IFS
+ IFS=/
+ $posix_glob set -f
+ set fnord $dstdir
shift
- if test ! -d "$pathcomp"; then
- $mkdirprog "$pathcomp"
- # mkdir can fail with a `File exist' error in case several
- # install-sh are creating the directory concurrently. This
- # is OK.
- test -d "$pathcomp" || exit
+ $posix_glob set +f
+ IFS=$oIFS
+
+ prefixes=
+
+ for d
+ do
+ test -z "$d" && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask=$mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
+ done
+
+ if test -n "$prefixes"; then
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
fi
- pathcomp=$pathcomp/
- done
+ fi
fi
if test -n "$dir_arg"; then
- $doit $mkdircmd "$dst" \
- && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
- && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
- && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
- && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
-
+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
else
- dstfile=`basename "$dst"`
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
@@ -262,10 +448,9 @@ do
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
- trap '(exit $?); exit' 1 2 13 15
# Copy the file name to the temp name.
- $doit $cpprog "$src" "$dsttmp" &&
+ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
@@ -273,51 +458,63 @@ do
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $cpprog $src $dsttmp" command.
#
- { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
- && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
- && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
- && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
-
- # Now rename the file to the real destination.
- { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
- || {
- # The rename failed, perhaps because mv can't rename something else
- # to itself, or perhaps because mv is so ancient that it does not
- # support -f.
-
- # Now remove or move aside any old file at destination location.
- # We try this two ways since rm can't unlink itself on some
- # systems and the destination file might be busy for other
- # reasons. In this case, the final cleanup might fail but the new
- # file should still install successfully.
- {
- if test -f "$dstdir/$dstfile"; then
- $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
- || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
- || {
- echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
- (exit 1); exit 1
- }
- else
- :
- fi
- } &&
-
- # Now rename the file to the real destination.
- $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
- }
- }
- fi || { (exit 1); exit 1; }
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+ { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+ { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+ # If -C, don't bother to copy if it wouldn't change the file.
+ if $copy_on_change &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+
+ eval "$initialize_posix_glob" &&
+ $posix_glob set -f &&
+ set X $old && old=:$2:$4:$5:$6 &&
+ set X $new && new=:$2:$4:$5:$6 &&
+ $posix_glob set +f &&
+
+ test "$old" = "$new" &&
+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+ then
+ rm -f "$dsttmp"
+ else
+ # Rename the file to the real destination.
+ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+ {
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd -f "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
+ }
+ fi || exit 1
+
+ trap '' 0
+ fi
done
-# The final little trick to "correctly" pass the exit status to the exit trap.
-{
- (exit 0); exit 0
-}
-
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
# End:
diff --git a/nls/C/charset b/nls/C/charset
index f27227878587..81f1b6669c79 100644
--- a/nls/C/charset
+++ b/nls/C/charset
@@ -1,3 +1,3 @@
-$ codeset=US-ASCII
+$ codeset=UTF-8
$set 255
-1 US-ASCII
+1 UTF-8
diff --git a/nls/C/set19 b/nls/C/set19
index 1f1033631101..20e95d661275 100644
--- a/nls/C/set19
+++ b/nls/C/set19
@@ -1,4 +1,4 @@
-$ $tcsh: set19,v 1.4 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set19,v 1.6 2011/02/25 23:58:07 christos Exp $
$ tc.alloc.c
$set 19
1 nbytes=%d: Out of memory\n
@@ -9,7 +9,15 @@ $set 19
6 free(%lx) bad range check.
7 free(%lx) bad block index.
8 %s current memory allocation:\nfree:\t
-9 \nused:\t
+9 used
10 \n\tTotal in use: %d, total free: %d\n
11 \tAllocated memory from 0x%lx to 0x%lx. Real top at 0x%lx\n
12 Allocated memory from 0x%lx to 0x%lx (%ld).\n
+13 %s current memory allocation:\n
+14 Total space allocated from system: %d\n
+15 Number of non-inuse chunks: %d\n
+16 Number of mmapped regions: %d\n
+17 Total space in mmapped regions: %d\n
+18 Total allocated space: %d\n
+19 Total non-inuse space: %d\n
+20 Top-most, releasable space: %d\n
diff --git a/nls/Makefile b/nls/Makefile
deleted file mode 100644
index 1bcb436c5de8..000000000000
--- a/nls/Makefile
+++ /dev/null
@@ -1,24 +0,0 @@
-# $tcsh: Makefile,v 1.14 2006/03/02 18:46:45 christos Exp $
-
-SUBDIRS= C et finnish french german greek italian ja pl russian \
- spanish ukrainian
-#GENCAT= gencat --new
-CHARSET= charset
-GENCAT= gencat
-
-catalogs:
- @for i in ${SUBDIRS} ; \
- do \
- echo "$$i"; \
- cd $$i; \
- cat ${CHARSET} set[0-9] set[0-9][0-9] > ../../tcsh.$$i.m; \
- cd ..; \
- ${GENCAT} ../tcsh.$$i.cat ../tcsh.$$i.m; \
- done
-
-clean:
- @for i in ${SUBDIRS} ; \
- do \
- rm -f $$i/*~; \
- rm -f ../tcsh.$$i.cat ../tcsh.$$i.m; \
- done
diff --git a/nls/Makefile.in b/nls/Makefile.in
new file mode 100644
index 000000000000..fb8f0532a7b0
--- /dev/null
+++ b/nls/Makefile.in
@@ -0,0 +1,119 @@
+# $tcsh: Makefile.in,v 1.13 2012/01/05 16:54:25 christos Exp $
+
+CATALOGS= C.cat et.cat finnish.cat french.cat german.cat greek.cat \
+ italian.cat ja.cat pl.cat russian.cat spanish.cat ukrainian.cat
+LOCALES= ${CATALOGS:.cat=}
+GENCAT= @GENCAT@
+INSTALL= @INSTALL@
+RM?= rm -f
+VPATH=@srcdir@
+srcdir=@srcdir@
+
+prefix=@prefix@
+datarootdir=@datarootdir@
+localedir=${DESTDIR}@localedir@
+CATGEN= ${srcdir}/catgen
+
+all: ${CATALOGS}
+
+INSTALLED+=${localedir}/C/LC_MESSAGES/tcsh.cat
+${localedir}/C/LC_MESSAGES/tcsh.cat: C.cat
+ mkdir -p $(@D)
+ $(INSTALL) $< $@
+
+C.cat: ${srcdir}/C/charset ${srcdir}/C/*set[0-9]*
+ @${CATGEN} $(GENCAT) $@ $^ $>
+
+INSTALLED+=${localedir}/et/LC_MESSAGES/tcsh.cat
+${localedir}/et/LC_MESSAGES/tcsh.cat: et.cat
+ mkdir -p $(@D)
+ $(INSTALL) $< $@
+
+et.cat: ${srcdir}/et/charset ${srcdir}/et/*set[0-9]*
+ @${CATGEN} $(GENCAT) $@ $^ $>
+
+INSTALLED+=${localedir}/fi/LC_MESSAGES/tcsh.cat
+${localedir}/fi/LC_MESSAGES/tcsh.cat: finnish.cat
+ mkdir -p $(@D)
+ $(INSTALL) $< $@
+
+finnish.cat: ${srcdir}/finnish/charset ${srcdir}/finnish/*set[0-9]*
+ @${CATGEN} $(GENCAT) $@ $^ $>
+
+INSTALLED+=${localedir}/fr/LC_MESSAGES/tcsh.cat
+${localedir}/fr/LC_MESSAGES/tcsh.cat: french.cat
+ mkdir -p $(@D)
+ $(INSTALL) $< $@
+
+french.cat: ${srcdir}/french/charset ${srcdir}/french/*set[0-9]*
+ @${CATGEN} $(GENCAT) $@ $^ $>
+
+INSTALLED+=${localedir}/de/LC_MESSAGES/tcsh.cat
+${localedir}/de/LC_MESSAGES/tcsh.cat: german.cat
+ mkdir -p $(@D)
+ $(INSTALL) $< $@
+
+german.cat: ${srcdir}/german/charset ${srcdir}/german/*set[0-9]*
+ @${CATGEN} $(GENCAT) $@ $^ $>
+
+INSTALLED+=${localedir}/gr/LC_MESSAGES/tcsh.cat
+${localedir}/gr/LC_MESSAGES/tcsh.cat: greek.cat
+ mkdir -p $(@D)
+ $(INSTALL) $< $@
+
+greek.cat: ${srcdir}/greek/charset ${srcdir}/greek/*set[0-9]*
+ @${CATGEN} $(GENCAT) $@ $^ $>
+
+INSTALLED+=${localedir}/it/LC_MESSAGES/tcsh.cat
+${localedir}/it/LC_MESSAGES/tcsh.cat: italian.cat
+ mkdir -p $(@D)
+ $(INSTALL) $< $@
+
+italian.cat: ${srcdir}/italian/charset ${srcdir}/italian/*set[0-9]*
+ @${CATGEN} $(GENCAT) $@ $^ $>
+
+INSTALLED+=${localedir}/ja/LC_MESSAGES/tcsh.cat
+${localedir}/ja/LC_MESSAGES/tcsh.cat: ja.cat
+ mkdir -p $(@D)
+ $(INSTALL) $< $@
+
+ja.cat: ${srcdir}/ja/charset ${srcdir}/ja/*set[0-9]*
+ @${CATGEN} $(GENCAT) $@ $^ $>
+
+INSTALLED+=${localedir}/pl/LC_MESSAGES/tcsh.cat
+${localedir}/pl/LC_MESSAGES/tcsh.cat: pl.cat
+ mkdir -p $(@D)
+ $(INSTALL) $< $@
+
+pl.cat: ${srcdir}/pl/charset ${srcdir}/pl/*set[0-9]*
+ @${CATGEN} $(GENCAT) $@ $^ $>
+
+INSTALLED+=${localedir}/ru/LC_MESSAGES/tcsh.cat
+${localedir}/ru/LC_MESSAGES/tcsh.cat: russian.cat
+ mkdir -p $(@D)
+ $(INSTALL) $< $@
+
+russian.cat: ${srcdir}/russian/charset ${srcdir}/russian/*set[0-9]*
+ @${CATGEN} $(GENCAT) $@ $^ $>
+
+INSTALLED+=${localedir}/es/LC_MESSAGES/tcsh.cat
+${localedir}/es/LC_MESSAGES/tcsh.cat: spanish.cat
+ mkdir -p $(@D)
+ $(INSTALL) $< $@
+
+spanish.cat: ${srcdir}/spanish/charset ${srcdir}/spanish/*set[0-9]*
+ @${CATGEN} $(GENCAT) $@ $^ $>
+
+INSTALLED+=${localedir}/ru_UA.koi8u/LC_MESSAGES/tcsh.cat
+${localedir}/ru_UA.koi8u/LC_MESSAGES/tcsh.cat: ukrainian.cat
+ mkdir -p $(@D)
+ $(INSTALL) $< $@
+
+ukrainian.cat: ${srcdir}/ukrainian/charset ${srcdir}/ukrainian/*set[0-9]*
+ @${CATGEN} $(GENCAT) $@ $^ $>
+
+install: $(INSTALLED)
+
+catalogs: all
+clean:
+ $(RM) $(CATALOGS)
diff --git a/nls/catgen b/nls/catgen
new file mode 100755
index 000000000000..ae1614dae934
--- /dev/null
+++ b/nls/catgen
@@ -0,0 +1,12 @@
+#!/bin/sh
+# Wrapper for gencat
+TMP=/tmp/catgen.$$
+trap "rm -f $TMP" 0 1 2 3 15
+
+GENCAT="$1"
+shift
+OUT="$1"
+shift
+cat "$@" > "$TMP"
+echo "$(basename "$OUT" .cat)"
+"${GENCAT}" "$OUT" "$TMP"
diff --git a/nls/et/charset b/nls/et/charset
index 0b13559084f6..81f1b6669c79 100644
--- a/nls/et/charset
+++ b/nls/et/charset
@@ -1,3 +1,3 @@
-$ codeset=ISO-8859-1
+$ codeset=UTF-8
$set 255
-1 ISO-8859-1
+1 UTF-8
diff --git a/nls/et/set1 b/nls/et/set1
index 03864df1905c..23dda3d13e86 100644
--- a/nls/et/set1
+++ b/nls/et/set1
@@ -1,140 +1,140 @@
-$ $tcsh: set1,v 1.3 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set1,v 1.4 2011/02/04 18:19:33 christos Exp $
$ Error messages
$set 1
-1 Süntaksi viga
+1 Süntaksi viga
2 %s ei ole lubatud
-3 Sõna on liiga pikk
+3 Sõna on liiga pikk
4 $< rida on liiga pikk
5 $0 jaoks pole faili
-6 Mittetäielik [] muutja
-7 $ laiendus peab lõppema enne ]
-8 Halb : täiendaja $ (%c)
+6 Mittetäielik [] muutja
+7 $ laiendus peab lõppema enne ]
+8 Halb : täiendaja $ (%c)
9 Viga indeksis
10 Vigane number
-11 Sõnad on otsas
+11 Sõnad on otsas
12 Faili nimi on puudu
-13 Sisemine täiendi viga
-14 Käsku pole
-15 Liiga vähe argumente
+13 Sisemine täiendi viga
+14 Käsku pole
+15 Liiga vähe argumente
16 Liiga palju argumente
17 Seda aliast on liiga ohtlik luua
-18 Tühi if
-19 Ebaõige then
-20 Sõnad pole sulgudes
+18 Tühi if
+19 Ebaõige then
+20 Sõnad pole sulgudes
21 %s ei leita
22 Vigane mask
23 Pole sellist limiiti
24 Argument on liiga suur
-25 Vigane või tundmatu skaleerimis faktor
+25 Vigane või tundmatu skaleerimis faktor
26 Defineerimata muutuja
-27 Kataloogi pinu pole nii sügav
+27 Kataloogi pinu pole nii sügav
28 Vigane signaali number
29 Tundmatu signaal; kill -l annab signaalid
-30 Muutuja nimi peab algama tähega
+30 Muutuja nimi peab algama tähega
31 Muutuja nimi on liiga pikk
-32 Muutuja nimi võib koosneda ainult tähtedest ja numbritest
-33 Sellel käsuinterpretaatoril puudub töökontroll
-34 Avaldises on süntaksi viga
+32 Muutuja nimi võib koosneda ainult tähtedest ja numbritest
+33 Sellel käsuinterpretaatoril puudub töökontroll
+34 Avaldises on süntaksi viga
35 Kodukataloogi pole
36 Kodukataloogi ei saa minna
-37 Vigane tühi käsk
+37 Vigane tühi käsk
38 Omistamisel pole avaldist
39 Tundmatu operaator
40 Arusaamatu
41 %s: Fail on olemas
-42 Võtme -c argumendi lõpus on langkriips
+42 Võtme -c argumendi lõpus on langkriips
43 Katkestatud
-44 Indeks on piiridest väljas
-45 Rea ületäitumine
-46 Sellist tööd pole
+44 Indeks on piiridest väljas
+45 Rea ületäitumine
+46 Sellist tööd pole
47 Terminalilt ei saa
48 Pole while/foreach sees
49 Protsessid on otsas
50 Ei leia
51 Puuduv %c
-52 Ei leia sümbolit %c
-53 Mälu on otsas
+52 Ei leia sümbolit %c
+53 Mälu on otsas
54 Toru ei saa luua
55 %s: %s
56 %s
57 Kasuta: jobs [ -l ]
-58 Argumendid peavad olema tööde või protsesside identifikaatorid
-59 Käesolevat tööd pole
-60 Pole eelmist tööd
-61 Pole mustrile vastavat tööd
-62 Fork süveneb > %d; võibolla `...` tsükkel
-63 Alamshellis pole töökontrolli
-64 Sünkroniseerimise tõrge: Protsessi %d pole
-65 %sTeil on peatatud töid
-66 %sTeil on seisatud töid
+58 Argumendid peavad olema tööde või protsesside identifikaatorid
+59 Käesolevat tööd pole
+60 Pole eelmist tööd
+61 Pole mustrile vastavat tööd
+62 Fork süveneb > %d; võibolla `...` tsükkel
+63 Alamshellis pole töökontrolli
+64 Sünkroniseerimise tõrge: Protsessi %d pole
+65 %sTeil on peatatud töid
+66 %sTeil on seisatud töid
67 Pole teist kataloogi
-68 Kataloogi pinu on tühi
+68 Kataloogi pinu on tühi
69 Halb kataloog
70 kasuta: %s [-%s]%s
-71 -h võtmel puudub operand
+71 -h võtmel puudub operand
72 Pole meldimise shell
73 Nulliga jagamine
-74 Jäägi leidmine nulliga
-75 Vigane skaala; te mõtlesite ehk "%s"?
+74 Jäägi leidmine nulliga
+75 Vigane skaala; te mõtlesite ehk "%s"?
76 Login shelli ei saa peatada (praegu)
77 Tundmatu kasutaja: %s
-78 $home muutujat pole väärtustatud
-79 Kasuta: history [-%s] [# sündmuste number]
-80 $, ! või < pole lubatud kasutada koos $# või $?
+78 $home muutujat pole väärtustatud
+79 Kasuta: history [-%s] [# sündmuste number]
+80 $, ! või < pole lubatud kasutada koos $# või $?
81 Reavahetus muutuja nimes
-82 * pole lubatud kasutada koos $# või $?
-83 $?<number> või $#<number> pole lubatud
+82 * pole lubatud kasutada koos $# või $?
+83 $?<number> või $#<number> pole lubatud
84 Lubamatu muutuja nimi
85 Reavahetus muutuja indeksis
-86 Laiendamise puhvri ületäitumine
-87 Muutuja süntaksi viga
+86 Laiendamise puhvri ületäitumine
+87 Muutuja süntaksi viga
88 Vigane ! kasutamine
89 Eelmist asendust pole
90 Vigane asendamine
91 Eelmist vasakut poolt pole
92 Parem pool on liiga pikk
93 Vigane ! modifikaator: %c
-94 Modifikaator ebaõnnestus
-95 Asenduse puhvri ületäitumine
+94 Modifikaator ebaõnnestus
+95 Asenduse puhvri ületäitumine
96 Vigane ! argumendi valik
97 Pole eelmist otsimist
-98 %s: Sündmust pole
+98 %s: Sündmust pole
99 Liiga palju )
100 Liiga palju (
101 Halvasti paigutatud (
102 Suunamisel pole nime antud
-103 Segane väljundi suunamine
+103 Segane väljundi suunamine
104 << ei saa () vahel kasutada
105 Segane sisendi suunamine
106 Halvasti paigutatud ()
-107 Aliaste tsükkel
+107 Aliaste tsükkel
108 $watch muutuja pole seatud
-109 Plaanitud sündmuseid pole
-110 Kasuta: sched -<sündmuse#>.\nKasuta: sched [+]hh:mm <käsk>
-111 Niipalju sündmuseid pole
-112 Pole käsku, mida käivitada
-113 Vigane sündmuseaeg
-114 Suhteline aeg ei ole am/pm notatsiooniga kooskõlas
-115 Termcap sõne on liiga pikk
+109 Plaanitud sündmuseid pole
+110 Kasuta: sched -<sündmuse#>.\nKasuta: sched [+]hh:mm <käsk>
+111 Niipalju sündmuseid pole
+112 Pole käsku, mida käivitada
+113 Vigane sündmuseaeg
+114 Suhteline aeg ei ole am/pm notatsiooniga kooskõlas
+115 Termcap sõne on liiga pikk
116 Kasuta: settc %s [yes|no]
117 Tundmatu omadus `%s'
118 Tundmatu termcap parameeter `%%%c'
119 `%s' jaoks on liiga palju argumente (%d)
-120 `%s' nõuab %d argumenti
+120 `%s' nõuab %d argumenti
121 Kasuta: echotc [-v|-s] [<omadus> [<argumendid>]]
122 %s: %s. Vale arhitektuur
-123 !# Ajaloo tsükkel
-124 Vigane failipäring
-125 Valija ületäitumine
-126 Tundmatu võti: `-%s'\nKasuta: %s [ -bcdefilmnqstvVxX -Dnimi[=väärtus] ] [ argument ... ]
-127 Tundmatu võti: `-%s'\nKasuta: %s [ -bcdefFilmnqstvVxX ] [ argument ... ]
-128 Tundmatu võti: `-%s'\nKasuta: %s [ -bcdefilmnqstvVxX ] [ argument ... ]
-129 \nVigane täiendus: "%s"
+123 !# Ajaloo tsükkel
+124 Vigane failipäring
+125 Valija ületäitumine
+126 Tundmatu võti: `-%s'\nKasuta: %s [ -bcdefilmnqstvVxX -Dnimi[=väärtus] ] [ argument ... ]
+127 Tundmatu võti: `-%s'\nKasuta: %s [ -bcdefFilmnqstvVxX ] [ argument ... ]
+128 Tundmatu võti: `-%s'\nKasuta: %s [ -bcdefilmnqstvVxX ] [ argument ... ]
+129 \nVigane täiendus: "%s"
130 \nVigane %s: '%c'
-131 \nEraldaja '%c' puudub pärast %s "%s"
-132 \nMittetäielik %s: "%s"
-133 -m võtmel pole operandi
+131 \nEraldaja '%c' puudub pärast %s "%s"
+132 \nMittetäielik %s: "%s"
+133 -m võtmel pole operandi
134 Kasuta: unlimit [-fh] [limiidid]
135 $%S on ainult lugemiseks
-136 Pole sellist tööd
+136 Pole sellist tööd
137 Tundmatu colorls muutuja `%c%c'
diff --git a/nls/et/set10 b/nls/et/set10
index d330cdb7a6c1..c71312025a8d 100644
--- a/nls/et/set10
+++ b/nls/et/set10
@@ -1,8 +1,8 @@
-$ $tcsh: set10,v 1.2 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set10,v 1.3 2011/02/04 18:19:33 christos Exp $
$ ma.setp.c
$set 10
-1 setpath: vigane käsk '%s'.\n
-2 setpath: käsule '%s' pole piisavalt argumente.\n
-3 setpath: teel '%s' pole väärtust\n
+1 setpath: vigane käsk '%s'.\n
+2 setpath: käsule '%s' pole piisavalt argumente.\n
+3 setpath: teel '%s' pole väärtust\n
4 setpath: %s ei leitud %s's\n
5 setpath: %d ei ole korrektne positsioon %s's\n
diff --git a/nls/et/set11 b/nls/et/set11
index ca851616a55e..f12f10308e9b 100644
--- a/nls/et/set11
+++ b/nls/et/set11
@@ -1,8 +1,8 @@
-$ $tcsh: set11,v 1.2 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set11,v 1.3 2011/02/04 18:19:33 christos Exp $
$ sh.c
$set 11
-1 Hoiatus: tty (%s) pole kättesaadav.\n
-2 Seega ei saa kasutada tööde kontrolli.\n
+1 Hoiatus: tty (%s) pole kättesaadav.\n
+2 Seega ei saa kasutada tööde kontrolli.\n
3 Teil on %d kirja.\n
4 Teil on %d kirja failis %s.\n
5 Teil on %skiri.\n
diff --git a/nls/et/set13 b/nls/et/set13
index a71a9afd311f..040d2057ef23 100644
--- a/nls/et/set13
+++ b/nls/et/set13
@@ -1,13 +1,13 @@
-$ $tcsh: set13,v 1.2 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set13,v 1.3 2011/02/04 18:19:33 christos Exp $
$ sh.exec.c
$set 13
1 hash=%-4d dir=%-2d prog=%s\n
2 %d hash buckets of %d bits each\n
3 debug mask = 0x%08x\n
4 %d hits, %d misses, %d%%\n
-5 %S: käsuinterpretaatori sisekäsk.\n
-6 %S: Käsku pole.\n
-7 where: / käsunimes on mõttetu\n
+5 %S: käsuinterpretaatori sisekäsk.\n
+6 %S: Käsku pole.\n
+7 where: / käsunimes on mõttetu\n
8 %S on tegelikult
-9 %S on sisekäsk\n
+9 %S on sisekäsk\n
10 hash miss:
diff --git a/nls/et/set14 b/nls/et/set14
index 95b36c5bc9b7..22c09435675d 100644
--- a/nls/et/set14
+++ b/nls/et/set14
@@ -1,6 +1,6 @@
-$ $tcsh: set14,v 1.2 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set14,v 1.3 2011/02/04 18:19:33 christos Exp $
$ sh.file.c
$set 14
-1 \nÄhh!! Liiga palju %s!!\n
+1 \nÄhh!! Liiga palju %s!!\n
2 nimesid paroolifailis
3 faile
diff --git a/nls/et/set15 b/nls/et/set15
index 4f5561f61975..6268e8d9526f 100644
--- a/nls/et/set15
+++ b/nls/et/set15
@@ -1,7 +1,7 @@
-$ $tcsh: set15,v 1.2 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set15,v 1.3 2011/02/04 18:19:33 christos Exp $
$ sh.func.c
$set 15
-1 %s: %s: Ei õnnestu %s%s piirangut\n
+1 %s: %s: Ei õnnestu %s%s piirangut\n
2 eemaldada
3 seada
-4 \040kõva
+4 \040kõva
diff --git a/nls/et/set16 b/nls/et/set16
index 15965680e3fd..93f8f32bcb90 100644
--- a/nls/et/set16
+++ b/nls/et/set16
@@ -1,9 +1,9 @@
-$ $tcsh: set16,v 1.2 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set16,v 1.3 2011/02/04 18:19:33 christos Exp $
$ sh.lex.c
$set 16
1 Seadsin tty pgrp numbrilt %d numbrile %d\n
-2 \nKasuta töö lõpetamiseks käsku "logout".\n
-3 \nKasuta "exit" käsku %s katkestamiseks.\n
+2 \nKasuta töö lõpetamiseks käsku "logout".\n
+3 \nKasuta "exit" käsku %s katkestamiseks.\n
4 seek to eval %x %x\n
5 seek to alias %x %x\n
6 seek to file %x\n
diff --git a/nls/et/set17 b/nls/et/set17
index e154d7b3b997..b051672892cc 100644
--- a/nls/et/set17
+++ b/nls/et/set17
@@ -1,17 +1,17 @@
-$ $tcsh: set17,v 1.3 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set17,v 1.4 2011/02/04 18:19:33 christos Exp $
$ sh.proc.c
$set 17
-1 BUG: ootan taustatöö järel!\n
+1 BUG: ootan taustatöö järel!\n
2 Exit %d\n
3 BUG: process flushed twice
-4 Töötab
+4 Töötab
5 Signaal
6 Exit %-25d
7 Valmis
8 BUG: staatus=%-9o
-9 \040(mälupilt päästetud)
-10 \040(töökataloog:
-11 (töökataloog nüüd:
+9 \040(mälupilt päästetud)
+10 \040(töökataloog:
+11 (töökataloog nüüd:
12 %S: Juba peatatud\n
13 %S: Juba seisatud\n
14 %S: Badly formed number\n
diff --git a/nls/et/set18 b/nls/et/set18
index fc313469d68a..b465816de5a8 100644
--- a/nls/et/set18
+++ b/nls/et/set18
@@ -1,4 +1,4 @@
-$ $tcsh: set18,v 1.2 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set18,v 1.3 2011/02/04 18:19:33 christos Exp $
$ sh.set.c
$set 18
-1 Hoiatus: nõmedalt pikk PATH sai lühendatud\n
+1 Hoiatus: nõmedalt pikk PATH sai lühendatud\n
diff --git a/nls/et/set19 b/nls/et/set19
index 6f653d05bb8d..d829566d448e 100644
--- a/nls/et/set19
+++ b/nls/et/set19
@@ -1,15 +1,23 @@
-$ $tcsh: set19,v 1.2 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set19,v 1.5 2011/02/25 23:58:07 christos Exp $
$ tc.alloc.c
$set 19
-1 nbytes=%d: Mälu on otsas\n
-2 free(%lx) kasutati enne mälu haaramist.
-3 free(%lx) enne mälu algust.
-4 free(%lx) pärast mälu lõppu.
+1 nbytes=%d: Mälu on otsas\n
+2 free(%lx) kasutati enne mälu haaramist.
+3 free(%lx) enne mälu algust.
+4 free(%lx) pärast mälu lõppu.
5 free(%lx) halb plokk.
6 free(%lx) vigane piirkonna kontroll.
7 free(%lx) vigane plokkide indeks.
-8 %s mälu kasutamine hetkel:\nvaba:\t
-9 \nkasutatud:\t
+8 %s mälu kasutamine hetkel:\nvaba:\t
+9 kasutatud
10 \n\tKokku kasutusel: %d, kokku vaba: %d\n
-11 \tMälu vahemikus 0x%lx kuni 0x%lx. Tegelik algus 0x%lx\n
-12 Mälu vahemikus 0x%lx kuni 0x%lx (%ld).\n
+11 \tMälu vahemikus 0x%lx kuni 0x%lx. Tegelik algus 0x%lx\n
+12 Mälu vahemikus 0x%lx kuni 0x%lx (%ld).\n
+13 %s current memory allocation:\n
+14 Total space allocated from system: %d\n
+15 Number of non-inuse chunks: %d\n
+16 Number of mmapped regions: %d\n
+17 Total space in mmapped regions: %d\n
+18 Total allocated space: %d\n
+19 Total non-inuse space: %d\n
+20 Top-most, releasable space: %d\n
diff --git a/nls/et/set2 b/nls/et/set2
index ea1f4c97a98b..8b7111d8f10d 100644
--- a/nls/et/set2
+++ b/nls/et/set2
@@ -1,4 +1,4 @@
-$ $tcsh: set2,v 1.2 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set2,v 1.3 2011/02/04 18:19:33 christos Exp $
$ Signal names
$set 2
1 Null signaal
@@ -20,27 +20,27 @@ $set 2
17 Viga siinil
18 Program range error
19 Operand range error
-20 Vigane süsteemifunktsioon
+20 Vigane süsteemifunktsioon
21 Katkenud toru
22 Alarmkell
23 Terminated
24 Alamprotsessi olek muutus
25 Alamprotsessi surm
-26 Apollo-spetsiifiline tõrge
-27 Alamprotsess peatatud või lõpetas
-28 Alamprotsess lõpetas
-29 Voolutõrge
+26 Apollo-spetsiifiline tõrge
+27 Alamprotsess peatatud või lõpetas
+28 Alamprotsess lõpetas
+29 Voolutõrge
30 Resource Lost
31 Break (Ctrl-Break)
-32 Sisend/väljund võimalik
-33 Asünkroonne S/V (select)
+32 Sisend/väljund võimalik
+33 Asünkroonne S/V (select)
34 Urgent condition on I/O channel
35 Multitasking wake-up
36 Multitasking kill
-37 Fortrani asünkroonne S/V lõpetas
+37 Fortrani asünkroonne S/V lõpetas
38 Recovery
-39 Mitteparandatav mälu viga
-40 CPU aja piirang on ületatud
+39 Mitteparandatav mälu viga
+40 CPU aja piirang on ületatud
41 System shutdown imminent
42 micro-tasking group-no wakeup flag set
43 Thread error - (use cord -T for detailed info)
@@ -50,16 +50,16 @@ $set 2
47 Seisatud (signaal)
48 Peatatud
49 Seisatud
-50 Jätkab
+50 Jätkab
51 Peatatud (tty sisend)
52 Seisatud (tty sisend)
-53 Peatatud (tty väljund)
-54 Seisatud (tty väljund)
+53 Peatatud (tty väljund)
+54 Seisatud (tty väljund)
55 Akna olek muutus
56 Akna suurus muutus
57 Telefoni olek muutus
-58 Cpu aja piirang on ületatud
-59 Faili suuruse piirang on ületatud
+58 Cpu aja piirang on ületatud
+59 Faili suuruse piirang on ületatud
60 Virtuaalaja alarm
61 Profiling time alarm
62 DIL signaal
@@ -76,7 +76,7 @@ $set 2
73 Kolmas viimane reaalaja signaal
74 Teine viimane reaalaja signaal
75 Viimane reaalaja signaal
-76 LAN Asünkroonne I/O
+76 LAN Asünkroonne I/O
77 PTY read/write availability
78 I/O intervention required
79 HFT monitor mode granted
@@ -88,24 +88,24 @@ $set 2
85 Reschedule
86 Signaling SS$_DEBUG
87 Prioriteedi muutus
-88 Tuvastati tõeline tupiksituatsioon
-89 Uus sisendsümbol
-90 Pinu piirang on ületatud
+88 Tuvastati tõeline tupiksituatsioon
+89 Uus sisendsümbol
+90 Pinu piirang on ületatud
91 Kasutamata signaal
92 LM overlay
-93 süsteemi külmutamine
-94 süsteemi sulatamine
+93 süsteemi külmutamine
+94 süsteemi sulatamine
95 tupiksituatsioon
-96 mälu suuruse piirang on ületatud
-97 andmete suuruse piirang on ületatud
+96 mälu suuruse piirang on ületatud
+97 andmete suuruse piirang on ületatud
98 exceeded memory size limit of 32KB
99 exce error for no memory
100 check point start
101 check point start of kernel
102 restart start
103 restart of kernel
-104 XMU suuruse piirang on ületatud
-105 RLG0 piirang on ületatud
-106 RLG1 piirang on ületatud
-107 RLG2 piirang on ületatud
-108 RLG3 piirang on ületatud
+104 XMU suuruse piirang on ületatud
+105 RLG0 piirang on ületatud
+106 RLG1 piirang on ületatud
+107 RLG2 piirang on ületatud
+108 RLG3 piirang on ületatud
diff --git a/nls/et/set20 b/nls/et/set20
index 3ba741bad448..802f5a6c260a 100644
--- a/nls/et/set20
+++ b/nls/et/set20
@@ -1,41 +1,41 @@
-$ $tcsh: set20,v 1.2 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set20,v 1.3 2011/02/04 18:19:33 christos Exp $
$ tc.bind.c
$set 20
1 Vigane klahvi nimi `%S'\n
2 Halb klahv: %S\n
-3 Halb käsk: %S\n
+3 Halb käsk: %S\n
4 Halb klahvi spetsifikatsioon %S\n
-5 Null sõne spetsifikatsioonis\n
+5 Null sõne spetsifikatsioonis\n
6 Standardsed klahviseosed\n
7 Alternatiivsed klahviseosed\n
-8 Mitme-sümbolised seosed\n
+8 Mitme-sümbolised seosed\n
9 Seosed nooleklahvidele\n
10 %-15s-> on defineerimata\n
11 BUG!!! %s pole seotud.\n
-12 Kasuta: bindkey [võtmed] [--] [KLAHV [KÄSK]]\n
-13 -a esita või seo KLAHVI alternatiivne tabel\n
-14 -b käsitle KLAHVI kui C-, M-, F- või X- klahvi nime\n
-15 -s käsitle COMMAND kui literaalset väljundsõne\n
-16 -c käsitle COMMAND kui sisemist või välist käsku\n
-17 -v seo kõik klahvid vi seostega\n
-18 -e seo kõik klahvid emacsi seostega\n
-19 -d seo kõik klahvid vaikimisi toimeti seostega\n
-20 -l esita toimeti käsud koos kirjeldustega\n
+12 Kasuta: bindkey [võtmed] [--] [KLAHV [KÄSK]]\n
+13 -a esita või seo KLAHVI alternatiivne tabel\n
+14 -b käsitle KLAHVI kui C-, M-, F- või X- klahvi nime\n
+15 -s käsitle COMMAND kui literaalset väljundsõne\n
+16 -c käsitle COMMAND kui sisemist või välist käsku\n
+17 -v seo kõik klahvid vi seostega\n
+18 -e seo kõik klahvid emacsi seostega\n
+19 -d seo kõik klahvid vaikimisi toimeti seostega\n
+20 -l esita toimeti käsud koos kirjeldustega\n
21 -r kustuta KLAHVILT seos\n
-22 -k kasuta KLAHVI kui noole-klahvi sümbolnime\n
-23 -- katkesta võtmete töötlemine\n
-24 -u (või suvaline vigane võti) see teade\n
-25 Ilma KLAHVI või KÄSUTA trükib kõik seosed\n
-26 Ilma KÄSUTA trükib seosed KLAHVILE.\n
-27 Halb klahvi spetsifikatsioon -- null sõne\n
-28 Halb klahvi spetsifikatsioon -- tühi sõne\n
+22 -k kasuta KLAHVI kui noole-klahvi sümbolnime\n
+23 -- katkesta võtmete töötlemine\n
+24 -u (või suvaline vigane võti) see teade\n
+25 Ilma KLAHVI või KÄSUTA trükib kõik seosed\n
+26 Ilma KÄSUTA trükib seosed KLAHVILE.\n
+27 Halb klahvi spetsifikatsioon -- null sõne\n
+28 Halb klahvi spetsifikatsioon -- tühi sõne\n
29 Halb funktsioon-klahvi spetsifikatsioon. Null klahv pole lubatud\n
-30 Halb klahvi spetsifikatsioon -- vigane kuueteistkümnend number\n
+30 Halb klahvi spetsifikatsioon -- vigane kuueteistkümnend number\n
31 Halb klahvi spetsifikatsioon -- vigane kaheksand number\n
-32 Halb klahvi spetsifikatsioon -- vigane kümnend number\n
+32 Halb klahvi spetsifikatsioon -- vigane kümnend number\n
33 Halb funktsioon-klahvi spetsifikatsioon.\n
34 Null klahv pole lubatud\n
35 halb klahvi spetsifikatsioon -- tundmatu nimi "%S"\n
-36 kasuta: bind [KLAHV | KÄSK KLAHV | "emacs" | "vi" | "-a"]\n
+36 kasuta: bind [KLAHV | KÄSK KLAHV | "emacs" | "vi" | "-a"]\n
37 Vigane funktsioon
38 %s\t\ton defineerimata\n
diff --git a/nls/et/set21 b/nls/et/set21
index e435c1a5cb1a..8e4c67eab079 100644
--- a/nls/et/set21
+++ b/nls/et/set21
@@ -1,5 +1,5 @@
-$ $tcsh: set21,v 1.2 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set21,v 1.3 2011/02/04 18:19:33 christos Exp $
$ tc.disc.c
$set 21
-1 Lokaalseid sümboleid ei õnnestu lugeda.\n
-2 Lokaalseid sümboleid ei õnnestu seada.\n
+1 Lokaalseid sümboleid ei õnnestu lugeda.\n
+2 Lokaalseid sümboleid ei õnnestu seada.\n
diff --git a/nls/et/set22 b/nls/et/set22
index e619e53d360c..79e814c79006 100644
--- a/nls/et/set22
+++ b/nls/et/set22
@@ -1,4 +1,4 @@
-$ $tcsh: set22,v 1.2 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set22,v 1.3 2011/02/04 18:19:33 christos Exp $
$ tc.func.c
$set 22
1 %S: \t on tegelikult
@@ -7,11 +7,11 @@ $set 22
4 Vigane alias 'cwdcmd' eemaldatud.\n
5 Vigane alias 'beepcmd' eemaldatud.\n
6 Vigane alias 'periodic' eemaldatud.\n
-7 töötlen käsurida\n
-8 Kas te tÕepoolest tahate kustutada kõik failid? [e/j]
+7 töötlen käsurida\n
+8 Kas te tÕepoolest tahate kustutada kõik failid? [e/j]
9 katkestan failide kustutamise!\n
-10 käsurida on nüüd:\n
-11 töötlen käsurida\n
-12 ühes loenditest\n
-13 käsurida on nüüd:\n
+10 käsurida on nüüd:\n
+11 töötlen käsurida\n
+12 ühes loenditest\n
+13 käsurida on nüüd:\n
14 jJ
diff --git a/nls/et/set23 b/nls/et/set23
index 72432d00fcc0..342d031ff28a 100644
--- a/nls/et/set23
+++ b/nls/et/set23
@@ -1,4 +1,4 @@
-$ $tcsh: set23,v 1.2 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set23,v 1.3 2011/02/04 18:19:33 christos Exp $
$ tc.os.c
$set 23
1 Vigane cpu/saidi nimi
@@ -8,10 +8,10 @@ $set 23
5 %d: Saiti pole\n
6 setlocal: %s: %s\n
7 Saiti pole
-8 Te olete lõksus universumis, mida te pole loonud
-9 Getwarp ebaõnnestus
+8 Te olete lõksus universumis, mida te pole loonud
+9 Getwarp ebaõnnestus
10 Vigane warp
-11 Setwarp ebaõnnestus
+11 Setwarp ebaõnnestus
12 Vigane universum
13 Tundmatu viga: %d
14 sysname: %s\n
@@ -28,7 +28,7 @@ $set 23
25 getwd: Kataloogi "%s" atribuute ei saa lugeda (%s)
26 getwd: Kataloogi "%s" ei saa avada (%s)
27 getwd: Kataloogis ".." pole kataloogi "." (%s)
-28 Vigane süsteemi tüüp
-29 Süsteemi tüüp ei ole määratud
+28 Vigane süsteemi tüüp
+29 Süsteemi tüüp ei ole määratud
30 Liiga palju argumente
31 Vigane argument
diff --git a/nls/et/set24 b/nls/et/set24
index 4c3e6378797d..2050f72969db 100644
--- a/nls/et/set24
+++ b/nls/et/set24
@@ -1,4 +1,4 @@
-$ $tcsh: set24,v 1.2 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set24,v 1.3 2011/02/04 18:19:33 christos Exp $
$ tc.sched.c
$set 24
-1 Häkk!
+1 Häkk!
diff --git a/nls/et/set25 b/nls/et/set25
index c35deb7aa1b2..affff694f4e7 100644
--- a/nls/et/set25
+++ b/nls/et/set25
@@ -1,6 +1,6 @@
-$ $tcsh: set25,v 1.2 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set25,v 1.3 2011/02/04 18:19:33 christos Exp $
$ tc.sig.c
$set 25
1 our wait %d\n
2 viga: bsd_signal(%d) pole signaal\n
-3 viga: bsd_signal(%d) - sigaction ebaõnnestus, errno = %d\n
+3 viga: bsd_signal(%d) - sigaction ebaõnnestus, errno = %d\n
diff --git a/nls/et/set26 b/nls/et/set26
index e5b3967b12fb..5a324d7981de 100644
--- a/nls/et/set26
+++ b/nls/et/set26
@@ -1,15 +1,15 @@
-$ $tcsh: set26,v 1.2 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set26,v 1.3 2011/02/04 18:19:33 christos Exp $
$ tc.who.c
$set 26
-1 Ei saa lugeda %s atribuute. Anna käsk "unset watch".\n
-2 %s ei saa avada. Anna käsk "unset watch".\n
+1 Ei saa lugeda %s atribuute. Anna käsk "unset watch".\n
+2 %s ei saa avada. Anna käsk "unset watch".\n
3 BUG! viimane element ei ole viimasena registreeritud!\n
4 tagurpidi:
5 BUG! esimene element ei ole esimesena registreeritud!\n
6 uus: %s/%s\n
7 %n %a terminalil %l masinast %m.
8 %n %a terminalil %l.
-9 töötab
-10 lõpetas töö
+9 töötab
+10 lõpetas töö
11 asendas %s terminalil
12 kohalik
diff --git a/nls/et/set27 b/nls/et/set27
index 57bd18f6ce5e..8a2dbd4b71ab 100644
--- a/nls/et/set27
+++ b/nls/et/set27
@@ -1,8 +1,8 @@
-$ $tcsh: set27,v 1.2 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set27,v 1.3 2011/02/04 18:19:33 christos Exp $
$ tw.comp.c
$set 27
-1 käsk
+1 käsk
2 eraldaja
3 muster
4 vahemik
-5 täiendamine
+5 täiendamine
diff --git a/nls/et/set3 b/nls/et/set3
index 4c06d3945727..2a9f3f5b1ecf 100644
--- a/nls/et/set3
+++ b/nls/et/set3
@@ -1,120 +1,120 @@
-$ $tcsh: set3,v 1.3 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set3,v 1.4 2011/02/04 18:19:33 christos Exp $
$ Editor function descriptions
$set 3
-1 Liigu sümbol tagasi
-2 Kustuta sümbol kursori tagant
-3 Lõika jooksva sõna algusest kursorini - salvesta lõikepuhvris
-4 Lõika rea algusest kursorini - salvesta lõikepuhvris
-5 Liigu jooksva sõna algusse
+1 Liigu sümbol tagasi
+2 Kustuta sümbol kursori tagant
+3 Lõika jooksva sõna algusest kursorini - salvesta lõikepuhvris
+4 Lõika rea algusest kursorini - salvesta lõikepuhvris
+5 Liigu jooksva sõna algusse
6 Liigu rea algusse
-7 Tähed kursorist kuni sõnalõpuni suurteks
-8 Vi muuda kursori aluse sümboli suurust ja liigu sümbol edasi
-9 Vi muuda realõpuni
-10 Puhasta ekraan jättes jooksva rea ülemiseks
-11 Täienda jooksev sõna
-12 Vali täiendusi liikudes nimekirjas edasi
-13 Vali täiendusi liikudes nimekirjas tagasi
-14 Täienda jooksev sõna, ignoreeri programmeeritud täiendusi
-15 Kopeeri jooksev sõna kursorini
-16 Kopeeri ala märgist kursorini lõikepuhvrisse
-17 Avalda eelneva sõnani, millele see on prefiks
-18 Kustuta sümbol kursori alt
-19 Kustuta sümbol kursori alt või teata tühja rea korral faililõpust
-20 Kustuta sümbol kursori alt või rea lõpu korral näita täiendusi
-21 Kustuta sümbol kursori alt, näita täiendusi või teata faililõpust
-22 Lõika kursorist jooksva sõna lõpuni - salvesta lõikepuhvris
+7 Tähed kursorist kuni sõnalõpuni suurteks
+8 Vi muuda kursori aluse sümboli suurust ja liigu sümbol edasi
+9 Vi muuda realõpuni
+10 Puhasta ekraan jättes jooksva rea ülemiseks
+11 Täienda jooksev sõna
+12 Vali täiendusi liikudes nimekirjas edasi
+13 Vali täiendusi liikudes nimekirjas tagasi
+14 Täienda jooksev sõna, ignoreeri programmeeritud täiendusi
+15 Kopeeri jooksev sõna kursorini
+16 Kopeeri ala märgist kursorini lõikepuhvrisse
+17 Avalda eelneva sõnani, millele see on prefiks
+18 Kustuta sümbol kursori alt
+19 Kustuta sümbol kursori alt või teata tühja rea korral faililõpust
+20 Kustuta sümbol kursori alt või rea lõpu korral näita täiendusi
+21 Kustuta sümbol kursori alt, näita täiendusi või teata faililõpust
+22 Lõika kursorist jooksva sõna lõpuni - salvesta lõikepuhvris
23 Kui alustatud, lisab argumendile, muidu lisab numbri
24 Number, mis alustab argumenti
-25 Liigu järgmisele ajaloo reale
-26 Sümbolid väiketähtedeks kursorist jooksva sõna lõpuni
-27 Näita faililõppu
-28 Kursor realõppu
-29 Vaheta kursor ja märk
-30 Avalda faili nimes metasümbolid
-31 Avalda ajaloo käsud
-32 Avalda real ajaloo käsud
+25 Liigu järgmisele ajaloo reale
+26 Sümbolid väiketähtedeks kursorist jooksva sõna lõpuni
+27 Näita faililõppu
+28 Kursor realõppu
+29 Vaheta kursor ja märk
+30 Avalda faili nimes metasümbolid
+31 Avalda ajaloo käsud
+32 Avalda real ajaloo käsud
33 Avalda muutujad
-34 Liigu sümbol edasi
-35 Liigu edasi jooksva sõna lõppu
-36 Vaheta kursori ees kaks sümbolit
+34 Liigu sümbol edasi
+35 Liigu edasi jooksva sõna lõppu
+36 Vaheta kursori ees kaks sümbolit
37 Otsi ajaloos tagasi jooksva rea algusega rida
38 Otsi ajaloos edasi jooksva rea algusega rida
-39 Lisa eelmise käsu viimane element
+39 Lisa eelmise käsu viimane element
40 Inkrementaalne edaspidi otsing
41 Inkrementaalne tagurpidi otsing
42 Puhasta rida
-43 Lõika realõpuni ja salvesta lõikepuhvris
-44 Lõika ala märgist kursorini ja salvesta lõikepuhvris
-45 Lõika kogu rida ja salvesta lõikepuhvris
-46 Näita täiendamise valikud
-47 Näita täiendamise valikuid ignoreerides programmeeritud täiendusi
-48 Näita faili nimes metasümbolite leide
-49 Näita täiendamise valikuid või teavita tühja rea korral faililõpust
-50 Näita masina koormust ja jooksva protsessi olekut
-51 Avalda ajaloo käsud ja lisa tühik
-52 Täida käsklus
+43 Lõika realõpuni ja salvesta lõikepuhvris
+44 Lõika ala märgist kursorini ja salvesta lõikepuhvris
+45 Lõika kogu rida ja salvesta lõikepuhvris
+46 Näita täiendamise valikud
+47 Näita täiendamise valikuid ignoreerides programmeeritud täiendusi
+48 Näita faili nimes metasümbolite leide
+49 Näita täiendamise valikuid või teavita tühja rea korral faililõpust
+50 Näita masina koormust ja jooksva protsessi olekut
+51 Avalda ajaloo käsud ja lisa tühik
+52 Täida käsklus
53 Avalda failiteed, eemaldades algusest . ja ..
-54 Avalda käsk failiteeks või aliaseks
-55 Lülita lisamis- või ülekirjutamismood
-56 Lisa järgmisele kirjutatavale sümbolile kaheksas bitt
-57 Lisa järgmine kirjutatav sümbol reale kvoodituna
-58 Näita kõik uuesti
-59 Taaskäivita peatatud toimeti
-60 Esita jooksva käsu abiinfo
-61 See sümbol lisatakse reale
-62 See sümbol on sümboljärjendis esimene
-63 Sea märk
-64 Paranda jooksva sõna õigekirja
-65 Paranda terve rea õigekirja
-66 Saada sümbol terminalile vahendusmoodis
-67 Lülita ajaloo literaalne või leksiline mood
-68 Vaheta kursori alune ja kursorist vasakul asuvad sümbolid
-69 Vaheta kursori ees kaks sümbolit
-70 Tty viivitusega peatamine sümbol
-71 Tty tühjenda väljund sümbol
-72 Tty katkesta sümbol
-73 Tty välju sümbol
-74 Tty peata sümbol
-75 Tty luba väljund sümbol
-76 Tty keela väljund sümbol
-77 Tähistab sidumata sümbolit
+54 Avalda käsk failiteeks või aliaseks
+55 Lülita lisamis- või ülekirjutamismood
+56 Lisa järgmisele kirjutatavale sümbolile kaheksas bitt
+57 Lisa järgmine kirjutatav sümbol reale kvoodituna
+58 Näita kõik uuesti
+59 Taaskäivita peatatud toimeti
+60 Esita jooksva käsu abiinfo
+61 See sümbol lisatakse reale
+62 See sümbol on sümboljärjendis esimene
+63 Sea märk
+64 Paranda jooksva sõna õigekirja
+65 Paranda terve rea õigekirja
+66 Saada sümbol terminalile vahendusmoodis
+67 Lülita ajaloo literaalne või leksiline mood
+68 Vaheta kursori alune ja kursorist vasakul asuvad sümbolid
+69 Vaheta kursori ees kaks sümbolit
+70 Tty viivitusega peatamine sümbol
+71 Tty tühjenda väljund sümbol
+72 Tty katkesta sümbol
+73 Tty välju sümbol
+74 Tty peata sümbol
+75 Tty luba väljund sümbol
+76 Tty keela väljund sümbol
+77 Tähistab sidumata sümbolit
78 Emacsi universaalne argument (argument korda 4)
79 Liigu eelmisele ajaloo reale
-80 Sümbolid suurtähtedeks kursorist jooksva sõna lõpuni
-81 Vi liigu järgmise sõna algusse
+80 Sümbolid suurtähtedeks kursorist jooksva sõna lõpuni
+81 Vi liigu järgmise sõna algusse
82 Vi sisene peale kursorit lisamismoodi
-83 Vi sisene rea lõpus lisamismoodi
-84 Vi muuda kursori aluse sümboli suurust ja liigu ühe sümboli võrra edasi
-85 Vi muuda prefiks käsklust
-86 Vi muuda realõpuni
-87 Sisene vi käsumoodi (kasuta alternatiivseid klahvi seoseid)
-88 Vi käsu mood täienda jooksev sõna
-89 Vi liigu eelmisele sümbolile (backspace)
-90 Vi kustuta prefiks käsklus
-91 Vi liigu jooksva tühikuga eraldatud sõna lõppu
-92 Vi liigu jooksva sõna lõppu
-93 Vi liigu tagasi määratud sümbolini
-94 Vi liigu edasi määratud sümbolini
-95 Vi liigu tagasi määratud sümbolile
-96 Vi liigu edasi määratud sümbolile
+83 Vi sisene rea lõpus lisamismoodi
+84 Vi muuda kursori aluse sümboli suurust ja liigu ühe sümboli võrra edasi
+85 Vi muuda prefiks käsklust
+86 Vi muuda realõpuni
+87 Sisene vi käsumoodi (kasuta alternatiivseid klahvi seoseid)
+88 Vi käsu mood täienda jooksev sõna
+89 Vi liigu eelmisele sümbolile (backspace)
+90 Vi kustuta prefiks käsklus
+91 Vi liigu jooksva tühikuga eraldatud sõna lõppu
+92 Vi liigu jooksva sõna lõppu
+93 Vi liigu tagasi määratud sümbolini
+94 Vi liigu edasi määratud sümbolini
+95 Vi liigu tagasi määratud sümbolile
+96 Vi liigu edasi määratud sümbolile
97 Sisene vi lisamismoodi
98 Sisene rea alguses vi lisamismoodi
-99 Vi korda antud sümboli otsimist samas suunas
-100 Vi korda antud sümboli otsimist vastupidises suunas
+99 Vi korda antud sümboli otsimist samas suunas
+100 Vi korda antud sümboli otsimist vastupidises suunas
101 Vi korda antud otsimist samas suunas
102 Vi korda antud otsimist vastupidises suunas
-103 Vi asenda kursori alt sümbol järgmisena kirjutatava sümboliga
-104 Vi asendusre¸iim
+103 Vi asenda kursori alt sümbol järgmisena kirjutatava sümboliga
+104 Vi asendusre¸iim
105 Vi otsi ajaloost tagurpidi
106 Vi otsi ajaloost edaspidi
-107 Vi asenda kursori alune sümbol ja mine sisesamisre¸iimi
+107 Vi asenda kursori alune sümbol ja mine sisesamisre¸iimi
108 Vi asenda kogu rida
-109 Vi mine eelmise sõna juurde
-110 Vi mine järgmise sõna juurde
+109 Vi mine eelmise sõna juurde
+110 Vi mine järgmise sõna juurde
111 Vi taasta viimane muutus
112 Vi mine rea algusse
-113 Käivita jooksval sõnal käsk which
-114 Kleebi lõikepuhver alates kursori positsioonist
+113 Käivita jooksval sõnal käsk which
+114 Kleebi lõikepuhver alates kursori positsioonist
115 Replace just-yanked text with yank from earlier kill
116 (WIN32 only) Copy cut buffer to system clipboard
117 (WIN32 only) Paste clipboard buffer at cursor position
diff --git a/nls/et/set30 b/nls/et/set30
index f629dc8e063d..e34aa857bcd2 100644
--- a/nls/et/set30
+++ b/nls/et/set30
@@ -1,4 +1,4 @@
-$ $tcsh: set30,v 1.2 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set30,v 1.3 2011/02/04 18:19:33 christos Exp $
$ tw.parse.c
$set 30
1 starting_a_command %d\n
@@ -7,7 +7,7 @@ $set 30
4 %s: Internal match error.\n
5 elementi
6 veergu
-7 Leidsin %d %s, näitan neid? [e/j]
+7 Leidsin %d %s, näitan neid? [e/j]
8 looking = %d\n
9 \n%s sisemine viga: Ma ei tea, mida ma otsin!\n
10 pole kataloog
diff --git a/nls/et/set4 b/nls/et/set4
index 3ec5b44a53e2..8a1f6d9929fa 100644
--- a/nls/et/set4
+++ b/nls/et/set4
@@ -1,45 +1,45 @@
-$ $tcsh: set4,v 1.2 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set4,v 1.3 2011/02/04 18:19:33 christos Exp $
$ Termcap strings
$set 4
-1 lisa uus tühi rida
+1 lisa uus tühi rida
2 kuuldav kell
-3 puhasta põhjani
-4 puhasta rea lõpuni
+3 puhasta põhjani
+4 puhasta rea lõpuni
5 kursori horisontaal positsioon
6 ekraani puhastamine
-7 sümboli kustutamine
+7 sümboli kustutamine
8 rea kustutamine
9 alusta kustutamis mood
-10 lõpeta kustutamis mood
-11 lõpeta vahelekirjutamise mood
+10 lõpeta kustutamis mood
+11 lõpeta vahelekirjutamise mood
12 kursor olekurealt
13 kursor koju
-14 lisa sümbol
+14 lisa sümbol
15 alusta vahelekirjutamise mood
-16 lisa täide
+16 lisa täide
17 saadab kursori alla
18 saadab kursori vasakule
19 saadab kursori paremale
-20 saadab kursori üles
+20 saadab kursori üles
21 alusta rasvast
-22 atribuutide lõpp
-23 mitte-purustav tühik
-24 lõpeta rõhutatud
-25 alusta rõhutatud
+22 atribuutide lõpp
+23 mitte-purustav tühik
+24 lõpeta rõhutatud
+25 alusta rõhutatud
26 kursor olekureale
-27 kursor ühe võrra üles
+27 kursor ühe võrra üles
28 alusta allajoonimist
-29 lõpeta allajoonimine
-30 nähtav kell
-31 kustuta mitu sümbolit
+29 lõpeta allajoonimine
+30 nähtav kell
+31 kustuta mitu sümbolit
32 kursor korduvalt alla
-33 lisa mitu sümbolit
+33 lisa mitu sümbolit
34 kursor korduvalt vasakule
35 kursor korduvalt paremale
-36 kursor korduvalt üles
-37 Omab automaatseid ääri
-38 Saab kasutada füüsilist tabulaatorit
+36 kursor korduvalt üles
+37 Omab automaatseid ääri
+38 Saab kasutada füüsilist tabulaatorit
39 Ridade arv
40 Veergude arv
41 Omab meta klahvi
-42 Parem äär ignoreerib uut rida
+42 Parem äär ignoreerib uut rida
diff --git a/nls/et/set5 b/nls/et/set5
index aecf6e8e9a83..ddaf4bea106e 100644
--- a/nls/et/set5
+++ b/nls/et/set5
@@ -1,4 +1,4 @@
-$ $tcsh: set5,v 1.2 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set5,v 1.3 2011/02/04 18:19:33 christos Exp $
$ ed.chared.c
$set 5
-1 Tööjärjekorra koormuse info puudub\n
+1 Tööjärjekorra koormuse info puudub\n
diff --git a/nls/et/set6 b/nls/et/set6
index 3b6c6cdc3af6..a1ce3ea72652 100644
--- a/nls/et/set6
+++ b/nls/et/set6
@@ -1,11 +1,11 @@
-$ $tcsh: set6,v 1.2 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set6,v 1.3 2011/02/04 18:19:33 christos Exp $
$ ed.inputl.c
$set 6
-1 VIGA: vigane käsk klahvilt 0%o\r\n
+1 VIGA: vigane käsk klahvilt 0%o\r\n
2 jah\n
3 paranda\n
4 katkesta\n
5 ei\n
-6 Pole sellist käsku\n
-7 Arusaamatu käsk\n
+6 Pole sellist käsku\n
+7 Arusaamatu käsk\n
8 *** toimeti fataalne VIGA ***\r\n\n
diff --git a/nls/et/set7 b/nls/et/set7
index f1da7b39a4a5..4cb2c75497f9 100644
--- a/nls/et/set7
+++ b/nls/et/set7
@@ -1,30 +1,30 @@
-$ $tcsh: set7,v 1.2 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set7,v 1.3 2011/02/04 18:19:33 christos Exp $
$ ed.screen.c
$set 7
1 \n\tTcsh arvab, et teie terminal omab\n
-2 \tjärgnevaid omadusi:\n\n
+2 \tjärgnevaid omadusi:\n\n
3 \tTal on %d veergu ja %d rida\n
4 \tTa %s meta klahvi\n
5 omab
6 ei oma
7 \tTal on%s tabulaatori omadus\n
8 puudu
-9 \tTa %s automaatseid ääri\n
+9 \tTa %s automaatseid ääri\n
10 omab
11 ei oma
-12 \tTa %s maagilisi ääri\n
-13 (tühi)
+12 \tTa %s maagilisi ääri\n
+13 (tühi)
14 jah
15 ei
16 VIGA: ei saa kustutada\r\n
-17 DeleteChars: num on mõttetu: %d\r\n
+17 DeleteChars: num on mõttetu: %d\r\n
18 VIGA: cannot insert\r\n
-19 StartInsert: num on mõttetu: %d\r\n
+19 StartInsert: num on mõttetu: %d\r\n
20 %s: Ei saa avada /etc/termcap.\n
-21 %s: Terminali tüübil "%s" puudub kirje\n
+21 %s: Terminali tüübil "%s" puudub kirje\n
22 %s: kasutan rumala terminali seadeid.\n
-23 %s: HOIATUS: Teie terminal ei saa liikuda üles.\n
-24 Pikkade ridade toimetamine võib olla kummaline.\n
+23 %s: HOIATUS: Teie terminal ei saa liikuda üles.\n
+24 Pikkade ridade toimetamine võib olla kummaline.\n
25 puudub puhasta EOL omadus.\n
-26 puudub kustuta sümbol omadus.\n
-27 puudub lisa sümbol omadus.\n
+26 puudub kustuta sümbol omadus.\n
+27 puudub lisa sümbol omadus.\n
diff --git a/nls/et/set8 b/nls/et/set8
index 0ac4be44fd6a..6e5d25ff23b3 100644
--- a/nls/et/set8
+++ b/nls/et/set8
@@ -1,5 +1,5 @@
-$ $tcsh: set8,v 1.2 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set8,v 1.3 2011/02/04 18:19:34 christos Exp $
$ ed.term.c
$set 8
-1 Tundmatu võti
+1 Tundmatu võti
2 Vigane argument
diff --git a/nls/et/set9 b/nls/et/set9
index f8e157a23d0b..1e0cebf397e0 100644
--- a/nls/et/set9
+++ b/nls/et/set9
@@ -1,12 +1,12 @@
-$ $tcsh: set9,v 1.2 2006/03/02 18:46:45 christos Exp $
+$ $tcsh: set9,v 1.3 2011/02/04 18:19:34 christos Exp $
$ ed.xmap.c
$set 9
1 AddXkey: Null pikkusega laiend-klahv ei ole lubatud.\n
-2 AddXkey: käsuni viiv järjend pole lubatud\n
+2 AddXkey: käsuni viiv järjend pole lubatud\n
3 DeleteXkey: Null pikkusega laiend-klahv ei ole lubatud.\n
4 Sidumata laiendatud klahv "%S"\n
-5 Mõned laiendatud klahvid on sisemise trükipuhvri jaoks liiga pikad
+5 Mõned laiendatud klahvid on sisemise trükipuhvri jaoks liiga pikad
6 Enumerate: BUG!! Null viit anti\n!
7 sisendit pole
-8 Midagi peab järgnema: %c\n
-9 kaheksand-konstant ei mahu sümbolisse.\n
+8 Midagi peab järgnema: %c\n
+9 kaheksand-konstant ei mahu sümbolisse.\n
diff --git a/nls/finnish/charset b/nls/finnish/charset
index 0b13559084f6..81f1b6669c79 100644
--- a/nls/finnish/charset
+++ b/nls/finnish/charset
@@ -1,3 +1,3 @@
-$ codeset=ISO-8859-1
+$ codeset=UTF-8
$set 255
-1 ISO-8859-1
+1 UTF-8
diff --git a/nls/finnish/set1 b/nls/finnish/set1
index 98c89b38fb75..b829525949a5 100644
--- a/nls/finnish/set1
+++ b/nls/finnish/set1
@@ -1,140 +1,140 @@
-$ $tcsh: set1,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set1,v 1.4 2011/02/04 18:19:34 christos Exp $
$ Error messages
$set 1
1 Kielioppivirhe
2 %s ei ole sallittu
-3 Liian pitkä sana
-4 $< rivi liian pitkä
+3 Liian pitkä sana
+4 $< rivi liian pitkä
5 Puuttuva tiedosto $0
6 Vajavainen [] muunnos
-7 $ -laajennuksen on päätyttävä ennen ']'-merkkiä
+7 $ -laajennuksen on päätyttävä ennen ']'-merkkiä
8 Virheellinen : -muunnos $ (%c)
9 Indeksivirhe
10 Virheellinen numero
-11 Liian vähän sanoja
+11 Liian vähän sanoja
12 Puuttuva tiedoston nimi
-13 Sisäinen laajennusvirhe (glob)
-14 Käskyä ei löydy
-15 Liian vähän argumentteja
+13 Sisäinen laajennusvirhe (glob)
+14 Käskyä ei löydy
+15 Liian vähän argumentteja
16 Liian monta argumenttia
17 Vaarallinen alias
-18 Tyhjä ehto (if)
+18 Tyhjä ehto (if)
19 Soveltumaton seuraus (then)
-20 Sanat eivät ole suluissa
-21 %s ei löydy
+20 Sanat eivät ole suluissa
+21 %s ei löydy
22 Soveltumaton maski
23 Rajoite tuntematon
24 Liian suuri argumentti
25 Soveltumaton tai tuntematon muunnoskerroin
-26 Määrittelemätön muuttuja
+26 Määrittelemätön muuttuja
27 Hakemistopino on matalampi
28 Virheellinen signaalin numero
29 Tuntematon signaali; kill -l tulostaa signaalit
30 Muutujan nimi on aloitettava kirjaimella
-31 Liian pitkä muuttuja nimi
+31 Liian pitkä muuttuja nimi
32 Muuttujan nimi on koostuttava kirjaimista ja numeroista
-33 Tässä komentotulkissa ei ole töiden hallintaa
+33 Tässä komentotulkissa ei ole töiden hallintaa
34 Lauseke virheellinen
35 Kotihakemisto puuttuu
36 Siirtyminen kotihakemistoon ei onnistu
-37 Tyhjä käsky
+37 Tyhjä käsky
38 Sijoituksesta puuttuu lauseke
39 Tuntematon operaattori
40 Tulkinnanvarainen
41 %s: Tiedosto ei ole uusi
-42 Parametrin -c argumentti päätty takakenoviivaan (\\)
+42 Parametrin -c argumentti päätty takakenoviivaan (\\)
43 Keskeytetty
44 Indeksi viittaa rajojen ulkopuollelle
45 Rivin ylivuoto
-46 Olematon työ
-47 Ei onnistu päätteeltä
+46 Olematon työ
+47 Ei onnistu päätteeltä
48 Silmukan (while/foreach) ulkopuolella
-49 Lisää prosesseja ei voida luoda
+49 Lisää prosesseja ei voida luoda
50 Ei vastaavuuksia (match)
51 Puuttuva %c
-52 Ylimääräinen/pariton %c
+52 Ylimääräinen/pariton %c
53 Muisti loppu
54 Putkea ei voida luoda
55 %s: %s
56 %s
-57 Käyttö: jobs [ -l ]
-58 Argumenttien on oltava töiden tai prosessien tunnisteita
-59 Ei tämänhetkistä työtä
-60 Ei edellistä työtä
-61 Mikään työ ei vastaa mallia
-62 Sisäkkäinen prosessin luonti (fork) > %d; mahdollisesti `...` silmukka
-63 Alemman tason komentotulkeissa ei ole töidenhallintaa
-64 Synkronointivirhe: Prosessia %d ei löydy
-65 %sTilapäisesti keskeytettyjä töitä
-66 %sPysähtyneenä olevia töitä
+57 Käyttö: jobs [ -l ]
+58 Argumenttien on oltava töiden tai prosessien tunnisteita
+59 Ei tämänhetkistä työtä
+60 Ei edellistä työtä
+61 Mikään työ ei vastaa mallia
+62 Sisäkkäinen prosessin luonti (fork) > %d; mahdollisesti `...` silmukka
+63 Alemman tason komentotulkeissa ei ole töidenhallintaa
+64 Synkronointivirhe: Prosessia %d ei löydy
+65 %sTilapäisesti keskeytettyjä töitä
+66 %sPysähtyneenä olevia töitä
67 Toinen hakemisto puuttuu
-68 Hakemistopino on tyhjä
+68 Hakemistopino on tyhjä
69 Virheellinen hakemisto
-70 Käyttö: %s [-%s]%s
+70 Käyttö: %s [-%s]%s
71 Lipulle -h ei ole argumenttia
-72 Tämä ei ole ensimmäisen tason komentotulkki (login shell)
+72 Tämä ei ole ensimmäisen tason komentotulkki (login shell)
73 Jako 0:lla
-74 Jakojäännös 0:lla
+74 Jakojäännös 0:lla
75 Virheellinen muunnoskerroin; tarkoititko "%s"?
-76 Ensimmäisen tason komentotulkkia ei voi keskeyttää (vielä)
-77 Tuntematon käyttäjä: %s
+76 Ensimmäisen tason komentotulkkia ei voi keskeyttää (vielä)
+77 Tuntematon käyttäjä: %s
78 Muuttujaa $home ei ole asetettu
-79 Käyttö: history [-%s] [# tapahtumien/käskyjen lukumäärä]
-80 $, ! tai < ei ole sallittu $# eikä $? yhteydessä
-81 Muuttujan nimi sisältää rivin vaihdon
-82 * ei ole sallittu $# eikä $? yhteydessä
+79 Käyttö: history [-%s] [# tapahtumien/käskyjen lukumäärä]
+80 $, ! tai < ei ole sallittu $# eikä $? yhteydessä
+81 Muuttujan nimi sisältää rivin vaihdon
+82 * ei ole sallittu $# eikä $? yhteydessä
83 $?<numero> tai $#<numero> ei ole sallittu
84 Soveltumaton muuttujan nimi
-85 Rivin vaihto muutujan indeksissä
+85 Rivin vaihto muutujan indeksissä
86 Laajennuspuskurin ylivuoto
87 Muuttujassa kielioppivirhe
88 Virheellinen ! -muoto
-89 Edellistä korvaavaa merkkijonoa ei ole
+89 Edellistä korvaavaa merkkijonoa ei ole
90 Virheellinen korvaava merkkijono
-91 Edellistä vasemmanpuolista merkkijonoa ei ole
-92 Oikeanpuolinen merkkijono on liian pitkä
+91 Edellistä vasemmanpuolista merkkijonoa ei ole
+92 Oikeanpuolinen merkkijono on liian pitkä
93 Virheellinen ! -muunnos: %c
-94 Muunnos epäonnistui
+94 Muunnos epäonnistui
95 Korvauspuskurin ylivuoto
96 Virheellinen ! argumenttivalitsin
-97 Edellistä hakua ei ole
-98 %s: Tapahtumaa/käskyä ei löydy
+97 Edellistä hakua ei ole
+98 %s: Tapahtumaa/käskyä ei löydy
99 Liian paljon loppusulkuja ')'
100 Liian paljon alkusulkuja '('
101 Virheellisesti sijoitettu alkusulku '('
102 Uudelleen ohjauksesta puuttuu nimi
103 Tulkinnanvarainen tulostuksen ohjaus
-104 Ohjaus << ei onnistu sulkujen '()' sisällä
-105 Tulkinnanvarainen syötteen ohjaus
+104 Ohjaus << ei onnistu sulkujen '()' sisällä
+105 Tulkinnanvarainen syötteen ohjaus
106 Virheelisesti sijoitetut sulut '()'
-107 Silmukka alias-määrittelyissä
+107 Silmukka alias-määrittelyissä
108 Muuttujaa $watch ei ole asetettu
109 Jonossa ei ole tapahtumia
-110 Käyttö: sched -<tapahtumien lukumäärä>.\nKäyttö: sched [+]tt:mm <käsky>
+110 Käyttö: sched -<tapahtumien lukumäärä>.\nKäyttö: sched [+]tt:mm <käsky>
111 Jonotettuja tapahtumia ei ole niin monta
-112 Suoritettava käsky puuttuu
+112 Suoritettava käsky puuttuu
113 Virheellinen tapahtuma-aika
-114 Suhteellinen ajan määre ei sovellu käytettäväksi am/pm yhteydessä
-115 Päätetyypin kuvaukselle (termcap) ei ole tarpeeksi tilaa
-116 Käyttö: settc %s [yes|no]
+114 Suhteellinen ajan määre ei sovellu käytettäväksi am/pm yhteydessä
+115 Päätetyypin kuvaukselle (termcap) ei ole tarpeeksi tilaa
+116 Käyttö: settc %s [yes|no]
117 Tuntematon toiminne `%s'
-118 Tuntematon päätetyypin (termcap) parameteri `%%%c'
-119 Liian paljon argumentteja käskylle `%s' (%d)
-120 `%s' edellyttää %d argumenttia
-121 Käyttö: echotc [-v|-s] [<toiminne> [<argumentit>]]
-122 %s: %s. Väärä laitearkkitehtuuri
+118 Tuntematon päätetyypin (termcap) parameteri `%%%c'
+119 Liian paljon argumentteja käskylle `%s' (%d)
+120 `%s' edellyttää %d argumenttia
+121 Käyttö: echotc [-v|-s] [<toiminne> [<argumentit>]]
+122 %s: %s. Väärä laitearkkitehtuuri
123 !# Silmukka komentohistoriassa
124 Virheellinen tiedostotesti
125 Valitsimen ylivuoto
-126 Tuntematon valitsin: `-%s'\nKäyttö: %s [ -bcdefilmnqstvVxX -Dnimi[=arvo] ] [ argumentti ... ]
-127 Tuntematon valitsin: `-%s'\nKäyttö: %s [ -bcdefFilmnqstvVxX ] [ argumentti ... ]
-128 Tuntematon valitsin: `-%s'\nKäyttö: %s [ -bcdefilmnqstvVxX ] [ argumentti ... ]
-129 \nSoveltumaton täydennys: "%s"
+126 Tuntematon valitsin: `-%s'\nKäyttö: %s [ -bcdefilmnqstvVxX -Dnimi[=arvo] ] [ argumentti ... ]
+127 Tuntematon valitsin: `-%s'\nKäyttö: %s [ -bcdefFilmnqstvVxX ] [ argumentti ... ]
+128 Tuntematon valitsin: `-%s'\nKäyttö: %s [ -bcdefilmnqstvVxX ] [ argumentti ... ]
+129 \nSoveltumaton täydennys: "%s"
130 \nSoveltumaton %s: '%c'
-131 \nErotin '%c' puuttuu %s "%s" jäljestä
+131 \nErotin '%c' puuttuu %s "%s" jäljestä
132 \nVajaa %s: "%s"
133 Valitsimelle -m ei ole kohdeargumenttia
-134 Käyttö: unlimit [-fh] [rajoitteet (limits)]
+134 Käyttö: unlimit [-fh] [rajoitteet (limits)]
135 Muuttujalle $%S ei voida asettaa arvoa
-136 Viitattua työtä ei ole
+136 Viitattua työtä ei ole
137 Tuntematon colorls-muuttuja `%c%c'
diff --git a/nls/finnish/set10 b/nls/finnish/set10
index 7d1a72e0814c..662b21e94c2d 100644
--- a/nls/finnish/set10
+++ b/nls/finnish/set10
@@ -1,8 +1,8 @@
-$ $tcsh: set10,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set10,v 1.3 2011/02/04 18:19:34 christos Exp $
$ ma.setp.c
$set 10
1 setpath: Virheellinen komento '%s'.\n
-2 setpath: Argumentit ovat riittämättömiä komennolle '%s'.\n
-3 setpath: Arvoa ei löydy hakupolusta '%s'\n
-4 setpath: %s ei löydy paikasta %s\n
-5 setpath: %d ei ole hyväksyttävä sijainti paikassa %s\n
+2 setpath: Argumentit ovat riittämättömiä komennolle '%s'.\n
+3 setpath: Arvoa ei löydy hakupolusta '%s'\n
+4 setpath: %s ei löydy paikasta %s\n
+5 setpath: %d ei ole hyväksyttävä sijainti paikassa %s\n
diff --git a/nls/finnish/set11 b/nls/finnish/set11
index dc1617e472bd..8d1eca668998 100644
--- a/nls/finnish/set11
+++ b/nls/finnish/set11
@@ -1,10 +1,10 @@
-$ $tcsh: set11,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set11,v 1.3 2011/02/04 18:19:34 christos Exp $
$ sh.c
$set 11
-1 Varoitus: ei yhteyttä päätteeseen (%s).\n
-2 Niinpä tässä komentotulkissa ei ole töiden hallintaa.\n
-3 Sinulla on %d sähköpostiviestiä.\n
-4 Sinulla on %d viestiä tiedostossa %s.\n
+1 Varoitus: ei yhteyttä päätteeseen (%s).\n
+2 Niinpä tässä komentotulkissa ei ole töiden hallintaa.\n
+3 Sinulla on %d sähköpostiviestiä.\n
+4 Sinulla on %d viestiä tiedostossa %s.\n
5 Sinulla on %spostia.\n
6 uutta
7 Sinulla on %spostia tiedostossa %s.\n
diff --git a/nls/finnish/set12 b/nls/finnish/set12
index 87bf07a38511..4548efde89f7 100644
--- a/nls/finnish/set12
+++ b/nls/finnish/set12
@@ -1,4 +1,4 @@
-$ $tcsh: set12,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set12,v 1.3 2011/02/04 18:19:34 christos Exp $
$ sh.dir.c
$set 12
-1 %s: Yritetään käynnistää hakemistosta "%s"\n
+1 %s: Yritetään käynnistää hakemistosta "%s"\n
diff --git a/nls/finnish/set13 b/nls/finnish/set13
index 08a9f4cc999b..18b4e663e223 100644
--- a/nls/finnish/set13
+++ b/nls/finnish/set13
@@ -1,13 +1,13 @@
-$ $tcsh: set13,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set13,v 1.3 2011/02/04 18:19:34 christos Exp $
$ sh.exec.c
$set 13
1 hash=%-4d dir=%-2d prog=%s\n
-2 %d hajautusluokkaa, joista jokaisessa %d bittiä\n
+2 %d hajautusluokkaa, joista jokaisessa %d bittiä\n
3 debug mask = 0x%08x\n
4 %d osumia, %d harhoja, %d%%\n
-5 %S: Komentotulkin sisäinen komento.\n
-6 %S: Komentoa ei löydy.\n
-7 where: / käskyssä on mahdoton ajatus\n
+5 %S: Komentotulkin sisäinen komento.\n
+6 %S: Komentoa ei löydy.\n
+7 where: / käskyssä on mahdoton ajatus\n
8 %S on alias komennolle
-9 %S on komentotulkin sisäinen komento\n
+9 %S on komentotulkin sisäinen komento\n
10 hajautusharha:
diff --git a/nls/finnish/set14 b/nls/finnish/set14
index 23fefed27e32..3645ec812c40 100644
--- a/nls/finnish/set14
+++ b/nls/finnish/set14
@@ -1,6 +1,6 @@
-$ $tcsh: set14,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set14,v 1.4 2011/02/04 18:19:34 christos Exp $
$ sh.file.c
$set 14
1 \nAuts!! Liian monta %s!!\n
-2 nimeä käyttäjätietokannassa
+2 nimeä käyttäjätietokannassa
3 tiedostoa
diff --git a/nls/finnish/set16 b/nls/finnish/set16
index 4a61d02248ea..191b6b9e5b80 100644
--- a/nls/finnish/set16
+++ b/nls/finnish/set16
@@ -1,8 +1,8 @@
-$ $tcsh: set16,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set16,v 1.3 2011/02/04 18:19:34 christos Exp $
$ sh.lex.c
$set 16
-1 Päätteen prosessiryhmä vaihdettu arvosta %d %d:ksi.\n
-2 \nSano "logout" kirjoittautuaksesi ulos järjestelmästä.\n
+1 Päätteen prosessiryhmä vaihdettu arvosta %d %d:ksi.\n
+2 \nSano "logout" kirjoittautuaksesi ulos järjestelmästä.\n
3 \nSano "exit" lopettaaksesi %s:n\n
4 seek to eval %x %x\n
5 seek to alias %x %x\n
diff --git a/nls/finnish/set17 b/nls/finnish/set17
index 4657343e4f84..6d497b29265b 100644
--- a/nls/finnish/set17
+++ b/nls/finnish/set17
@@ -1,9 +1,9 @@
-$ $tcsh: set17,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set17,v 1.4 2011/02/04 18:19:34 christos Exp $
$ sh.proc.c
$set 17
-1 VIKA: taustatyötä!\n
+1 VIKA: taustatyötä!\n
2 Paluuarvo %d\n
-3 VIKA: prosessi on hävitetty jo kertaalleen
+3 VIKA: prosessi on hävitetty jo kertaalleen
4 Ajossa
5 Signaali
6 Paluuarvo %-25d
@@ -13,5 +13,5 @@ $set 17
10 \040(hakemisto:
11 hakemisto nyt:
12 %S: On jo keskeytetty\n
-13 %S: On jo pysäytetty\n
+13 %S: On jo pysäytetty\n
14 %S: Badly formed number\n
diff --git a/nls/finnish/set18 b/nls/finnish/set18
index d29d38d89f01..367e77a2fa28 100644
--- a/nls/finnish/set18
+++ b/nls/finnish/set18
@@ -1,4 +1,4 @@
-$ $tcsh: set18,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set18,v 1.3 2011/02/04 18:19:34 christos Exp $
$ sh.set.c
$set 18
-1 Varoitus: Kohtuuttoman pitkä hakupolku (PATH) katkaistu.\n
+1 Varoitus: Kohtuuttoman pitkä hakupolku (PATH) katkaistu.\n
diff --git a/nls/finnish/set19 b/nls/finnish/set19
index 8e6621f96346..59c6fecc6d0a 100644
--- a/nls/finnish/set19
+++ b/nls/finnish/set19
@@ -1,15 +1,23 @@
-$ $tcsh: set19,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set19,v 1.5 2011/02/25 23:58:07 christos Exp $
$ tc.alloc.c
$set 19
1 nbytes=%d: Muisti loppu\n
-2 free(%lx) kutsuttu ennen kuin mitään on varattu.
-3 free(%lx) arvo on sallitun muistialueen yläpuolella.
+2 free(%lx) kutsuttu ennen kuin mitään on varattu.
+3 free(%lx) arvo on sallitun muistialueen yläpuolella.
4 free(%lx) arvo on sallitun muistialueen alapuolella.
5 free(%lx) Virheellinen/viallinen lohko.
6 free(%lx) Lohko ei ole dynaamisesti varatulla alueella.
7 free(%lx) Virheellinen lohkon indeksi.
-8 %s tämänhetkinen muistin varauksien tila:\nvapaana:\t
-9 \nkäytössä:\t
-10 \n\tYhteensä käytössä: %d, yhteensä vapaana: %d\n
+8 %s tämänhetkinen muistin varauksien tila:\nvapaana:\t
+9 käytössä
+10 \n\tYhteensä käytössä: %d, yhteensä vapaana: %d\n
11 \tVarattu muisti alueella 0x%lx .. 0x%lx. Todellinen huippu 0x%lx\n
12 Varattu muisti alueella 0x%lx .. 0x%lx (%ld).\n
+13 %s current memory allocation:\n
+14 Total space allocated from system: %d\n
+15 Number of non-inuse chunks: %d\n
+16 Number of mmapped regions: %d\n
+17 Total space in mmapped regions: %d\n
+18 Total allocated space: %d\n
+19 Total non-inuse space: %d\n
+20 Top-most, releasable space: %d\n
diff --git a/nls/finnish/set2 b/nls/finnish/set2
index e3bc86e8599a..92bdb4834a06 100644
--- a/nls/finnish/set2
+++ b/nls/finnish/set2
@@ -1,94 +1,94 @@
-$ $tcsh: set2,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set2,v 1.3 2011/02/04 18:19:34 christos Exp $
$ Signal names
$set 2
1 Null-signaali
2 Yhteyden katkaisu
3 Keskeytys
4 Lopetus
-5 Virheellinen konekäsky
+5 Virheellinen konekäsky
6 Seuranta-ansa (BPT)
-7 Hätäkeskeytys
-8 Syöttö-/tulostusansa
-9 Järjestelmän alasajo odotettavissa
-10 Virheellinen päättyminen
-11 Jäljittelyansa (EMT)
+7 Hätäkeskeytys
+8 Syöttö-/tulostusansa
+9 Järjestelmän alasajo odotettavissa
+10 Virheellinen päättyminen
+11 Jäljittelyansa (EMT)
12 Liukulukupoikkeus
13 Tapettu
-14 Käyttäjän signaal1 1
-15 Käyttäjän signaali 2
-16 Väärä muistilohko
-17 Väylävirhe
+14 Käyttäjän signaal1 1
+15 Käyttäjän signaali 2
+16 Väärä muistilohko
+17 Väylävirhe
18 Viittaus ohjelma-alueen ulkopuolelle
19 Data sallittujen arvojen ulkopuolella
-20 Tuntematon järjestelmäkutsu
+20 Tuntematon järjestelmäkutsu
21 Murtunut putki
-22 Herätyskello
-23 Päätetty
+22 Herätyskello
+23 Päätetty
24 Poikasen tila muuttunut
25 Poikanen kuollut
26 Apollon laitekohtainen virhe
-27 Poikanen pysähtynyt tai poistunut
+27 Poikanen pysähtynyt tai poistunut
28 Poikanen poistunut
-29 Tehonsyöttö pettänyt
+29 Tehonsyöttö pettänyt
30 Resurssi menetetty
31 Break (Ctrl-Break)
-32 Syöte/tulostus mahdollista
-33 Epäsynkroninen syöte/tulostus (select)
-34 Kiireellinen syöte-/tulostustapahtuma
-35 Herätys moniajossa
+32 Syöte/tulostus mahdollista
+33 Epäsynkroninen syöte/tulostus (select)
+34 Kiireellinen syöte-/tulostustapahtuma
+35 Herätys moniajossa
36 Tappaminen moniajossa
-37 Fortranin epäsynkroninen syöte/tulostus valmis
+37 Fortranin epäsynkroninen syöte/tulostus valmis
38 Toipuminen
39 Korjauskelvoton muistivirhe
-40 Keskusyksikköajan raja ylitetty
-41 Järjestelmän sulkeminen odotettavissa
-42 Pienoistehtäväryhmän ei-herätystä lippu asetettu
-43 Säievirhe - (yksityiskohtaisempia tietoja käskyllä cord -T)
+40 Keskusyksikköajan raja ylitetty
+41 Järjestelmän sulkeminen odotettavissa
+42 Pienoistehtäväryhmän ei-herätystä lippu asetettu
+43 Säievirhe - (yksityiskohtaisempia tietoja käskyllä cord -T)
44 rekisterin pariteettivirhe (CRAY Y-MP)
-45 Tiedotepyyntö
+45 Tiedotepyyntö
46 Keskeytetty (signaali)
-47 Pysäytetty (signaali)
+47 Pysäytetty (signaali)
48 Keskeytetty
-49 Pysäytetty
+49 Pysäytetty
50 Suoritus jatkuu
-51 Keskeytetty (päätesyöte)
-52 Pysäytetty (päätetulostus)
-53 Keskeytetty (päätetulostus)
-54 Pysäytetty (päätetulostus)
+51 Keskeytetty (päätesyöte)
+52 Pysäytetty (päätetulostus)
+53 Keskeytetty (päätetulostus)
+54 Pysäytetty (päätetulostus)
55 Ikkunan tila muuttunut
56 Ikkunan koko muuttunut
57 Puhelinlinjan tila muuttunut
-58 Keskusyksikköajan raja ylitetty
+58 Keskusyksikköajan raja ylitetty
59 Tiedostokoon raja ylitetty
-60 Käyttökelpoisen ajan ajastin laukesi
-61 Ohjelman ajankäytönseurannan ajastin laukesi
+60 Käyttökelpoisen ajan ajastin laukesi
+61 Ohjelman ajankäytönseurannan ajastin laukesi
62 DIL-signaali
63 Tutkittava tapahtuma (poll)
64 Prosessin kevytprosessit Process's lwps are blocked
65 Erityinen kevytprossisignaali (LWP)
66 Erityinen CPR-signaali
67 Erityinen CPR-signaali
-68 Ensimmäinen tosiaikasignaali
+68 Ensimmäinen tosiaikasignaali
69 Toinen tosiaikasignaali
70 Kolmas tosiaikasignaali
-71 Neljäs tosiaikasignaali
-72 Neljänneksi viimeinen tosiaikasignaali
+71 Neljäs tosiaikasignaali
+72 Neljänneksi viimeinen tosiaikasignaali
73 Kolmanneksi viimeinen tosiaikasignaali
74 Toiseksi viimeinen tosiaikasignaali
75 Viimeinen tosiaikasignaali
-76 Paikallisverkko (epäsynkroninen syöte/tulostus)
-77 Näennäispääte (syöte/tulostus valmiina)
-78 Syöte-/tulostustoimenpidettä edellytetään
+76 Paikallisverkko (epäsynkroninen syöte/tulostus)
+77 Näennäispääte (syöte/tulostus valmiina)
+78 Syöte-/tulostustoimenpidettä edellytetään
79 HFT seurantatila luovutettu
80 HFT seurantatila vapautettava
-81 HFT äänenhallinta valmis
+81 HFT äänenhallinta valmis
82 Uutta dataa HFT-rengaspuskurissa
83 Muuta prosessi
-84 Turvallinen huomionäppäin
+84 Turvallinen huomionäppäin
85 Vuorottelutarve
86 SS$_DEBUG -signaali
87 Etusija muuttunut (priority)
88 Todellinen lukkiintumistila
-89 Uusi merkki syötteessä
+89 Uusi merkki syötteessä
90 Pinon raja ylitetty
-91 Käyttämätön signaali
+91 Käyttämätön signaali
diff --git a/nls/finnish/set20 b/nls/finnish/set20
index 4bbc86ab805b..6a79eb2e088c 100644
--- a/nls/finnish/set20
+++ b/nls/finnish/set20
@@ -1,4 +1,4 @@
-$ $tcsh: set20,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set20,v 1.4 2011/02/04 18:19:34 christos Exp $
$ tc.bind.c
$set 20
1 Invalid key name `%S'\n
@@ -6,13 +6,13 @@ $set 20
3 Bad command name: %S\n
4 Bad key spec %S\n
5 Null string specification\n
-6 Standard näppäinmäärittelyt\n
-7 Vaihtoehtoiset näppäinmäärittelyt\n
-8 Monimerkkiset määrittelyt\n
-9 Nuolinäppäinmäärittelyt\n
-10 %-15s-> ei ole määritelty\n
-11 VIKA!!! %s ei ole määritelty mihinkään näppäimeen.\n
-12 Käyttö: bindkey [valitsimet] [--] [NÄPPÄIN [KOMENTO]]\n
+6 Standard näppäinmäärittelyt\n
+7 Vaihtoehtoiset näppäinmäärittelyt\n
+8 Monimerkkiset määrittelyt\n
+9 Nuolinäppäinmäärittelyt\n
+10 %-15s-> ei ole määritelty\n
+11 VIKA!!! %s ei ole määritelty mihinkään näppäimeen.\n
+12 Käyttö: bindkey [valitsimet] [--] [NÄPPÄIN [KOMENTO]]\n
13 -a list or bind KEY in alternative key map\n
14 -b interpret KEY as a C-, M-, F- or X- key name\n
15 -s interpret COMMAND as a literal string to be output\n
@@ -25,8 +25,8 @@ $set 20
22 -k interpret KEY as a symbolic arrow-key name\n
23 -- force a break from option processing\n
24 -u (or any invalid option) this message\n
-25 Ilman NÄPPÄINTÄ tai KOMENTOA tulostetaan kaikki määrittelyt\n
-26 Ilman KOMENTOA tulostetaan NÄPPÄIMEN määrittely.\n
+25 Ilman NÄPPÄINTÄ tai KOMENTOA tulostetaan kaikki määrittelyt\n
+26 Ilman KOMENTOA tulostetaan NÄPPÄIMEN määrittely.\n
27 bad key specification -- null string\n
28 bad key specification -- empty string\n
29 Bad function-key specification. Null key not allowed\n
@@ -36,6 +36,6 @@ $set 20
33 Bad function-key specification.\n
34 Null key not allowed\n
35 bad key specification -- unknown name "%S"\n
-36 Käyttö: bind [NÄPPÄIN | KOMENTO NÄPPÄIN | "emacs" | "vi" | "-a"]\n
+36 Käyttö: bind [NÄPPÄIN | KOMENTO NÄPPÄIN | "emacs" | "vi" | "-a"]\n
37 Invalid function
38 %s\t\tis undefined\n
diff --git a/nls/finnish/set22 b/nls/finnish/set22
index f0b3abf55ccd..dcd0cafa8691 100644
--- a/nls/finnish/set22
+++ b/nls/finnish/set22
@@ -1,17 +1,17 @@
-$ $tcsh: set22,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set22,v 1.4 2011/02/04 18:19:34 christos Exp $
$ tc.func.c
$set 22
1 %S: \t on alias komennolle
-2 \nTunnussana ei ole käyttäjän %s\n
+2 \nTunnussana ei ole käyttäjän %s\n
3 Virheellinen alias 'precmd' poistettu.\n
4 Virheellinen alias 'cwdcmd' poistettu.\n
5 Virheellinen alias 'beepcmd' poistettu.\n
6 Virheellinen alias 'periodic' poistettu.\n
-7 Jäsennetään komentoriviä\n
+7 Jäsennetään komentoriviä\n
8 Haluatko todella tuhota kaikki tiedostot? [e/k]
9 Ohitetaan tiedostojen tuhoaminen!\n
10 Komentorivi on nyt:\n
-11 Jäsennetään komentoriviä\n
-12 on yhdellä listoista\n
+11 Jäsennetään komentoriviä\n
+12 on yhdellä listoista\n
13 Komentorivi on nyt:\n
14 YyKk
diff --git a/nls/finnish/set23 b/nls/finnish/set23
index 0bf9797b0b8f..07556e4bda1c 100644
--- a/nls/finnish/set23
+++ b/nls/finnish/set23
@@ -1,17 +1,17 @@
-$ $tcsh: set23,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set23,v 1.3 2011/02/04 18:19:34 christos Exp $
$ tc.os.c
$set 23
1 Virheellinen solmun nimi
-2 Solmun polku liian pitkä
+2 Solmun polku liian pitkä
3 tuntematon
4 solmu: %s\n
-5 %d: Solmua ei löydy\n
+5 %d: Solmua ei löydy\n
6 setlocal: %s: %s\n
-7 Solmua ei löydy
-8 Olet ansassa maailmassa (universe), mitä et itse luonut.
-9 Getwarp epäonnistui
+7 Solmua ei löydy
+8 Olet ansassa maailmassa (universe), mitä et itse luonut.
+9 Getwarp epäonnistui
10 Virheellinen warp
-11 Setwarp epäonnistui
+11 Setwarp epäonnistui
12 Virheellinen maailma (universe)
13 Tuntematon virhe: %d
14 sysname: %s\n
@@ -20,15 +20,15 @@ $set 23
17 version: %s\n
18 machine: %s\n
19 getwd: Avaus ei onnistu ".." (%s)
-20 getwd: En voi siirtyä hakemistoon ".." (%s)
+20 getwd: En voi siirtyä hakemistoon ".." (%s)
21 getwd: Virhe luettaessa hakemistoa ".." (%s)
-22 getwd: En voi siirtyä takaisin hakemistoon "." (%s)
+22 getwd: En voi siirtyä takaisin hakemistoon "." (%s)
23 getwd: En voi testata (stat) hakemistoa "/" (%s)
24 getwd: En voi testata (stat) hakemistoa "." (%s)
25 getwd: En voi testata (stat) hakemistoa "%s" (%s)
26 getwd: En voi avata hakemistoa "%s" (%s)
-27 getwd: Hakemisto "." ei löydy hakemistosta ".." (%s)
-28 Virheellinen järjestelmän tyyppi
-29 Järjestelmän tyyppiä ei asetettu
+27 getwd: Hakemisto "." ei löydy hakemistosta ".." (%s)
+28 Virheellinen järjestelmän tyyppi
+29 Järjestelmän tyyppiä ei asetettu
30 Liian monta argumenttia
31 Virheellinen argumentti
diff --git a/nls/finnish/set25 b/nls/finnish/set25
index 9e6a00832496..a6dc779cd774 100644
--- a/nls/finnish/set25
+++ b/nls/finnish/set25
@@ -1,6 +1,6 @@
-$ $tcsh: set25,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set25,v 1.3 2011/02/04 18:19:34 christos Exp $
$ tc.sig.c
$set 25
1 our wait %d\n
2 virhe: bsd_signal(%d) signaali on sallitun arvoalueen ulkopuolella\n
-3 virhe: bsd_signal(%d) - sigaction epäonnistui, errno %d\n
+3 virhe: bsd_signal(%d) - sigaction epäonnistui, errno %d\n
diff --git a/nls/finnish/set26 b/nls/finnish/set26
index d20e9f7af9af..e991bb03e0e2 100644
--- a/nls/finnish/set26
+++ b/nls/finnish/set26
@@ -1,15 +1,15 @@
-$ $tcsh: set26,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set26,v 1.3 2011/02/04 18:19:34 christos Exp $
$ tc.who.c
$set 26
-1 Testaaminen ei onnistu: stat(%s). Ole hyvä ja suorita "unset watch".\n
-2 %s ei avaudu. Ole hyvä ja suorita "unset watch".\n
+1 Testaaminen ei onnistu: stat(%s). Ole hyvä ja suorita "unset watch".\n
+2 %s ei avaudu. Ole hyvä ja suorita "unset watch".\n
3 VIKA! viimeinen osa ei ole whotail!\n
4 takaperin:
-5 VIKA! ensimmäinen osa ei ole whohead!\n
+5 VIKA! ensimmäinen osa ei ole whohead!\n
6 uusi: %s/%s\n
7 %n on %a %l koneelta %m.
8 %n on %a %l.
-9 kirjoittautunut sisään linjalle
+9 kirjoittautunut sisään linjalle
10 kirjoittautunut ulos linjalta
11 korvannut tunnuksen %s linjalla
12 localhost
diff --git a/nls/finnish/set27 b/nls/finnish/set27
index decc69a621d8..150cf9e5de73 100644
--- a/nls/finnish/set27
+++ b/nls/finnish/set27
@@ -1,8 +1,8 @@
-$ $tcsh: set27,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set27,v 1.3 2011/02/04 18:19:34 christos Exp $
$ tw.comp.c
$set 27
1 komento
2 erotin
3 malli
4 arvojoukko
-5 täydennys
+5 täydennys
diff --git a/nls/finnish/set29 b/nls/finnish/set29
index 7ccd214cc48c..e610108d5a53 100644
--- a/nls/finnish/set29
+++ b/nls/finnish/set29
@@ -1,4 +1,4 @@
-$ $tcsh: set29,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set29,v 1.3 2011/02/04 18:19:34 christos Exp $
$ tw.help.c
$set 29
-1 Ei löydy aputiedostoa komennolle %S\n
+1 Ei löydy aputiedostoa komennolle %S\n
diff --git a/nls/finnish/set3 b/nls/finnish/set3
index 3ce02ba84a0a..625221b154f1 100644
--- a/nls/finnish/set3
+++ b/nls/finnish/set3
@@ -1,120 +1,120 @@
-$ $tcsh: set3,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set3,v 1.4 2011/02/04 18:19:34 christos Exp $
$ Editor function descriptions
$set 3
-1 Siirry taaksepäin yksi merkki
-2 Poista kursoria edeltävä merkki
+1 Siirry taaksepäin yksi merkki
+2 Poista kursoria edeltävä merkki
3 Leikkaa sanan alusta kursoriin - talleteta leikkauspuskuriin
4 Leikkaa rivin alusta kursoriin - talleteta leikkauspuskuriin
5 Siirry sanan alkuun
6 Siirry rivin alkuun
7 Vaihda isoiksi kirjaimiksi kursorista sanan loppuun
-8 Vi: Vaihda kirjain kursorin alla ison ja pienen välillä, ja etene merkki
+8 Vi: Vaihda kirjain kursorin alla ison ja pienen välillä, ja etene merkki
9 Vi: muuta rivin loppuun
-10 Puhdista kuvaruutu jättäen keskeneräinen rivi ylimmäksi
-11 Täydennä sana
-12 Etene tiedostojen läpi yksi kerrallaan
-13 Peruuta tiedostojen läpi yksi kerrallaan
-14 Täydennä sana huomioimatta ohjelmoitavia täydennyksiä
+10 Puhdista kuvaruutu jättäen keskeneräinen rivi ylimmäksi
+11 Täydennä sana
+12 Etene tiedostojen läpi yksi kerrallaan
+13 Peruuta tiedostojen läpi yksi kerrallaan
+14 Täydennä sana huomioimatta ohjelmoitavia täydennyksiä
15 Kopioi sana kursoriin saakka
-16 Kopioi leikkauspuskuriin alue merkistä kursoriin
-17 Laajenna edelliseksi sanaksi, missä on tämä alkuosa
+16 Kopioi leikkauspuskuriin alue merkistä kursoriin
+17 Laajenna edelliseksi sanaksi, missä on tämä alkuosa
18 Poista merkki kursorin alta
-19 Poista merkki kursorin alta ja ilmoita tiedoston loppu tyhjällä rivillä
-20 Poista merkki kursorin alta ja näytä täydennykset, mikäli rivin lopussa
-21 Poista merkki kursorin alta ja ilmoita täydennykset tai tiedoston loppu
+19 Poista merkki kursorin alta ja ilmoita tiedoston loppu tyhjällä rivillä
+20 Poista merkki kursorin alta ja näytä täydennykset, mikäli rivin lopussa
+21 Poista merkki kursorin alta ja ilmoita täydennykset tai tiedoston loppu
22 Leikkaa kursorista sanan loppuun - talleteta leikkauspuskuriin
-23 Lisää argumenttiin, mikäli sekvenssi on aloitettu tai kyseessä on numero
-24 Numero, mikä aloittaa argumentin
+23 Lisää argumenttiin, mikäli sekvenssi on aloitettu tai kyseessä on numero
+24 Numero, mikä aloittaa argumentin
25 Siirry seuraavalle riville historiassa
26 Muuta pieniksi kirjaimiksi kursorista sanan loppuun
27 Ilmoita tiedoston loppu
-28 Siirrä kursori rivin loppuun
+28 Siirrä kursori rivin loppuun
29 Vaihda kursorin ja merkin paikkaa
30 Laajenna tiedoston nimen jokerimerkit
31 Laajenna viittaukset komentohistoriaan
32 Laajenna viittaukset komentohistoriaan suoraan paikallaan
33 Laajenna muuttujat
-34 Siirry eteenpäin yksi merkki
-35 Siirry eteenpäin sanan loppuun
-36 Vaihda keskenään kursoria edeltävät kaksi merkkiä
-37 Etsi historiasta taaksepäin riviä, mikä alkaa kuten tämä
-38 Etsi historiasta eteenpäin riviä, mikä alkaa kuten tämä
-39 Lisää viimeisen komennon viimeinen osa
-40 Täsmentyvä haku eteenpäin
-41 Täsmentyvä haku taaksepäin
-42 Tyhjennä rivi
+34 Siirry eteenpäin yksi merkki
+35 Siirry eteenpäin sanan loppuun
+36 Vaihda keskenään kursoria edeltävät kaksi merkkiä
+37 Etsi historiasta taaksepäin riviä, mikä alkaa kuten tämä
+38 Etsi historiasta eteenpäin riviä, mikä alkaa kuten tämä
+39 Lisää viimeisen komennon viimeinen osa
+40 Täsmentyvä haku eteenpäin
+41 Täsmentyvä haku taaksepäin
+42 Tyhjennä rivi
43 Leikkaa kursorista rivin loppuun ja talleta leikkauspuskuriin
-44 Leikkaa alue merkistä kursoriin ja talleta leikkauspuskuriin
+44 Leikkaa alue merkistä kursoriin ja talleta leikkauspuskuriin
45 Leikkaa koko rivi ja talleta leikkauspuskuriin
-46 Näytä täydennysvaihtoehdot
-47 Näytä täydennysvaihtoehdot ohittaen ohjelmoitavat taydennykset
-48 Näytä tiedostojen nimien jokerimerkkivastaavuudet
-49 Näytä täydennysvaihtoehdot tai ilmoita tiedoston loppu, jos rivi on tyhjä
-50 Näytä kuormituskeskiarvot ja tämänhetkisen prosessin tila
-51 Laajenna historiaviittaukset ja lisää välilyönti
+46 Näytä täydennysvaihtoehdot
+47 Näytä täydennysvaihtoehdot ohittaen ohjelmoitavat taydennykset
+48 Näytä tiedostojen nimien jokerimerkkivastaavuudet
+49 Näytä täydennysvaihtoehdot tai ilmoita tiedoston loppu, jos rivi on tyhjä
+50 Näytä kuormituskeskiarvot ja tämänhetkisen prosessin tila
+51 Laajenna historiaviittaukset ja lisää välilyönti
52 Suorita komento
-53 Laajenna hakupolut ja korvaa tai taydennä jokainen '.' ja '..'
+53 Laajenna hakupolut ja korvaa tai taydennä jokainen '.' ja '..'
54 Laajenna komennot kokonaisiksi hakupoluiksi tai alias-vastineiksi
-55 Vaihda toimintatilaa lisäyksen ja päällekirjoituksen välillä
-56 Lisää 8. bitti seuraavaan merkkiin (meta)
-57 Lisää seuraava merkki riville sellaisenaan ilman tulkintaa
-58 Näytä kaikki uudestaan
-59 Jatka pysäytettyä tekstinkäsittelyä
-60 Etsi aputietoja tästä komennosta
-61 Tämä merkki lisätään riville
-62 Tämä merkki aloittaa merkkisarjan
+55 Vaihda toimintatilaa lisäyksen ja päällekirjoituksen välillä
+56 Lisää 8. bitti seuraavaan merkkiin (meta)
+57 Lisää seuraava merkki riville sellaisenaan ilman tulkintaa
+58 Näytä kaikki uudestaan
+59 Jatka pysäytettyä tekstinkäsittelyä
+60 Etsi aputietoja tästä komennosta
+61 Tämä merkki lisätään riville
+62 Tämä merkki aloittaa merkkisarjan
63 Aseta merkki kursorin kohdalle
64 Korjaa sanan kirjoitusasu
65 Korjaa koko rivin kirjoitusasu
-66 Lähetä merkki päätteelle erikoismerkkien tulkinnan ja muunnoksien jälkeen
-67 Vaihda esitystä raa'an ja täydennetyn historiarivin välillä
-68 Vaihda kursoria edeltävä merkki ja kursorin alla oleva merkki keskenään
-69 Vaihda kursoria edeltävät kaksi merkkiä keskenään
-70 Tty viivästetty pysäytysmerkki (TSTP)
-71 Tty tulosteen hävittämismerkki
+66 Lähetä merkki päätteelle erikoismerkkien tulkinnan ja muunnoksien jälkeen
+67 Vaihda esitystä raa'an ja täydennetyn historiarivin välillä
+68 Vaihda kursoria edeltävä merkki ja kursorin alla oleva merkki keskenään
+69 Vaihda kursoria edeltävät kaksi merkkiä keskenään
+70 Tty viivästetty pysäytysmerkki (TSTP)
+71 Tty tulosteen hävittämismerkki
72 Tty keskeytysmerkki (INT)
73 Tty lopetusmerkki (QUIT)
-74 Tty pysäytysmerkki (STOP)
+74 Tty pysäytysmerkki (STOP)
75 Tty salli tulostus -merkki
-76 Tty estä tulostus -merkki
-77 Ilmoitus sitomattomasta merkistä
+76 Tty estä tulostus -merkki
+77 Ilmoitus sitomattomasta merkistä
78 Emacs-tyylin toistettava argumentti (4 kertaa argumentti)
79 Siirry edelliselle historiariville
80 Muuta kirjaimet kursorista sanan loppuun isoiksi
81 Vi: siirry seuraavan sanan alkuun
-82 Vi: vaihda lisäystilaan kursorin jälkeen
-83 Vi: vaihda lisäystilaan rivin lopussa
-84 Vi: vaihda kirjain kursorin alla ison ja pienen välillä, ja etene merkki
+82 Vi: vaihda lisäystilaan kursorin jälkeen
+83 Vi: vaihda lisäystilaan rivin lopussa
+84 Vi: vaihda kirjain kursorin alla ison ja pienen välillä, ja etene merkki
85 Vi: vaihda (sanan) alkuliite/-osa
86 Vi: vaihda kursorista rivin loppuun
-87 Vaihda vi:n komentotilaan (vaihtoehtoisin näppäinmäärittelyin)
-88 Vi: komentotilan täydennä sana
-89 Vi: siirry edelliseen merkkiin (backspace, välilyönti taaksepäin)
+87 Vaihda vi:n komentotilaan (vaihtoehtoisin näppäinmäärittelyin)
+88 Vi: komentotilan täydennä sana
+89 Vi: siirry edelliseen merkkiin (backspace, välilyönti taaksepäin)
90 Vi: poista (sanan) alkuliite/-osa
-91 Vi: siirry seuraavaan välilyönnin rajoittamaan sanan loppuun
+91 Vi: siirry seuraavaan välilyönnin rajoittamaan sanan loppuun
92 Vi: siirry seuraavaan sanan loppuun
93 Vi: siirry edelliseen annetun mallin mukaiseen merkkiin
94 Vi: siirry seuraavaan annetun mallin mukaiseen merkkiin
-95 Vi: siirry edelliseen annetun mallin mukaisen merkin jälkeiseen merkkiin
-96 Vi: siirry seuraavaan annetun mallin mukaista merkkiä edeltävään merkkiin
+95 Vi: siirry edelliseen annetun mallin mukaisen merkin jälkeiseen merkkiin
+96 Vi: siirry seuraavaan annetun mallin mukaista merkkiä edeltävään merkkiin
97 Vaihda vi-tilaan
-98 Vaihda vi:n lisäystilaan rivin alussa
-99 Vi: toista viimeinen merkkihaku jatkaen etsintää samaan suuntaan
-100 Vi: toista viimeinen merkkihaku jatkaen etsintää päinvastaiseen suuntaan
-101 Vi: toista viimeinen haku jatkaen etsintää samaan suuntaan
-102 Vi: toista viimeinen haku jatkaen etsintää päinvastaiseen suuntaan
-103 Vi: vaihda kursorin alla oleva merkki seuraavaan näppäiltyyn merkkiin
+98 Vaihda vi:n lisäystilaan rivin alussa
+99 Vi: toista viimeinen merkkihaku jatkaen etsintää samaan suuntaan
+100 Vi: toista viimeinen merkkihaku jatkaen etsintää päinvastaiseen suuntaan
+101 Vi: toista viimeinen haku jatkaen etsintää samaan suuntaan
+102 Vi: toista viimeinen haku jatkaen etsintää päinvastaiseen suuntaan
+103 Vi: vaihda kursorin alla oleva merkki seuraavaan näppäiltyyn merkkiin
104 Vi: korvaustila
-105 Vi: etsi historiasta taaksepäin
-106 Vi: etsi historiasta eteenpäin
-107 Vi: korvaa kursorin alla oleva merkki ja siirry lisäystilaan
+105 Vi: etsi historiasta taaksepäin
+106 Vi: etsi historiasta eteenpäin
+107 Vi: korvaa kursorin alla oleva merkki ja siirry lisäystilaan
108 Vi: korvaa koko rivi
109 Vi: siirry edelliseen sanaan
110 Vi: siirry seuraavaan sanaan
111 Vi: peruuta muutos
112 Vi: siirry rivin alkuun
-113 Suorita 'which' tälle komennolle
-114 Liimaa/lisää leikkauspuskurin sisältö kursorin paikalle
+113 Suorita 'which' tälle komennolle
+114 Liimaa/lisää leikkauspuskurin sisältö kursorin paikalle
115 Korvaa viimeksi liimattu teksti aikaisemmalla leikkauksella
116 (WIN32 only) Copy cut buffer to system clipboard
117 (WIN32 only) Paste clipboard buffer at cursor position
diff --git a/nls/finnish/set6 b/nls/finnish/set6
index f26af6f8d18b..3657227a5d8d 100644
--- a/nls/finnish/set6
+++ b/nls/finnish/set6
@@ -1,11 +1,11 @@
-$ $tcsh: set6,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set6,v 1.3 2011/02/04 18:19:34 christos Exp $
$ ed.inputl.c
$set 6
-1 VIKA: Virheellinen komento näppäimeltä 0%o\r\n
-2 kyllä\n
+1 VIKA: Virheellinen komento näppäimeltä 0%o\r\n
+2 kyllä\n
3 muokkaa\n
-4 keskeytä\n
+4 keskeytä\n
5 ei\n
6 Ei malliin sopivaa komentoa\n
7 Tulkinnanvarainen komento\n
-8 *** kohtalokas VIKA tekstinkäsittelyssä ***\r\n\n
+8 *** kohtalokas VIKA tekstinkäsittelyssä ***\r\n\n
diff --git a/nls/finnish/set7 b/nls/finnish/set7
index 954a75eb6ad3..8e3e52c3f3d1 100644
--- a/nls/finnish/set7
+++ b/nls/finnish/set7
@@ -1,30 +1,30 @@
-$ $tcsh: set7,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set7,v 1.3 2011/02/04 18:19:34 christos Exp $
$ ed.screen.c
$set 7
-1 \n\tTcsh:n mielestä päätteelläsi on\n
+1 \n\tTcsh:n mielestä päätteelläsi on\n
2 \tseuraavat ominaisuudet:\n\n
-3 \tSiinä on %d palstaa ja %d riviä.\n
-4 \tMeta-näppäin %s käytettävissä.\n
+3 \tSiinä on %d palstaa ja %d riviä.\n
+4 \tMeta-näppäin %s käytettävissä.\n
5 on
6 ei ole
-7 \tSe %sosaa hyödyntää tabulaattorimerkkejä.\n
+7 \tSe %sosaa hyödyntää tabulaattorimerkkejä.\n
8 not
-9 \tSiinä %s luottaa automaattisiin marginaaleihin.\n
+9 \tSiinä %s luottaa automaattisiin marginaaleihin.\n
10 voi
11 ei voi
-12 \tSiinä %s luottaa taikamarginaaleihin. (magic margin)\n
+12 \tSiinä %s luottaa taikamarginaaleihin. (magic margin)\n
13 (empty)
14 yes
15 no
-16 VIRHE: Ei pysty tuhoamaan merkkejä.\r\n
+16 VIRHE: Ei pysty tuhoamaan merkkejä.\r\n
17 DeleteChars: Numeroarvo on naurettava: %d\r\n
-18 VIRHE: Ei pysty lisäämään merkkejä keskelle riviä.\r\n
+18 VIRHE: Ei pysty lisäämään merkkejä keskelle riviä.\r\n
19 StartInsert: Numeroarvo on naurettava: %d\r\n
-20 %s: Ei pystytä avaamaan tiedostoa /etc/termcap.\n
-21 %s: Päätetyypille "%s" ei löydy määrittely\n
-22 %s: Käytän tyhmän (dumb) päätteen asetuksia.\n
-23 %s: VAROITUS: Päätteesi ei osaa siirtää kursoria ylöspäin.\n
-24 Pitkillä riveillä tekstinkäsittely voi olla lievästi outoa.\n
-25 Päätteestäsi puuttuu toiminto "tuhoa rivin loppuun".\n
-26 Päätteestäsi puuttuu toiminto "tuhoa merkki".\n
-27 Päätteestäsi puuttuu toiminto "lisää merkki aiempien väliin".\n
+20 %s: Ei pystytä avaamaan tiedostoa /etc/termcap.\n
+21 %s: Päätetyypille "%s" ei löydy määrittely\n
+22 %s: Käytän tyhmän (dumb) päätteen asetuksia.\n
+23 %s: VAROITUS: Päätteesi ei osaa siirtää kursoria ylöspäin.\n
+24 Pitkillä riveillä tekstinkäsittely voi olla lievästi outoa.\n
+25 Päätteestäsi puuttuu toiminto "tuhoa rivin loppuun".\n
+26 Päätteestäsi puuttuu toiminto "tuhoa merkki".\n
+27 Päätteestäsi puuttuu toiminto "lisää merkki aiempien väliin".\n
diff --git a/nls/finnish/set9 b/nls/finnish/set9
index befc4a85a6ad..c814c49f6d8c 100644
--- a/nls/finnish/set9
+++ b/nls/finnish/set9
@@ -1,12 +1,12 @@
-$ $tcsh: set9,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set9,v 1.3 2011/02/04 18:19:34 christos Exp $
$ ed.xmap.c
$set 9
1 AddXkey: Null extended-key not allowed.\n
2 AddXkey: sequence-lead-in command not allowed\n
3 DeleteXkey: Null extended-key not allowed.\n
-4 Sitomaton laajennettu näppäin "%S"\n
-5 Jotkin laajennetut näppäimet ovat liian pitkiä sisäiseen tulostuspuskurille
-6 Enumerate: VIKA!! Välitetty null-osoitin\n!
-7 ei syötettä
+4 Sitomaton laajennettu näppäin "%S"\n
+5 Jotkin laajennetut näppäimet ovat liian pitkiä sisäiseen tulostuspuskurille
+6 Enumerate: VIKA!! Välitetty null-osoitin\n!
+7 ei syötettä
8 Jotain on seurattava: %c\n
9 Oktaalivakio ei mahdu char-tyypin muuttujaan.\n
diff --git a/nls/french/charset b/nls/french/charset
index 0b13559084f6..81f1b6669c79 100644
--- a/nls/french/charset
+++ b/nls/french/charset
@@ -1,3 +1,3 @@
-$ codeset=ISO-8859-1
+$ codeset=UTF-8
$set 255
-1 ISO-8859-1
+1 UTF-8
diff --git a/nls/french/set1 b/nls/french/set1
index 111cfed52254..cfb13f2ba8ed 100644
--- a/nls/french/set1
+++ b/nls/french/set1
@@ -1,8 +1,8 @@
-$ $tcsh: set1,v 1.4 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set1,v 1.5 2011/02/04 18:19:35 christos Exp $
$ Messages d 'erreur
$set 1
1 Erreur de syntaxe
-2 %s n'est pas autorisé
+2 %s n'est pas autorisé
3 Mot trop long
4 $< ligne trop longue
5 Pas de fichier pour $0
@@ -10,130 +10,130 @@ $set 1
7 $ l'expansion doit se terminer avant ]
8 Mauvais : modificateur dans $ (%c)
9 Erreur d'indice
-10 Numéro mal formé
+10 Numéro mal formé
11 Plus de mots
12 Nom de fichier manquant
13 Erreur globale interne
14 Commande introuvable
15 Trop peu d'arguments
16 Trop d'arguments
-17 Trop dangereux d'attribuer un alias à cela
+17 Trop dangereux d'attribuer un alias à cela
18 `If' vide
19 `Then' incorrect
-20 Les mots ne sont pas placés entre parenthèses
+20 Les mots ne sont pas placés entre parenthèses
21 %s introuvable
22 Masque incorrect
23 Pas de limite de ce type
24 Argument trop long
-25 Facteur d'échelle incorrect ou inconnu
-26 Variable pas définie
-27 La pile de répertoires n'a pas cette taille
-28 Mauvais numéro de signal
+25 Facteur d'échelle incorrect ou inconnu
+26 Variable pas définie
+27 La pile de répertoires n'a pas cette taille
+28 Mauvais numéro de signal
29 Signal inconnu; "kill -l" permet de lister les signaux
30 Le nom de la variable doit commencer par une lettre
31 Le nom de la variable est trop long
-32 Le nom de la variable ne doit contenir que des caractères alphanumériques
+32 Le nom de la variable ne doit contenir que des caractères alphanumériques
33 Pas de gestion des travaux dans ce shell
34 Syntaxe de l'expression
-35 Pas de répertoire personnel
-36 Impossible de passer dans le répertoire personnel
+35 Pas de répertoire personnel
+36 Impossible de passer dans le répertoire personnel
37 Commande nulle incorrecte
38 Il manque l'affectation dans l'expression
-39 Opérateur inconnu
+39 Opérateur inconnu
40 ambigu
41 %s: Le fichier existe
42 L'argument pour -c se termine avec un anti-slash
43 Interrompu
44 Indice hors limites
-45 Dépassement de capacité de ligne
+45 Dépassement de capacité de ligne
46 Pas de travail de ce type
-47 Impossible à partir d'un terminal
-48 Vous n'êtes pas dans une boucle while ou foreach
+47 Impossible à partir d'un terminal
+48 Vous n'êtes pas dans une boucle while ou foreach
49 Plus de processus
50 Pas de correspondance
51 %c manquant
52 %c sans correspondance
-53 Mémoire insuffisante
-54 Impossible de créer un tube
+53 Mémoire insuffisante
+54 Impossible de créer un tube
55 %s: %s
56 %s
57 Syntaxe: jobs [ -l ]
-58 Les arguments doivent être des ID de processus ou des numéros de travaux
+58 Les arguments doivent être des ID de processus ou des numéros de travaux
59 Pas de travail en cours
-60 Pas de travail précédent
+60 Pas de travail précédent
61 Pas de travail de cette forme
-62 Emboîtement des `Fork' > %d; peut-être une boucle `...`
+62 Emboîtement des `Fork' > %d; peut-être une boucle `...`
63 Pas de gestion des travaux dans les sous-shells
-64 Faute `Sync': Processus %d pas trouvé
+64 Faute `Sync': Processus %d pas trouvé
65 %s Il y a des travaux interrompus
-66 %s Il y a des travaux arrêtés
-67 Pas d'autre répertoire
-68 La pile de répertoires est vide
-69 Répertoire incorrect
+66 %s Il y a des travaux arrêtés
+67 Pas d'autre répertoire
+68 La pile de répertoires est vide
+69 Répertoire incorrect
70 Syntaxe: %s [-%s]%s
-71 Pas d'opérande pour l'indicateur -h
+71 Pas d'opérande pour l'indicateur -h
72 Ce n'est pas un shell de connexion
-73 Division par zéro
-74 Modulo par zéro
-75 Mise à l'échelle incorrecte ; cela signifie-t-il ``%s'' ?
+73 Division par zéro
+74 Modulo par zéro
+75 Mise à l'échelle incorrecte ; cela signifie-t-il ``%s'' ?
76 Impossible d'interrompre un shell de connexion
77 Utilisateur inconnu : %s
-78 Pas de variable `$home' définie
-79 Syntaxe: history [-%s] [# nombre d'évènements]
-80 $, ! ou < pas autorisés avec $# or $?
+78 Pas de variable `$home' définie
+79 Syntaxe: history [-%s] [# nombre d'évènements]
+80 $, ! ou < pas autorisés avec $# or $?
81 Retour-chariot dans un nom de variable
-82 * pas autorisé avec $# or $?
-83 $?<digit> ou $#<digit> pas autorisé
+82 * pas autorisé avec $# or $?
+83 $?<digit> ou $#<digit> pas autorisé
84 Nom de variable incorrect
85 Retour-chariot dans l'index de variable
-86 Dépassement de capacité de la mémoire tampon d'expansion
+86 Dépassement de capacité de la mémoire tampon d'expansion
87 Syntaxe de variable
88 Forme ! incorrecte
-89 Pas de remplacement précédent
+89 Pas de remplacement précédent
90 Remplacement incorrect
-91 Pas de partie gauche précédente
+91 Pas de partie gauche précédente
92 Partie droite trop longue
93 Modificateur ! incorrect: %c
94 Echec du modificateur
-95 Dépassement de capacité de la mémoire tampon de substitution
-96 Sélecteur d'argument ! incorrect
-97 Pas de recherche précédente
-98 %s: événement introuvable
-99 Trop de caractères )
-100 Trop de caractères (
-101 Caractère ( mal placé
+95 Dépassement de capacité de la mémoire tampon de substitution
+96 Sélecteur d'argument ! incorrect
+97 Pas de recherche précédente
+98 %s: événement introuvable
+99 Trop de caractères )
+100 Trop de caractères (
+101 Caractère ( mal placé
102 Il manque un nom pour rediriger
103 Redirection de sortie ambigue
-104 Pas de << entre les caractères ( et )
-105 Redirection d'entrée ambigue
-106 Caractères () mal placés
+104 Pas de << entre les caractères ( et )
+105 Redirection d'entrée ambigue
+106 Caractères () mal placés
107 Boucle dans les alias
-108 Pas de variable `$watch' définie
-109 Pas d'évènement prévu
-110 Syntaxe: sched -<#numéro>.\nSyntaxe: sched [+]hh:mm <commande>
-111 Pas tant d'évènements prévus
-112 Pas de commande à lancer
-113 Temps incorrect pour l'évènement
+108 Pas de variable `$watch' définie
+109 Pas d'évènement prévu
+110 Syntaxe: sched -<#numéro>.\nSyntaxe: sched [+]hh:mm <commande>
+111 Pas tant d'évènements prévus
+112 Pas de commande à lancer
+113 Temps incorrect pour l'évènement
114 Temps relatif incompatible avec am/pm
115 Pas assez de place pour la chaine termcap
116 Syntaxe: settc %s [yes|no]
-117 Capacité `%s' inconnue
-118 Paramètre termcap inconnu `%%%c'
+117 Capacité `%s' inconnue
+118 Paramètre termcap inconnu `%%%c'
119 Trop d'arguments pour `%s' (%d)
-120 `%s' nécessite %d arguments
-121 Syntaxe: echotc [-v|-s] [<capacité> [<args>]]
+120 `%s' nécessite %d arguments
+121 Syntaxe: echotc [-v|-s] [<capacité> [<args>]]
122 %s: %s. Mauvaise Architecture
123 !# Boucle dans l'historique
124 Mauvaise recherche de fichier
-125 Dépassement de capacité de sélecteur
+125 Dépassement de capacité de sélecteur
126 Option inconnue: `-%s'\nSyntaxe: %s [ -bcdefilmnqstvVxX -Dnom[=valeur] ] [ argument ... ]
127 Option inconnue: `-%s'\nSyntaxe: %s [ -bcdefFilmnqstvVxX ] [ argument ... ]
128 Option inconnue: `-%s'\nSyntaxe: %s [ -bcdefilmnqstvVxX ] [ argument ... ]
-129 \nComplément incorrect: "%s"
+129 \nComplément incorrect: "%s"
130 \n%s incorrect: '%c'
-131 \nIl manque le séparateur '%c' après %s "%s"
+131 \nIl manque le séparateur '%c' après %s "%s"
132 \n%s incomplet: "%s"
-133 Pas d'opérande pour l'indicateur -m
+133 Pas d'opérande pour l'indicateur -m
134 Syntaxe: unlimit [-fh] [limites]
135 $%S est en lecture seule
136 Pas de travail de ce type
diff --git a/nls/french/set10 b/nls/french/set10
index 8df42bd3317d..9a9a30d9439b 100644
--- a/nls/french/set10
+++ b/nls/french/set10
@@ -1,8 +1,8 @@
-$ $tcsh: set10,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set10,v 1.3 2011/02/04 18:19:35 christos Exp $
$ ma.setp.c
$set 10
1 setpath: commande incorrecte '%s'.\n
2 setpath: pas assez d'arguments pour la commande '%s'.\n
-3 setpath: donnée manquante dans le chemin '%s'\n
-4 setpath: %s pas trouvé dans %s\n
+3 setpath: donnée manquante dans le chemin '%s'\n
+4 setpath: %s pas trouvé dans %s\n
5 setpath: %d pas une position correcte dans %s\n
diff --git a/nls/french/set11 b/nls/french/set11
index 1f58163c4052..6545c9e6b932 100644
--- a/nls/french/set11
+++ b/nls/french/set11
@@ -1,8 +1,8 @@
-$ $tcsh: set11,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set11,v 1.4 2011/02/04 18:19:35 christos Exp $
$ sh.c
$set 11
-1 Attention: pas d'accès au tty (%s).\n
-2 Ainsi pas de contrôle de job dans ce shell.\n
+1 Attention: pas d'accès au tty (%s).\n
+2 Ainsi pas de contrôle de job dans ce shell.\n
3 Vous avez %d messages courrier (mail).\n
4 Vous avez %d messages courrier (mail) dans %s.\n
5 Vous avez du %scourrier.\n
diff --git a/nls/french/set12 b/nls/french/set12
index 8b04a6a3c157..5f1226bcbd7e 100644
--- a/nls/french/set12
+++ b/nls/french/set12
@@ -1,4 +1,4 @@
-$ $tcsh: set12,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set12,v 1.4 2011/02/04 18:19:35 christos Exp $
$ sh.dir.c
$set 12
-1 %s: Essaie de démarrer à partir de "%s"\n
+1 %s: Essaie de démarrer à partir de "%s"\n
diff --git a/nls/french/set13 b/nls/french/set13
index fd768abb6fa6..ecede2d8fc1f 100644
--- a/nls/french/set13
+++ b/nls/french/set13
@@ -1,13 +1,13 @@
-$ $tcsh: set13,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set13,v 1.3 2011/02/04 18:19:35 christos Exp $
$ sh.exec.c
$set 13
1 hash=%-4d dir=%-2d prog=%s\n
2 %d groupes de hashage de %d bits chacun\n
-3 masque de déboguage = 0x%08x\n
-4 %d réussis, %d manqués, %d%%\n
-5 %S: commande intégrée au shell.\n
-6 %S: Commande pas trouvée.\n
-7 où: / dans la commande n'a pas de sens\n
+3 masque de déboguage = 0x%08x\n
+4 %d réussis, %d manqués, %d%%\n
+5 %S: commande intégrée au shell.\n
+6 %S: Commande pas trouvée.\n
+7 où: / dans la commande n'a pas de sens\n
8 %S est un alias avec
-9 %S est intégré(e) au shell\n
-10 hashage manqués:
+9 %S est intégré(e) au shell\n
+10 hashage manqués:
diff --git a/nls/french/set15 b/nls/french/set15
index 9d4004487ffe..b77b62e4aa6f 100644
--- a/nls/french/set15
+++ b/nls/french/set15
@@ -1,7 +1,7 @@
-$ $tcsh: set15,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set15,v 1.3 2011/02/04 18:19:35 christos Exp $
$ sh.func.c
$set 15
1 %s: %s: ne peut %s la limite%s\n
2 enlever
3 positionner
-4 matérielle
+4 matérielle
diff --git a/nls/french/set16 b/nls/french/set16
index e5a18c6470aa..e5871af2540a 100644
--- a/nls/french/set16
+++ b/nls/french/set16
@@ -1,8 +1,8 @@
-$ $tcsh: set16,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set16,v 1.4 2011/02/04 18:19:35 christos Exp $
$ sh.lex.c
$set 16
-1 Réinitialise le groupe de processus des terminaux de %d à %d\n
-2 \nUtilisez "logout" pour vous déconnecter.\n
+1 Réinitialise le groupe de processus des terminaux de %d à %d\n
+2 \nUtilisez "logout" pour vous déconnecter.\n
3 \nUtilisez "exit" pour quitter %s.\n
4 seek to eval %x %x\n
5 seek to alias %x %x\n
diff --git a/nls/french/set17 b/nls/french/set17
index ad57470fe243..e6db518ce132 100644
--- a/nls/french/set17
+++ b/nls/french/set17
@@ -1,17 +1,17 @@
-$ $tcsh: set17,v 1.4 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set17,v 1.5 2011/02/04 18:19:35 christos Exp $
$ sh.proc.c
$set 17
-1 BUG: attente de travail en tâche de fond !\n
+1 BUG: attente de travail en tâche de fond !\n
2 Sortie %d\n
-3 BUG: processus vidé deux fois
+3 BUG: processus vidé deux fois
4 Tourne
5 Signal
6 Sortie %-25d
7 Fait
-8 BUG: état=%-9o
+8 BUG: état=%-9o
9 \040(core dumped)
10 \040(wd:
11 wd maintenant:
-12 %S: Déjà suspendu\n
-13 %S: Déjà arrêté\n
+12 %S: Déjà suspendu\n
+13 %S: Déjà arrêté\n
14 %S: Badly formed number\n
diff --git a/nls/french/set18 b/nls/french/set18
index c0caa262cf74..09f98cb4cdcd 100644
--- a/nls/french/set18
+++ b/nls/french/set18
@@ -1,4 +1,4 @@
-$ $tcsh: set18,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set18,v 1.3 2011/02/04 18:19:35 christos Exp $
$ sh.set.c
$set 18
-1 Attention: le PATH exagérément long est tronqué\n
+1 Attention: le PATH exagérément long est tronqué\n
diff --git a/nls/french/set19 b/nls/french/set19
index cafc9602fbd8..d37facf68e88 100644
--- a/nls/french/set19
+++ b/nls/french/set19
@@ -1,15 +1,23 @@
-$ $tcsh: set19,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set19,v 1.6 2011/02/25 23:58:07 christos Exp $
$ tc.alloc.c
$set 19
-1 nbytes=%d: Plus de mémoire\n
-2 free(%lx) appelé avant allocation.
-3 free(%lx) au delà de la limite memoire.
-4 free(%lx) en deçà de la limite memoire.
+1 nbytes=%d: Plus de mémoire\n
+2 free(%lx) appelé avant allocation.
+3 free(%lx) au delà de la limite memoire.
+4 free(%lx) en deçà de la limite memoire.
5 free(%lx) mauvais bloc.
6 free(%lx) limites incorrectes.
7 free(%lx) index de bloc incorrect.
-8 %s allocation mémoire actuelle:\nfree:\t
-9 \nutilisé:\t
-10 \n\tTotal utilisé: %d, total libre: %d\n
-11 \tMémoire allouée de 0x%lx à 0x%lx. Limite réelle supérieure à 0x%lx\n
-12 Mémoire allouée de 0x%lx à 0x%lx (%ld).\n
+8 %s allocation mémoire actuelle:\nfree:\t
+9 utilisé
+10 \n\tTotal utilisé: %d, total libre: %d\n
+11 \tMémoire allouée de 0x%lx à 0x%lx. Limite réelle supérieure à 0x%lx\n
+12 Mémoire allouée de 0x%lx à 0x%lx (%ld).\n
+13 %s current memory allocation:\n
+14 Total space allocated from system: %d\n
+15 Number of non-inuse chunks: %d\n
+16 Number of mmapped regions: %d\n
+17 Total space in mmapped regions: %d\n
+18 Total allocated space: %d\n
+19 Total non-inuse space: %d\n
+20 Top-most, releasable space: %d\n
diff --git a/nls/french/set2 b/nls/french/set2
index c6b0eebb2059..1922ab1ebeac 100644
--- a/nls/french/set2
+++ b/nls/french/set2
@@ -1,94 +1,94 @@
-$ $tcsh: set2,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set2,v 1.4 2011/02/04 18:19:35 christos Exp $
$ Messages Signaux
$set 2
1 Signal nul
2 Interrompu
-3 Arrêté
+3 Arrêté
4 Sortie
5 Instruction interdite
-6 Piège Trace/BPT
+6 Piège Trace/BPT
7 Abandon
-8 Piège IOT
-9 Plantage système imminent
+8 Piège IOT
+9 Plantage système imminent
10 Sortie erreur
-11 Piège EMT
+11 Piège EMT
12 Exception de calcul en virgule flottante
-13 Supprimé
+13 Supprimé
14 Signal utilisateur 1
15 Signal utilisateur 2
16 Incident de segmentation
17 Erreur de bus
18 Program range error
19 Operand range error
-20 Appel système incorrect
-21 Tube détruit
+20 Appel système incorrect
+21 Tube détruit
22 Alarme
-23 Terminé
-24 L'état du fils a changé
+23 Terminé
+24 L'état du fils a changé
25 Mort du fils
-26 Faute spécifique Apollo
-27 Fils arrêté ou sorti
+26 Faute spécifique Apollo
+27 Fils arrêté ou sorti
28 Fils sorti
29 Coupure d'alimentation
30 Ressource perdue
31 Break (Ctrl-Break)
32 Signal d'E-S possible
-33 Entrée-Sortie asynchrone (select)
+33 Entrée-Sortie asynchrone (select)
34 Condition urgente sur canal d'E-S
-35 Reprise multi-tâche
-36 Terminaison multi-tâche
-37 Achèvement d'E-S asynchrone Fortran
+35 Reprise multi-tâche
+36 Terminaison multi-tâche
+37 Achèvement d'E-S asynchrone Fortran
38 Reprise
-39 Erreur mémoire irrécupérable
-40 Limite temps CPU dépassée
-41 Arrêt du système imminent
-42 Groupe micro-tasking-pas d'option de réveil définie
+39 Erreur mémoire irrécupérable
+40 Limite temps CPU dépassée
+41 Arrêt du système imminent
+42 Groupe micro-tasking-pas d'option de réveil définie
43 Erreur de thread - (utilisez cord -T pour plus d'infos)
-44 Erreur de parité de registre du CRAY Y-MP
+44 Erreur de parité de registre du CRAY Y-MP
45 Demande d'information
46 Interrompu (Signal)
-47 Stoppé (Signal)
+47 Stoppé (Signal)
48 Interrompu
-49 Stoppé
+49 Stoppé
50 Continue
-51 Entrée tty suspendue
-52 Entrée tty arrêtée
+51 Entrée tty suspendue
+52 Entrée tty arrêtée
53 Sortie tty suspendue
-54 Sortie tty arrêtée
-55 Etat de la fenêtre modifié
-56 Taille de la fenêtre modifiée
-57 Etat du téléphone modifié
-58 Limite temps CPU dépassée
-59 Taille limite de fichier dépassée
+54 Sortie tty arrêtée
+55 Etat de la fenêtre modifié
+56 Taille de la fenêtre modifiée
+57 Etat du téléphone modifié
+58 Limite temps CPU dépassée
+59 Taille limite de fichier dépassée
60 Signal de l'horloge virtuelle
61 Signal de profil
62 Signal DIL
-63 Un évènement à scruter est arrivé
+63 Un évènement à scruter est arrivé
64 Process's lwps are blocked
65 Signal Special LWP
66 Signal Special CPR
67 Signal Special CPR
-68 Premier signal temps réel
-69 Deuxième signal temps réel
-70 Troisième signal temps réel
-71 Quatrième signal temps réel
-72 Quatrième signal temps réel avant la fin
-73 Antépénultième signal temps réel
-74 Avant-dernier signal temps réel
-75 Dernier signal temps réel
+68 Premier signal temps réel
+69 Deuxième signal temps réel
+70 Troisième signal temps réel
+71 Quatrième signal temps réel
+72 Quatrième signal temps réel avant la fin
+73 Antépénultième signal temps réel
+74 Avant-dernier signal temps réel
+75 Dernier signal temps réel
76 E-S asynchrone LAN
77 Lecture/Ecriture PTY disponible
-78 Intervention E-S nécessaire
-79 Mode moniteur HFT accordé
-80 Le mode moniteur HFT doit être abandonné
-81 Le contrôle du son HFT est terminé
-82 Données en buffer circulaire HFT
+78 Intervention E-S nécessaire
+79 Mode moniteur HFT accordé
+80 Le mode moniteur HFT doit être abandonné
+81 Le contrôle du son HFT est terminé
+82 Données en buffer circulaire HFT
83 Processus de transfert
-84 Touche d'attention sécurisée
-85 Re-séquencement
+84 Touche d'attention sécurisée
+85 Re-séquencement
86 Signal SS$_DEBUG
-87 Priorité modifiée
-88 detecté
-89 Nouveau caractère d'entrée
+87 Priorité modifiée
+88 detecté
+89 Nouveau caractère d'entrée
90 Stack limit exceeded
91 Unused signal
diff --git a/nls/french/set20 b/nls/french/set20
index 2595d06402c6..0e41253e24dc 100644
--- a/nls/french/set20
+++ b/nls/french/set20
@@ -1,41 +1,41 @@
-$ $tcsh: set20,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set20,v 1.3 2011/02/04 18:19:35 christos Exp $
$ tc.bind.c
$set 20
1 Nom de touche incorrect `%S'\n
2 Mauvais nom de touche: %S\n
3 Mauvais nom de commande: %S\n
-4 Mauvaise touche spécifiée %S\n
-5 Chaine nulle spécifiée\n
-6 Définition de touches standard\n
-7 Définition de touches alternatives\n
-8 Définition Multi-caractères\n
-9 Définition des touches de direction\n
-10 %-15s-> n'est pas défini\n
-11 BUG!!! %s n'est lié à rien.\n
+4 Mauvaise touche spécifiée %S\n
+5 Chaine nulle spécifiée\n
+6 Définition de touches standard\n
+7 Définition de touches alternatives\n
+8 Définition Multi-caractères\n
+9 Définition des touches de direction\n
+10 %-15s-> n'est pas défini\n
+11 BUG!!! %s n'est lié à rien.\n
12 Usage: bindkey [options] [--] [TOUCHE [COMMANDE]]\n
-13 -a liste ou définit la TOUCHE dans la table des touches alternatives\n
-14 -b interprète TOUCHE comme un nom de touche C-, M-, F- or X-\n
-15 -s interprète COMMANDE comme une chaine littérale devant être sortie\n
-16 -c interprète COMMANDE comme une commande intégrée ou externe\n
-17 -v redéfinit toutes les touches pour vi\n
-18 -e redéfinit toutes les touches pour emacs\n
-19 -d redéfinit toutes les touches pour de l'éditeur par defaut\n
-20 -l liste les commandes de l'éditeur avec descriptions\n
-21 -r enlève la correspondance pour la TOUCHE\n
-22 -k interprète TOUCHE comme un nom de touche de direction symbolique\n
-23 -- force un arrêt dans le traitement de l'option\n
+13 -a liste ou définit la TOUCHE dans la table des touches alternatives\n
+14 -b interprète TOUCHE comme un nom de touche C-, M-, F- or X-\n
+15 -s interprète COMMANDE comme une chaine littérale devant être sortie\n
+16 -c interprète COMMANDE comme une commande intégrée ou externe\n
+17 -v redéfinit toutes les touches pour vi\n
+18 -e redéfinit toutes les touches pour emacs\n
+19 -d redéfinit toutes les touches pour de l'éditeur par defaut\n
+20 -l liste les commandes de l'éditeur avec descriptions\n
+21 -r enlève la correspondance pour la TOUCHE\n
+22 -k interprète TOUCHE comme un nom de touche de direction symbolique\n
+23 -- force un arrêt dans le traitement de l'option\n
24 -u (ou toute option incorrecte) ce message\n
25 Sans TOUCHE ni COMMANDE, imprime toutes les associations\n
26 Sans COMMANDE, imprime l'association pour TOUCHE.\n
-27 mauvaise spécification de touche -- chaine nulle\n
-28 mauvaise spécification de touche -- chaine vide\n
-29 mauvaise spécification de touche de fonction. Touche nulle pas autorisé\n
-30 mauvaise spécification de touche -- nombre hexa mal formé\n
-31 mauvaise spécification de touche -- nombre octal mal formé\n
-32 mauvaise spécification de touche -- nombre décimal mal formé\n
-33 Mauvaise spécification de touche de fonction.\n
-34 Touche nulle pas autorisé\n
-35 Mauvaise spécification de touche -- nom inconnu "%S"\n
+27 mauvaise spécification de touche -- chaine nulle\n
+28 mauvaise spécification de touche -- chaine vide\n
+29 mauvaise spécification de touche de fonction. Touche nulle pas autorisé\n
+30 mauvaise spécification de touche -- nombre hexa mal formé\n
+31 mauvaise spécification de touche -- nombre octal mal formé\n
+32 mauvaise spécification de touche -- nombre décimal mal formé\n
+33 Mauvaise spécification de touche de fonction.\n
+34 Touche nulle pas autorisé\n
+35 Mauvaise spécification de touche -- nom inconnu "%S"\n
36 Syntaxe: bind [TOUCHE | COMMANDE TOUCHE | "emacs" | "vi" | "-a"]\n
37 Fonction incorrecte
-38 %s\t\tn'est pas défini\n
+38 %s\t\tn'est pas défini\n
diff --git a/nls/french/set21 b/nls/french/set21
index 670e9e51b4bb..c1a8c4dc641b 100644
--- a/nls/french/set21
+++ b/nls/french/set21
@@ -1,5 +1,5 @@
-$ $tcsh: set21,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set21,v 1.3 2011/02/04 18:19:35 christos Exp $
$ tc.disc.c
$set 21
-1 ne peut obtenir les caractères locaux.\n
-2 ne peut définir les catactères locaux.\n
+1 ne peut obtenir les caractères locaux.\n
+2 ne peut définir les catactères locaux.\n
diff --git a/nls/french/set22 b/nls/french/set22
index c59fe9719375..7b9135174260 100644
--- a/nls/french/set22
+++ b/nls/french/set22
@@ -1,17 +1,17 @@
-$ $tcsh: set22,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set22,v 1.3 2011/02/04 18:19:35 christos Exp $
$ tc.func.c
$set 22
1 %S: \t a comme alias
2 \nMot de passe incorrect pour %s\n
-3 Erreur alias 'precmd' enlevé.\n
-4 Erreur alias 'cwdcmd' enlevé.\n
-5 Erreur alias 'beepcmd' enlevé.\n
-6 Erreur alias 'periodic' enlevé.\n
-7 étude de la ligne de commande\n
+3 Erreur alias 'precmd' enlevé.\n
+4 Erreur alias 'cwdcmd' enlevé.\n
+5 Erreur alias 'beepcmd' enlevé.\n
+6 Erreur alias 'periodic' enlevé.\n
+7 étude de la ligne de commande\n
8 Voulez vous vraiment supprimer tous les fichiers? [n/y]
9 passe la suppression des fichiers!\n
10 la ligne de commande est maintenant :\n
-11 étude de la ligne de commande\n
+11 étude de la ligne de commande\n
12 dans une des listes\n
13 la ligne de commande est maintenant :\n
14 OoyY
diff --git a/nls/french/set23 b/nls/french/set23
index 5fb6339c99e8..064b9ce04388 100644
--- a/nls/french/set23
+++ b/nls/french/set23
@@ -1,17 +1,17 @@
-$ $tcsh: set23,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set23,v 1.4 2011/02/04 18:19:35 christos Exp $
$ tc.os.c
$set 23
1 Mauvais nom de cpu/site
2 Chemin du site trop mong
3 inconnu
4 site: %s\n
-5 %d: Site pas trouvé\n
+5 %d: Site pas trouvé\n
6 setlocal: %s: %s\n
-7 Site pas trouvé
-8 Vous êtes piégé dans un univers que vous n'avez jamais créé
-9 Getwarp a échoué
+7 Site pas trouvé
+8 Vous êtes piégé dans un univers que vous n'avez jamais créé
+9 Getwarp a échoué
10 warp invalide
-11 Setwarp a échoué
+11 Setwarp a échoué
12 Univers incorrect
13 Erreur inconnue : %d
14 sysname: %s\n
@@ -22,13 +22,13 @@ $set 23
19 getwd: Ne peut ouvrir ".." (%s)
20 getwd: Ne peut effectuer chdir vers ".." (%s)
21 getwd: Erreur en lecture dans ".." (%s)
-22 getwd: Ne peut revenir à "." (%s)
+22 getwd: Ne peut revenir à "." (%s)
23 getwd: Ne peut effectuer stat "/" (%s)
24 getwd: Ne peut effectuer stat "." (%s)
-25 getwd: Ne peut effectuer stat sur répertoire "%s" (%s)
-26 getwd: Ne peut ouvrir le répertoire "%s" (%s)
+25 getwd: Ne peut effectuer stat sur répertoire "%s" (%s)
+26 getwd: Ne peut ouvrir le répertoire "%s" (%s)
27 getwd: Ne peut trouver "." dans ".." (%s)
-28 Type de système incorrect
-29 Le type de système n'est pas défini
+28 Type de système incorrect
+29 Le type de système n'est pas défini
30 XXX: Too many arguments
31 XXX: Invalid argument
diff --git a/nls/french/set25 b/nls/french/set25
index 7bf62acf8f74..2d7c80b90841 100644
--- a/nls/french/set25
+++ b/nls/french/set25
@@ -1,6 +1,6 @@
-$ $tcsh: set25,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set25,v 1.3 2011/02/04 18:19:35 christos Exp $
$ tc.sig.c
$set 25
1 notre attente %d\n
2 erreur: bsd_signal(%d) signal hors limites\n
-3 erreur: bsd_signal(%d) - sigaction a échoué, errno %d\n
+3 erreur: bsd_signal(%d) - sigaction a échoué, errno %d\n
diff --git a/nls/french/set26 b/nls/french/set26
index b5139e7995e0..d49548735932 100644
--- a/nls/french/set26
+++ b/nls/french/set26
@@ -1,15 +1,15 @@
-$ $tcsh: set26,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set26,v 1.3 2011/02/04 18:19:35 christos Exp $
$ tc.who.c
$set 26
1 ne peut effectuer stat %s. S.V.P effectuez "unset watch".\n
-2 %s ne peut être ouvert. S.V.P effectuez "unset watch".\n
-3 BUG! le dernier élément n'est pas whotail!\n
-4 arrière:
-5 BUG! le premier élément n'est pas whohead!\n
+2 %s ne peut être ouvert. S.V.P effectuez "unset watch".\n
+3 BUG! le dernier élément n'est pas whotail!\n
+4 arrière:
+5 BUG! le premier élément n'est pas whohead!\n
6 nouveau: %s/%s\n
7 %n a %a %l from %m.
8 %n a %a %l.
-9 connecté
-10 déconnecté
-11 remplacé %s
+9 connecté
+10 déconnecté
+11 remplacé %s
12 local
diff --git a/nls/french/set27 b/nls/french/set27
index e86b26c3fa52..a27112faf3c0 100644
--- a/nls/french/set27
+++ b/nls/french/set27
@@ -1,8 +1,8 @@
-$ $tcsh: set27,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set27,v 1.3 2011/02/04 18:19:35 christos Exp $
$ tw.comp.c
$set 27
1 commande
-2 séparateur
+2 séparateur
3 motif
4 intervalle
-5 complément
+5 complément
diff --git a/nls/french/set3 b/nls/french/set3
index 797524a632ac..8abbb01007ab 100644
--- a/nls/french/set3
+++ b/nls/french/set3
@@ -1,120 +1,120 @@
-$ $tcsh: set3,v 1.3 2006/03/02 18:46:46 christos Exp $
-$ Description des fonctions éditeur
+$ $tcsh: set3,v 1.4 2011/02/04 18:19:35 christos Exp $
+$ Description des fonctions éditeur
$set 3
-1 Recule d'un caractère
-2 Efface le caractère derrière le curseur
-3 Coupe depuis le début du mot jusqu'au curseur - sauvegardé dans le tampon de copie
-4 Coupe depuis le début de la ligne jusqu'au curseur - sauvegardé dans le tampon de copie
-5 Va au début du mot courant
-6 Va au début de la ligne
-7 Met en majuscules les caractères depuis le curseur jusqu'à la fin du mot
-8 Vi change la casse du caractère sous le curseur et avance d'un caractère
-9 Vi change jusqu'à la fin de la ligne
-10 Efface l'écran en laissant la ligne courant au dessus
-11 Complète le mot courant
+1 Recule d'un caractère
+2 Efface le caractère derrière le curseur
+3 Coupe depuis le début du mot jusqu'au curseur - sauvegardé dans le tampon de copie
+4 Coupe depuis le début de la ligne jusqu'au curseur - sauvegardé dans le tampon de copie
+5 Va au début du mot courant
+6 Va au début de la ligne
+7 Met en majuscules les caractères depuis le curseur jusqu'à la fin du mot
+8 Vi change la casse du caractère sous le curseur et avance d'un caractère
+9 Vi change jusqu'à la fin de la ligne
+10 Efface l'écran en laissant la ligne courant au dessus
+11 Complète le mot courant
12 Tab avance parmi les fichiers
13 Tab recule parmi les fichiers
-14 Complète le mot courant en ignorant les compléments programmables
+14 Complète le mot courant en ignorant les compléments programmables
15 Copie le mot courant jusqu'au curseur
16 Copie la zone entre la marque et le curseur dans le tampon de copie
-17 Développe vers le mot précédent pour lequel c'est un préfixe
-18 Efface le caractère sous le curseur
-19 Efface le caractère sous le curseur, ou signale la fin de fichier si ligne vide
-20 Efface le caractère sous le curseur, ou liste les compléments si fin de ligne
-21 Efface le caractère sous le curseur, liste les compléments ou signale la fin de fichier
-22 Coupe depuis le curseur jusqu'à la fin du mot courant - sauvegardé dans le tampon de copie
-23 Ajoute aux arguments si démarré ou entre le chiffre
-24 Chiffre au début de l'argument
-25 Va à la prochaine ligne de l'historique
-26 Met en minuscules les caractères depuis le curseur jusqu'à la fin du mot
+17 Développe vers le mot précédent pour lequel c'est un préfixe
+18 Efface le caractère sous le curseur
+19 Efface le caractère sous le curseur, ou signale la fin de fichier si ligne vide
+20 Efface le caractère sous le curseur, ou liste les compléments si fin de ligne
+21 Efface le caractère sous le curseur, liste les compléments ou signale la fin de fichier
+22 Coupe depuis le curseur jusqu'à la fin du mot courant - sauvegardé dans le tampon de copie
+23 Ajoute aux arguments si démarré ou entre le chiffre
+24 Chiffre au début de l'argument
+25 Va à la prochaine ligne de l'historique
+26 Met en minuscules les caractères depuis le curseur jusqu'à la fin du mot
27 Indique la fin de fichier
-28 Déplace le curseur à la fin de la ligne
+28 Déplace le curseur à la fin de la ligne
29 Echange le curseur et la marque
-30 Développe les jokers du nom de fichier
-31 Développe les échappements de l'historique
-32 Développe les échappements de l'historique en une ligne
-33 Développe les variables
-34 Avance d'un caractère
-35 Avance à la fin du mot courant
-36 Echange les deux caractères avant le curseur
-37 Cherche en arrière dans l'historique une ligne commençant comme la ligne courante
-38 Cherche en avant dans l'historique une ligne commençant comme la ligne courante
-39 Insère le dernier elément de la commande précédente
-40 Recherche en avant incrémentale
-41 Recherche en arrière incrémentale
+30 Développe les jokers du nom de fichier
+31 Développe les échappements de l'historique
+32 Développe les échappements de l'historique en une ligne
+33 Développe les variables
+34 Avance d'un caractère
+35 Avance à la fin du mot courant
+36 Echange les deux caractères avant le curseur
+37 Cherche en arrière dans l'historique une ligne commençant comme la ligne courante
+38 Cherche en avant dans l'historique une ligne commençant comme la ligne courante
+39 Insère le dernier elément de la commande précédente
+40 Recherche en avant incrémentale
+41 Recherche en arrière incrémentale
42 Efface la ligne
-43 Coupe jusqu'à la fin de la ligne et sauvegarde dans le tampon de copie
+43 Coupe jusqu'à la fin de la ligne et sauvegarde dans le tampon de copie
44 Coupe la zone entre la marque et le curseur et sauvegarde dans le tampon de copie
45 Coupe toute la ligne et sauvegarde dans le tampon de copie
-46 Liste les choix pour le complément
-47 Liste les choix pour le complément sur-définissant le complément programmable
+46 Liste les choix pour le complément
+47 Liste les choix pour le complément sur-définissant le complément programmable
48 Liste les correspondances pour le nom de fichier avec joker
-49 Liste les choix pour le complément ou indique la fin de fichier si ligne vide
-50 Affiche la charge moyenne et l'état courant des processus
-51 Développe les échappements de l'historique et insère une espace
-52 Exécute la commande
-53 Développe les nom de répertoires, éliminant les `.' et `..' en tête
-54 Développe les commandes pour le chemin ou l'alias résultant
+49 Liste les choix pour le complément ou indique la fin de fichier si ligne vide
+50 Affiche la charge moyenne et l'état courant des processus
+51 Développe les échappements de l'historique et insère une espace
+52 Exécute la commande
+53 Développe les nom de répertoires, éliminant les `.' et `..' en tête
+54 Développe les commandes pour le chemin ou l'alias résultant
55 Passe du mode insertion au mode recouvrement et vice-versa
-56 Ajoute le 8ième bit au prochain caractère saisi
-57 Ajoute le prochain caractère saisi à la ligne
-58 Réaffiche tout
-59 Redémarre l'éditeur
+56 Ajoute le 8ième bit au prochain caractère saisi
+57 Ajoute le prochain caractère saisi à la ligne
+58 Réaffiche tout
+59 Redémarre l'éditeur
60 Cherche de l'aide pour la commande courante
-61 Ce caractère est ajouté à la ligne
-62 Ca caractère est le premier dans une séquence de caractères
-63 Définit la marque à la position du curseur
+61 Ce caractère est ajouté à la ligne
+62 Ca caractère est le premier dans une séquence de caractères
+63 Définit la marque à la position du curseur
64 Corrige la syntaxe du mot courant
-65 Corrige la syntaxe de la ligne complète
-66 Envoie le caractère au tty en mode
-67 Bascule la ligne courante de l'historique entre le mode littéral et lexical
-68 Echange le caractère à la gauche du curseur avec celui en dessous du curseur
-69 Echange les deux caractères avant le curseur
-70 Caractère tty de suspension différé
-71 Caractère tty de vidage de sortie
-72 Caractère tty d'interruption
-73 Caractère tty de sortie
-74 Caractère tty de suspension
-75 Caractère tty de validation de sortie
-76 Caractère tty d'invalidation de sortie
-77 Indique un caractère pas attaché
+65 Corrige la syntaxe de la ligne complète
+66 Envoie le caractère au tty en mode
+67 Bascule la ligne courante de l'historique entre le mode littéral et lexical
+68 Echange le caractère à la gauche du curseur avec celui en dessous du curseur
+69 Echange les deux caractères avant le curseur
+70 Caractère tty de suspension différé
+71 Caractère tty de vidage de sortie
+72 Caractère tty d'interruption
+73 Caractère tty de sortie
+74 Caractère tty de suspension
+75 Caractère tty de validation de sortie
+76 Caractère tty d'invalidation de sortie
+77 Indique un caractère pas attaché
78 Argument universel Emacs (argument x 4)
-79 Va à la ligne précédente de l'historique
-80 Met en majuscule les caractères depuis le curseur jusqu'à la fin du mot courant
-81 Vi va au début du prochain mot
-82 Vi passe en mode insertion après le curseur
-83 Vi passe en mode insertion à la fin de la ligne
-84 Vi change la casse du caractère sous le curseur et avance d'un caractère
+79 Va à la ligne précédente de l'historique
+80 Met en majuscule les caractères depuis le curseur jusqu'à la fin du mot courant
+81 Vi va au début du prochain mot
+82 Vi passe en mode insertion après le curseur
+83 Vi passe en mode insertion à la fin de la ligne
+84 Vi change la casse du caractère sous le curseur et avance d'un caractère
85 Vi change la commande `prefix'
-86 Vi change jusqu'à la fin de la ligne
-87 Passe au mode de commande Vi (redéfinition des touches alternatives)
-88 Le mode commande de Vi complète le mot courant
-89 Vi va au caractère précédent (retour-arrière)
+86 Vi change jusqu'à la fin de la ligne
+87 Passe au mode de commande Vi (redéfinition des touches alternatives)
+88 Le mode commande de Vi complète le mot courant
+89 Vi va au caractère précédent (retour-arrière)
90 Vi efface la commande `prefix'
-91 Vi va à la fin du mot courant délimité par des espaces
-92 Vi va à la fin du mot courant
-93 Vi va vers le caractère spécifié avant
-94 Vi va vers le caractère spécifié après
-95 Vi remonte vers le caractère spécifié avant
-96 Vi remonte vers le caractère spécifié après
+91 Vi va à la fin du mot courant délimité par des espaces
+92 Vi va à la fin du mot courant
+93 Vi va vers le caractère spécifié avant
+94 Vi va vers le caractère spécifié après
+95 Vi remonte vers le caractère spécifié avant
+96 Vi remonte vers le caractère spécifié après
97 Passe en mode insertion Vi
-98 Passe en mode insertion Vi au début de la ligne
-99 Vi répète la recherche du caractère en cours dans la même direction
-100 Vi répète la recherche du caractère en cours dans la direction opposée
-101 Vi répète la recherche en cours dans la même direction
-102 Vi répète la recherche en cours dans la direction opposée
-103 Vi remplace le caractère sous le curseur avec le prochain caractère saisi
+98 Passe en mode insertion Vi au début de la ligne
+99 Vi répète la recherche du caractère en cours dans la même direction
+100 Vi répète la recherche du caractère en cours dans la direction opposée
+101 Vi répète la recherche en cours dans la même direction
+102 Vi répète la recherche en cours dans la direction opposée
+103 Vi remplace le caractère sous le curseur avec le prochain caractère saisi
104 Mode de remplacement Vi
-105 Vi cherche dans l'historique en arrière
+105 Vi cherche dans l'historique en arrière
106 Vi cherche dans l'historique en avant
-107 Vi remplace le caractère sous le curseur et passe en mode insertion
-108 Vi remplace la ligne entière
-109 Vi va au mot précédent
+107 Vi remplace le caractère sous le curseur et passe en mode insertion
+108 Vi remplace la ligne entière
+109 Vi va au mot précédent
110 Vi va au prochain mot
-111 Vi défait la dernière modification
-112 Vi va au début de la ligne
-113 Exécute quelle commande en cours
-114 Colle le tampon de copie à la position du curseur
+111 Vi défait la dernière modification
+112 Vi va au début de la ligne
+113 Exécute quelle commande en cours
+114 Colle le tampon de copie à la position du curseur
115 Replace just-yanked text with yank from earlier kill
116 (WIN32 only) Copy cut buffer to system clipboard
117 (WIN32 only) Paste clipboard buffer at cursor position
diff --git a/nls/french/set30 b/nls/french/set30
index e35a39a4068f..e36afc04c770 100644
--- a/nls/french/set30
+++ b/nls/french/set30
@@ -1,16 +1,16 @@
-$ $tcsh: set30,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set30,v 1.4 2011/02/04 18:19:35 christos Exp $
$ tw.parse.c
$set 30
-1 démarre une commande %d\n
+1 démarre une commande %d\n
2 complete %d
3 complete %d %S\n
4 %s: Erreur interne de correspondance.\n
-5 éléments
+5 éléments
6 colonnes
-7 Il y a %d %s, les lister quand même ? [n/y]
+7 Il y a %d %s, les lister quand même ? [n/y]
8 looking = %d\n
9 \nerreur interne %s: Je ne sais pas ce que je recherche !\n
-10 pas un répertoire
-11 pas trouvé
+10 pas un répertoire
+11 pas trouvé
12 pas lisible
13 oOyY
diff --git a/nls/french/set31 b/nls/french/set31
index e63d2d4b72ef..c00469649d34 100644
--- a/nls/french/set31
+++ b/nls/french/set31
@@ -1,7 +1,7 @@
-$ $tcsh: set31,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set31,v 1.3 2011/02/04 18:19:35 christos Exp $
$ vms.termcap.c
$set 31
1 Ne peut ouvrir TERMCAP: [%s]\n
2 Ne peut ouvrir %s.\n
-3 Trouvé %s dans %s.\n
-4 Pas de correspondance trouvée pour %s dans le fichier %s\n
+3 Trouvé %s dans %s.\n
+4 Pas de correspondance trouvée pour %s dans le fichier %s\n
diff --git a/nls/french/set4 b/nls/french/set4
index 8e63fb109b99..57dcd1766436 100644
--- a/nls/french/set4
+++ b/nls/french/set4
@@ -1,22 +1,22 @@
-$ $tcsh: set4,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set4,v 1.3 2011/02/04 18:19:35 christos Exp $
$ Termcap strings
$set 4
1 ajoute une nouvelle ligne vide
2 bip audible
3 efface jusqu'en bas
-4 efface jusqu'à la fin de la ligne
+4 efface jusqu'à la fin de la ligne
5 curseur vers un position horizontale
-6 efface l'écran
-7 efface un caractère
+6 efface l'écran
+7 efface un caractère
8 efface une ligne
9 commence le mode d'effacement
10 termine le mode d'effacement
11 termine le mode d'insertion
-12 curseur de la ligne d'état
+12 curseur de la ligne d'état
13 curseur origine
-14 insère caractère
+14 insère caractère
15 commence le mode insertion
-16 insère du remplissage
+16 insère du remplissage
17 curseur vers le bas
18 curseur vers la gauche
19 curseur vers la droite
@@ -24,16 +24,16 @@ $set 4
21 commence le gras
22 fin attributs
23 espaces non-destructives
-24 fin mise en évidence
-25 commence mise en évidence
-26 curseur à la ligne d'état
+24 fin mise en évidence
+25 commence mise en évidence
+26 curseur à la ligne d'état
27 curseur d'une vers le haut
-28 commence souligné
-29 fin souligné
+28 commence souligné
+29 fin souligné
30 bip `visible'
-31 efface plusiseurs caractères
+31 efface plusiseurs caractères
32 curseur vers le bas (plusieurs)
-33 insert plusieurs caractères
+33 insert plusieurs caractères
34 curseur vers la gauche (plusieurs)
35 curseur vers la droite (plusieurs)
36 curseur vers le haut (plusieurs)
@@ -42,4 +42,4 @@ $set 4
39 Nombre de lignes
40 Nombre de colonnes
41 A les touches `alternatives'
-42 retoure-chariot ignoré à la droite de la marge
+42 retoure-chariot ignoré à la droite de la marge
diff --git a/nls/french/set6 b/nls/french/set6
index 886832eda92c..a664d280b9d3 100644
--- a/nls/french/set6
+++ b/nls/french/set6
@@ -1,11 +1,11 @@
-$ $tcsh: set6,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set6,v 1.3 2011/02/04 18:19:35 christos Exp $
$ ed.inputl.c
$set 6
1 ERREUR: commande interdite de la touche 0%o\r\n
2 oui\n
3 edit\n
-4 arrête\n
+4 arrête\n
5 non\n
6 Pas de commande correspondante\n
7 Commande ambigue\n
-8 *** ERREUR fatale de l'éditeur ***\r\n\n
+8 *** ERREUR fatale de l'éditeur ***\r\n\n
diff --git a/nls/french/set7 b/nls/french/set7
index 9971ea6bcb84..fed46a802413 100644
--- a/nls/french/set7
+++ b/nls/french/set7
@@ -1,8 +1,8 @@
-$ $tcsh: set7,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set7,v 1.4 2011/02/04 18:19:36 christos Exp $
$ ed.screen.c
$set 7
-1 \n\tTcsh a déterminé que votre terminal a les\n
-2 \tcaractéristiques suivantes :\n\n
+1 \n\tTcsh a déterminé que votre terminal a les\n
+2 \tcaractéristiques suivantes :\n\n
3 \tIl a %d colonnes et %d lignes\n
4 \tIl %s touche `alternative'\n
5 a une
@@ -18,13 +18,13 @@ $set 7
15 non
16 ERREUR: ne peut pas effacer\r\n
17 DeleteChars: num est ridicule: %d\r\n
-18 ERREUR: ne peut insérer\r\n
+18 ERREUR: ne peut insérer\r\n
19 StartInsert: num est ridicule: %d\r\n
20 %s: Ne peut ouvrir /etc/termcap.\n
-21 %s: Pas d'entrée pour le type de terminal "%s"\n
+21 %s: Pas d'entrée pour le type de terminal "%s"\n
22 %s: utilise la configuration d'un terminal banal.\n
-23 %s: ATTENTION: Votre terminal ne peut effectuer de déplacement vers le haut.\n
-24 L'édition peut être incorrecte pour les longues lignes.\n
-25 pas de capacité d'effacement jusqu'à fin de ligne.\n
-26 pas de capacité d'effacement de caractère.\n
-27 pas de capacité d'insertion de caractère.\n
+23 %s: ATTENTION: Votre terminal ne peut effectuer de déplacement vers le haut.\n
+24 L'édition peut être incorrecte pour les longues lignes.\n
+25 pas de capacité d'effacement jusqu'à fin de ligne.\n
+26 pas de capacité d'effacement de caractère.\n
+27 pas de capacité d'insertion de caractère.\n
diff --git a/nls/french/set8 b/nls/french/set8
index 4ab49b950787..f591e15d1688 100644
--- a/nls/french/set8
+++ b/nls/french/set8
@@ -1,5 +1,5 @@
-$ $tcsh: set8,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set8,v 1.3 2011/02/04 18:19:36 christos Exp $
$ ed.term.c
$set 8
-1 Sélecteur inconnu
+1 Sélecteur inconnu
2 Argument incorrect
diff --git a/nls/french/set9 b/nls/french/set9
index a47cf625d340..bb073db12b6a 100644
--- a/nls/french/set9
+++ b/nls/french/set9
@@ -1,12 +1,12 @@
-$ $tcsh: set9,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set9,v 1.3 2011/02/04 18:19:36 christos Exp $
$ ed.xmap.c
$set 9
-1 AddXkey: touche d'extension nulle pas autorisé.\n
-2 AddXkey: commande séquence d'introduction (sequence-lead-in) pas autorisé\n
-3 DeleteXkey: touche d'extension nulle pas autorisé.\n
-4 Touche d'extension pas définie "%S"\n
+1 AddXkey: touche d'extension nulle pas autorisé.\n
+2 AddXkey: commande séquence d'introduction (sequence-lead-in) pas autorisé\n
+3 DeleteXkey: touche d'extension nulle pas autorisé.\n
+4 Touche d'extension pas définie "%S"\n
5 Certaines touches d'extension trop longues pour tampon d'impression interne
-6 Enumerate: BUG!! Pointeur Null passé!\n
-7 pas d'entrée
+6 Enumerate: BUG!! Pointeur Null passé!\n
+7 pas d'entrée
8 Quelque chose doit suivre: %c\n
-9 Une constante Octale ne peut pas tenir dans un caractère.\n
+9 Une constante Octale ne peut pas tenir dans un caractère.\n
diff --git a/nls/german/charset b/nls/german/charset
index 0b13559084f6..81f1b6669c79 100644
--- a/nls/german/charset
+++ b/nls/german/charset
@@ -1,3 +1,3 @@
-$ codeset=ISO-8859-1
+$ codeset=UTF-8
$set 255
-1 ISO-8859-1
+1 UTF-8
diff --git a/nls/german/set1 b/nls/german/set1
index e6f75ad7f2a2..f3a48fd07774 100644
--- a/nls/german/set1
+++ b/nls/german/set1
@@ -1,13 +1,13 @@
-$ $tcsh: set1,v 1.6 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set1,v 1.7 2011/02/04 18:19:36 christos Exp $
$ Error messages
$set 1
1 Syntaxfehler
2 %s nicht erlaubt
3 Word zu lang
4 $< Zeile zu lang
-5 Keine Datei für $0
-6 Unvollständiger [] Modifizierer
-7 $ Ausweitung muß vor ] enden
+5 Keine Datei für $0
+6 Unvollständiger [] Modifizierer
+7 $ Ausweitung muß vor ] enden
8 Falscher : Modifizierer in $ (%c)
9 Indexfehler
10 Falsche Nummer
@@ -17,61 +17,61 @@ $set 1
14 Befehl nicht gefunden
15 Zu wenig Argumente
16 Zu viele Argumente
-17 Zu gefährlich für ein Alias
+17 Zu gefährlich für ein Alias
18 Leeres If
19 Unpassendes Then
20 Worte nicht in Klammern
21 %s nicht gefunden
22 Ungeeignete Maske
23 Keine bekannte Begrenzung
-24 Argument zu groß
-25 Ungeeigneter oder unbekannter Vergrößerungsfaktor
+24 Argument zu groß
+25 Ungeeigneter oder unbekannter Vergrößerungsfaktor
26 Undefinierte Variable
27 Verzeichnisstapel nicht so tief
28 Falscher Signalname
29 Unbekanntes Signal; kill -l listet Signale auf
-30 Variablenname muß mit einem Buchstaben beginnen
+30 Variablenname muß mit einem Buchstaben beginnen
31 Variablenname zu lang
-32 Variablenname muß Buchstaben oder Ziffern enthalten
+32 Variablenname muß Buchstaben oder Ziffern enthalten
33 Keine Jobkontrolle in dieser Shell
34 Ausdruck nicht korrekt
35 Kein Startverzeichnis
36 Kann nicht in das Startverzeichnis wechseln
-37 Ungültiger leerer Befehl
+37 Ungültiger leerer Befehl
38 Zuweisung ohne Ausdruck
39 Unbekannter Operator
40 Mehrdeutig
41 %s: Datei existiert
-42 Argument für -c endet mit einem Backslash (\\)
+42 Argument für -c endet mit einem Backslash (\\)
43 Abgebrochen
-44 Index nicht im gültigen Bereich
-45 Zeilenüberlauf
+44 Index nicht im gültigen Bereich
+45 Zeilenüberlauf
46 Kein solcher Job
47 Kann nicht vom Terminal
48 Nicht in while/foreach
49 Keine Prozesse mehr
50 Kein Treffer
51 Fehlendes %c
-52 Überflüssiges %c
+52 Überflüssiges %c
53 Kein Speicher mehr
54 Kann keine Pipe erzeugen
55 %s: %s
56 %s
57 Benutzung: jobs [ -l ]
-58 Argumente können Job- oder Prozeß-ID's sein
+58 Argumente können Job- oder Prozeß-ID's sein
59 Kein aktueller Job
60 Kein vorhergehender Job
61 Kein Job entspricht dem Muster
62 Fork-Ebene > %d; evtl. `...` Schleife?
63 Keine Jobkontrolle in Unter-Shells
-64 Sync-Fehler: Prozeß %d nicht gefunden
+64 Sync-Fehler: Prozeß %d nicht gefunden
65 %sEs gibt noch angehaltene Jobs
66 %sEs gibt noch angehaltene Jobs
67 Kein anderes Verzeichnis
68 Verzeichnisstapel leer
-69 Ungültiges Verzeichnis
+69 Ungültiges Verzeichnis
70 Benutzung: %s [-%s]%s
-71 Kein Operand für -h
+71 Kein Operand für -h
72 Nicht in einer Login-Shell
73 Division durch 0
74 Mod durch 0
@@ -84,9 +84,9 @@ $set 1
81 Zeilenumbruch in Variablenname
82 * nicht erlaubt bei $# or $?
83 $?<digit> or $#<digit> nicht erlaubt
-84 Ungültiger Variablenname
+84 Ungültiger Variablenname
85 Zeilenumbruch in Variablenindex
-86 Überlauf des Erweiterungspuffers
+86 Ãœberlauf des Erweiterungspuffers
87 Variablen-Syntax
88 Falsche ! Form
89 Keine vorhergehende Ersetzung
@@ -95,14 +95,14 @@ $set 1
92 Rechte Seite zu lang
93 Falscher ! Modifizierer: %c
94 Modifizierer fehlgeschlagen
-95 Überlauf des Ersetzungspuffers
+95 Ãœberlauf des Ersetzungspuffers
96 Falscher ! Argumentbezeichner
97 Keine vorhergehende Suche
98 %s: Befehl nicht gefunden
99 Zu viele ')'
100 Zu viele '('
101 Falsch plazierte '('
-102 Fehlender Name für Umlenkung
+102 Fehlender Name für Umlenkung
103 Mehrdeutige Ausgabeumlenkung
104 Kann keine << innerhalb von ()
105 Mehrdeutige Eingabeumlenkung
@@ -112,28 +112,28 @@ $set 1
109 Keine vorgemerkten Befehle
110 Benutzung: sched -<item#>.\nBenutzung: sched [+]hh:mm <Befehl>
111 Nicht so viele vorgemerkte Befehle
-112 Kein auszuführender Befehl
-113 Ungültige Zeit für Befehl
+112 Kein auszuführender Befehl
+113 Ungültige Zeit für Befehl
114 Relative Zeit inkonsistent mit am/pm
-115 Kein Platz mehr für Termcap-Eintrag
+115 Kein Platz mehr für Termcap-Eintrag
116 Benutzung: settc %s [yes|no]
-117 Unbekannte Fähigkeit `%s'
+117 Unbekannte Fähigkeit `%s'
118 Unbekannter Termcap-Parameter `%%%c'
-119 Zu viele Argumente für `%s' (%d)
+119 Zu viele Argumente für `%s' (%d)
120 `%s' erfordert %d Argumente
-121 Benutzung: echotc [-v|-s] [<Fähigkeit> [<Argumente>]]
+121 Benutzung: echotc [-v|-s] [<Fähigkeit> [<Argumente>]]
122 %s: %s. Falsche Architektur
123 !# History-Schleife
124 Falsche Dateianforderung
-125 Selector-Überlauf
+125 Selector-Ãœberlauf
126 Unbekannte Option: `-%s'\nBenutzung: %s [ -bcdefilmnqstvVxX -Dname[=Wert] ] [ Argument ... ]
127 Unbekannte Option: `-%s'\nBenutzung: %s [ -bcdefFilmnqstvVxX ] [ Argument ... ]
128 Unbekannte Option: `-%s'\nBenutzung: %s [ -bcdefilmnqstvVxX ] [ Argument ... ]
-129 \nUngültige Vervollständigung: "%s"
-130 \nUngültiger %s: '%c'
+129 \nUngültige Vervollständigung: "%s"
+130 \nUngültiger %s: '%c'
131 \nFehlende Trennung '%c' nach %s "%s"
-132 \nUnvollständiger/-ges %s: "%s"
-133 Kein Operand für -m Option
+132 \nUnvollständiger/-ges %s: "%s"
+133 Kein Operand für -m Option
134 Benutzung: unlimit [-fh] [Grenzen]
135 $%S ist nur lesbar
136 Kein solcher Job
diff --git a/nls/german/set10 b/nls/german/set10
index 185aa61e4bcf..b4dadde74fa7 100644
--- a/nls/german/set10
+++ b/nls/german/set10
@@ -1,8 +1,8 @@
-$ $tcsh: set10,v 1.5 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set10,v 1.6 2011/02/04 18:19:36 christos Exp $
$ ma.setp.c
$set 10
-1 setpath: ungültiger Befehl '%s'.\n
-2 setpath: unzureichende Argumente für Befehl '%s'.\n
+1 setpath: ungültiger Befehl '%s'.\n
+2 setpath: unzureichende Argumente für Befehl '%s'.\n
3 setpath: Wert fehlt in Pfad '%s'\n
4 setpath: %s nicht in %s gefunden\n
-5 setpath: %d keine gültige Position in %s\n
+5 setpath: %d keine gültige Position in %s\n
diff --git a/nls/german/set13 b/nls/german/set13
index 5da0fd24c575..4aefa6630ba9 100644
--- a/nls/german/set13
+++ b/nls/german/set13
@@ -1,4 +1,4 @@
-$ $tcsh: set13,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set13,v 1.4 2011/02/04 18:19:36 christos Exp $
$ sh.exec.c
$set 13
1 hash=%-4d dir=%-2d prog=%s\n
@@ -8,6 +8,6 @@ $set 13
5 %S: Befehl in Shell eingebaut.\n
6 %S: Befehl nicht gefunden.\n
7 where: / in Befehl ist nicht sinnvoll\n
-8 %S ist ein Alias für
+8 %S ist ein Alias für
9 %S ist ein eingebauter Shell-Befehl\n
10 Hash-Fehler:
diff --git a/nls/german/set15 b/nls/german/set15
index bc215c86f117..a96d8aaa18b7 100644
--- a/nls/german/set15
+++ b/nls/german/set15
@@ -1,7 +1,7 @@
-$ $tcsh: set15,v 1.4 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set15,v 1.5 2011/02/04 18:19:36 christos Exp $
$ sh.func.c
$set 15
1 %s: %s: Kann Begrenzung nicht %s%s\n
-2 löschen
+2 löschen
3 setzen
4 \040(hard limit)
diff --git a/nls/german/set16 b/nls/german/set16
index bc261080f168..b8f572e8a338 100644
--- a/nls/german/set16
+++ b/nls/german/set16
@@ -1,13 +1,13 @@
-$ $tcsh: set16,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set16,v 1.4 2011/02/04 18:19:36 christos Exp $
$ sh.lex.c
$set 16
-1 Setze Prozeßgruppe des Terminals von %d auf %d\n
+1 Setze Prozeßgruppe des Terminals von %d auf %d\n
2 \nBitte "logout" zum Abmelden benutzen.\n
3 \nBitte "exit" zum Verlassen der Tcsh benutzen.\n
4 seek to eval %x %x\n
5 seek to alias %x %x\n
6 seek to file %x\n
-7 Falscher Typ für seek: %d\n
+7 Falscher Typ für seek: %d\n
8 tell eval %x %x\n
9 tell alias %x %x\n
10 tell file %x\n
diff --git a/nls/german/set17 b/nls/german/set17
index e00de87f0772..5c1c71e49333 100644
--- a/nls/german/set17
+++ b/nls/german/set17
@@ -1,10 +1,10 @@
-$ $tcsh: set17,v 1.5 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set17,v 1.6 2011/02/04 18:19:36 christos Exp $
$ sh.proc.c
$set 17
1 FEHLER: Warte auf Hintergrund-Job!\n
2 Exitcode %d\n
-3 FEHLER: Prozeß "flushed" zum zweitenmal
-4 Läuft
+3 FEHLER: Prozeß "flushed" zum zweitenmal
+4 Läuft
5 Signal
6 Exitcode %-25d
7 Fertig
diff --git a/nls/german/set18 b/nls/german/set18
index 40e56d892c0d..5bd6feb71275 100644
--- a/nls/german/set18
+++ b/nls/german/set18
@@ -1,4 +1,4 @@
-$ $tcsh: set18,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set18,v 1.4 2011/02/04 18:19:36 christos Exp $
$ sh.set.c
$set 18
-1 Warnung: lächerlich langer PATH abgeschnitten\n
+1 Warnung: lächerlich langer PATH abgeschnitten\n
diff --git a/nls/german/set19 b/nls/german/set19
index d852451e34c9..9b4004fd48c1 100644
--- a/nls/german/set19
+++ b/nls/german/set19
@@ -1,4 +1,4 @@
-$ $tcsh: set19,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set19,v 1.7 2011/02/25 23:58:07 christos Exp $
$ tc.alloc.c
$set 19
1 nbytes=%d: Out of memory\n
@@ -9,7 +9,15 @@ $set 19
6 free(%lx) falscher Bereichs-Check.
7 free(%lx) falscher Block-Index.
8 Tcsh's augenblickliche Speicherbelegung:\nfrei:\t
-9 \nbenutzt:\t
+9 benutzt
10 \n\tInsgesamt in Benutzung: %d, insgesamt frei: %d\n
11 \tAllokierter Speicher von 0x%lx bis 0x%lx. Wirklicher Anfang 0x%lx\n
12 Allokierter Speicher von 0x%lx bis 0x%lx (%ld).\n
+13 Tcsh's augenblickliche Speicherbelegung:\n
+14 Gesamter vom System angeforderter Speicher: %d\n
+15 Anzahl nicht benutzter Blöcke:: %d\n
+16 Anzahl via mmap angeforderter Speicherbereiche: %d\n
+17 Via mmap angeforderter Speicher: %d\n
+18 Gesamter benutzer Speicher im Pool: %d\n
+19 Gesamter freier Speicher im Pool: %d\n
+20 Speicher der freigegeben werden kann: %d\n
diff --git a/nls/german/set2 b/nls/german/set2
index 6f36bc676921..e7e4e4765b08 100644
--- a/nls/german/set2
+++ b/nls/german/set2
@@ -1,4 +1,4 @@
-$ $tcsh: set2,v 1.5 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set2,v 1.6 2011/02/04 18:19:36 christos Exp $
$ Signal names
$set 2
1 Null signal
@@ -12,7 +12,7 @@ $set 2
9 Systemabsturz steht bevor
10 Fehlerhaft beendet
11 EMT trap
-12 Fließkommafehler
+12 Fließkommafehler
13 Abgebrochen
14 Benutzersignal 1
15 Benutzersignal 2
@@ -24,15 +24,15 @@ $set 2
21 Ausgabeweitergabe abgebrochen
22 Alarm clock
23 Beendet
-24 Kindprozeß hat Zustand geändert
+24 Kindprozeß hat Zustand geändert
25 Abbruch eines Kindprozesses
26 Apollo-spezifischer Fehler
-27 Kindprozeß angehalten oder beendet
-28 Kindprozeß beendet
+27 Kindprozeß angehalten oder beendet
+28 Kindprozeß beendet
29 Stromunterbrechung
30 Ressource verloren
31 Unterbrechung (Ctrl-Break)
-32 Mögliches Ein-/Ausgabesignal
+32 Mögliches Ein-/Ausgabesignal
33 Asynchrone I/O (select)
34 Dringende Anfrage von Ein-/Ausgabekanal
35 Multitasking wake-up
@@ -40,7 +40,7 @@ $set 2
37 Fortran asynchrones Ein-Ausgabeende
38 Wiederaufsetzen
39 Nicht korrigierbarer Speicherfehler
-40 CPU-Zeitbeschränkung überschritten
+40 CPU-Zeitbeschränkung überschritten
41 Systembeendigung absehbar
42 micro-tasking group-no wakeup flag set
43 Thread error - (use cord -T for detailed info)
@@ -55,11 +55,11 @@ $set 2
52 Angehalten (Tty-Eingabe)
53 Angehalten (Tty-Ausgabe)
54 Angehalten (Tty-Ausgabe)
-55 Fensterzustand hat sich geändert
-56 Fenstergröße hat sich geändert
+55 Fensterzustand hat sich geändert
+56 Fenstergröße hat sich geändert
57 Phone status changed
-58 CPU-Zeitbeschränkung überschritten
-59 Beschränkung der Dateigröße überschritten
+58 CPU-Zeitbeschränkung überschritten
+59 Beschränkung der Dateigröße überschritten
60 Virtueller Zeitalarm
61 Profiling time alarm
62 DIL signal
diff --git a/nls/german/set20 b/nls/german/set20
index 638c00ea40e9..ff22d0119e09 100644
--- a/nls/german/set20
+++ b/nls/german/set20
@@ -1,7 +1,7 @@
-$ $tcsh: set20,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set20,v 1.4 2011/02/04 18:19:36 christos Exp $
$ tc.bind.c
$set 20
-1 Ungültiger Tastenname `%S'\n
+1 Ungültiger Tastenname `%S'\n
2 Falsche Tastenname: %S\n
3 Falsche Befehlsname: %S\n
4 Falsche Tastenangabe %S\n
@@ -20,12 +20,12 @@ $set 20
17 -v initialisiere Belegungen mit Standard-Vi-Belegungen\n
18 -e initialisiere Belegungen mit Standard-Emacs-Belegungen\n
19 -d initialisiere Belegungen mit Standard-Belegungen\n
-20 -l zeige verfügbare Funktionen mit Beschreibungen an\n
+20 -l zeige verfügbare Funktionen mit Beschreibungen an\n
21 -r entferne Belegung eines Tastes\n
22 -k belege Pfeiltaste mit Namen in In-String\n
23 -- force a break from option processing\n
24 -u (or any invalid option) this message\n
-25 Wenn kein Out-String oder Befehl angegeben wurde, wir die Belegung für\n
+25 Wenn kein Out-String oder Befehl angegeben wurde, wir die Belegung für\n
26 den In-String ausgegeben oder alle Belegungen, falls kein in-String gegeben.\n
27 Falsche Tastenangabe -- nicht definierte Zeichenkette\n
28 Falsche Tastenangabe -- leere Zeichenkette\n
@@ -37,5 +37,5 @@ $set 20
34 Leere Taste nicht erlaubt\n
35 Falsche Tastenangabe -- unbeannter Name "%S"\n
36 Benutzung: bind [TASTE | BEFEHL TASTE | "emacs" | "vi" | "-a"]\n
-37 Ungültige Funktion
+37 Ungültige Funktion
38 %s\t\tist undefiniert\n
diff --git a/nls/german/set22 b/nls/german/set22
index 0e93b38c1438..13cf2112c3ba 100644
--- a/nls/german/set22
+++ b/nls/german/set22
@@ -1,15 +1,15 @@
-$ $tcsh: set22,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set22,v 1.4 2011/02/04 18:19:36 christos Exp $
$ tc.func.c
$set 22
-1 %S: \t ein Alias für
-2 \nPasswort nicht korrekt für %s\n
+1 %S: \t ein Alias für
+2 \nPasswort nicht korrekt für %s\n
3 Fehlerhafter Alias 'precmd' entfernt.\n
4 Fehlerhafter Alias 'cwdcmd' entfernt.\n
5 Fehlerhafter Alias 'beepcmd' entfernt.\n
6 Fehlerhafter Alias 'periodic' entfernt.\n
7 zerteile Kommandozeile\n
-8 Wollen Sie wirklich alle Dateien löschen? [n/j]
-9 Übergehe das Löschen der Dateien!\n
+8 Wollen Sie wirklich alle Dateien löschen? [n/j]
+9 Übergehe das Löschen der Dateien!\n
10 Kommandozeile ist nun:\n
11 zerteile Kommandozeile\n
12 in einer der Listen\n
diff --git a/nls/german/set23 b/nls/german/set23
index 42a9cbd271a0..bad50bdf3f24 100644
--- a/nls/german/set23
+++ b/nls/german/set23
@@ -1,4 +1,4 @@
-$ $tcsh: set23,v 1.4 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set23,v 1.5 2011/02/04 18:19:36 christos Exp $
$ tc.os.c
$set 23
1 Falscher Cpu/Site-Name
@@ -8,27 +8,27 @@ $set 23
5 %d: Site nicht gefunden\n
6 setlocal: %s: %s\n
7 Site nicht gefunden
-8 Sie sind in einem Universum gefangen, daß Sie nie gemacht haben
+8 Sie sind in einem Universum gefangen, daß Sie nie gemacht haben
9 Getwarp fehlgeschlagen
-10 Ungültiger Warp
+10 Ungültiger Warp
11 Setwarp fehlgeschlagen
-12 Ungültiges Universum
+12 Ungültiges Universum
13 Unbekannter Fehler: %d
14 sysname: %s\n
15 nodename: %s\n
16 release: %s\n
17 version: %s\n
18 machine: %s\n
-19 getwd: Kann ".." nicht öffnen (%s)
+19 getwd: Kann ".." nicht öffnen (%s)
20 getwd: Kann nicht in ".." wechseln (%s)
21 getwd: Lesefehler in ".." (%s)
-22 getwd: Kann nicht zurück zu "." wechseln (%s)
+22 getwd: Kann nicht zurück zu "." wechseln (%s)
23 getwd: Kann kein stat auf "/" machen (%s)
24 getwd: Kann kein stat auf "." machen (%s)
25 getwd: Kann kein stat auf Verzeichnis "%s" machen (%s)
-26 getwd: Kann Verzeichnis "%s" nicht öffnen (%s)
+26 getwd: Kann Verzeichnis "%s" nicht öffnen (%s)
27 getwd: Kann "." nicht in ".." finden (%s)
-28 Ungültiger Systemtyp
+28 Ungültiger Systemtyp
29 Systemtyp ist nicht gesetzt
30 Too many arguments
31 Invalid argument
diff --git a/nls/german/set25 b/nls/german/set25
index a034603f48a6..f63082522445 100644
--- a/nls/german/set25
+++ b/nls/german/set25
@@ -1,6 +1,6 @@
-$ $tcsh: set25,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set25,v 1.4 2011/02/04 18:19:36 christos Exp $
$ tc.sig.c
$set 25
1 unser wait %d\n
-2 Fehler: bsd_signal(%d) Signal außerhalb der Grenzen\n
+2 Fehler: bsd_signal(%d) Signal außerhalb der Grenzen\n
3 Fehler: bsd_signal(%d) - sigaction fehlerhaft, errno %d\n
diff --git a/nls/german/set26 b/nls/german/set26
index c9d1270abd0f..849c3dfe18ca 100644
--- a/nls/german/set26
+++ b/nls/german/set26
@@ -1,10 +1,10 @@
-$ $tcsh: set26,v 1.4 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set26,v 1.5 2011/02/04 18:19:36 christos Exp $
$ tc.who.c
$set 26
1 Kein Zugriff auf %s. Bitte "unset watch" eingeben.\n
-2 %s kann nicht geöffnet werden. Bitte "unset watch" eingeben.\n
+2 %s kann nicht geöffnet werden. Bitte "unset watch" eingeben.\n
3 FEHLER! letztes Element ist nicht whotail!\n
-4 Zurück:
+4 Zurück:
5 FEHLER! erstes Element ist nicht whohead!\n
6 neu: %s/%s\n
7 %n hat %a an %l von %m.
diff --git a/nls/german/set27 b/nls/german/set27
index 9ad802f7a0d4..7ec2de2dceaf 100644
--- a/nls/german/set27
+++ b/nls/german/set27
@@ -1,8 +1,8 @@
-$ $tcsh: set27,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set27,v 1.4 2011/02/04 18:19:36 christos Exp $
$ tw.comp.c
$set 27
1 Befehl
2 Trenner
3 Muster
4 Bereichs
-5 Vervollständigung
+5 Vervollständigung
diff --git a/nls/german/set29 b/nls/german/set29
index 16ef38ab7608..22f882c94f6e 100644
--- a/nls/german/set29
+++ b/nls/german/set29
@@ -1,4 +1,4 @@
-$ $tcsh: set29,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set29,v 1.4 2011/02/04 18:19:36 christos Exp $
$ tw.help.c
$set 29
-1 Keine Hilfe-Datei für %S\n
+1 Keine Hilfe-Datei für %S\n
diff --git a/nls/german/set3 b/nls/german/set3
index f2b642c72291..a04a75f03f7e 100644
--- a/nls/german/set3
+++ b/nls/german/set3
@@ -1,31 +1,31 @@
-$ $tcsh: set3,v 1.6 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set3,v 1.7 2011/02/04 18:19:36 christos Exp $
$ Editor function descriptions
$set 3
-1 Ein Zeichen zurück
-2 Lösche Zeichen hinter Cursor
-3 Lösche vom Anfang des aktuellen Worts bis zum Cursor - in Cut-Puffer
-4 Lösche vom Anfang der Zeile bis zum Cursor - in Cut-Puffer
+1 Ein Zeichen zurück
+2 Lösche Zeichen hinter Cursor
+3 Lösche vom Anfang des aktuellen Worts bis zum Cursor - in Cut-Puffer
+4 Lösche vom Anfang der Zeile bis zum Cursor - in Cut-Puffer
5 Gehe an den Anfang des aktuellen Worts
6 Gehe zum Anfang der Zeile
-7 Wandele vom Cursor bis zum Ende des aktuellen Worts in Großbuchstaben um
-8 Vi: Ändere Groß/Kleinschreibung des Zeichen unter dem Cursor und bewege Cursor eins nach vorn
-9 Vi: Ändere bis zum Ende der Zeile
-10 Lösche Bildschirm (aktuelle Zeile oben)
-11 Vervollständige aktuelles Wort
-12 Gehe mit Tab vorwärts durch die Dateiliste
-13 Gehe mit Tab rückwärts durch die Dateiliste
-14 Vervollständige Wort (ignoriere programmierbare Vervollständigungen)
+7 Wandele vom Cursor bis zum Ende des aktuellen Worts in Großbuchstaben um
+8 Vi: Ändere Groß/Kleinschreibung des Zeichen unter dem Cursor und bewege Cursor eins nach vorn
+9 Vi: Ändere bis zum Ende der Zeile
+10 Lösche Bildschirm (aktuelle Zeile oben)
+11 Vervollständige aktuelles Wort
+12 Gehe mit Tab vorwärts durch die Dateiliste
+13 Gehe mit Tab rückwärts durch die Dateiliste
+14 Vervollständige Wort (ignoriere programmierbare Vervollständigungen)
15 Kopiere aktuelles Wort zum Cursor
16 Kopiere Area zwischen Marke und Cursor in Cut-Puffer
-17 Erweitere zu früherem Wort für das dies ein Anfang ist
-18 Lösche Zeichen unter Cursor
-19 Lösche Zeichen unter Cursor oder gib EOF-Signal am Ende der Zeile
-20 Lösche Zeichen unter Cursor oder zeige Vervollständigungen am Ende der Zeile an
-21 Lösche Zeichen unter Cursor oder zeige Vervollständigungen oder gib EOF-Signal
-22 Lösche von Cursor bis zum Ende des aktuellen Worts - in Cut-Puffer
-23 Füge Argument hinzu, wenn gestartet, oder gib zahl ein
+17 Erweitere zu früherem Wort für das dies ein Anfang ist
+18 Lösche Zeichen unter Cursor
+19 Lösche Zeichen unter Cursor oder gib EOF-Signal am Ende der Zeile
+20 Lösche Zeichen unter Cursor oder zeige Vervollständigungen am Ende der Zeile an
+21 Lösche Zeichen unter Cursor oder zeige Vervollständigungen oder gib EOF-Signal
+22 Lösche von Cursor bis zum Ende des aktuellen Worts - in Cut-Puffer
+23 Füge Argument hinzu, wenn gestartet, oder gib zahl ein
24 Ziffer, die ein Argument beginnt
-25 Gehe zur nächsten History-Zeile
+25 Gehe zur nächsten History-Zeile
26 Wandele vom Cursor bis zum Ende des aktuellen Worts in Kleinbuchstaben um
27 Melde Ende der Datei
28 Gehe zum Ende der Zeile
@@ -37,31 +37,31 @@ $set 3
34 Gehe ein Zeichen vor
35 Gehe vor bis zum Ende des akutellen Worts
36 Vertausche zwei Zeichen vor dem Cursor
-37 Suche rückwärts in History nach Zeile mit gleichem Anfang
-38 Suche vorwärts in History nach Zeile mit gleichem Anfang
+37 Suche rückwärts in History nach Zeile mit gleichem Anfang
+38 Suche vorwärts in History nach Zeile mit gleichem Anfang
39 Setze letzten Teil des vorherigen Befehls ein
-40 Incrementelle Suche (vorwärts)
-41 Incrementelle Suche (rückwärts)
-42 Lösche Zeile
-43 Lösche bis zum Ende der Zeile - in Cut-Puffer
-44 Lösche Area zwischen Marke und Cursor - in Cut-Puffer
-45 Lösche gesamte Zeile - in Cut-Puffer
-46 Zeige Möglichkeiten der Vervollständigung
-47 Zeige Möglichkeiten der Vervollständigung (ignoriere programmierbare Vervollständigungen)
+40 Incrementelle Suche (vorwärts)
+41 Incrementelle Suche (rückwärts)
+42 Lösche Zeile
+43 Lösche bis zum Ende der Zeile - in Cut-Puffer
+44 Lösche Area zwischen Marke und Cursor - in Cut-Puffer
+45 Lösche gesamte Zeile - in Cut-Puffer
+46 Zeige Möglichkeiten der Vervollständigung
+47 Zeige Möglichkeiten der Vervollständigung (ignoriere programmierbare Vervollständigungen)
48 Zeige Treffer der Dateinamen-Wildcards
-49 Zeige Möglichkeiten der Vervollständigung oder gib EOF, falls Zeile leer
-50 Zeige durchschnittliche Last und augenblickl. Prozeßzustand
-51 Expandiere History-Escape und füge Leerzeichen ein
-52 Führe Befehl aus
-53 Expandiere Pfadnamen, eliminiere führende . und ..
+49 Zeige Möglichkeiten der Vervollständigung oder gib EOF, falls Zeile leer
+50 Zeige durchschnittliche Last und augenblickl. Prozeßzustand
+51 Expandiere History-Escape und füge Leerzeichen ein
+52 Führe Befehl aus
+53 Expandiere Pfadnamen, eliminiere führende . und ..
54 Expandiere Befehle in den entsprechenden Pfadnamen oder Alias
-55 Schalte von Insert- auf Einfügemodus oder umgekehrt
-56 Füge das achte Bit zu dem nächsten eingegebenen Zeichen hinzu
-57 Füge das nächste Eingabezeichen unverändert ein
+55 Schalte von Insert- auf Einfügemodus oder umgekehrt
+56 Füge das achte Bit zu dem nächsten eingegebenen Zeichen hinzu
+57 Füge das nächste Eingabezeichen unverändert ein
58 Baue Anzeige neu auf
59 Starte angehaltenen Editor wieder
-60 Suche nach Hilfe für den aktuellen Befehl
-61 Dieses Zeichen wird zur Zeile hinzugefügt
+60 Suche nach Hilfe für den aktuellen Befehl
+61 Dieses Zeichen wird zur Zeile hinzugefügt
62 Dieses Zeichen ist das erste einer Folge von Zeichen
63 Setze die Marke an der Stelle des Cursors
64 Korrigiere die Schreibweise des aktuellen Wortes
@@ -80,41 +80,41 @@ $set 3
77 Indicates unbound Zeichen
78 Emacs universelles Argument (Argument mal 4)
79 Gehe zur vorhergehenden History-Zeile
-80 Wandele die Zeichen vom Cursor bis zum Ende des akt. Worts in Großbuchst. um
-81 Vi gehe zum Anfang des nächsten Wortes
-82 Vi gehe in Einfügemodus hinter dem Cursor
-83 Vi gehe in Einfügemodus am Ende der Zeile
-84 Vi ändere Groß/Kleinschreibung des Zeichens unter dem Cursor und gehe ien vor
-85 Vi ändere Prefix-Befehl
-86 Vi ändere bis zum Ende der Zeile
+80 Wandele die Zeichen vom Cursor bis zum Ende des akt. Worts in Großbuchst. um
+81 Vi gehe zum Anfang des nächsten Wortes
+82 Vi gehe in Einfügemodus hinter dem Cursor
+83 Vi gehe in Einfügemodus am Ende der Zeile
+84 Vi ändere Groß/Kleinschreibung des Zeichens unter dem Cursor und gehe ien vor
+85 Vi ändere Prefix-Befehl
+86 Vi ändere bis zum Ende der Zeile
87 Vi gehe in Befehlsmodus (benutze alternative Tastenbelegung)
-88 Vi Befehlsmodus vervollständige aktuelles Wort
+88 Vi Befehlsmodus vervollständige aktuelles Wort
89 Vi gehe zum vorhergehenden Zeichen (Backspace)
-90 Vi lösche Prefix-Befehl
+90 Vi lösche Prefix-Befehl
91 Vi gehe zum Ende des aktuellen Worts (durch Leerzeichen begrenzt)
92 Vi gehe zum Ende des aktuellen Worts
-93 Vi gehe zum angegebenen Zeichen rückwärts
-94 Vi gehe zum angegebenen Zeichen vorwärts
-95 Vi gehe hoch zum angegebenen Zeichen rückwärts
-96 Vi gehe hoch zum angegebenen Zeichen vorwärts
-97 Vi gehe in Einfügemodus
-98 Vi gehe in Einfügemodus am Anfang der Zeile
+93 Vi gehe zum angegebenen Zeichen rückwärts
+94 Vi gehe zum angegebenen Zeichen vorwärts
+95 Vi gehe hoch zum angegebenen Zeichen rückwärts
+96 Vi gehe hoch zum angegebenen Zeichen vorwärts
+97 Vi gehe in Einfügemodus
+98 Vi gehe in Einfügemodus am Anfang der Zeile
99 Vi wiederhole aktuelle Suche in dieselbe Richtung
100 Vi wiederhole aktuelle Suche in entgegengesetzte Richtung
101 Vi wiederhole aktuelle Suche in dieselbe Richtung
102 Vi wiederhole aktuelle Suche in entgegengesetzte Richtung
-103 Vi ersetze Zeichen unter dem Cursor mit dem nächsten eingegebenen Zeichen
+103 Vi ersetze Zeichen unter dem Cursor mit dem nächsten eingegebenen Zeichen
104 Vi Ersetzungsmodus
-105 Vi suche History vorwärts
-106 Vi suche History rückwärts
-107 Vi ersetze Zeichen unter dem Cursor und gehe in Einfügemodus
+105 Vi suche History vorwärts
+106 Vi suche History rückwärts
+107 Vi ersetze Zeichen unter dem Cursor und gehe in Einfügemodus
108 Vi ersetze gesamte Zeile
109 Vi gehe zum verhergehenden Wort
-110 Vi gehe zum nächsten Wort
-111 Vi mache letzte Änderung rückgängig
+110 Vi gehe zum nächsten Wort
+111 Vi mache letzte Änderung rückgängig
112 Vi gehe zum Anfang der Zeile
113 Mache ein 'which' von dem aktuellen Befehl
-114 Füge den Cut-Puffer an der Cursor-Position ein
+114 Füge den Cut-Puffer an der Cursor-Position ein
115 Replace just-yanked text with yank from earlier kill
116 (WIN32 only) Copy cut buffer to system clipboard
117 (WIN32 only) Paste clipboard buffer at cursor position
diff --git a/nls/german/set30 b/nls/german/set30
index 534886e5fe4d..4312636d881c 100644
--- a/nls/german/set30
+++ b/nls/german/set30
@@ -1,15 +1,15 @@
-$ $tcsh: set30,v 1.4 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set30,v 1.5 2011/02/04 18:19:37 christos Exp $
$ tw.parse.c
$set 30
1 Anfangsbefehl %d\n
-2 vervollständige %d
-3 vervollständige %d %S\n
+2 vervollständige %d
+3 vervollständige %d %S\n
4 %s: Interner Abgleichsfehler.\n
5 Objekte
6 Spalten
7 Es gibt %d %s, trotzdem anzeigen? [n/j]
8 looking = %d\n
-9 \n%s interner Fehler: Ich weiß nicht, wonach ich suche!\n
+9 \n%s interner Fehler: Ich weiß nicht, wonach ich suche!\n
10 kein Verzeichnis
11 nicht gefunden
12 nicht lesbar
diff --git a/nls/german/set31 b/nls/german/set31
index 95322564e2fd..beb4baa64ef2 100644
--- a/nls/german/set31
+++ b/nls/german/set31
@@ -1,7 +1,7 @@
-$ $tcsh: set31,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set31,v 1.4 2011/02/04 18:19:37 christos Exp $
$ vms.termcap.c
$set 31
-1 Kann TERMCAP nicht öffnen: [%s]\n
-2 Kann %s nicht öffnen.\n
+1 Kann TERMCAP nicht öffnen: [%s]\n
+2 Kann %s nicht öffnen.\n
3 Fand %s in %s.\n
-4 Kein Eintrag für %s in Datei %s gefunden\n
+4 Kein Eintrag für %s in Datei %s gefunden\n
diff --git a/nls/german/set4 b/nls/german/set4
index baee5521516b..a8233e024a35 100644
--- a/nls/german/set4
+++ b/nls/german/set4
@@ -1,29 +1,29 @@
-$ $tcsh: set4,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set4,v 1.4 2011/02/04 18:19:37 christos Exp $
$ Termcap strings
$set 4
-1 füge neue, leere Zeile hinzu
-2 hörbare Pieps
-3 lösche bis zum Ende der Anzeige
-4 lösche bis zum Ende der Zeile
+1 füge neue, leere Zeile hinzu
+2 hörbare Pieps
+3 lösche bis zum Ende der Anzeige
+4 lösche bis zum Ende der Zeile
5 Cursor zu horizontaler Position
-6 lösche Bildschirm
-7 lösche ein Zeichen
-8 lösche eine Zeile
-9 starte Löschemodus
-10 beende Löschmodus
-11 beende Einfügemodus
+6 lösche Bildschirm
+7 lösche ein Zeichen
+8 lösche eine Zeile
+9 starte Löschemodus
+10 beende Löschmodus
+11 beende Einfügemodus
12 Cursor aus Statuszeile
13 Cursor in Ursprungsposition
-14 füge Zeichen ein
-15 starte Einfügemodus
-16 setze Füllzeichen ein
+14 füge Zeichen ein
+15 starte Einfügemodus
+16 setze Füllzeichen ein
17 Cursor nach unten
18 Cursor nach links
19 Cursor nach rechts
20 Cursor nach oben
21 starte Fettschrift
22 beende Attribute
-23 nicht zerstörendes Leerzeichen
+23 nicht zerstörendes Leerzeichen
24 beende hervorgehobene Darstellung
25 beginne hervorgehobene Darstellung
26 Cursor in Statuszeile
@@ -31,13 +31,13 @@ $set 4
28 beginne Unterstreichung
29 beende Unterstreichung
30 sichtbarer Pieps
-31 lösche mehrere Zeichen
+31 lösche mehrere Zeichen
32 Cursor mehrere Zeichen nach unten
-33 füge mehrere Zeichen ein
+33 füge mehrere Zeichen ein
34 Cursor mehrere Zeichen nach links
35 Cursor mehrere Zeichen nach rechts
36 Cursor mehrere Zeichen nach oben
-37 hat automatische Ränder
+37 hat automatische Ränder
38 kann physikalische Tabulatoren benutzen
39 Anzahl Zeilen
40 Anzahl Spalten
diff --git a/nls/german/set5 b/nls/german/set5
index 2161749e2033..a2bd567ad0fd 100644
--- a/nls/german/set5
+++ b/nls/german/set5
@@ -1,4 +1,4 @@
-$ $tcsh: set5,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set5,v 1.4 2011/02/04 18:19:37 christos Exp $
$ ed.chared.c
$set 5
-1 Durchschnittliche Last nicht verfügbar\n
+1 Durchschnittliche Last nicht verfügbar\n
diff --git a/nls/german/set6 b/nls/german/set6
index 350b1d084899..8af387c197f3 100644
--- a/nls/german/set6
+++ b/nls/german/set6
@@ -1,10 +1,10 @@
-$ $tcsh: set6,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set6,v 1.4 2011/02/10 00:13:36 christos Exp $
$ ed.inputl.c
$set 6
1 FEHLER: Illegaler Befehl von Taste 0%o\r\n
2 ja\n
-3 ediere\n
-4 brich ab\n
+3 editieren\n
+4 abbrechen\n
5 nein\n
6 Kein entsprechender Befehl\n
7 Mehrdeutiger Befehl\n
diff --git a/nls/german/set7 b/nls/german/set7
index 8aee38d12fda..23cc4369c82e 100644
--- a/nls/german/set7
+++ b/nls/german/set7
@@ -1,7 +1,7 @@
-$ $tcsh: set7,v 1.5 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set7,v 1.6 2011/02/04 18:19:37 christos Exp $
$ ed.screen.c
$set 7
-1 \n\tTcsh meint, Ihr Endgerät hat die\n
+1 \n\tTcsh meint, Ihr Endgerät hat die\n
2 \tfolgenden Eigenschaften:\n\n
3 \tEs hat %d Spalten und %d Zeilen\n
4 \tEs hat %s Meta-Taste\n
@@ -9,22 +9,22 @@ $set 7
6 keine
7 \tEs kann%s Tabulatoren benutzen\n
8 \040keine
-9 \tEs %s automatische Ränder\n
+9 \tEs %s automatische Ränder\n
10 hat
11 hat nicht
-12 \tEs %s magische Ränder\n
+12 \tEs %s magische Ränder\n
13 (leer)
14 ja
15 nein
-16 FEHLER: kann nicht löschen\r\n
-17 DeleteChars: num ist lächerlich: %d\r\n
-18 FEHLER: kann nicht einfügen\r\n
-19 StartInsert: num ist lächerlich: %d\r\n
-20 %s: Kann /etc/termcap nicht öffnen.\n
-21 %s: Kein Eintrag für Terminaltyp "%s"\n
+16 FEHLER: kann nicht löschen\r\n
+17 DeleteChars: num ist lächerlich: %d\r\n
+18 FEHLER: kann nicht einfügen\r\n
+19 StartInsert: num ist lächerlich: %d\r\n
+20 %s: Kann /etc/termcap nicht öffnen.\n
+21 %s: Kein Eintrag für Terminaltyp "%s"\n
22 %s: benutze minimale Terminaleigenschaften.\n
-23 %s: WARNUNG: Ihr Terminal kann den Cursor nicht aufwärts bewegen.\n
-24 Lange Zeilen könnten etwas komisch aussehen.\n
-25 keine Fähigkeit, bis Zeilenende zu löschen.\n
-26 keine Fähigkeit, Zeichen zu löschen.\n
-27 keine Fähigkeit, Zeichen einzufügen.\n
+23 %s: WARNUNG: Ihr Terminal kann den Cursor nicht aufwärts bewegen.\n
+24 Lange Zeilen könnten etwas komisch aussehen.\n
+25 keine Fähigkeit, bis Zeilenende zu löschen.\n
+26 keine Fähigkeit, Zeichen zu löschen.\n
+27 keine Fähigkeit, Zeichen einzufügen.\n
diff --git a/nls/german/set8 b/nls/german/set8
index 4e09b22296a7..858bcef0f547 100644
--- a/nls/german/set8
+++ b/nls/german/set8
@@ -1,5 +1,5 @@
-$ $tcsh: set8,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set8,v 1.4 2011/02/04 18:19:37 christos Exp $
$ ed.term.c
$set 8
1 Unbekannter Schalter
-2 Ungültiges Argument
+2 Ungültiges Argument
diff --git a/nls/german/set9 b/nls/german/set9
index e8607a388858..72fdfbba2b91 100644
--- a/nls/german/set9
+++ b/nls/german/set9
@@ -1,4 +1,4 @@
-$ $tcsh: set9,v 1.4 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set9,v 1.5 2011/02/04 18:19:37 christos Exp $
$ ed.xmap.c
$set 9
1 AddXkey: Null extended-key not allowed.\n
@@ -8,5 +8,5 @@ $set 9
5 Some extended keys too long for internal print buffer
6 Enumerate: BUG!! Null ptr passed\n!
7 keine Eingabe
-8 Es muß noch etwas folgen: %c\n
-9 Oktal-Konstante paßt nicht in ein Zeichen.\n
+8 Es muß noch etwas folgen: %c\n
+9 Oktal-Konstante paßt nicht in ein Zeichen.\n
diff --git a/nls/greek/charset b/nls/greek/charset
index 6d1ef113d557..81f1b6669c79 100644
--- a/nls/greek/charset
+++ b/nls/greek/charset
@@ -1,3 +1,3 @@
-$ codeset=ISO-8859-7
+$ codeset=UTF-8
$set 255
-1 ISO-8859-7
+1 UTF-8
diff --git a/nls/greek/set1 b/nls/greek/set1
index 3599c3412858..d05c14d9187e 100644
--- a/nls/greek/set1
+++ b/nls/greek/set1
@@ -1,140 +1,140 @@
-$ $tcsh: set1,v 1.4 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set1,v 1.5 2011/02/04 18:19:37 christos Exp $
$ Error messages
$set 1
-1 ËÜèïò óýíôáîç
-2 Tï %s äåí åðéôñÝðåôáé
-3 ÕðåñâïëéêÜ ìåãÜëç ëÝîç
-4 $< ÕðåñâïëéêÜ ìåãÜëç ãñáììÞ
-5 Äåí õðÜñ÷åé áñ÷åßï ãéÜ ôï $0
-6 ÅëëéðÞò ìåôáôñïðÝáò []
-7 Ç áíÜðôõîç ôïõ $ ðñÝðåé íá ôåëåéþíåé ðñéí ôï ]
-8 ËÜèïò ìåôáôñïðÝáò : óôï $ (%c)
-9 ËÜèïò üñéóìá
-10 Êáêïó÷çìáôéóìÝíïò áñéèìüò
-11 Äåí õðÜñ÷ïõí Üëëåò ëÝîåéò
-12 Áðüí üíïìá áñ÷åßïõ
-13 Åóùôåñéêü ëÜèïò globbing
-14 Ç åíôïëÞ äå âñÝèçêå
-15 ÕðåñâïëéêÜ ëßãá ïñßóìáôá
-16 ÕðåñâïëéêÜ ðïëëÜ ïñßóìáôá
-17 ÕðåñâïëéêÜ åðéêßíäõíï øåõäþíõìï
-18 Áäåéï if
-19 ÁêáôÜëëçëï then
-20 Ïé ëÝîåéò äåí åßíáé åíôüò ðáñåíèÝóåùí
-21 Tï %s äåí âñÝèçêå
-22 ÁêáôÜëëçëç ìÜóêá
-23 Äåí õðÜñ÷åé ôÝôïéï üñéï
-24 ÕðåñâïëéêÜ ìåãÜëï üñéóìá
-25 ÁêáôÜëëçëïò Þ Üãíùóôïò ðáñÜãïíôáò ìåãÝèïõò
-26 Ìç ïñéóìÝíç ìåôáâëçôÞ
-27 Tï stack êáôáëüãùí äåí åßíáé ôüóï âáèý
-28 ËÜèïò áñéèìüò signal
-29 ¶ãíùóôï signal·äþóôå kill -l ãéÜ ëßóôá signals
-30 Tá ïíüìáôá ìåôáâëçôþí ðñÝðåé íá áñ÷ßæïõí ìå ãñÜììá
-31 ÕðåñâïëéêÜ ìåãÜëï üíïìá ìåôáâëçôÞò
-32 Tá ïíüìáôá ìåôáâëçôþí ðñÝðåé íá ðåñéÝ÷ïõí áëöáñçèìçôéêïýò ÷áñáêôÞñåò
-33 Äåí õðÜñ÷åé Ýëåã÷ïò åñãáóéþí óå áõôü ôï shell
-34 ËÜèïò óýíôáîç Ýêöñáóçò
-35 Äåí õðÜñ÷åé ðñïóùðéêüò êáôÜëïãïò (home directory)
-36 Äåí ìðïñþ íá ðñïóðåëÜóù ôïí ðñïóùðéêü êáôÜëïãï (home directory)
-37 Áêõñç êåíÞ åíôïëÞ
-38 Åê÷þñçóç ÷ùñßò Ýêöñáóç
-39 Áãíùóôïò ôåëåóôÞò
-40 Äéöïñïýìåíï
-41 %s: ôï áñ÷åßï õðÜñ÷åé
-42 Tï üñéóìá ôïõ -c ôåëåéþíåé óå backslash
-43 ÄéáêïðÞ
-44 Äåßêôçò åêôüò ïñßùí
-45 Õðåñ÷åßëéóç ãñáììÞò
-46 Äåí õðÜñ÷åé ôÝôïéá åñãáóßá
-47 Äåí ãßíåôáé áðü ôï ôåñìáôéêü
-48 Åêôüò while/foreach
-49 Äåí õðÜñ÷ïõí Üëëåò äéåñãáóßåò
-50 Äåí õðÜñ÷åé ôáßñéáóìá
-51 Áðüí %c
-52 Ìç ôáéñéáóìÝíï %c
-53 Äåí õðÜñ÷åé Üëëç ìíÞìç
-54 Äåí ìðïñþ íá äçìéïõñãÞóù pipe
+1 Λάθος σÏνταξη
+2 Tο %s δεν επιτÏέπεται
+3 ΥπεÏβολικά μεγάλη λέξη
+4 $< ΥπεÏβολικά μεγάλη γÏαμμή
+5 Δεν υπάÏχει αÏχείο γιά το $0
+6 Ελλιπής μετατÏοπέας []
+7 Η ανάπτυξη του $ Ï€Ïέπει να τελειώνει Ï€Ïιν το ]
+8 Λάθος μετατÏοπέας : στο $ (%c)
+9 Λάθος ÏŒÏισμα
+10 Κακοσχηματισμένος αÏιθμός
+11 Δεν υπάÏχουν άλλες λέξεις
+12 Απόν όνομα αÏχείου
+13 ΕσωτεÏικό λάθος globbing
+14 Η εντολή δε βÏέθηκε
+15 ΥπεÏβολικά λίγα οÏίσματα
+16 ΥπεÏβολικά πολλά οÏίσματα
+17 ΥπεÏβολικά επικίνδυνο ψευδώνυμο
+18 Αδειο if
+19 Ακατάλληλο then
+20 Οι λέξεις δεν είναι εντός παÏενθέσεων
+21 Tο %s δεν βÏέθηκε
+22 Ακατάλληλη μάσκα
+23 Δεν υπάÏχει τέτοιο ÏŒÏιο
+24 ΥπεÏβολικά μεγάλο ÏŒÏισμα
+25 Ακατάλληλος ή άγνωστος παÏάγοντας μεγέθους
+26 Μη οÏισμένη μεταβλητή
+27 Tο stack καταλόγων δεν είναι τόσο βαθÏ
+28 Λάθος αÏιθμός signal
+29 Άγνωστο signal·δώστε kill -l γιά λίστα signals
+30 Tα ονόματα μεταβλητών Ï€Ïέπει να αÏχίζουν με γÏάμμα
+31 ΥπεÏβολικά μεγάλο όνομα μεταβλητής
+32 Tα ονόματα μεταβλητών Ï€Ïέπει να πεÏιέχουν αλφαÏηθμητικοÏÏ‚ χαÏακτήÏες
+33 Δεν υπάÏχει έλεγχος εÏγασιών σε αυτό το shell
+34 Λάθος σÏνταξη έκφÏασης
+35 Δεν υπάÏχει Ï€Ïοσωπικός κατάλογος (home directory)
+36 Δεν μποÏÏŽ να Ï€Ïοσπελάσω τον Ï€Ïοσωπικό κατάλογο (home directory)
+37 ΑκυÏη κενή εντολή
+38 ΕκχώÏηση χωÏίς έκφÏαση
+39 Αγνωστος τελεστής
+40 ΔιφοÏοÏμενο
+41 %s: το αÏχείο υπάÏχει
+42 Tο ÏŒÏισμα του -c τελειώνει σε backslash
+43 Διακοπή
+44 Δείκτης εκτός οÏίων
+45 ΥπεÏχείλιση γÏαμμής
+46 Δεν υπάÏχει τέτοια εÏγασία
+47 Δεν γίνεται από το τεÏματικό
+48 Εκτός while/foreach
+49 Δεν υπάÏχουν άλλες διεÏγασίες
+50 Δεν υπάÏχει ταίÏιασμα
+51 Απόν %c
+52 Μη ταιÏιασμένο %c
+53 Δεν υπάÏχει άλλη μνήμη
+54 Δεν μποÏÏŽ να δημιουÏγήσω pipe
55 %s: %s
56 %s
-57 ×ñÞóç: jobs [ -l ]
-58 Tá ïñßóìáôá ðñÝðåé íá åßíáé åñãáóßåò Þ ôáõôüôçôåò äéåñãáóéþí
-59 Äåí õðÜñ÷åé ôñÝ÷ïõóá åñãáóßá
-60 Äåí õðÜñ÷åé ðñïçãïýìåíç åñãáóßá
-61 ÊáììéÜ åñãáóßá äåí ôáéñéÜæåé ìå ôï pattern
-62 Tï fork nesting åßíáé ìåãáëýôåñï áðü %d; ðéèáíü `...` loop
-63 Ï Ýëåã÷ïò åñãáóéþí äåí åßíáé äéáèÝóéìïò óôá êáôþôåñá shells
-64 ËÜèïò sunc: ç äéåñãáóßá %d äå âñÝèçêå
-65 %sÕðÜñ÷ïõí áíáâëçèåßóåò åñãáóßåò
-66 %sÕðÜñ÷ïõí óôáìáôçìÝíåò åñãáóßåò
-67 Äåí õðÜñ÷åé Üëëïò êáôÜëïãïò
-68 Tï stack êáôáëüãùí åßíáé Üäåéï
-69 ËÜèïò êáôÜëïãïò
-70 ×ñÞóç: %s [-%s]%s
-71 Äåí õðÜñ÷åé üñéóìá ãéÜ ôï flag -h
-72 Äåí Ý÷åé ãßíåé login ìå áõôü ôï shell
-73 Äéáßñåóç ìå 0
-74 Modulo ìå 0
-75 ËÜèïò ìåãÝèõíóç· åííïïýóáôå "%s"?
-76 Äåí ìðïñþ (áêüìá) íá áíáâÜëù ôï login shell
-77 Áãíùóôïò ÷ñÞóôçò: %s
-78 Äåí Ý÷åé äïèåß ôéìÞ óôç ìåôáâëçôÞ $home
-79 ×ñÞóç: history [-%s] [# áñéèìüò åíôïëþí]
-80 Tá $, ! êáé < äåí åðéôñÝðïíôáé ìå ôá $# êáé $?
-81 ÁëëáãÞ ãñáììÞò óå üíïìá ìåôáâëçôÞò
-82 Tï * äåí åðéôñÝðåôáé ìå ôá $# êáé $?
-83 Tá $?<øçößï> êáé $#<øçößï> äåí åðéôñÝðïíôáé
-84 Áêõñï üíïìá ìåôáâëçôÞò
-85 ÁëëáãÞ ãñáììÞò óå äåßêôç ìåôáâëçôÞò
-86 Õðåñ÷åßëéóç buffer åðÝêôáóçò
-87 ËÜèïò óýíôáîçò ìåôáâëçôÞò
-88 ËÜèïò ìïñöÞ !
-89 Äåí õðÜñ÷åé ðñïçãïýìåíç áíôéêáôÜóôáóç
-90 ËÜèïò áíôéêáôÜóôáóç
-91 Äåí õðÜñ÷åé ðñïçãïýìåíï áñéóôåñü ìÝñïò
-92 Tï äåîß ìÝñïò åßíáé ðïëý ìåãÜëï
-93 Êáêüò ìåôáôñïðÝáò !: %c
-94 Ï ìåôáôñïðÝáò áðÝôõ÷å
-95 Õðåñ÷åßëéóç ôïõ buffer áíôéêáôáóôÜóåùí
-96 ËÜèïò åðéëïãÝáò ïñßóìáôïò !
-97 Äåí õðÜñ÷åé ðñïçãïýìåíç áíáæÞôçóç
-98 %s: ç åíôïëÞ äå âñÝèçêå
-99 ÕðåñâïëéêÜ ðïëëÝò )
-100 ÕðåñâïëéêÜ ðïëëÝò (
-101 ËÜèïò ôïðïèåôçìÝíç (
-102 ÐáñÜëåéøç ïíüìáôïò ãéÜ áíáêáôåýèõíóç
-103 Äéöïñïýìåíç áíáêáôåýèõíóç åîüäïõ
-104 Äåí ãßíåôáé << ìÝóá óå ()
-105 Äéöïñïýìåíç áíáêáôåýèõíóç åéóüäïõ
-106 ËÜèïò ôïðïèåôçìÝíåò ()
-107 Âñü÷ïò øåõäùíýìùí
-108 Äåí Ý÷åé äïèåß ôéìÞ óôç ìåôáâëçôÞ $watch
-109 Äåí õðÜñ÷ïõí äñïìïëïãçìÝíåò åíôïëÝò
-110 ×ñÞóç: sched -<#áíôéêåéìÝíïõ>.\n×ñÞóç: sched [+]ùù:ëë <åíôïëÞ>
-111 Äåí õðÜñ÷ïõí ôüóåò äñïìïëïãçìÝíåò åíôïëÝò
-112 Äåí õðÜñ÷åé åíôïëÞ ãéÜ åêôÝëåóç
-113 Áêõñïò ÷ñüíïò ãéÜ ôçí åíôïëÞ
-114 Ï ó÷åôéêüò ÷ñüíïò äåí åßíáé óõíåðÞò ìå ôï am/pm
-115 Äåí õðÜñ÷åé ÷þñïò ãéÜ ôï termcap string
-116 ×ñÞóç: settc %s [yes|no]
-117 Áãíùóôç éêáíüôçôá `%s'
-118 Áãíùóôç ðáñÜìåôñïò ôïõ termcap `%%%c'
-119 ÕðåñâïëéêÜ ðïëëÜ ïñßóìáôá ãéÜ ôï `%s' (%d)
-120 Tï `%s' áðáéôåß %d ïñßóìáôá
-121 ×ñÞóç: echotc [-v|-s] [<éêáíüôçôá> [<ïñßóìáôá>]]
-122 %s: %s. ËÜèïò Áñ÷éôåêôïíéêÞ
-123 !# âñü÷ïò Éóôïñßáò åíôïëþí
-124 Êáêïó÷çìáôéóìÝíç åñþôçóç ãéÜ áñ÷åßï
-125 Õðåñ÷åßëéóç åðéëïãÝùí
-126 Áãíùóôç åðéëïãÞ: `-%s'\n×ñÞóç: %s [ -bcdefilmnqstvVxX -Dname[=value] ] [ üñéóìá ... ]
-127 Áãíùóôç åðéëïãÞ: `-%s'\nUsage: %s [ -bcdefFilmnqstvVxX ] [ üñéóìá ... ]
-128 Áãíùóôç åðéëïãÞ: `-%s'\nUsage: %s [ -bcdefilmnqstvVxX ] [ üñéóìá ... ]
-129 \nËÜèïò óõìðëÞñùóç: "%s"
-130 \nËÜèïò %s: '%c'
-131 \nÐáñÜëçøç äéá÷ùñéóôÞ '%c' ìåôÜ ôï %s "%s"
-132 \nÌç ðëÞñåò %s: "%s"
-133 Äåí õðÜñ÷åé üñéóìá ãéÜ ôï flag -m
-134 ×ñÞóç: unlimit [-fh] [üñéá]
-135 Tï $%S åßíáé ìüíï ãéÜ äéÜâáóìá
-136 Äåí õðÜñ÷åé ôÝôïéá åñãáóßá
+57 ΧÏήση: jobs [ -l ]
+58 Tα οÏίσματα Ï€Ïέπει να είναι εÏγασίες ή ταυτότητες διεÏγασιών
+59 Δεν υπάÏχει Ï„Ïέχουσα εÏγασία
+60 Δεν υπάÏχει Ï€ÏοηγοÏμενη εÏγασία
+61 Καμμιά εÏγασία δεν ταιÏιάζει με το pattern
+62 Tο fork nesting είναι μεγαλÏτεÏο από %d; πιθανό `...` loop
+63 Ο έλεγχος εÏγασιών δεν είναι διαθέσιμος στα κατώτεÏα shells
+64 Λάθος sunc: η διεÏγασία %d δε βÏέθηκε
+65 %sΥπάÏχουν αναβληθείσες εÏγασίες
+66 %sΥπάÏχουν σταματημένες εÏγασίες
+67 Δεν υπάÏχει άλλος κατάλογος
+68 Tο stack καταλόγων είναι άδειο
+69 Λάθος κατάλογος
+70 ΧÏήση: %s [-%s]%s
+71 Δεν υπάÏχει ÏŒÏισμα γιά το flag -h
+72 Δεν έχει γίνει login με αυτό το shell
+73 ΔιαίÏεση με 0
+74 Modulo με 0
+75 Λάθος μεγέθυνση· εννοοÏσατε "%s"?
+76 Δεν μποÏÏŽ (ακόμα) να αναβάλω το login shell
+77 Αγνωστος χÏήστης: %s
+78 Δεν έχει δοθεί τιμή στη μεταβλητή $home
+79 ΧÏήση: history [-%s] [# αÏιθμός εντολών]
+80 Tα $, ! και < δεν επιτÏέπονται με τα $# και $?
+81 Αλλαγή γÏαμμής σε όνομα μεταβλητής
+82 Tο * δεν επιτÏέπεται με τα $# και $?
+83 Tα $?<ψηφίο> και $#<ψηφίο> δεν επιτÏέπονται
+84 ΑκυÏο όνομα μεταβλητής
+85 Αλλαγή γÏαμμής σε δείκτη μεταβλητής
+86 ΥπεÏχείλιση buffer επέκτασης
+87 Λάθος σÏνταξης μεταβλητής
+88 Λάθος μοÏφή !
+89 Δεν υπάÏχει Ï€ÏοηγοÏμενη αντικατάσταση
+90 Λάθος αντικατάσταση
+91 Δεν υπάÏχει Ï€ÏοηγοÏμενο αÏιστεÏÏŒ μέÏος
+92 Tο δεξί μέÏος είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿
+93 Κακός μετατÏοπέας !: %c
+94 Ο μετατÏοπέας απέτυχε
+95 ΥπεÏχείλιση του buffer αντικαταστάσεων
+96 Λάθος επιλογέας οÏίσματος !
+97 Δεν υπάÏχει Ï€ÏοηγοÏμενη αναζήτηση
+98 %s: η εντολή δε βÏέθηκε
+99 ΥπεÏβολικά πολλές )
+100 ΥπεÏβολικά πολλές (
+101 Λάθος τοποθετημένη (
+102 ΠαÏάλειψη ονόματος γιά ανακατεÏθυνση
+103 ΔιφοÏοÏμενη ανακατεÏθυνση εξόδου
+104 Δεν γίνεται << μέσα σε ()
+105 ΔιφοÏοÏμενη ανακατεÏθυνση εισόδου
+106 Λάθος τοποθετημένες ()
+107 Î’Ïόχος ψευδωνÏμων
+108 Δεν έχει δοθεί τιμή στη μεταβλητή $watch
+109 Δεν υπάÏχουν δÏομολογημένες εντολές
+110 ΧÏήση: sched -<#αντικειμένου>.\nΧÏήση: sched [+]ωω:λλ <εντολή>
+111 Δεν υπάÏχουν τόσες δÏομολογημένες εντολές
+112 Δεν υπάÏχει εντολή γιά εκτέλεση
+113 ΑκυÏος χÏόνος γιά την εντολή
+114 Ο σχετικός χÏόνος δεν είναι συνεπής με το am/pm
+115 Δεν υπάÏχει χώÏος γιά το termcap string
+116 ΧÏήση: settc %s [yes|no]
+117 Αγνωστη ικανότητα `%s'
+118 Αγνωστη παÏάμετÏος του termcap `%%%c'
+119 ΥπεÏβολικά πολλά οÏίσματα γιά το `%s' (%d)
+120 Tο `%s' απαιτεί %d οÏίσματα
+121 ΧÏήση: echotc [-v|-s] [<ικανότητα> [<οÏίσματα>]]
+122 %s: %s. Λάθος ΑÏχιτεκτονική
+123 !# βÏόχος ΙστοÏίας εντολών
+124 Κακοσχηματισμένη εÏώτηση γιά αÏχείο
+125 ΥπεÏχείλιση επιλογέων
+126 Αγνωστη επιλογή: `-%s'\nΧÏήση: %s [ -bcdefilmnqstvVxX -Dname[=value] ] [ ÏŒÏισμα ... ]
+127 Αγνωστη επιλογή: `-%s'\nUsage: %s [ -bcdefFilmnqstvVxX ] [ ÏŒÏισμα ... ]
+128 Αγνωστη επιλογή: `-%s'\nUsage: %s [ -bcdefilmnqstvVxX ] [ ÏŒÏισμα ... ]
+129 \nΛάθος συμπλήÏωση: "%s"
+130 \nΛάθος %s: '%c'
+131 \nΠαÏάληψη διαχωÏιστή '%c' μετά το %s "%s"
+132 \nΜη πλήÏες %s: "%s"
+133 Δεν υπάÏχει ÏŒÏισμα γιά το flag -m
+134 ΧÏήση: unlimit [-fh] [ÏŒÏια]
+135 Tο $%S είναι μόνο γιά διάβασμα
+136 Δεν υπάÏχει τέτοια εÏγασία
137 Unknown colorls variable `%c%c'
diff --git a/nls/greek/set10 b/nls/greek/set10
index a215d49302ae..6cce0b47805a 100644
--- a/nls/greek/set10
+++ b/nls/greek/set10
@@ -1,8 +1,8 @@
-$ $tcsh: set10,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set10,v 1.4 2011/02/04 18:19:37 christos Exp $
$ ma.setp.c
$set 10
-1 setpath: Üêõñç åíôïëÞ '%s'.\n
-2 setpath: áíåðáñêÞò áñéèìüò ïñéóìÜôùí ãéÜ ôçí åíôïëÞ '%s'.\n
-3 setpath: êÜðïéá ôéìÞ ëåßðåé óôï path '%s'\n
-4 setpath: ôï %s äå âñÝèçêå óôï %s\n
-5 setpath: ç èÝóç %d äåí éó÷ýåé óôï %s\n
+1 setpath: άκυÏη εντολή '%s'.\n
+2 setpath: ανεπαÏκής αÏιθμός οÏισμάτων γιά την εντολή '%s'.\n
+3 setpath: κάποια τιμή λείπει στο path '%s'\n
+4 setpath: το %s δε βÏέθηκε στο %s\n
+5 setpath: η θέση %d δεν ισχÏει στο %s\n
diff --git a/nls/greek/set11 b/nls/greek/set11
index 82c188884b07..940a390aad96 100644
--- a/nls/greek/set11
+++ b/nls/greek/set11
@@ -1,10 +1,10 @@
-$ $tcsh: set11,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set11,v 1.3 2011/02/04 18:19:37 christos Exp $
$ sh.c
$set 11
-1 Ðñïåéäïðïßçóç: äåí ìðïñþ íá ðñïóðåëÜóù ôï tty (%s).\n
-2 Óõíåðþò, äåí èá õðÜñ÷åé Ýëåã÷ïò åñãáóéþí óå áõôü ôï shell.\n
-3 ¸÷åôå %d ìçíýìáôá mail.\n
-4 Å÷åôå %d ìçíýìáôá mail óôï %s.\n
-5 Å÷åôå %smail.\n
-6 íÝï
-7 Å÷åôå %smail óôï %s.\n
+1 ΠÏοειδοποίηση: δεν μποÏÏŽ να Ï€Ïοσπελάσω το tty (%s).\n
+2 Συνεπώς, δεν θα υπάÏχει έλεγχος εÏγασιών σε αυτό το shell.\n
+3 Έχετε %d μηνÏματα mail.\n
+4 Εχετε %d μηνÏματα mail στο %s.\n
+5 Εχετε %smail.\n
+6 νέο
+7 Εχετε %smail στο %s.\n
diff --git a/nls/greek/set12 b/nls/greek/set12
index 379ae7820596..f8d9dfa96ed5 100644
--- a/nls/greek/set12
+++ b/nls/greek/set12
@@ -1,4 +1,4 @@
-$ $tcsh: set12,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set12,v 1.4 2011/02/04 18:19:37 christos Exp $
$ sh.dir.c
$set 12
-1 %s: ðñïóðáèþ íá áñ÷ßóù áðü ôï "%s"\n
+1 %s: Ï€Ïοσπαθώ να αÏχίσω από το "%s"\n
diff --git a/nls/greek/set13 b/nls/greek/set13
index 9ec55e1ca3a9..5da2dbc7acf6 100644
--- a/nls/greek/set13
+++ b/nls/greek/set13
@@ -1,13 +1,13 @@
-$ $tcsh: set13,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set13,v 1.3 2011/02/04 18:19:37 christos Exp $
$ sh.exec.c
$set 13
1 hash=%-4d dir=%-2d prog=%s\n
-2 %d hash buckets ìå %d bits ôï êáèÝíá\n
-3 ìÜóêá debug = 0x%08x\n
-4 %d åðéôõ÷ßåò, %d áðïôõ÷ßåò, %d%%\n
-5 %S: åóùôåñéêÞ åíôïëÞ ôïõ shell.\n
-6 %S: ç åíôïëÞ äå âñÝèçêå.\n
-7 where: ôï / óôçí åíôïëÞ äåí Ý÷åé íüçìá\n
-8 Tï %S åßíáé øåõäþíõìï ãéÜ ôçí åíôïëÞ
-9 Tï %S åßíáé åóùôåñéêÞ åíôïëÞ ôïõ shell\n
-10 áðïôõ÷ßá ôïõ hash:
+2 %d hash buckets με %d bits το καθένα\n
+3 μάσκα debug = 0x%08x\n
+4 %d επιτυχίες, %d αποτυχίες, %d%%\n
+5 %S: εσωτεÏική εντολή του shell.\n
+6 %S: η εντολή δε βÏέθηκε.\n
+7 where: το / στην εντολή δεν έχει νόημα\n
+8 Tο %S είναι ψευδώνυμο γιά την εντολή
+9 Tο %S είναι εσωτεÏική εντολή του shell\n
+10 αποτυχία του hash:
diff --git a/nls/greek/set14 b/nls/greek/set14
index 05479401ae0e..981c5dd96123 100644
--- a/nls/greek/set14
+++ b/nls/greek/set14
@@ -1,6 +1,6 @@
-$ $tcsh: set14,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set14,v 1.4 2011/02/04 18:19:37 christos Exp $
$ sh.file.c
$set 14
-1 \nÐööö!! ÕðåñâïëéêÜ ðïëëÜ %s!!\n
-2 ïíüìáôá óôï password file
-3 áñ÷åßá
+1 \nΠφφφ!! ΥπεÏβολικά πολλά %s!!\n
+2 ονόματα στο password file
+3 αÏχεία
diff --git a/nls/greek/set15 b/nls/greek/set15
index ff17a6e7bbe1..5e530b866f70 100644
--- a/nls/greek/set15
+++ b/nls/greek/set15
@@ -1,7 +1,7 @@
-$ $tcsh: set15,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set15,v 1.3 2011/02/04 18:19:37 christos Exp $
$ sh.func.c
$set 15
-1 %s: %s: äå ìðïñþ íá %sôï%s üñéï\n
-2 ìçäåíßóù
-3 èÝóù
-4 \040áõóôçñü
+1 %s: %s: δε μποÏÏŽ να %sτο%s ÏŒÏιο\n
+2 μηδενίσω
+3 θέσω
+4 \040αυστηÏÏŒ
diff --git a/nls/greek/set16 b/nls/greek/set16
index e4dcca8b4833..df47f444761b 100644
--- a/nls/greek/set16
+++ b/nls/greek/set16
@@ -1,9 +1,9 @@
-$ $tcsh: set16,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set16,v 1.4 2011/02/04 18:19:37 christos Exp $
$ sh.lex.c
$set 16
-1 Ìçäåíéóìüò ôïõ ãêñïõð äéåñãáóéþí ôïõ tty áðü %d óå %d\n
-2 \nÄþóôå "logout" ãéÜ íá âãåßôå.\n
-3 \nÄþóôå "exit" ãéÜ íá ôåñìáôßóåôå ôï %s.\n
+1 Μηδενισμός του γκÏουπ διεÏγασιών του tty από %d σε %d\n
+2 \nΔώστε "logout" γιά να βγείτε.\n
+3 \nΔώστε "exit" γιά να τεÏματίσετε το %s.\n
4 seek to eval %x %x\n
5 seek to alias %x %x\n
6 seek to file %x\n
diff --git a/nls/greek/set17 b/nls/greek/set17
index 4ac01061ccd2..71c9f6878d78 100644
--- a/nls/greek/set17
+++ b/nls/greek/set17
@@ -1,17 +1,17 @@
-$ $tcsh: set17,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set17,v 1.4 2011/02/04 18:19:37 christos Exp $
$ sh.proc.c
$set 17
-1 BUG: wait ãéÜ åñãáóßá ðïõ ôñÝ÷åé óôï ðáñáóêÞíéï!\n
-2 Åîïäïò ìå status %d\n
-3 BUG: ç äéåñãáóßá åêêåíþèçêå äõü öïñÝò
-4 ÔñÝ÷åé
-5 ÓÞìá
-6 Åîïäïò ìå status %-25d
-7 Ïëïêëçñþèçêå
+1 BUG: wait γιά εÏγασία που Ï„Ïέχει στο παÏασκήνιο!\n
+2 Εξοδος με status %d\n
+3 BUG: η διεÏγασία εκκενώθηκε δυό φοÏές
+4 ΤÏέχει
+5 Σήμα
+6 Εξοδος με status %-25d
+7 ΟλοκληÏώθηκε
8 BUG: status=%-9o
-9 \040(åããñáöÞ áñ÷åßïõ core)
+9 \040(εγγÏαφή αÏχείου core)
10 \040(wd:
-11 ôùñéíï wd:
-12 %S: Ý÷åé Þäç áíáâëçèåß\n
-13 %S: Ý÷åé Þäç óôáìáôÞóåé\n
+11 τωÏινο wd:
+12 %S: έχει ήδη αναβληθεί\n
+13 %S: έχει ήδη σταματήσει\n
14 %S: Badly formed number\n
diff --git a/nls/greek/set18 b/nls/greek/set18
index ffd82b65c791..093c40551564 100644
--- a/nls/greek/set18
+++ b/nls/greek/set18
@@ -1,4 +1,4 @@
-$ $tcsh: set18,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set18,v 1.3 2011/02/04 18:19:37 christos Exp $
$ sh.set.c
$set 18
-1 Ðñïåéäïðïßçóç: PATH ìå ôåñÜóôéï ìÝãåèïò, ðåñéêüðçêå\n
+1 ΠÏοειδοποίηση: PATH με τεÏάστιο μέγεθος, πεÏικόπηκε\n
diff --git a/nls/greek/set19 b/nls/greek/set19
index 718b43f5ebec..99c93a0b6025 100644
--- a/nls/greek/set19
+++ b/nls/greek/set19
@@ -1,15 +1,23 @@
-$ $tcsh: set19,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set19,v 1.5 2011/02/25 23:58:07 christos Exp $
$ tc.alloc.c
$set 19
-1 nbytes=%d: ç ìíÞìç ôåëåßùóå\n
-2 free(%lx) êëÞèçêå ðñßí íá åê÷ùñçèåß ìíÞìç.
-3 free(%lx) ðñéí ôçí áñ÷Þ ôçò ìíÞìçò.
-4 free(%lx) ìåôÜ ôï ôÝëïò ôçò ìíÞìçò.
-5 free(%lx) åóöáëìÝíï block.
-6 free(%lx) åóöáëìÝíç êëßìáêá check.
-7 free(%lx) åóöáëìÝíïò äåßêôçò block.
-8 Ðáñïýóá åê÷þñçóç ìíÞìçò ôïõ %s:\nfree:\t
-9 \n÷ñçóéìïðïéåßôáé:\t
-10 \n\tÓõíïëéêÜ ÷ñçóéìïðïéåßôáé: %d, óõíïëéêÞ åëåýèåñç: %d\n
-11 \tÅ÷åé åê÷ùñçèåß ìíÞìç áðü 0x%lx ùò 0x%lx. ÐñáãìáôéêÞ áñ÷Þ 0x%lx\n
-12 Å÷åé åê÷ùñçèåß ìíÞìç áðü 0x%lx ùò 0x%lx (%ld).\n
+1 nbytes=%d: η μνήμη τελείωσε\n
+2 free(%lx) κλήθηκε Ï€Ïίν να εκχωÏηθεί μνήμη.
+3 free(%lx) Ï€Ïιν την αÏχή της μνήμης.
+4 free(%lx) μετά το τέλος της μνήμης.
+5 free(%lx) εσφαλμένο block.
+6 free(%lx) εσφαλμένη κλίμακα check.
+7 free(%lx) εσφαλμένος δείκτης block.
+8 ΠαÏοÏσα εκχώÏηση μνήμης του %s:\nfree:\t
+9 χÏησιμοποιείται
+10 \n\tΣυνολικά χÏησιμοποιείται: %d, συνολική ελεÏθεÏη: %d\n
+11 \tΕχει εκχωÏηθεί μνήμη από 0x%lx ως 0x%lx. ΠÏαγματική αÏχή 0x%lx\n
+12 Εχει εκχωÏηθεί μνήμη από 0x%lx ως 0x%lx (%ld).\n
+13 %s current memory allocation:\n
+14 Total space allocated from system: %d\n
+15 Number of non-inuse chunks: %d\n
+16 Number of mmapped regions: %d\n
+17 Total space in mmapped regions: %d\n
+18 Total allocated space: %d\n
+19 Total non-inuse space: %d\n
+20 Top-most, releasable space: %d\n
diff --git a/nls/greek/set2 b/nls/greek/set2
index d54db2f9c9d8..7fb7985bf80a 100644
--- a/nls/greek/set2
+++ b/nls/greek/set2
@@ -1,94 +1,94 @@
-$ $tcsh: set2,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set2,v 1.4 2011/02/04 18:19:37 christos Exp $
$ Signal names
$set 2
-1 Ìçäåíéêü signal
-2 ÄéáêïðÞ ãñáììÞò (hangup)
-3 ÄéáêïðÞ (interrupt)
-4 Ðáñáßôçóç (quit)
-5 ÐáñÜíïìç åíôïëÞ (Illegal instruction)
+1 Μηδενικό signal
+2 Διακοπή γÏαμμής (hangup)
+3 Διακοπή (interrupt)
+4 ΠαÏαίτηση (quit)
+5 ΠαÏάνομη εντολή (Illegal instruction)
6 Trace/BPT trap
7 Abort
8 IOT trap
-9 Åðéêåßìåíç êáôÜññåõóç óõóôÞìáôïò
-10 Tåñìáôéóìüò ìå ëÜèïò
+9 Επικείμενη κατάÏÏευση συστήματος
+10 TεÏματισμός με λάθος
11 EMT trap
-12 Åîáßñåóç áñéèìçôéêÞò êéíçôÞò õðïäéáóôïëÞò
-13 Óêïôþèçêå
+12 ΕξαίÏεση αÏιθμητικής κινητής υποδιαστολής
+13 Σκοτώθηκε
14 User signal 1
15 User signal 2
-16 ËÜèïò Segmentation
-17 ËÜèïò Bus
-18 ËÜèïò ðåäßïõ ôéìþí ðñïãñÜììáôïò
-19 ËÜèïò ðåäßïõ ôéìþí ïñßóìáôïò
-20 Áíýðáñêôï system call
-21 ÓðáóìÝíï pipe
-22 ÓÞìá alarm
-23 Tåñìáôßóôçêå
-24 ÁëëáãÞ êáôÜóôáóçò äéåñãáóßáò-ðáéäéïý
-25 ÈÜíáôïò äéåñãáóßáò-ðáéäéïý
-26 ÓöÜëìá Apollo
-27 Ç äéåñãáóßá-ðáéäß óôáìÜôçóå Þ ôåñìÜôéóå
-28 Ç äéåñãáóßá-ðáéäß ôåñìÜôéóå
-29 ÄéáêïðÞ ôÜóçò
-30 Áðþëåéá ðüñïõ
+16 Λάθος Segmentation
+17 Λάθος Bus
+18 Λάθος πεδίου τιμών Ï€ÏογÏάμματος
+19 Λάθος πεδίου τιμών οÏίσματος
+20 ΑνÏπαÏκτο system call
+21 Σπασμένο pipe
+22 Σήμα alarm
+23 TεÏματίστηκε
+24 Αλλαγή κατάστασης διεÏγασίας-παιδιοÏ
+25 Θάνατος διεÏγασίας-παιδιοÏ
+26 Σφάλμα Apollo
+27 Η διεÏγασία-παιδί σταμάτησε ή τεÏμάτισε
+28 Η διεÏγασία-παιδί τεÏμάτισε
+29 Διακοπή τάσης
+30 Απώλεια πόÏου
31 Break (Ctrl-Break)
-32 ÓÞìá äõíáôüôçôáò input/output
-33 Áóýã÷ñïíï I/O (select)
-34 Åðåßãïõóá êáôÜóôáóç óå äßáõëï I/O
+32 Σήμα δυνατότητας input/output
+33 ΑσÏγχÏονο I/O (select)
+34 Επείγουσα κατάσταση σε δίαυλο I/O
35 Multitasking wake-up
36 Multitasking kill
-37 ÐåñÜôùóç áóýã÷ñïíïõ I/O ôçò fortran
-38 ÁíÜêáìøç
-39 Ìç åðáíïñèþóéìï óöÜëìá ìíÞìçò
-40 ÕðÝñâáóç ïñßïõ ÷ñüíïõ CPU
-41 Åðéêåßìåíï shutdown óõóôÞìáôïò
-42 Tï wakeup flag ôïõ áñéè. ïìÜäáò micro-tasking Ýãéíå set
-43 Ðñüâëçìá thread - (÷ñçóéìïðïéÞóôå cord -T ãéÜ ëåðôïìåñåßò ðëçñïöïñßåò)
-44 ÓöÜëìá áñôéüôçôáò êáôá÷ùñçôÞ CRAY Y-MP
-45 Áßôçóç ðëçñïöïñßáò
-46 ÁíáâïëÞ (óÞìál)
-47 Ðáýóç (óÞìá)
-48 ÁíáâïëÞ
-49 Ðáýóç
-50 ÓõíÝ÷éóç
-51 ÁíáâïëÞ (åßóïäïò áðü ôåñìáôéêü)
-52 Ðáýóç (åßóïäïò áðü ôåñìáôéêü)
-53 ÁíáâïëÞ (Ýîïäïò óå ôåñìáôéêü)
-54 Ðáýóç (Ýîïäïò óå ôåñìáôéêü)
-55 Ç êáôÜóôáóç ôïõ ðáñáèýñïõ Üëëáîå
-56 Tï ìÝãåèïò ôïõ ðáñáèýñïõ Üëëáîå
-57 Ç êáôÜóôáóç ôçò ôçëåöùíéêÞò ãñáììÞò Üëëáîå
-58 ÕðÝñâáóç ïñßïõ ÷ñüíïõ CPU
-59 ÕðÝñâáóç ïñßïõ ìåãÝèïõò áñ÷åßïõ
-60 ÓÞìá alarm åéêïíéêïý ÷ñüíïõ
-61 ÓÞìá alarm ÷ñüíïõ Profiling
-62 ÓÞìá DIL
-63 ÐñïÝêõøå pollable event
-64 Tá lwp's ôçò äéåñãáóßáò åßíáé ìðëïêáñéóìÝíá
-65 Åéäéêü óÞìá LWP
-66 Åéäéêü óÞìá CPR
-67 Åéäéêü óÞìá CPR
-68 Ðñþôï óÞìá Ðñáãìáôéêïý ×ñüíïõ
-69 Äåýôåñï óÞìá Ðñáãìáôéêïý ×ñüíïõ
-70 Tñßôï óÞìá Ðñáãìáôéêïý ×ñüíïõ
-71 TÝôáñôï óÞìá Ðñáãìáôéêïý ×ñüíïõ
-72 TÝôáñôï áðü ôï ôÝëïò óÞìá Ðñáãìáôéêïý ×ñüíïõ
-73 Tñßôï áðü ôï ôÝëïò óÞìá Ðñáãìáôéêïý ×ñüíïõ
-74 Äåýôåñï áðü ôï ôÝëïò óÞìá Ðñáãìáôéêïý ×ñüíïõ
-75 Tåëåõôáßï óÞìá Ðñáãìáôéêïý ×ñüíïõ
-76 Áóýã÷ñïíï I/O ôïðéêïý äéêôýïõ
-77 Äéáèåóéìüôçôá PTY ãéÜ áíÜãíùóç/ãñÜøéìï
-78 Áðáéôåßôáé ðáñÝìâáóç óôï I/O
-79 Ç ëåéôïõñãßá HFT monitor ðáñá÷ùñÞèçêå
-80 Ç ëåéôïõñãßá HFT monitor ðñÝðåé íá ðáñá÷ùñçèåß
-81 Ï Ýëåã÷ïò Þ÷ïõ HFT Ý÷åé ðåñáôùèåß
-82 ÄåäïìÝíá óôïí HFT ring buffer
-83 ÌåôáíÜóóôåõóç äéåñãáóßáò
-84 ÁóöáëÝò attention key
-85 Åðáíáäñïìïëüãçóç
-86 ÓÞìá SS$_DEBUG
-87 ÁëëáãÞ ðñïôåñáéüôçôáò
-88 Áíé÷íåýèçêå ðñáãìáôéêü áäéÝîïäï
-89 ÍÝïò ÷áñáêôÞñáò åéóüäïõ
+37 ΠεÏάτωση ασÏγχÏονου I/O της fortran
+38 Ανάκαμψη
+39 Μη επανοÏθώσιμο σφάλμα μνήμης
+40 ΥπέÏβαση οÏίου χÏόνου CPU
+41 Επικείμενο shutdown συστήματος
+42 Tο wakeup flag του αÏιθ. ομάδας micro-tasking έγινε set
+43 ΠÏόβλημα thread - (χÏησιμοποιήστε cord -T γιά λεπτομεÏείς πληÏοφοÏίες)
+44 Σφάλμα αÏτιότητας καταχωÏητή CRAY Y-MP
+45 Αίτηση πληÏοφοÏίας
+46 Αναβολή (σήμαl)
+47 ΠαÏση (σήμα)
+48 Αναβολή
+49 ΠαÏση
+50 Συνέχιση
+51 Αναβολή (είσοδος από τεÏματικό)
+52 ΠαÏση (είσοδος από τεÏματικό)
+53 Αναβολή (έξοδος σε τεÏματικό)
+54 ΠαÏση (έξοδος σε τεÏματικό)
+55 Η κατάσταση του παÏαθÏÏου άλλαξε
+56 Tο μέγεθος του παÏαθÏÏου άλλαξε
+57 Η κατάσταση της τηλεφωνικής γÏαμμής άλλαξε
+58 ΥπέÏβαση οÏίου χÏόνου CPU
+59 ΥπέÏβαση οÏίου μεγέθους αÏχείου
+60 Σήμα alarm ÎµÎ¹ÎºÎ¿Î½Î¹ÎºÎ¿Ï Ï‡Ïόνου
+61 Σήμα alarm χÏόνου Profiling
+62 Σήμα DIL
+63 ΠÏοέκυψε pollable event
+64 Tα lwp's της διεÏγασίας είναι μπλοκαÏισμένα
+65 Ειδικό σήμα LWP
+66 Ειδικό σήμα CPR
+67 Ειδικό σήμα CPR
+68 ΠÏώτο σήμα ΠÏÎ±Î³Î¼Î±Ï„Î¹ÎºÎ¿Ï Î§Ïόνου
+69 ΔεÏτεÏο σήμα ΠÏÎ±Î³Î¼Î±Ï„Î¹ÎºÎ¿Ï Î§Ïόνου
+70 TÏίτο σήμα ΠÏÎ±Î³Î¼Î±Ï„Î¹ÎºÎ¿Ï Î§Ïόνου
+71 TέταÏτο σήμα ΠÏÎ±Î³Î¼Î±Ï„Î¹ÎºÎ¿Ï Î§Ïόνου
+72 TέταÏτο από το τέλος σήμα ΠÏÎ±Î³Î¼Î±Ï„Î¹ÎºÎ¿Ï Î§Ïόνου
+73 TÏίτο από το τέλος σήμα ΠÏÎ±Î³Î¼Î±Ï„Î¹ÎºÎ¿Ï Î§Ïόνου
+74 ΔεÏτεÏο από το τέλος σήμα ΠÏÎ±Î³Î¼Î±Ï„Î¹ÎºÎ¿Ï Î§Ïόνου
+75 Tελευταίο σήμα ΠÏÎ±Î³Î¼Î±Ï„Î¹ÎºÎ¿Ï Î§Ïόνου
+76 ΑσÏγχÏονο I/O Ï„Î¿Ï€Î¹ÎºÎ¿Ï Î´Î¹ÎºÏ„Ïου
+77 Διαθεσιμότητα PTY γιά ανάγνωση/γÏάψιμο
+78 Απαιτείται παÏέμβαση στο I/O
+79 Η λειτουÏγία HFT monitor παÏαχωÏήθηκε
+80 Η λειτουÏγία HFT monitor Ï€Ïέπει να παÏαχωÏηθεί
+81 Ο έλεγχος ήχου HFT έχει πεÏατωθεί
+82 Δεδομένα στον HFT ring buffer
+83 Μετανάσστευση διεÏγασίας
+84 Ασφαλές attention key
+85 ΕπαναδÏομολόγηση
+86 Σήμα SS$_DEBUG
+87 Αλλαγή Ï€ÏοτεÏαιότητας
+88 ΑνιχνεÏθηκε Ï€Ïαγματικό αδιέξοδο
+89 Îέος χαÏακτήÏας εισόδου
90 Stack limit exceeded
91 Unused signal
diff --git a/nls/greek/set20 b/nls/greek/set20
index 077a3a0d3a91..18638df319a2 100644
--- a/nls/greek/set20
+++ b/nls/greek/set20
@@ -1,41 +1,41 @@
-$ $tcsh: set20,v 1.4 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set20,v 1.5 2011/02/04 18:19:37 christos Exp $
$ tc.bind.c
$set 20
-1 Áêõñï üíïìá ðëÞêôñïõ `%S'\n
-2 ÅóöáëìÝíï üíïìá ðëÞêôñïõ: %S\n
-3 ÅóöáëìÝíï üíïìá åíôïëÞò: %S\n
-4 ÅóöáëìÝíç ðåñéãñáöÞ ðëÞêôñïõ %S\n
-5 ÌçäåíéêÞ ðåñéãñáöÞ string\n
-6 Standard óõó÷åôßóåéò ðëÞêôñùí\n
-7 ÅíáëëáêôéêÝò óõó÷åôßóåéò ðëÞêôñùí\n
-8 Óõó÷åôßóåéò ðïëëáðëþí ÷áñáêôÞñùí\n
-9 Óõó÷åôßóåéò ðëÞêôñùí âÝëïõò\n
-10 %-15s-> äåí Ý÷åé ïñéóôåß\n
-11 BUG!!! ôï %s äåí åßíáé óõó÷åôéóìÝíï ìå ôßðïôá.\n
-12 ×ñÞóç: bindkey [åðéëïãÝò] [--] [ÐËÇÊÔÑÏ [ÅÍÔÏËÇ]]\n
-13 -a åìöÜíéóç Þ óõó÷Ýôéóç ÐËÇÊÔÑÏõ óôïí åíáëëáêôéêü ÷Üñôç ðëÞêôñùí\n
-14 -b åñìçíåßá ÐËÇÊÔÑÏõ ùò C-, M-, F- or X- üíïìá ðëÞêôñïõ\n
-15 -s åñìçíåßá ÅÍÔÏËÇò ùò êõñéïëåêôéêïý string ãéÜ åìöÜíéóç\n
-16 -c åñìçíåßá ÅÍÔÏËÇò ùò åóùôåñéêÞò Þ åîùôåñéêÞò åíôïëÞò\n
-17 -v óõó÷Ýôéóç üëùí ôùí ðëÞêôñùí óå áíôéóôïé÷ßá vi\n
-18 -e óõó÷Ýôéóç üëùí ôùí ðëÞêôñùí óå áíôéóôïé÷ßá emacs\n
-19 -d óõó÷Ýôéóç üëùí ôùí ðëÞêôñùí óôçí default ôïõ editor\n
-20 -l åìöÜíéóç ôùí åíôïëþí ôïõ editor ìå ðåñéãñáöÝò\n
-21 -r êáôÜñãçóç óõó÷Ýôéóçò ôïõ ÐËÇÊÔÑÏõ\n
-22 -k åñìçíåßá ÐËÇÊÔÑÏõ ùò óõìâïëéêü üíïìá ðëÞêôñïõ âÝëïõò\n
-23 -- ôÝëïò åðåîåñãáóßáò åðéëïãþí\n
-24 -u (Þ ïðïéáäÞðïôå Üêõñç åðéëïãÞ) áõôü ôï ìÞíõìá\n
-25 ×ùñßò ÐËÇÊÔÑÏ Þ ÅÍÔÏËÇ, åìöáíßæåé üëåò ôéò óõó÷åôßóåéò\n
-26 ×ùñßò ÅÍÔÏËÇ, åìöáíßæåé ôç óõó÷Ýôéóç ãéÜ ôï ÐËÇÊÔÑÏ.\n
-27 åóöáëìÝíç ðåñéãñáöÞ ðëÞêôñïõ -- ìçäåíéêü string\n
-28 åóöáëìÝíç ðåñéãñáöÞ ðëÞêôñïõ -- Üäåéï string\n
-29 ÅóöáëìÝíç ðåñéãñáöÞ ðëÞêôñïõ function. Ôï ìçäåíéêü string áðáãïñåýåôáé\n
-30 åóöáëìÝíç ðåñéãñáöÞ ðëÞêôñïõ -- êáêïó÷çìáôéóìÝíïò äåêáåîáäéêüò áñéèìüò\n
-31 åóöáëìÝíç ðåñéãñáöÞ ðëÞêôñïõ -- êáêïó÷çìáôéóìÝíïò ïêôáäéêüò áñéèìüò\n
-32 åóöáëìÝíç ðåñéãñáöÞ ðëÞêôñïõ -- êáêïó÷çìáôéóìÝíïò äåêáäéêüò áñéèìüò\n
-33 ÅóöáëìÝíç ðåñéãñáöÞ ðëÞêôñïõ function.\n
-34 Ôï ìçäåíéêü ðëÞêôñï äåí åðéôñÝðåôáé\n
-35 åóöáëìÝíç ðåñéãñáöÞ ðëÞêôñïõ -- Üãíùóôï üíïìá "%S"\n
-36 ÷ñÞóç: bind [ÐËÇÊÔÑÏ | ÐËÇÊÔÑÏ ÅÍÔÏËÇÓ | "emacs" | "vi" | "-a"]\n
-37 Áêõñç ëåéôïõñãßá
-38 Tï %s\t\täåí åßíáé ïñéóìÝíï\n
+1 ΑκυÏο όνομα πλήκτÏου `%S'\n
+2 Εσφαλμένο όνομα πλήκτÏου: %S\n
+3 Εσφαλμένο όνομα εντολής: %S\n
+4 Εσφαλμένη πεÏιγÏαφή πλήκτÏου %S\n
+5 Μηδενική πεÏιγÏαφή string\n
+6 Standard συσχετίσεις πλήκτÏων\n
+7 Εναλλακτικές συσχετίσεις πλήκτÏων\n
+8 Συσχετίσεις πολλαπλών χαÏακτήÏων\n
+9 Συσχετίσεις πλήκτÏων βέλους\n
+10 %-15s-> δεν έχει οÏιστεί\n
+11 BUG!!! το %s δεν είναι συσχετισμένο με τίποτα.\n
+12 ΧÏήση: bindkey [επιλογές] [--] [ΠΛΗΚΤΡΟ [ΕÎΤΟΛΗ]]\n
+13 -a εμφάνιση ή συσχέτιση ΠΛΗΚΤΡΟυ στον εναλλακτικό χάÏτη πλήκτÏων\n
+14 -b εÏμηνεία ΠΛΗΚΤΡΟυ ως C-, M-, F- or X- όνομα πλήκτÏου\n
+15 -s εÏμηνεία ΕÎΤΟΛΗς ως κυÏÎ¹Î¿Î»ÎµÎºÏ„Î¹ÎºÎ¿Ï string γιά εμφάνιση\n
+16 -c εÏμηνεία ΕÎΤΟΛΗς ως εσωτεÏικής ή εξωτεÏικής εντολής\n
+17 -v συσχέτιση όλων των πλήκτÏων σε αντιστοιχία vi\n
+18 -e συσχέτιση όλων των πλήκτÏων σε αντιστοιχία emacs\n
+19 -d συσχέτιση όλων των πλήκτÏων στην default του editor\n
+20 -l εμφάνιση των εντολών του editor με πεÏιγÏαφές\n
+21 -r κατάÏγηση συσχέτισης του ΠΛΗΚΤΡΟυ\n
+22 -k εÏμηνεία ΠΛΗΚΤΡΟυ ως συμβολικό όνομα πλήκτÏου βέλους\n
+23 -- τέλος επεξεÏγασίας επιλογών\n
+24 -u (ή οποιαδήποτε άκυÏη επιλογή) αυτό το μήνυμα\n
+25 ΧωÏίς ΠΛΗΚΤΡΟ ή ΕÎΤΟΛΗ, εμφανίζει όλες τις συσχετίσεις\n
+26 ΧωÏίς ΕÎΤΟΛΗ, εμφανίζει τη συσχέτιση γιά το ΠΛΗΚΤΡΟ.\n
+27 εσφαλμένη πεÏιγÏαφή πλήκτÏου -- μηδενικό string\n
+28 εσφαλμένη πεÏιγÏαφή πλήκτÏου -- άδειο string\n
+29 Εσφαλμένη πεÏιγÏαφή πλήκτÏου function. Το μηδενικό string απαγοÏεÏεται\n
+30 εσφαλμένη πεÏιγÏαφή πλήκτÏου -- κακοσχηματισμένος δεκαεξαδικός αÏιθμός\n
+31 εσφαλμένη πεÏιγÏαφή πλήκτÏου -- κακοσχηματισμένος οκταδικός αÏιθμός\n
+32 εσφαλμένη πεÏιγÏαφή πλήκτÏου -- κακοσχηματισμένος δεκαδικός αÏιθμός\n
+33 Εσφαλμένη πεÏιγÏαφή πλήκτÏου function.\n
+34 Το μηδενικό πλήκτÏο δεν επιτÏέπεται\n
+35 εσφαλμένη πεÏιγÏαφή πλήκτÏου -- άγνωστο όνομα "%S"\n
+36 χÏήση: bind [ΠΛΗΚΤΡΟ | ΠΛΗΚΤΡΟ ΕÎΤΟΛΗΣ | "emacs" | "vi" | "-a"]\n
+37 ΑκυÏη λειτουÏγία
+38 Tο %s\t\tδεν είναι οÏισμένο\n
diff --git a/nls/greek/set21 b/nls/greek/set21
index 3ef206b08b95..1a215ddf4664 100644
--- a/nls/greek/set21
+++ b/nls/greek/set21
@@ -1,5 +1,5 @@
-$ $tcsh: set21,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set21,v 1.3 2011/02/04 18:19:37 christos Exp $
$ tc.disc.c
$set 21
-1 Äå ìðïñþ íá äéáâÜóù ôá local chars.\n
-2 Äå ìðïñþ íá ãñÜøù ôá local chars.\n
+1 Δε μποÏÏŽ να διαβάσω τα local chars.\n
+2 Δε μποÏÏŽ να γÏάψω τα local chars.\n
diff --git a/nls/greek/set22 b/nls/greek/set22
index 239503112940..4620121dd126 100644
--- a/nls/greek/set22
+++ b/nls/greek/set22
@@ -1,18 +1,18 @@
-$ $tcsh: set22,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set22,v 1.3 2011/02/04 18:19:37 christos Exp $
$ tc.func.c
$set 22
-1 %S: \t øåõäþíõìï ãéÜ ôï
-2 \nËÜèïò password ãéÜ ôï %s\n
-3 Tï åóöáëìÝíï øåõäþíõìï 'precmd' áöáéñÝèçêå.\n
-4 Ôï åóöáëìÝíï øåõäþíõìï 'cwdcmd' áöáéñÝèçêå.\n
-5 Ôï åóöáëìÝíï øåõäþíõìï 'beepcmd' áöáéñÝèçêå.\n
-6 Ôï åóöáëìÝíï øåõäþíõìï 'periodic' áöáéñÝèçêå.\n
-7 Ýëåã÷ïò óýíôáîçò ãñáììÞò\n
-8 ÈÝëåôå ðñáãìáôéêÜ íá óâÞóåôå üëá ôá áñ÷åßá? [n/y]
-9 áêýñùóç óâçóßìáôïò áñ÷åßùí!\n
-10 ç ãñáììÞ ôþñá Ýãéíå:\n
-11 Ýëåã÷ïò óýíôáîçò ãñáììÞò\n
-12 óå Ýíáí áðü ôïõò êáôáëüãïõò\n
-13 ç ãñáììÞ ôþñá Ýãéíå:\n
+1 %S: \t ψευδώνυμο γιά το
+2 \nΛάθος password γιά το %s\n
+3 Tο εσφαλμένο ψευδώνυμο 'precmd' αφαιÏέθηκε.\n
+4 Το εσφαλμένο ψευδώνυμο 'cwdcmd' αφαιÏέθηκε.\n
+5 Το εσφαλμένο ψευδώνυμο 'beepcmd' αφαιÏέθηκε.\n
+6 Το εσφαλμένο ψευδώνυμο 'periodic' αφαιÏέθηκε.\n
+7 έλεγχος σÏνταξης γÏαμμής\n
+8 Θέλετε Ï€Ïαγματικά να σβήσετε όλα τα αÏχεία? [n/y]
+9 ακÏÏωση σβησίματος αÏχείων!\n
+10 η γÏαμμή Ï„ÏŽÏα έγινε:\n
+11 έλεγχος σÏνταξης γÏαμμής\n
+12 σε έναν από τους καταλόγους\n
+13 η γÏαμμή Ï„ÏŽÏα έγινε:\n
14 yY
diff --git a/nls/greek/set23 b/nls/greek/set23
index 813c2b17dab8..610b65ec5b10 100644
--- a/nls/greek/set23
+++ b/nls/greek/set23
@@ -1,31 +1,31 @@
-$ $tcsh: set23,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set23,v 1.4 2011/02/04 18:19:38 christos Exp $
$ tc.os.c
$set 23
-1 Áêõñï üíïìá cpu/site
-2 Ôï site path åßíáé õðåñâïëéêÜ ìáêñý
-3 Üãíùóôï
+1 ΑκυÏο όνομα cpu/site
+2 Το site path είναι υπεÏβολικά μακÏÏ
+3 άγνωστο
4 site: %s\n
-5 %d: ôï site äå âñÝèçêå\n
+5 %d: το site δε βÏέθηκε\n
6 setlocal: %s: %s\n
-7 Tï site äå âñÝèçêå
-8 Åßóôå ðáãéäåõìÝíïò óå Ýíá óýìðáí ðïõ äåí Ý÷åôå êáôáóêåõÜóåé
-9 Tï getwarp áðÝôõ÷å
-10 Áêõñï warp
-11 Tï setwarp áðÝôõ÷å
-12 Áêõñï óýìðáí
-13 Áãíùóôï ëÜèïò: %d
-14 üíïìá óõóôÞìáôïò: %s\n
-15 üíïìá êüìâïõ: %s\n
+7 Tο site δε βÏέθηκε
+8 Είστε παγιδευμένος σε ένα σÏμπαν που δεν έχετε κατασκευάσει
+9 Tο getwarp απέτυχε
+10 ΑκυÏο warp
+11 Tο setwarp απέτυχε
+12 ΑκυÏο σÏμπαν
+13 Αγνωστο λάθος: %d
+14 όνομα συστήματος: %s\n
+15 όνομα κόμβου: %s\n
16 release: %s\n
17 version: %s\n
18 machine: %s\n
-19 getwd: äå ìðïñþ íá áíïßîù ôï ".." (%s)
-20 getwd: äå ìðïñþ íá áëëÜîù ôïí êáôÜëïãï óå ".." (%s)
-21 getwd: óöÜëìá óôçí áíÜãíùóç ôïõ ".." (%s)
-22 getwd: äå ìðïñþ íá îáíáëëÜîù ôïí êáôÜëïãï óå "." (%s)
-23 getwd: äå ìðïñþ íá êÜíù stat ôï "/" (%s)
-24 getwd: äå ìðïñþ íá êÜíù stat ôïí êáôÜëïãï "%s" (%s)
-25 getwd: äå ìðïñþ íá áíïßîù ôïí êáôÜëïãï "%s" (%s)
-26 getwd: äå ìðïñþ íá âñþ ôï "." óôï ".." (%s)
-27 Áêõñïò ôýðïò óõóôÞìáôïò
-28 Äåí Ý÷åé äïèåß ôéìÞ óôïí ôýðï óõóôÞìáôïò
+19 getwd: δε μποÏÏŽ να ανοίξω το ".." (%s)
+20 getwd: δε μποÏÏŽ να αλλάξω τον κατάλογο σε ".." (%s)
+21 getwd: σφάλμα στην ανάγνωση του ".." (%s)
+22 getwd: δε μποÏÏŽ να ξαναλλάξω τον κατάλογο σε "." (%s)
+23 getwd: δε μποÏÏŽ να κάνω stat το "/" (%s)
+24 getwd: δε μποÏÏŽ να κάνω stat τον κατάλογο "%s" (%s)
+25 getwd: δε μποÏÏŽ να ανοίξω τον κατάλογο "%s" (%s)
+26 getwd: δε μποÏÏŽ να βÏÏŽ το "." στο ".." (%s)
+27 ΑκυÏος Ï„Ïπος συστήματος
+28 Δεν έχει δοθεί τιμή στον Ï„Ïπο συστήματος
diff --git a/nls/greek/set25 b/nls/greek/set25
index 406d7106e7e0..ba7891f7fc71 100644
--- a/nls/greek/set25
+++ b/nls/greek/set25
@@ -1,6 +1,6 @@
-$ $tcsh: set25,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set25,v 1.3 2011/02/04 18:19:38 christos Exp $
$ tc.sig.c
$set 25
1 our wait %d\n
-2 óöÜëìá: ôï bsd_signal(%d) åêôüò ïñßùí\n
-3 óöÜëìá: ç sigaction áðÝôõ÷å ãéÜ ôï bsd_signal(%d), errno %d\n
+2 σφάλμα: το bsd_signal(%d) εκτός οÏίων\n
+3 σφάλμα: η sigaction απέτυχε γιά το bsd_signal(%d), errno %d\n
diff --git a/nls/greek/set26 b/nls/greek/set26
index d081bbc615c2..2564ecbfe867 100644
--- a/nls/greek/set26
+++ b/nls/greek/set26
@@ -1,15 +1,15 @@
-$ $tcsh: set26,v 1.3 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set26,v 1.4 2011/02/04 18:19:38 christos Exp $
$ tc.who.c
$set 26
-1 äå ìðïñþ íá êÜíù stat ôï %s. Ðáñáêáëþ äþóôå "unset watch".\n
-2 Tï %s äå ìðïñåß íá áíïé÷ôåß. Ðáñáêáëþ äþóôå "unset watch".\n
-3 BUG! ôï ôåëåõôáßï óôïé÷åßï äåí åßíáé whotail!\n
-4 ðñïò ôá ðßóù:
-5 BUG! ôï ôåëåõôáßï óôïé÷åßï äåí åßíáé whohead!\n
-6 íÝï: %s/%s\n
-7 Ï ÷ñÞóôçò %n Ýêáíå %a óôï ôåñìáôéêü %l áðü %m.
-8 Ï ÷ñÞóôçò %n Ýêáíå %a óôï ôåñìáôéêü %l.
+1 δε μποÏÏŽ να κάνω stat το %s. ΠαÏακαλώ δώστε "unset watch".\n
+2 Tο %s δε μποÏεί να ανοιχτεί. ΠαÏακαλώ δώστε "unset watch".\n
+3 BUG! το τελευταίο στοιχείο δεν είναι whotail!\n
+4 Ï€Ïος τα πίσω:
+5 BUG! το τελευταίο στοιχείο δεν είναι whohead!\n
+6 νέο: %s/%s\n
+7 Ο χÏήστης %n έκανε %a στο τεÏματικό %l από %m.
+8 Ο χÏήστης %n έκανε %a στο τεÏματικό %l.
9 login
10 logout
-11 áíôéêáôÝóôçóå ôïí %s óôï ôåñìáôéêü
-12 ôïðéêü
+11 αντικατέστησε τον %s στο τεÏματικό
+12 τοπικό
diff --git a/nls/greek/set27 b/nls/greek/set27
index 4e9141640323..6854e6fa952c 100644
--- a/nls/greek/set27
+++ b/nls/greek/set27
@@ -1,8 +1,8 @@
-$ $tcsh: set27,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set27,v 1.3 2011/02/04 18:19:38 christos Exp $
$ tw.comp.c
$set 27
-1 åíôïëÞ
+1 εντολή
2 separator
3 pattern
-4 êëßìáêá ôéìþí
-5 óõìðëÞñùóç
+4 κλίμακα τιμών
+5 συμπλήÏωση
diff --git a/nls/greek/set29 b/nls/greek/set29
index cf0b9ebadaeb..d749230a17c6 100644
--- a/nls/greek/set29
+++ b/nls/greek/set29
@@ -1,4 +1,4 @@
-$ $tcsh: set29,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set29,v 1.3 2011/02/04 18:19:38 christos Exp $
$ tw.help.c
$set 29
-1 Äåí õðÜñ÷åé áñ÷åßï ìå âïÞèåéá ãéÜ ôï %S\n
+1 Δεν υπάÏχει αÏχείο με βοήθεια γιά το %S\n
diff --git a/nls/greek/set3 b/nls/greek/set3
index b66cc1aadf3a..9e2ad8d863a9 100644
--- a/nls/greek/set3
+++ b/nls/greek/set3
@@ -1,120 +1,120 @@
-$ $tcsh: set3,v 1.4 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set3,v 1.5 2011/02/04 18:19:38 christos Exp $
$ Editor function descriptions
$set 3
-1 Ìåôáêßíçóç Ýíá ÷áñáêôÞñá üðéóèåí
-2 ÄéáãñáöÞ ÷áñáêôÞñá áñéóôåñÜ ôïõ äñïìÝá
-3 ÁðïêïðÞ áðü ôçí áñ÷Þ ôçò ôñÝ÷ïõóáò ëÝîçò ùò ôï äñïìÝá - öýëáîç óôï cut buffer
-4 ÁðïêïðÞ áðü ôçí áñ÷Þ ôçò ãñáììÞò - öýëáîç óôï cut buffer
-5 Ìåôáêßíçóç óôçí áñ÷Þ ôçò ôñÝ÷ïõóáò ëÝîçò
-6 Ìåôáêßíçóç óôçí áñ÷Þ ãñáììÞò
-7 ÌåôáôñïðÞ óå êåöáëáßá áðü ôï äñïìÝá ùò ôï ôÝëïò ôçò ôñÝ÷ïõóáò ëÝîçò
-8 (Vi) áëëáãÞ êåöáëáßùí/ìéêñþí óôç èÝóç ôïõ äñïìÝá êáé ìåôáêßíçóç ìéÜ èÝóç
-9 (Vi) áëëáãÞ êåöáëáßùí/ìéêñþí ùò ôï ôÝëïò ôçò ãñáììÞò
-10 ÊáèÜñéóìá ïèüíçò ìå ðáñáìïíÞ ôçò ôñÝ÷ïõóáò ãñáìÞò óôï ðÜíù ìÝñïò
-11 ÓõìðëÞñùóç ôñÝ÷ïõóáò ëÝîçò
-12 Tab forward ìåôáîý áñ÷åßùí
-13 Tab backward ìåôáîý áñ÷åßùí
-14 ÓõìðëÞñùóç ôñÝ÷ïõóáò ëÝîçò áãíïþíôáò ôéò ðñïãñáììáôéæüìåíåò óõìðëçñþóåéò
-15 ÁíôéãñáöÞ ôñÝ÷ïõóáò ëÝîçò óôçí èÝóç ôïõ äñïìÝá
-16 ÁíôéãñáöÞ ðåñéï÷Þò ìåôáîý óçìáäéïý êáé äñïìÝá óôï cut buffer
-17 ÁíÜðôõîç óå ðñïçãïýìåíç ëÝîç ìå ßäéï ðñüèåìá
-18 ÄéáãñáöÞ ÷áñáêôÞñá óôç èÝóç ôïõ äñïìÝá
-19 ÄéáãñáöÞ ÷áñáêôÞñá óôç èÝóç ôïõ äñïìÝá Þ end of file (ãéÜ Üäåéá ãñáììÞ)
-20 ÄéáãñáöÞ ÷áñáêôÞñá óôç èÝóç ôïõ äñïìÝá Þ óõìðëçñþóåéò (óôï ôÝëïò ãñáììÞò)
-21 ÄéáãñáöÞ ÷áñáêôÞñá óôç èÝóç ôïõ äñïìÝá, óõìðëçñþóåéò Þ end of file
-22 ÁðïêïðÞ áðü ôï äñïìÝá ùò ôï ôÝëïò ôçò ëÝîçò - öýëáîç óôï cut buffer
-23 Ðñüóèåóç óå üñéóìá óôçí áñ÷Þ Þ åßóïäïò øçößïõ
-24 Øçößï ðïõ áñ÷ßæåé üñéóìá
-25 Ìåôáêßíçóç óôçí åðüìåíç ãñáììÞ Éóôïñßáò
-26 ÌåôáôñïðÞ óå ìéêñÜ áðü ôï äñïìÝá ùò ôï ôÝëïò ôçò ëÝîçò
-27 Åíäåéîç end of file
-28 Ìåôáêßíçóç äñïìÝá óôï ôÝëïò ôçò ãñáììÞò
-29 ÁíôéìåôÜèåóç äñïìÝá - óçìáäéïý
-30 ÁíÜðôõîç wildcards óôï üíïìá áñ÷åßïõ
-31 ÁíÜðôõîç escapes Éóôïñßáò
-32 ÁíÜðôõîç escapes Éóôïñßáò óå ìéÜ ãñáììÞ
-33 ÁíÜðôõîç ìåôáâëçôþí
-34 Ìåôáêßíçóç äñïìÝá ìéÜ èÝóç åìðñüò
-35 Ìåôáêßíçóç ùò ôï ôÝëïò ôçò ëÝîçò
-36 ÁíôéìåôÜèåóç ôùí äýï ÷áñáêôÞñùí ðñéí ôï äñïìÝá
-37 ÁíáæÞôçóç ðñïçãïýìåíçò ãñáììÞò ôçò Éóôïñßáò ðïõ íá áñ÷ßæåé üðùò ç ôùñéíÞ
-38 ÁíáæÞôçóç åðüìåíçò ãñáììÞò ôçò Éóôïñßáò ðïõ íá áñ÷ßæåé üðùò ç ôùñéíÞ
-39 ÅéóáãùãÞ ôåëåõôáßïõ ôìÞìáôïò ðñïçãïýìåíçò åíôïëÞò
-40 ÓôáäéáêÞ áíáæÞôçóç óôá åðüìåíá
-41 ÓôáäéáêÞ áíáæÞôçóç óôá ðñïçãïýìåíá
-42 ÓâÞóéìï ãñáììÞò
-43 ÁðïêïðÞ ùò ôï ôÝëïò ôçò ãñáììÞò êáé öýëáîç óôï cut buffer
-44 ÁðïêïðÞ áðü ôï óçìÜäé ùò ôï äñïìÝá êáé öýëáîç óôï cut buffer
-45 ÁðïêïðÞ ïëüêëçñçò ôçò ãñáììÞò êáé öýëáîç óôï cut buffer
-46 ÅìöÜíéóç åðéëïãþí óõìðëÞñùóçò
-47 ÅìöÜíéóç åðéëïãþí óõìðëÞñùóçò áãíïþíôáò ôçí ðñïãñáììáôéæüìåíç óõìðëÞñùóç
-48 ÅìöÜíéóç ïíïìÜôùí áñ÷åßùí ðïõ ôáéñéÜæïõí ìå ôï wildcard
-49 ÅìöÜíéóç åðéëïãþí óõìðëÞñùóçò Þ end of file (óå Üäåéá ãñáììÞ)
-50 ÅìöÜíéóç ìÝóïõ üñïõ öïñôßïõ êáé êáôÜóôáóçò äéåñãáóéþí
-51 ÁíÜðôõîç escapes Éóôïñßáò êáé ðáñåìâïëÞ åíüò space
-52 ÅêôÝëåóç åíôïëÞò
-53 ÁíÜðôõîç pathnames, ìå áöáßñåóç ôùí áñ÷éêþí . êáé ..
-54 ÁíÜðôõîç åíôïëþí óôï ó÷åôéêü pathname Þ øåõäþíõìï
-55 ÅíáëëáãÞ áðü ðáñåìâïëÞ ÷áñáêôÞñùí óå áíôéêáôÜóôáóç êáé áíôßóôñïöá
-56 Ðñüóèåóç 8ïõ bit óôïí åðüìåíï ÷áñáêôÞñá ðïõ ðëçêôñïëïãåßôáé
-57 Ðñüóèåóç óôç ãñáììÞ ôïõ åðüìåíïõ ÷áñáêôÞñá ÷ùñßò åñìçíåßá (÷áñ. åëÝã÷ïõ)
-58 ÅðáíåìöÜíéóç
-59 Åðáíåêêßíçóç óôáìáôçìÝíïõ editor
-60 ÁíáæÞôçóç âïÞèåéáò ãéÜ ôçí ôñÝ÷ïõóá ãñáììÞ
-61 Ï ÷áñáêôÞñáò áõôüò ðñïóôßèåôáé óôç ãñáììÞ
-62 Ï ÷áñáêôÞñáò áõôüò åßíáé ï ðñþôïò ìéÜò áêïëïõèßáò ÷áñáêôÞñùí
-63 TïðïèÝôçóç óçìáäéïý óôç èÝóç ôïõ äñïìÝá
-64 Äéüñèùóç ïñèïãñáößáò ôçò ôñÝ÷ïõóáò ëÝîçò
-65 Äéüñèùóç ïñèïãñáößáò üëçò ôçò ãñáììÞò
-66 ÁðïóôïëÞ ÷áñáêôÞñá óôï ôåñìáôéêü óå cooked mode
-67 ÅíáëëáãÞ ìåôáîý êõñéïëåîßáò êáé ëåêôéêÞò ìïñöÞò ãñáììÞò Éóôïñßáò
-68 ÅíáëëáãÞ ôïõ ÷áñáêôÞñá óôç èÝóç ôïõ äñïìÝá ìå ôïí åðüìåíï
-69 ÅíáëëáãÞ ôùí äýï ÷áñáêôÞñùí áñéóôåñÜ ôïõ äñïìÝá
-70 ×áñáêôÞñáò ôåñìáôéêïý ãéá êáèõóôåñçìÝíç áíáâïëÞ äéåñãáóßáò
-71 ×áñáêôÞñáò ôåñìáôéêïý ãéÜ åêêÝíùóç output
-72 ×áñáêôÞñáò ôåñìáôéêïý ãéÜ åêêÝíùóç input
-73 ×áñáêôÞñáò ôåñìáôéêïý ãéÜ ðáñáßôçóç (quit)
-74 ×áñáêôÞñáò ôåñìáôéêïý ãéÜ áíáâïëÞ
-75 ×áñáêôÞñáò ôåñìáôéêïý ãéÜ åíåñãïðïßçóç output
-76 ×áñáêôÞñáò ôåñìáôéêïý ãéÜ áðåíåñãïðïßçóç output
-77 Åíäåéîç ÷áñáêôÞñá ÷ùñßò áíôéóôïß÷éóç
-78 Universal üñéóìá ôïõ emcas (üñéóìá åðß 4)
-79 Ìåôáêßíçóç óôçí ðñïçãïýìåíç ãñáììÞ Éóôïñßáò
-80 ÌåôáôñïðÞ óå êåöáëáßá áðü ôç èÝóç ôïõ äñïìÝá ùò ôï ôÝëïò ôçò ëÝîçò
-81 (Vi) ìåôáêßíçóç óôçí áñ÷Þ ôçò åðüìåíçò ëÝîçò
-82 (Vi) ìåôÜâáóç óå ôñüðï ðáñåìâïëÞò ÷áñáêôÞñùí ìåôÜ ôï äñïìÝá
-83 (Vi) ìåôÜâáóç óå ôñüðï ðáñåìâïëÞò ÷áñáêôÞñùí óôï ôÝëïò ôçò ãñáììÞò
-84 (Vi) ìåôáôñïðÞ êåöáëáßùí/ìéêñþí óôç èÝóç äñïìÝá êáé ìåôáêßíçóç äåîéÜ
-85 (Vi) åíôïëÞ áëëáãÞò ðñïèÝìáôïò
-86 (Vi) áëëáãÞ ùò ôï ôÝëïò ôçò ãñáììÞò
-87 ÌåôÜâáóç óôïí ôñüðï åíôïëþí vi
-88 (Vi) óå ôñüðï åíôïëþí, óõìðëÞñùóç ëÝîçò
-89 (Vi) ìåôáêßíçóç óôïí ðñïçãïýìåíï ÷áñáêôÞñá (backspace)
-90 (Vi) åíôïëÞ äéáãñáöÞò ðñïèÝìáôïò
-91 (Vi) ìåôáêßíçóç óôï ôÝëïò ôçò ôñÝ÷ïõóáò ëÝîçò (÷ùñéóìÝíçò áðï space)
-92 (Vi) ìåôáêßíçóç óôï ôÝëïò ôçò ôñÝ÷ïõóáò ëÝîçò
-93 (Vi) ìåôáêßíçóç ðñïò ôá ðßóù ùò ôïí êáèïñéóìÝíï ÷áñáêôÞñá
-94 (Vi) ìåôáêßíçóç ðñïò ôá åìðñüò ùò ôïí êáèïñéóìÝíï ÷áñáêôÞñá
-95 (Vi) ìåôáêßíçóç ðñïò ôá ðßóù ùò êáé ôïí êáèïñéóìÝíï ÷áñáêôÞñá
-96 (Vi) ìåôáêßíçóç ðñïò ôá åìðñüò ùò êáé ôïí êáèïñéóìÝíï ÷áñáêôÞñá
-97 ÌåôÜâáóç óôïí ôñüðï ðáñåìâïëÞò ôïõ vi
-98 ÌåôÜâáóç óôïí ôñüðï ðáñåìâïëÞò ôïõ vi óôçí áñ÷Þ ôçò ãñáììÞò
-99 (Vi) åðáíÜëçøç ðñïçãïýìåíçò áíáæÞôçóçò ÷áñáêôÞñá óôçí ßäéá êáôåýèõíóç
-100 (Vi) åðáíÜëçøç ðñïçãïýìåíçò áíáæÞôçóçò ÷áñáêôÞñá óôçí áíôßèåôç êáôåýèõíóç
-101 (Vi) åðáíÜëçøç ðñïçãïýìåíçò áíáæÞôçóçò óôçí ßäéá êáôåýèõíóç
-102 (Vi) åðáíÜëçøç ðñïçãïýìåíçò áíáæÞôçóçò óôçí áíôßèåôç êáôåýèõíóç
-103 (Vi) áíôéêáôÜóôáóç ôñÝ÷ïíôá ÷áñáêôÞñá ìå ôïí åðüìåíï ðëçêôñïëïãïýìåíï
-104 (Vi) ôñüðïò áíôéêáôÜóôáóçò
-105 (Vi) áíáæÞôçóç Éóôïñßáò ðñïò ôá ðßóù
-106 (Vi) áíáæÞôçóç Éóôïñßáò ðñïò ôá ìðñïóôÜ
-107 (Vi) áíôéêáôÜóôáóç ôñÝ÷ïíôá ÷áñáêôÞñá êáé ìåôÜâáóç óå ôñüðï ðáñåìâïëÞò
-108 (Vi) áíôéêáôÜóôáóç ïëüêëçñçò ôçò ãñáììÞò
-109 (Vi) ìåôáêßíçóç óôçí ðñïçãïýìåíç ëÝîç
-110 (Vi) ìåôáêßíçóç óôçí åðüìåíç ëÝîç
-111 (Vi) áíáßñåóç ðñïçãïýìåíçò áëëáãÞò
-112 (Vi) ìåôáêßíçóç óôçí áñ÷Þ ôçò ãñáììÞò
-113 ÅêôÝëåóç "which" ôçò ôñÝ÷ïõóáò åíôïëÞò
-114 Åðéêüëëçóç ôïõ cut buffer óôçí ôñÝ÷ïõóá èÝóç
+1 Μετακίνηση ένα χαÏακτήÏα όπισθεν
+2 ΔιαγÏαφή χαÏακτήÏα αÏιστεÏά του δÏομέα
+3 Αποκοπή από την αÏχή της Ï„Ïέχουσας λέξης ως το δÏομέα - φÏλαξη στο cut buffer
+4 Αποκοπή από την αÏχή της γÏαμμής - φÏλαξη στο cut buffer
+5 Μετακίνηση στην αÏχή της Ï„Ïέχουσας λέξης
+6 Μετακίνηση στην αÏχή γÏαμμής
+7 ΜετατÏοπή σε κεφαλαία από το δÏομέα ως το τέλος της Ï„Ïέχουσας λέξης
+8 (Vi) αλλαγή κεφαλαίων/μικÏών στη θέση του δÏομέα και μετακίνηση μιά θέση
+9 (Vi) αλλαγή κεφαλαίων/μικÏών ως το τέλος της γÏαμμής
+10 ΚαθάÏισμα οθόνης με παÏαμονή της Ï„Ïέχουσας γÏαμής στο πάνω μέÏος
+11 ΣυμπλήÏωση Ï„Ïέχουσας λέξης
+12 Tab forward Î¼ÎµÏ„Î±Î¾Ï Î±Ïχείων
+13 Tab backward Î¼ÎµÏ„Î±Î¾Ï Î±Ïχείων
+14 ΣυμπλήÏωση Ï„Ïέχουσας λέξης αγνοώντας τις Ï€ÏογÏαμματιζόμενες συμπληÏώσεις
+15 ΑντιγÏαφή Ï„Ïέχουσας λέξης στην θέση του δÏομέα
+16 ΑντιγÏαφή πεÏιοχής Î¼ÎµÏ„Î±Î¾Ï ÏƒÎ·Î¼Î±Î´Î¹Î¿Ï ÎºÎ±Î¹ δÏομέα στο cut buffer
+17 Ανάπτυξη σε Ï€ÏοηγοÏμενη λέξη με ίδιο Ï€Ïόθεμα
+18 ΔιαγÏαφή χαÏακτήÏα στη θέση του δÏομέα
+19 ΔιαγÏαφή χαÏακτήÏα στη θέση του δÏομέα ή end of file (γιά άδεια γÏαμμή)
+20 ΔιαγÏαφή χαÏακτήÏα στη θέση του δÏομέα ή συμπληÏώσεις (στο τέλος γÏαμμής)
+21 ΔιαγÏαφή χαÏακτήÏα στη θέση του δÏομέα, συμπληÏώσεις ή end of file
+22 Αποκοπή από το δÏομέα ως το τέλος της λέξης - φÏλαξη στο cut buffer
+23 ΠÏόσθεση σε ÏŒÏισμα στην αÏχή ή είσοδος ψηφίου
+24 Ψηφίο που αÏχίζει ÏŒÏισμα
+25 Μετακίνηση στην επόμενη γÏαμμή ΙστοÏίας
+26 ΜετατÏοπή σε μικÏά από το δÏομέα ως το τέλος της λέξης
+27 Ενδειξη end of file
+28 Μετακίνηση δÏομέα στο τέλος της γÏαμμής
+29 Αντιμετάθεση δÏομέα - σημαδιοÏ
+30 Ανάπτυξη wildcards στο όνομα αÏχείου
+31 Ανάπτυξη escapes ΙστοÏίας
+32 Ανάπτυξη escapes ΙστοÏίας σε μιά γÏαμμή
+33 Ανάπτυξη μεταβλητών
+34 Μετακίνηση δÏομέα μιά θέση εμπÏός
+35 Μετακίνηση ως το τέλος της λέξης
+36 Αντιμετάθεση των δÏο χαÏακτήÏων Ï€Ïιν το δÏομέα
+37 Αναζήτηση Ï€ÏοηγοÏμενης γÏαμμής της ΙστοÏίας που να αÏχίζει όπως η τωÏινή
+38 Αναζήτηση επόμενης γÏαμμής της ΙστοÏίας που να αÏχίζει όπως η τωÏινή
+39 Εισαγωγή τελευταίου τμήματος Ï€ÏοηγοÏμενης εντολής
+40 Σταδιακή αναζήτηση στα επόμενα
+41 Σταδιακή αναζήτηση στα Ï€ÏοηγοÏμενα
+42 Σβήσιμο γÏαμμής
+43 Αποκοπή ως το τέλος της γÏαμμής και φÏλαξη στο cut buffer
+44 Αποκοπή από το σημάδι ως το δÏομέα και φÏλαξη στο cut buffer
+45 Αποκοπή ολόκληÏης της γÏαμμής και φÏλαξη στο cut buffer
+46 Εμφάνιση επιλογών συμπλήÏωσης
+47 Εμφάνιση επιλογών συμπλήÏωσης αγνοώντας την Ï€ÏογÏαμματιζόμενη συμπλήÏωση
+48 Εμφάνιση ονομάτων αÏχείων που ταιÏιάζουν με το wildcard
+49 Εμφάνιση επιλογών συμπλήÏωσης ή end of file (σε άδεια γÏαμμή)
+50 Εμφάνιση μέσου ÏŒÏου φοÏτίου και κατάστασης διεÏγασιών
+51 Ανάπτυξη escapes ΙστοÏίας και παÏεμβολή ενός space
+52 Εκτέλεση εντολής
+53 Ανάπτυξη pathnames, με αφαίÏεση των αÏχικών . και ..
+54 Ανάπτυξη εντολών στο σχετικό pathname ή ψευδώνυμο
+55 Εναλλαγή από παÏεμβολή χαÏακτήÏων σε αντικατάσταση και αντίστÏοφα
+56 ΠÏόσθεση 8ου bit στον επόμενο χαÏακτήÏα που πληκτÏολογείται
+57 ΠÏόσθεση στη γÏαμμή του επόμενου χαÏακτήÏα χωÏίς εÏμηνεία (χαÏ. ελέγχου)
+58 Επανεμφάνιση
+59 Επανεκκίνηση σταματημένου editor
+60 Αναζήτηση βοήθειας γιά την Ï„Ïέχουσα γÏαμμή
+61 Ο χαÏακτήÏας αυτός Ï€Ïοστίθεται στη γÏαμμή
+62 Ο χαÏακτήÏας αυτός είναι ο Ï€Ïώτος μιάς ακολουθίας χαÏακτήÏων
+63 Tοποθέτηση ÏƒÎ·Î¼Î±Î´Î¹Î¿Ï ÏƒÏ„Î· θέση του δÏομέα
+64 ΔιόÏθωση οÏθογÏαφίας της Ï„Ïέχουσας λέξης
+65 ΔιόÏθωση οÏθογÏαφίας όλης της γÏαμμής
+66 Αποστολή χαÏακτήÏα στο τεÏματικό σε cooked mode
+67 Εναλλαγή Î¼ÎµÏ„Î±Î¾Ï ÎºÏ…Ïιολεξίας και λεκτικής μοÏφής γÏαμμής ΙστοÏίας
+68 Εναλλαγή του χαÏακτήÏα στη θέση του δÏομέα με τον επόμενο
+69 Εναλλαγή των δÏο χαÏακτήÏων αÏιστεÏά του δÏομέα
+70 ΧαÏακτήÏας τεÏÎ¼Î±Ï„Î¹ÎºÎ¿Ï Î³Î¹Î± καθυστεÏημένη αναβολή διεÏγασίας
+71 ΧαÏακτήÏας τεÏÎ¼Î±Ï„Î¹ÎºÎ¿Ï Î³Î¹Î¬ εκκένωση output
+72 ΧαÏακτήÏας τεÏÎ¼Î±Ï„Î¹ÎºÎ¿Ï Î³Î¹Î¬ εκκένωση input
+73 ΧαÏακτήÏας τεÏÎ¼Î±Ï„Î¹ÎºÎ¿Ï Î³Î¹Î¬ παÏαίτηση (quit)
+74 ΧαÏακτήÏας τεÏÎ¼Î±Ï„Î¹ÎºÎ¿Ï Î³Î¹Î¬ αναβολή
+75 ΧαÏακτήÏας τεÏÎ¼Î±Ï„Î¹ÎºÎ¿Ï Î³Î¹Î¬ ενεÏγοποίηση output
+76 ΧαÏακτήÏας τεÏÎ¼Î±Ï„Î¹ÎºÎ¿Ï Î³Î¹Î¬ απενεÏγοποίηση output
+77 Ενδειξη χαÏακτήÏα χωÏίς αντιστοίχιση
+78 Universal ÏŒÏισμα του emcas (ÏŒÏισμα επί 4)
+79 Μετακίνηση στην Ï€ÏοηγοÏμενη γÏαμμή ΙστοÏίας
+80 ΜετατÏοπή σε κεφαλαία από τη θέση του δÏομέα ως το τέλος της λέξης
+81 (Vi) μετακίνηση στην αÏχή της επόμενης λέξης
+82 (Vi) μετάβαση σε Ï„Ïόπο παÏεμβολής χαÏακτήÏων μετά το δÏομέα
+83 (Vi) μετάβαση σε Ï„Ïόπο παÏεμβολής χαÏακτήÏων στο τέλος της γÏαμμής
+84 (Vi) μετατÏοπή κεφαλαίων/μικÏών στη θέση δÏομέα και μετακίνηση δεξιά
+85 (Vi) εντολή αλλαγής Ï€Ïοθέματος
+86 (Vi) αλλαγή ως το τέλος της γÏαμμής
+87 Μετάβαση στον Ï„Ïόπο εντολών vi
+88 (Vi) σε Ï„Ïόπο εντολών, συμπλήÏωση λέξης
+89 (Vi) μετακίνηση στον Ï€ÏοηγοÏμενο χαÏακτήÏα (backspace)
+90 (Vi) εντολή διαγÏαφής Ï€Ïοθέματος
+91 (Vi) μετακίνηση στο τέλος της Ï„Ïέχουσας λέξης (χωÏισμένης απο space)
+92 (Vi) μετακίνηση στο τέλος της Ï„Ïέχουσας λέξης
+93 (Vi) μετακίνηση Ï€Ïος τα πίσω ως τον καθοÏισμένο χαÏακτήÏα
+94 (Vi) μετακίνηση Ï€Ïος τα εμπÏός ως τον καθοÏισμένο χαÏακτήÏα
+95 (Vi) μετακίνηση Ï€Ïος τα πίσω ως και τον καθοÏισμένο χαÏακτήÏα
+96 (Vi) μετακίνηση Ï€Ïος τα εμπÏός ως και τον καθοÏισμένο χαÏακτήÏα
+97 Μετάβαση στον Ï„Ïόπο παÏεμβολής του vi
+98 Μετάβαση στον Ï„Ïόπο παÏεμβολής του vi στην αÏχή της γÏαμμής
+99 (Vi) επανάληψη Ï€ÏοηγοÏμενης αναζήτησης χαÏακτήÏα στην ίδια κατεÏθυνση
+100 (Vi) επανάληψη Ï€ÏοηγοÏμενης αναζήτησης χαÏακτήÏα στην αντίθετη κατεÏθυνση
+101 (Vi) επανάληψη Ï€ÏοηγοÏμενης αναζήτησης στην ίδια κατεÏθυνση
+102 (Vi) επανάληψη Ï€ÏοηγοÏμενης αναζήτησης στην αντίθετη κατεÏθυνση
+103 (Vi) αντικατάσταση Ï„Ïέχοντα χαÏακτήÏα με τον επόμενο πληκτÏολογοÏμενο
+104 (Vi) Ï„Ïόπος αντικατάστασης
+105 (Vi) αναζήτηση ΙστοÏίας Ï€Ïος τα πίσω
+106 (Vi) αναζήτηση ΙστοÏίας Ï€Ïος τα μπÏοστά
+107 (Vi) αντικατάσταση Ï„Ïέχοντα χαÏακτήÏα και μετάβαση σε Ï„Ïόπο παÏεμβολής
+108 (Vi) αντικατάσταση ολόκληÏης της γÏαμμής
+109 (Vi) μετακίνηση στην Ï€ÏοηγοÏμενη λέξη
+110 (Vi) μετακίνηση στην επόμενη λέξη
+111 (Vi) αναίÏεση Ï€ÏοηγοÏμενης αλλαγής
+112 (Vi) μετακίνηση στην αÏχή της γÏαμμής
+113 Εκτέλεση "which" της Ï„Ïέχουσας εντολής
+114 Επικόλληση του cut buffer στην Ï„Ïέχουσα θέση
115 Replace just-yanked text with yank from earlier kill
116 (WIN32 only) Copy cut buffer to system clipboard
117 (WIN32 only) Paste clipboard buffer at cursor position
diff --git a/nls/greek/set30 b/nls/greek/set30
index 473f3313c93f..a5b2fe0b6972 100644
--- a/nls/greek/set30
+++ b/nls/greek/set30
@@ -1,16 +1,16 @@
-$ $tcsh: set30,v 1.2 2006/03/02 18:46:46 christos Exp $
+$ $tcsh: set30,v 1.3 2011/02/04 18:19:38 christos Exp $
$ tw.parse.c
$set 30
1 starting_a_command %d\n
-2 óõìðëÞñùóç %d
-3 óõìðëÞñùóç %d %S\n
-4 %s: åóùôåñéêü ëÜèïò ôáéñéÜóìáôïò.\n
-5 áíôéêåßìåíáitems
-6 óåéñÝò)
-7 ÕðÜñ÷ïõí %d %s, íá ôá åìöáíßóù ïýôùò Þ Üëëùò? [n/y]
+2 συμπλήÏωση %d
+3 συμπλήÏωση %d %S\n
+4 %s: εσωτεÏικό λάθος ταιÏιάσματος.\n
+5 αντικείμεναitems
+6 σειÏές)
+7 ΥπάÏχουν %d %s, να τα εμφανίσω οÏτως ή άλλως? [n/y]
8 looking = %d\n
-9 \nåóùôåñéêü óöÜëìá ôïõ %s: äåí îÝñù ôé áíáæçôþ!\n
-10 äåí åßíáé êáôÜëïãïò áñ÷åßùí
-11 äå âñÝèçêå
-12 ìç áíáãíþóéìï
+9 \nεσωτεÏικό σφάλμα του %s: δεν ξέÏω τι αναζητώ!\n
+10 δεν είναι κατάλογος αÏχείων
+11 δε βÏέθηκε
+12 μη αναγνώσιμο
13 yY
diff --git a/nls/greek/set31 b/nls/greek/set31
index d23de88e22a2..64e5b13fdc86 100644
--- a/nls/greek/set31
+++ b/nls/greek/set31
@@ -1,7 +1,7 @@
-$ $tcsh: set31,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set31,v 1.3 2011/02/04 18:19:38 christos Exp $
$ vms.termcap.c
$set 31
-1 Äå ìðïñþ íá áíïßîù ôï TERMCAP: [%s]\n
-2 Äå ìðïñþ íá áíïßîù ôï %s.\n
-3 ÂñÞêá ôï %s óôï %s.\n
-4 Äå âñÞêá êÜôé ðïõ íá ôáéñéÜæåé ìå ôï %s óôï áñ÷åßï %s\n
+1 Δε μποÏÏŽ να ανοίξω το TERMCAP: [%s]\n
+2 Δε μποÏÏŽ να ανοίξω το %s.\n
+3 Î’Ïήκα το %s στο %s.\n
+4 Δε βÏήκα κάτι που να ταιÏιάζει με το %s στο αÏχείο %s\n
diff --git a/nls/greek/set4 b/nls/greek/set4
index 84fbc921739e..5763b887a5eb 100644
--- a/nls/greek/set4
+++ b/nls/greek/set4
@@ -1,45 +1,45 @@
-$ $tcsh: set4,v 1.3 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set4,v 1.4 2011/02/04 18:19:38 christos Exp $
$ Termcap strings
$set 4
-1 ðñüóèåóç íÝáò êåíÞò ãñáììÞò
-2 ç÷çôéêü óÞìá
-3 êáèÜñéóìá ùò ôï ôÝëïò ïèüíçò
-4 êáèÜñéóìá ùò ôï ôÝëïò ãñáììÞò
-5 äñïìÝáò óå ïñéæüíôéá èÝóç
-6 êáèÜñéóìá ïèüíçò
-7 äéáãñáöÞ åíüò ÷áñáêôÞñá
-8 äéáãñáöÞ ìéÜò ãñáììÞò
-9 Ýíáñîç ôñüðïõ äéáãñáöÞò
-10 ôåñìáôéóìüò ôñüðïõ äéáãñáöÞò
-11 ôåñìáôéóìüò ôñüðïõ ðáñåìâïëÞò
-12 äñïìÝáò áðü ãñáììÞ êáôÜóôáóçò
-13 äñïìÝáò óôçí áñ÷Þ
-14 åéóáãùãÞ ÷áñáêôÞñá
-15 Ýíáñîç ôñüðïõ ðáñåìâïëÞò
-16 ðáñåìâïëÞ padding
-17 áðïóôïëÞ ÊÜôù
-18 áðïóôïëÞ ÁñéóôåñÜ
-19 áðïóôïëÞ ÄåîéÜ
-20 áðïóôïëÞ ÅðÜíù
-21 Ýíáñîç bold
-22 ôÝëïò éäéïôÞôùí ÷áñáêôÞñùí
-23 ìç êáôáóôñåðôéêü space
-24 ôÝëïò Ýìöáóçò
-25 áñ÷Þ Ýìöáóçò
-26 ï äñïìÝáò óôç ãñáììÞ êáôÜóôáóçò
-27 ï äñïìÝáò ìéÜ èÝóç åðÜíù
-28 Ýíáñîç õðïãñÜììéóçò
-29 ôÝëïò õðïãñÜììéóçò
-30 ïñáôü óÞìá
-31 äéáãñáöÞ ðïëëáðëþí ÷áñáêôÞñùí
-32 äñïìÝáò ðïëëáðëÝò èÝóåéò êÜôù
-33 ðáñåìâïëÞ ðïëëáðëþí ÷áñáêôÞñùí
-34 äñïìÝáò ðïëëáðëÝò èÝóåéò áñéóôåñÜ
-35 äñïìÝáò ðïëëáðëÝò èÝóåéò äåîéÜ
-36 äñïìÝáò ðïëëáðëÝò èÝóåéò åðÜíù
-37 Äõíáôüôçôá áõôüìáôùí ðåñéèùñßùí
-38 Äõíáôüôçôá ÷ñÞóçò öõóéêþí tabs
-39 Áñéèìüò ãñáììþí
-40 Áñéèìüò óôçëþí
-41 Õðáñîç "ìåôá"-ðëÞêôñïõ
-42 Ôï newline áãíïåßôáé óôï äåîß ðåñéèþñéï
+1 Ï€Ïόσθεση νέας κενής γÏαμμής
+2 ηχητικό σήμα
+3 καθάÏισμα ως το τέλος οθόνης
+4 καθάÏισμα ως το τέλος γÏαμμής
+5 δÏομέας σε οÏιζόντια θέση
+6 καθάÏισμα οθόνης
+7 διαγÏαφή ενός χαÏακτήÏα
+8 διαγÏαφή μιάς γÏαμμής
+9 έναÏξη Ï„Ïόπου διαγÏαφής
+10 τεÏματισμός Ï„Ïόπου διαγÏαφής
+11 τεÏματισμός Ï„Ïόπου παÏεμβολής
+12 δÏομέας από γÏαμμή κατάστασης
+13 δÏομέας στην αÏχή
+14 εισαγωγή χαÏακτήÏα
+15 έναÏξη Ï„Ïόπου παÏεμβολής
+16 παÏεμβολή padding
+17 αποστολή Κάτω
+18 αποστολή ΑÏιστεÏά
+19 αποστολή Δεξιά
+20 αποστολή Επάνω
+21 έναÏξη bold
+22 τέλος ιδιοτήτων χαÏακτήÏων
+23 μη καταστÏεπτικό space
+24 τέλος έμφασης
+25 αÏχή έμφασης
+26 ο δÏομέας στη γÏαμμή κατάστασης
+27 ο δÏομέας μιά θέση επάνω
+28 έναÏξη υπογÏάμμισης
+29 τέλος υπογÏάμμισης
+30 οÏατό σήμα
+31 διαγÏαφή πολλαπλών χαÏακτήÏων
+32 δÏομέας πολλαπλές θέσεις κάτω
+33 παÏεμβολή πολλαπλών χαÏακτήÏων
+34 δÏομέας πολλαπλές θέσεις αÏιστεÏά
+35 δÏομέας πολλαπλές θέσεις δεξιά
+36 δÏομέας πολλαπλές θέσεις επάνω
+37 Δυνατότητα αυτόματων πεÏιθωÏίων
+38 Δυνατότητα χÏήσης φυσικών tabs
+39 ΑÏιθμός γÏαμμών
+40 ΑÏιθμός στηλών
+41 ΥπαÏξη "μετα"-πλήκτÏου
+42 Το newline αγνοείται στο δεξί πεÏιθώÏιο
diff --git a/nls/greek/set5 b/nls/greek/set5
index 1125e850d43f..91b683365042 100644
--- a/nls/greek/set5
+++ b/nls/greek/set5
@@ -1,4 +1,4 @@
-$ $tcsh: set5,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set5,v 1.3 2011/02/04 18:19:38 christos Exp $
$ ed.chared.c
$set 5
-1 Ï ìÝóïò üñïò öïñôßïõ äåí åßíáé äéáèÝóéìïò\n
+1 Ο μέσος ÏŒÏος φοÏτίου δεν είναι διαθέσιμος\n
diff --git a/nls/greek/set6 b/nls/greek/set6
index 0a494c1812af..80a095035192 100644
--- a/nls/greek/set6
+++ b/nls/greek/set6
@@ -1,11 +1,11 @@
-$ $tcsh: set6,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set6,v 1.3 2011/02/04 18:19:38 christos Exp $
$ ed.inputl.c
$set 6
-1 ÓÖÁËÌÁ: Üêõñç åíôïëÞ áðï ôï ðëÞêôñï 0%o\r\n
-2 íáé\n
+1 ΣΦΑΛΜΑ: άκυÏη εντολή απο το πλήκτÏο 0%o\r\n
+2 ναι\n
3 edit\n
4 abort\n
-5 ü÷é\n
-6 Äåí õðÜñ÷åé åíôïëÞ ðïõ íá ôáéñéÜæåé\n
-7 Äéöïñïýìåíç åíôïëÞ\n
-8 *** ìïéñáßï ÓÖÁËÌÁ editor ***\r\n\n
+5 όχι\n
+6 Δεν υπάÏχει εντολή που να ταιÏιάζει\n
+7 ΔιφοÏοÏμενη εντολή\n
+8 *** μοιÏαίο ΣΦΑΛΜΑ editor ***\r\n\n
diff --git a/nls/greek/set7 b/nls/greek/set7
index b88d2ffabbec..8cd8e3503d9c 100644
--- a/nls/greek/set7
+++ b/nls/greek/set7
@@ -1,30 +1,30 @@
-$ $tcsh: set7,v 1.3 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set7,v 1.4 2011/02/04 18:19:38 christos Exp $
$ ed.screen.c
$set 7
-1 \n\tÔï %s îÝñåé ãéÜ ôï ôåñìáôéêü óáò ôá\n
-2 \tåîÞò ÷áñáêôçñéóôéêÜ:\n\n
-3 \tÅ÷åé %d óôÞëåò êáé %d ãñáììÝò\n
-4 \t%s÷åé "ìåôá"-ðëÞêôñï\n
-5 Å
-6 Äåí Ý
-7 \t%sìðïñåß íá ÷ñçóéìïðïéÞóåé tabs\n
-8 Äåí
-9 \t%s áõôüìáôá ðåñéèþñéá\n
-10 Å÷åé
-11 Äåí Ý÷åé
-12 \t%s "ìáãéêÜ" ðåñéèþñéá\n
-13 (Üäåéï)
-14 íáé
-15 ü÷é
-16 ÓÖÁËÌÁ: äå ìðïñþ íá óâÞóù\r\n
-17 DeleteChars: ï áñéèìüò åßíáé áðßèáíïò: %d\r\n
-18 ÓÖÁËÌÁ: äå ìðïñþ íá ðáñåìâÜëù\r\n
-19 StartInsert: ï áñéèìüò åßíáé áðßèáíïò: %d\r\n
-20 %s: Äå ìðïñþ íá áíïßîù ôï /etc/termcap.\n
-21 %s: Äåí õðÜñ÷åé åããñáöÞ ãéá ôïí ôýðï ôåñìáôéêïý "%s"\n
-22 %s: èá ÷ñçóéìïðïéÞóù ÷áñáêôçñéóôéêÜ "÷áæïý" ôåñìáôéêïý.\n
-23 %s: ÐÑÏÅÉÄÏÐÏÉÇÓÇ: Ôï ôåñìáôéêü äåí ìðïñåß íá ìåôáêéíÞóåé åðÜíù.\n
-24 Ôï editing ìðïñåß íá åßíáé ðåñßåñãï ãéÜ ìåãÜëåò ãñáììÝò.\n
-25 äåí õðÜñ÷åé äõíáôüôçôá êáèáñéóìïý ùò ôï ôÝëïò ãñáììÞò.\n
-26 äåí õðÜñ÷åé äõíáôüôçôá äéáãñáöÞò ÷áñáêôÞñá.\n
-27 äåí õðÜñ÷åé äõíáôüôçôá ðáñåìâïëÞò ÷áñáêôÞñá.\n
+1 \n\tΤο %s ξέÏει γιά το τεÏματικό σας τα\n
+2 \tεξής χαÏακτηÏιστικά:\n\n
+3 \tΕχει %d στήλες και %d γÏαμμές\n
+4 \t%sχει "μετα"-πλήκτÏο\n
+5 Ε
+6 Δεν έ
+7 \t%sμποÏεί να χÏησιμοποιήσει tabs\n
+8 Δεν
+9 \t%s αυτόματα πεÏιθώÏια\n
+10 Εχει
+11 Δεν έχει
+12 \t%s "μαγικά" πεÏιθώÏια\n
+13 (άδειο)
+14 ναι
+15 όχι
+16 ΣΦΑΛΜΑ: δε μποÏÏŽ να σβήσω\r\n
+17 DeleteChars: ο αÏιθμός είναι απίθανος: %d\r\n
+18 ΣΦΑΛΜΑ: δε μποÏÏŽ να παÏεμβάλω\r\n
+19 StartInsert: ο αÏιθμός είναι απίθανος: %d\r\n
+20 %s: Δε μποÏÏŽ να ανοίξω το /etc/termcap.\n
+21 %s: Δεν υπάÏχει εγγÏαφή για τον Ï„Ïπο τεÏÎ¼Î±Ï„Î¹ÎºÎ¿Ï "%s"\n
+22 %s: θα χÏησιμοποιήσω χαÏακτηÏιστικά "χαζοÏ" τεÏματικοÏ.\n
+23 %s: ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Το τεÏματικό δεν μποÏεί να μετακινήσει επάνω.\n
+24 Το editing μποÏεί να είναι πεÏίεÏγο γιά μεγάλες γÏαμμές.\n
+25 δεν υπάÏχει δυνατότητα καθαÏÎ¹ÏƒÎ¼Î¿Ï Ï‰Ï‚ το τέλος γÏαμμής.\n
+26 δεν υπάÏχει δυνατότητα διαγÏαφής χαÏακτήÏα.\n
+27 δεν υπάÏχει δυνατότητα παÏεμβολής χαÏακτήÏα.\n
diff --git a/nls/greek/set8 b/nls/greek/set8
index 23fb6c8fd147..ebe2e8e12b90 100644
--- a/nls/greek/set8
+++ b/nls/greek/set8
@@ -1,5 +1,5 @@
-$ $tcsh: set8,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set8,v 1.3 2011/02/04 18:19:38 christos Exp $
$ ed.term.c
$set 8
-1 Áãíùóôï switch
-2 Áêõñï üñéóìá
+1 Αγνωστο switch
+2 ΑκυÏο ÏŒÏισμα
diff --git a/nls/greek/set9 b/nls/greek/set9
index 9ed5f7c5b2dd..00c0a866a5f9 100644
--- a/nls/greek/set9
+++ b/nls/greek/set9
@@ -1,12 +1,12 @@
-$ $tcsh: set9,v 1.3 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set9,v 1.4 2011/02/04 18:19:38 christos Exp $
$ ed.xmap.c
$set 9
-1 AddXkey: äåí åðéôñÝðåôáé ìçäåíéêü extended-key.\n
-2 AddXkey: ç åíôïëÞ ìå áõôÞí ôçí áñ÷éêÞ áêïëïõèßá äåí åðéôñÝðåôáé\n
-3 DeleteXkey: äåí åðéôñÝðåôáé ìçäåíéêü extended-key.\n
-4 Áóõó÷Ýôéóôï extended key "%S"\n
-5 ÌåñéêÜ extended keys åßíáé ðïëý ìåãÜëá ãéÜ ôïí åóùôåñéêü print buffer
-6 Enumerate: BUG!! ÐÝñáóìá ìçäåíéêïý pointer!\n
-7 äåí õðÜñ÷åé åßóïäïò
-8 ÊÜôé ðñÝðåé íá áêïëïõèåß: %c\n
-9 Ç ïêôáäéêÞ óôáèåñÜ äå ÷ùñÜåé óôï ìÝãåèïò åíüò char.\n
+1 AddXkey: δεν επιτÏέπεται μηδενικό extended-key.\n
+2 AddXkey: η εντολή με αυτήν την αÏχική ακολουθία δεν επιτÏέπεται\n
+3 DeleteXkey: δεν επιτÏέπεται μηδενικό extended-key.\n
+4 Ασυσχέτιστο extended key "%S"\n
+5 ΜεÏικά extended keys είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î± γιά τον εσωτεÏικό print buffer
+6 Enumerate: BUG!! ΠέÏασμα Î¼Î·Î´ÎµÎ½Î¹ÎºÎ¿Ï pointer!\n
+7 δεν υπάÏχει είσοδος
+8 Κάτι Ï€Ïέπει να ακολουθεί: %c\n
+9 Η οκταδική σταθεÏά δε χωÏάει στο μέγεθος ενός char.\n
diff --git a/nls/italian/charset b/nls/italian/charset
index 0b13559084f6..81f1b6669c79 100644
--- a/nls/italian/charset
+++ b/nls/italian/charset
@@ -1,3 +1,3 @@
-$ codeset=ISO-8859-1
+$ codeset=UTF-8
$set 255
-1 ISO-8859-1
+1 UTF-8
diff --git a/nls/italian/set1 b/nls/italian/set1
index de09941af233..c7ad88ed1c38 100644
--- a/nls/italian/set1
+++ b/nls/italian/set1
@@ -1,8 +1,8 @@
-$ $tcsh: set1,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set1,v 1.3 2011/02/04 18:19:38 christos Exp $
$ Error messages
$set 1
1 Errore di Sintassi
-2 %s non è permesso
+2 %s non è permesso
3 Parola troppo lunga
4 $< linea troppo lunga
5 Nessun file per $0
@@ -17,7 +17,7 @@ $set 1
14 Comando non trovato
15 Troppi pochi argomenti
16 Troppi argomenti
-17 È troppo pericoloso creare un alias in questo caso
+17 È troppo pericoloso creare un alias in questo caso
18 `if' vuoto
19 `then' sbagliato
20 Parola non tra parentesi
@@ -27,11 +27,11 @@ $set 1
24 Argomento troppo lungo
25 Fattore di scala sbagliato o sconosciuto
26 Variabile non definita
-27 Pila delle directory non così profonda
+27 Pila delle directory non così profonda
28 Numero di segnale non corretto
29 Segnale sconosciuto; utilizza kill -l per elencare i segnali
30 Il nome della variabile deve iniziare con una lettera
-31 Il nome della variabile è troppo lungo
+31 Il nome della variabile è troppo lungo
32 Il nome della variabile deve contenere caratteri alfanumerici
33 Non ho il controllo dei lavori in questa shell
34 Errore di sintassi nell'espressione
@@ -111,17 +111,17 @@ $set 1
108 Variabile $watch non definita
109 Nessun evento programmato
110 Utilizzo: sched -<elemento#>.\nUtilizzo: sched [+]hh:mm <comando>
-111 Non ci sono così tanti eventi programmati
+111 Non ci sono così tanti eventi programmati
112 Nessun comando da eseguire
113 Istante non corretto per l'evento
114 Istante relativo non consistente con am/pm
115 Al di fuori dello spazio stringa del termcap
116 Utilizzo: settc %s [yes|no]
-117 Capacità `%s' sconosciuta
+117 Capacità `%s' sconosciuta
118 Parametro del termcap `%%%c' sconosciuto
119 Troppi argomenti per `%s' (%d)
120 `%s' richiede %d argomenti
-121 Utilizzo: echotc [-v|-s] [<capacità> [<argomenti>]]
+121 Utilizzo: echotc [-v|-s] [<capacità> [<argomenti>]]
122 %s: %s. Architettura non corretta
123 !# Ciclo chiuso nello storico
124 Richiesta di file formulata incorrettamente
@@ -135,6 +135,6 @@ $set 1
132 \n%s incompleto: "%s"
133 Manca l'operando dell'opzione -m
134 Utilizzo: unlimit [-fh] [limiti]
-135 $%S è a sola lettura
+135 $%S è a sola lettura
136 Non esiste il lavoro
137 Variabile `%c%c colorls' sconosciuta
diff --git a/nls/italian/set11 b/nls/italian/set11
index 70a5192beca8..54629cd79737 100644
--- a/nls/italian/set11
+++ b/nls/italian/set11
@@ -1,8 +1,8 @@
-$ $tcsh: set11,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set11,v 1.3 2011/02/04 18:19:38 christos Exp $
$ sh.c
$set 11
1 Attenzione: accesso negato al terminale (%s).\n
-2 Quindi il controllo dei lavori in questa shell non è possibile.\n
+2 Quindi il controllo dei lavori in questa shell non è possibile.\n
3 Hai %d messaggi di posta elettronica.\n
4 Hai %d messaggi di posta elettronica in %s.\n
5 Hai %smessaggi di posta elettronica.\n
diff --git a/nls/italian/set13 b/nls/italian/set13
index ed5f7971765b..a3781af4866c 100644
--- a/nls/italian/set13
+++ b/nls/italian/set13
@@ -1,4 +1,4 @@
-$ $tcsh: set13,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set13,v 1.3 2011/02/04 18:19:38 christos Exp $
$ sh.exec.c
$set 13
1 hash=%-4d dir=%-2d prog=%s\n
@@ -8,6 +8,6 @@ $set 13
5 %S: comando interno della shell.\n
6 %S: comando non trovato.\n
7 where: / non ha senso all'interno di un comando\n
-8 %S è un alias per
-9 %S è un comando interno\n
+8 %S è un alias per
+9 %S è un comando interno\n
10 errore di hash:
diff --git a/nls/italian/set15 b/nls/italian/set15
index 3db0bc36a3e9..a78d850f931a 100644
--- a/nls/italian/set15
+++ b/nls/italian/set15
@@ -1,7 +1,7 @@
-$ $tcsh: set15,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set15,v 1.3 2011/02/04 18:19:39 christos Exp $
$ sh.func.c
$set 15
-1 %s: %s: non si può %s il limite%s\n
+1 %s: %s: non si può %s il limite%s\n
2 eliminare
3 modificare
4 \040fisico
diff --git a/nls/italian/set17 b/nls/italian/set17
index 40e2868eec40..1076cabe630f 100644
--- a/nls/italian/set17
+++ b/nls/italian/set17
@@ -1,9 +1,9 @@
-$ $tcsh: set17,v 1.3 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set17,v 1.4 2011/02/04 18:19:39 christos Exp $
$ sh.proc.c
$set 17
1 BACO: sto aspettando un lavoro in background!\n
2 Uscito %d\n
-3 BACO: il processo è stato svuotato due volte
+3 BACO: il processo è stato svuotato due volte
4 In esecuzione
5 Segnale
6 Uscito %-25d
@@ -12,6 +12,6 @@ $set 17
9 \040(creato file core)
10 \040(directory di lavoro:
11 directory di lavoro corrente:
-12 %S: già sospeso\n
-13 %S: già fermato\n
+12 %S: già sospeso\n
+13 %S: già fermato\n
14 %S: Badly formed number\n
diff --git a/nls/italian/set19 b/nls/italian/set19
index 9226ef6a1a5a..061ba4fed4c7 100644
--- a/nls/italian/set19
+++ b/nls/italian/set19
@@ -1,4 +1,4 @@
-$ $tcsh: set19,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set19,v 1.4 2011/02/25 23:58:07 christos Exp $
$ tc.alloc.c
$set 19
1 nbytes=%d: Memoria esaurita\n
@@ -9,7 +9,15 @@ $set 19
6 free(%lx) intervallo di controllo sbagliato.
7 free(%lx) indice di blocco sbagliato.
8 %s attuale allocazione di memoria:\nlibera:\t
-9 \nutilizzata:\t
+9 utilizzata
10 \n\tTotale utilizzata: %d, totale libera: %d\n
11 \tAllocata memoria da 0x%lx a 0x%lx. Limite superiore effettivo a 0x%lx\n
12 Allocata memoria da 0x%lx a 0x%lx (%ld).\n
+13 %s current memory allocation:\n
+14 Total space allocated from system: %d\n
+15 Number of non-inuse chunks: %d\n
+16 Number of mmapped regions: %d\n
+17 Total space in mmapped regions: %d\n
+18 Total allocated space: %d\n
+19 Total non-inuse space: %d\n
+20 Top-most, releasable space: %d\n
diff --git a/nls/italian/set2 b/nls/italian/set2
index cbf9a058a06e..c08067113f71 100644
--- a/nls/italian/set2
+++ b/nls/italian/set2
@@ -1,4 +1,4 @@
-$ $tcsh: set2,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set2,v 1.3 2011/02/04 18:19:39 christos Exp $
$ Signal names
$set 2
1 Segnale nullo
@@ -44,7 +44,7 @@ $set 2
41 Spegnimento del sistema imminente
42 micro-tasking group-no wakeup flag settato
43 Errore di thread - (usa cord -T per avere informazioni dettagliate)
-44 Errore di parità di registro del CRAY Y-MP
+44 Errore di parità di registro del CRAY Y-MP
45 Richiesta di informazioni
46 Sospeso (segnale)
47 Fermato (segnale)
@@ -63,7 +63,7 @@ $set 2
60 Allarme dell'orologio virtuale
61 Allarme di tempo di profiling
62 Segnale DIL
-63 Si è verificato un evento interrogabile
+63 Si è verificato un evento interrogabile
64 Gli lwps del processo sono bloccati
65 Segnale speciale LWP
66 Segnale speciale CPR
@@ -77,17 +77,17 @@ $set 2
74 Penultimo segnale di tempo reale
75 Ultimo segnale di tempo reale
76 I/O asincrono di LAN
-77 Disponibilità di lettura/scrittura su pseudoterminale
+77 Disponibilità di lettura/scrittura su pseudoterminale
78 Richiesta di I/O
-79 Modalità di monitoraggio HFT disponibile
-80 La modalità di monitoraggio HFT deve essere abbandonata
-81 Il controllo sonoro HFT è stato completato
+79 Modalità di monitoraggio HFT disponibile
+80 La modalità di monitoraggio HFT deve essere abbandonata
+81 Il controllo sonoro HFT è stato completato
82 Dati nel buffer circolare HFT
83 Migrate process
84 Tasto di attenzione assicurata
85 Rischedulamento
86 Segnale di SS$_DEBUG
-87 Cambio di priorità
+87 Cambio di priorità
88 Identificato uno stallo
89 Nuovo carattere in ingresso
90 Oltrepassato lo spazio disponibile di stack
diff --git a/nls/italian/set20 b/nls/italian/set20
index 5d33ccaafa74..ec628f96c02f 100644
--- a/nls/italian/set20
+++ b/nls/italian/set20
@@ -1,4 +1,4 @@
-$ $tcsh: set20,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set20,v 1.3 2011/02/04 18:19:39 christos Exp $
$ tc.bind.c
$set 20
1 Nome di tasto non corretto `%S'\n
@@ -8,10 +8,10 @@ $set 20
5 Stringa di specificazione sbagliata\n
6 Definizione dei tasti standard\n
7 Definizione dei tasti alternativi\n
-8 Definizione delle combinazioni di più tasti\n
+8 Definizione delle combinazioni di più tasti\n
9 Definizione dei tasti freccia\n
-10 %-15s-> non è definita\n
-11 BACO!!! %s non è definita da nessuna parte.\n
+10 %-15s-> non è definita\n
+11 BACO!!! %s non è definita da nessuna parte.\n
12 Utilizzo: bindkey [opzioni] [--] [TASTO [COMANDO]]\n
13 -a elenca o definisce un tasto nella tabella dei tasti alternativi\n
14 -b interpreta TASTO come C-, M-, F- o X- tasto\n
@@ -29,13 +29,13 @@ $set 20
26 Senza COMANDO, stampa la definizione di TASTO.\n
27 specificazione di tasto sbagliata -- stringa nulla\n
28 specificazione di tasto sbagliata -- stringa vuota\n
-29 Specificazione di tasto funzione sbagliata. Il tasto nullo non si può usare\n
+29 Specificazione di tasto funzione sbagliata. Il tasto nullo non si può usare\n
30 specificazione di tasto sbagliata -- numero esadecimale non corretto\n
31 specificazione di tasto sbagliata -- numero ottale non corretto\n
32 specificazione di tasto sbagliata -- numero decimale non corretto\n
33 Specificazione di tasto funzione sbagliata.\n
-34 Il tasto nullo non si può usare\n
+34 Il tasto nullo non si può usare\n
35 specificazione di tasto sbagliata -- nome "%S" sconosciuto\n
36 utilizzo: bind [TASTO | COMANDO TASTO | "emacs" | "vi" | "-a"]\n
37 Funzione non corretta
-38 %s\t\tnon è definita\n
+38 %s\t\tnon è definita\n
diff --git a/nls/italian/set22 b/nls/italian/set22
index ab9443364974..ba38979b647a 100644
--- a/nls/italian/set22
+++ b/nls/italian/set22
@@ -1,7 +1,7 @@
-$ $tcsh: set22,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set22,v 1.3 2011/02/04 18:19:39 christos Exp $
$ tc.func.c
$set 22
-1 %S: \t è un alias per
+1 %S: \t è un alias per
2 \nPassword non corretta per %s\n
3 Alias non corretto 'precmd' rimosso.\n
4 Alias non corretto 'cwdcmd' rimosso.\n
@@ -10,8 +10,8 @@ $set 22
7 sto esaminando la linea di comando\n
8 Vuoi realmente cancellare tutti i file? [s/n]
9 sto saltando la cancellazione dei file!\n
-10 la linea di comando adesso è:\n
+10 la linea di comando adesso è:\n
11 sto esaminando la linea di comando\n
12 in uno degli elenchi\n
-13 la linea di comando ora è:\n
+13 la linea di comando ora è:\n
14 sS
diff --git a/nls/italian/set23 b/nls/italian/set23
index 8b716498f096..73884912ff3d 100644
--- a/nls/italian/set23
+++ b/nls/italian/set23
@@ -1,4 +1,4 @@
-$ $tcsh: set23,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set23,v 1.3 2011/02/04 18:19:39 christos Exp $
$ tc.os.c
$set 23
1 Nome di cpu/macchina non corretto
@@ -29,6 +29,6 @@ $set 23
26 getwd: non posso aprire la directory "%s" (%s)
27 getwd: non riesco a trovare "." in ".." (%s)
28 Tipo di sistema non corretto
-29 Il tipo di sistema non è stato definito
+29 Il tipo di sistema non è stato definito
30 Troppi argomenti
31 Argomento non corretto
diff --git a/nls/italian/set26 b/nls/italian/set26
index 911cb6c1fb72..40db5f604143 100644
--- a/nls/italian/set26
+++ b/nls/italian/set26
@@ -1,15 +1,15 @@
-$ $tcsh: set26,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set26,v 1.3 2011/02/04 18:19:39 christos Exp $
$ tc.who.c
$set 26
-1 non posso usare stat per %s. Per pietà dai un "unset watch".\n
-2 Non riesco ad aprire %s. Per pietà dai un "unset watch".\n
-3 BACO! l'ultimo elemento non è whotail!\n
+1 non posso usare stat per %s. Per pietà dai un "unset watch".\n
+2 Non riesco ad aprire %s. Per pietà dai un "unset watch".\n
+3 BACO! l'ultimo elemento non è whotail!\n
4 all'indietro:
-5 BACO! il primo elemento non è whohead!\n
+5 BACO! il primo elemento non è whohead!\n
6 nuova entrata: %s/%s\n
7 %n %a %l da %m.
8 %n %a %l.
-9 si è loggato su
-10 si è sloggato da
+9 si è loggato su
+10 si è sloggato da
11 ha rimpiazzato %s su
12 console
diff --git a/nls/italian/set3 b/nls/italian/set3
index eaff36aebeab..f3fd8a389d10 100644
--- a/nls/italian/set3
+++ b/nls/italian/set3
@@ -1,4 +1,4 @@
-$ $tcsh: set3,v 1.3 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set3,v 1.4 2011/02/04 18:19:39 christos Exp $
$ Editor function descriptions
$set 3
1 Retrocede di un carattere
@@ -14,10 +14,10 @@ $set 3
11 Completa la parola corrente
12 Avanza con il tabulatore tra i file
13 Retrocede con il tabulatore tra i file
-14 Completa la parola corrente ignorando le modalità di completamento programmabili
+14 Completa la parola corrente ignorando le modalità di completamento programmabili
15 Copia la parola corrente nella posizione del cursore
16 Copia la zona tra il cursore e il segno nel buffer
-17 Espande nella precedente parola di cui questa è la parte iniziale
+17 Espande nella precedente parola di cui questa è la parte iniziale
18 Cancella il carattere sotto il cursore
19 Cancella il carattere sotto il cursore o segnala la fine del file in una linea vuota
20 Cancella il carattere sotto il cursore o elenca i completamenti se alla fine di una linea
@@ -47,7 +47,7 @@ $set 3
44 Taglia la zona tra il cursore e il segno e la salva nel buffer
45 Taglia l'intera linea salvandola nel buffer
46 Elenca le possibili scelte per il completamento
-47 Elenca le possibili scelte per il completamento ignorando le modalità di completamento programmabili
+47 Elenca le possibili scelte per il completamento ignorando le modalità di completamento programmabili
48 Elenca i file che corrispondono ai caratteri jolly
49 Elenca le possibili scelte per il completamento o segnala la fine del file nel caso di linea vuota
50 Mostra la media di carico macchina e lo stato del processo corrente
@@ -55,18 +55,18 @@ $set 3
52 Esegue un comando
53 Espande i percorsi eliminando i '.' e '..' iniziali
54 Espande i comandi con il relativo percorso o alias
-55 Commuta tra le modalità di inserimento e di sovrascrittura
+55 Commuta tra le modalità di inserimento e di sovrascrittura
56 Aggiunge l'ottavo bit al successivo carattere inserito
-57 Aggiunge nella linea il successivo carattere così com'è
+57 Aggiunge nella linea il successivo carattere così com'è
58 Ridisegna tutto
59 Fa ripartire l'editor sospeso
60 Cerca le spiegazioni del comando corrente
-61 Questo carattere è aggiunto alla linea
-62 Questo carattere è il primo in una sequenza di caratteri
+61 Questo carattere è aggiunto alla linea
+62 Questo carattere è il primo in una sequenza di caratteri
63 Fissa il segno nella posizione del cursore
64 Corregge la sintassi della parola corrente
65 Corregge la sintassi dell'intera linea
-66 Invia il carattere sul terminale in modalità `cooked'
+66 Invia il carattere sul terminale in modalità `cooked'
67 Commuta tra la corrente linea letterale e lessicale dello storico
68 Scambia il carattere alla sinistra del cursore con quello sotto
69 Scambia i due caratteri prima del cursore
@@ -82,13 +82,13 @@ $set 3
79 Si sposta sulla precedente linea dello storico
80 Converte in maiuscole le lettere dal cursore fino alla fine della parola corrente
81 Vi: vai all'inizio della prossima parola
-82 Vi: commuta in modalità di inserimento dopo il cursore
-83 Vi: commuta in modalità di inserimento alla fine della linea
+82 Vi: commuta in modalità di inserimento dopo il cursore
+83 Vi: commuta in modalità di inserimento alla fine della linea
84 Vi: cambia in da o in maiuscolo la lettera sotto il cursore e avanza di una posizione
85 Vi: cambia il comando di prefisso
86 Vi: modifica alla fine della linea
-87 Entra in modalità di comando vi (utilizza le definizioni di tasti alternative)
-88 Vi: modalità di comando a completamento di parola
+87 Entra in modalità di comando vi (utilizza le definizioni di tasti alternative)
+88 Vi: modalità di comando a completamento di parola
89 Vi: si sposta sul precedente carattere (backspace)
90 Vi: cancella il comando di prefisso
91 Vi: avanza sul primo carattere che precede uno spazio
@@ -97,17 +97,17 @@ $set 3
94 Vi: avanza al carattere indicato
95 Vi: si sposta sopra il carattere indicato all'indietro
96 Vi: si sposta sopra il carattere indicato in avanti
-97 Commuta in modalità di inserimento vi
-98 Commuta in modalità di inserimento vi all'inizio della linea
+97 Commuta in modalità di inserimento vi
+98 Commuta in modalità di inserimento vi all'inizio della linea
99 Vi: ripete la ricerca del carattere nella stessa direzione
100 Vi: ripete la ricerca del carattere nella direzione opposta
101 Vi: ripete la ricerca nella stessa direzione
102 Vi: ripete la ricerca nella direzione opposta
103 Vi: rimpiazza il carattere sotto il cursore con quello successivamente introdotto
-104 Vi: modalità di rimpiazzo
+104 Vi: modalità di rimpiazzo
105 Vi: ricerca nello storico all'indietro
106 Vi: ricerca nello storico in avanti
-107 Vi: rimpiazza il carattere sotto il cursore e commuta in modalità di inserimento
+107 Vi: rimpiazza il carattere sotto il cursore e commuta in modalità di inserimento
108 Vi: rimpiazza l'intera linea
109 Vi: si sposta alla parola precedente
110 Vi: si sposta alla parola successiva
diff --git a/nls/italian/set30 b/nls/italian/set30
index b118429405f8..9ea8558ee5bd 100644
--- a/nls/italian/set30
+++ b/nls/italian/set30
@@ -1,4 +1,4 @@
-$ $tcsh: set30,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set30,v 1.3 2011/02/04 18:19:39 christos Exp $
$ tw.parse.c
$set 30
1 inizio_il_comando %d\n
@@ -10,7 +10,7 @@ $set 30
7 Ci sono %d %selenco ugualmente? [n/s]
8 sembra = %d\n
9 \nerrore interno della tcsh: Non mi ricordo cosa stavo facendo!\n
-10 non è una directory
+10 non è una directory
11 non trovato
12 non leggibile
13 sS
diff --git a/nls/italian/set4 b/nls/italian/set4
index 5e96ba37b1c1..d86b10ead44b 100644
--- a/nls/italian/set4
+++ b/nls/italian/set4
@@ -1,4 +1,4 @@
-$ $tcsh: set4,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set4,v 1.3 2011/02/04 18:19:39 christos Exp $
$ Termcap strings
$set 4
1 aggiunge una linea vuota
@@ -9,13 +9,13 @@ $set 4
6 cancella lo schermo
7 cancella un carattere
8 cancella una riga
-9 mette in modalità di cancellazione
-10 fine della modalità di cancellazione
-11 fine della modalità di inserimento
+9 mette in modalità di cancellazione
+10 fine della modalità di cancellazione
+11 fine della modalità di inserimento
12 cursore dalla linea di stato
13 cursore nella posizione iniziale
14 inserisce un carattere
-15 mette in modalità di inserimento
+15 mette in modalità di inserimento
16 inserisce un carattere di riallineamento
17 muove il cursore verso il basso
18 muove il cursore verso sinistra
@@ -31,14 +31,14 @@ $set 4
28 inizio sottolineatura
29 fine sottolineatura
30 segnale ottico
-31 cancella più caratteri
-32 cursore verso il basso più volte
-33 inserisce più caratteri
-34 cursore verso sinistra più volte
-35 cursore verso destra più volte
-36 cursore verso l'alto più volte
+31 cancella più caratteri
+32 cursore verso il basso più volte
+33 inserisce più caratteri
+34 cursore verso sinistra più volte
+35 cursore verso destra più volte
+36 cursore verso l'alto più volte
37 Ha margini automatizzati
-38 Può usare tabulatori fisici
+38 Può usare tabulatori fisici
39 Numero di linee
40 Numero di colonne
41 Ha il tasto meta
diff --git a/nls/italian/set6 b/nls/italian/set6
index 68994a60de1f..2c4ad8c7b257 100644
--- a/nls/italian/set6
+++ b/nls/italian/set6
@@ -1,8 +1,8 @@
-$ $tcsh: set6,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set6,v 1.3 2011/02/04 18:19:39 christos Exp $
$ ed.inputl.c
$set 6
1 ERRORE: comando illegale per il tasto 0%o\r\n
-2 sì\n
+2 sì\n
3 modificare\n
4 annullare\n
5 no\n
diff --git a/nls/italian/set7 b/nls/italian/set7
index 0e843a7a248b..e0d851bf909b 100644
--- a/nls/italian/set7
+++ b/nls/italian/set7
@@ -1,4 +1,4 @@
-$ $tcsh: set7,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set7,v 1.3 2011/02/04 18:19:39 christos Exp $
$ ed.screen.c
$set 7
1 \n\tLa tcsh ipotizza che il tuo terminale abbia\n
@@ -7,24 +7,24 @@ $set 7
4 \t%s tasto meta\n
5 il
6 nessun
-7 \t%s può usare i tabulatori\n
+7 \t%s può usare i tabulatori\n
8 non
9 \t%s i margini automatici\n
10 ha
11 non ha
12 \t%s i margini magici\n
13 (vuoto)
-14 sì
+14 sì
15 no
16 ERRORE: non posso cancellare\r\n
-17 DeleteChars: il valore num è ridicolo: %d\r\n
+17 DeleteChars: il valore num è ridicolo: %d\r\n
18 ERRORE: non posso inserire\r\n
-19 StartInsert: il valore num è ridicolo: %d\r\n
+19 StartInsert: il valore num è ridicolo: %d\r\n
20 %s: Non riesco ad aprire /etc/termcap.\n
21 %s: Nessuna definizione per un terminale di tipo "%s"\n
22 %s: sto usando i settaggi relativi ad un terminale veramente stupido.\n
-23 %s: ATTENZIONE: Il terminale non può scrollare verso l'alto.\n
+23 %s: ATTENZIONE: Il terminale non può scrollare verso l'alto.\n
24 La modifica delle linee lunghe potrebbe essere difficoltosa.\n
-25 non è possibile cancellare fino alla fine della linea.\n
-26 non è possibile cancellare caratteri.\n
-27 non è possibile inserire caratteri.\n
+25 non è possibile cancellare fino alla fine della linea.\n
+26 non è possibile cancellare caratteri.\n
+27 non è possibile inserire caratteri.\n
diff --git a/nls/ja/charset b/nls/ja/charset
index 74cc93e41461..81f1b6669c79 100644
--- a/nls/ja/charset
+++ b/nls/ja/charset
@@ -1,3 +1,3 @@
-$ codeset=EUC-JP
+$ codeset=UTF-8
$set 255
-1 EUC-JP
+1 UTF-8
diff --git a/nls/ja/set1 b/nls/ja/set1
index c53da1d4e427..eb227bfc6a11 100644
--- a/nls/ja/set1
+++ b/nls/ja/set1
@@ -1,140 +1,140 @@
-$ $tcsh: set1,v 1.5 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set1,v 1.6 2011/02/04 18:19:39 christos Exp $
$ Error messages
$set 1
-1 ʸˡ¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹
-2 %s ¤Ï³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤Þ¤»¤ó
-3 ʸ»úÎó¤¬Ä¹¤¹¤®¤Þ¤¹
-4 $< ¤Î¹Ô¤¬Ä¹¤¹¤®¤Þ¤¹
-5 $0 ÍѤΥե¡¥¤¥ë¤¬¤¢¤ê¤Þ¤»¤ó
-6 [] ½¤¾þ»Ò¤¬ÉÔ´°Á´¤Ç¤¹
-7 $ Ÿ³«¤Ï ] ¤ÎÁ°¤Ë½ª¤ï¤ëɬÍפ¬¤¢¤ê¤Þ¤¹
-8 $ Æâ¤Î : ½¤¾þ»Ò¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹ (%c)
-9 ÇÛÎó¤Îź¤¨»ú¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹
-10 Èֹ椬Àµ¤·¤¤½ñ¼°¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤»¤ó
-11 ʸ»úÎó¤Ï¤â¤¦¤¢¤ê¤Þ¤»¤ó
-12 ¥Õ¥¡¥¤¥ë̾¤¬´Ö°ã¤Ã¤Æ¤¤¤ë¤«¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Þ¤»¤ó
-13 glob¤ÎÆâÉô¥¨¥é¡¼¤Ç¤¹
-14 ¥³¥Þ¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó
-15 °ú¿ô¤¬ÉÔ­¤·¤Æ¤¤¤Þ¤¹
-16 °ú¿ô¤¬Â¿²á¤®¤Þ¤¹
-17 ´í¸±¤Ê¥¨¥¤¥ê¥¢¥¹ÄêµÁ¤Ç¤¹
-18 ifʸ¤ÎÃæ¤Ë¾ò·ï¤¬¤¢¤ê¤Þ¤»¤ó
-19 ´Ö°ã¤Ã¤¿then¤Ç¤¹
-20 ʸ»úÎ󤬳ç¸ÌÆâ¤Ë¤¢¤ê¤Þ¤»¤ó
-21 %s ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó
-22 ´Ö°ã¤Ã¤¿mask¤Ç¤¹
-23 ¤½¤Î¤è¤¦¤ÊlimitÃͤϤ¢¤ê¤Þ¤»¤ó
-24 °ú¿ô¤¬Ä¹¤¹¤®¤Þ¤¹
-25 ¥ª¥×¥·¥ç¥óñ°Ì¤¬ÉÔÌÀ¤«´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹
-26 ÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤ÊÑ¿ô¤Ç¤¹
-27 ¥Ç¥£¥ì¥¯¥È¥ê¡¼¥¹¥¿¥Ã¥¯¤Î»ØÄ꤬¿¼²á¤®¤Þ¤¹
-28 ¥·¥°¥Ê¥ëÈֹ椬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹
-29 ¥·¥°¥Ê¥ë¤Î̾Á°¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹ "kill -l"¤Ç¸«¤ë»ö¤¬½ÐÍè¤Þ¤¹
-30 ÊÑ¿ô̾¤Ï±Ñ»ú¤Ç»Ï¤á¤ëɬÍפ¬¤¢¤ê¤Þ¤¹
-31 ÊÑ¿ô¤Î̾Á°¤¬Ä¹¤¹¤®¤Þ¤¹
-32 ÊÑ¿ô̾¤Ï±Ñ¿ô»ú¤À¤±¤Ç¹½À®¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹
-33 ¤³¤Îshell¤Ç¤Ï¥¸¥ç¥Ö¥³¥ó¥È¥í¡¼¥ë¤Ï»ÈÍѤǤ­¤Þ¤»¤ó
-34 ¼°¹½Ê¸?
-35 ¥Û¡¼¥à¥Ç¥£¥ì¥¯¥È¥ê¡¼¤¬¤¢¤ê¤Þ¤»¤ó
-36 ¥Û¡¼¥à¥Ç¥£¥ì¥¯¥È¥ê¡¼¤ËÊѹ¹¤Ç¤­¤Þ¤»¤ó
-37 ÉÔÀµ¤Ê¥Ì¥ë¥³¥Þ¥ó¥É¤Ç¤¹
-38 ÂåÆþ¼°¤¬·ç¤±¤Æ¤¤¤ë²Õ½ê¤¬¤¢¤ê¤Þ¤¹
-39 ÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤±é»»»Ò¤Ç¤¹
-40 Û£Ëæ¤Ç¤¹
-41 %s¤È¸À¤¦¥Õ¥¡¥¤¥ë¤Ï¤¹¤Ç¤Ë¸ºß¤·¤Þ¤¹
-42 -cÍѤΰú¿ô¤Ï¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ç½ª¤ï¤ê¤Þ¤¹
-43 ³ä¤ê¹þ¤ß¤¬Æþ¤ê¤Þ¤·¤¿
-44 ÇÛÎó¤ËÆþ¤ì¤ëź¤¨»ú¤¬ÈϰϤòĶ¤¨¤Æ¤¤¤Þ¤¹
-45 ¹Ô¤Î¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤Ç¤¹
-46 ¤½¤Î¤è¤¦¤Ê¥¸¥ç¥Ö¤Ï¤¢¤ê¤Þ¤»¤ó
-47 üËö¤«¤é¤Ï¤Ç¤­¤Þ¤»¤ó
-48 while/foreach¤ÎÃæ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó
-49 ¥×¥í¥»¥¹¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó
-50 ¾È¹ç¥Ñ¥¿¡¼¥ó¤Ë¹ç¤¤¤Þ¤»¤ó
-51 %c ¤¬·ç¤±¤Æ¤¤¤ë²Õ½ê¤¬¤¢¤ê¤Þ¤¹
-52 %c ¤¬Âбþ¤·¤Þ¤»¤ó
-53 ¥á¥â¥ê¤¬ÉÔ­¤·¤Æ¤¤¤Þ¤¹
-54 ¥Ñ¥¤¥×¤òºî¤ì¤Þ¤»¤ó
+1 文法ãŒé–“é•ã£ã¦ã„ã¾ã™
+2 %s ã¯å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã¾ã›ã‚“
+3 文字列ãŒé•·ã™ãŽã¾ã™
+4 $< ã®è¡ŒãŒé•·ã™ãŽã¾ã™
+5 $0 用ã®ãƒ•ã‚¡ã‚¤ãƒ«ãŒã‚ã‚Šã¾ã›ã‚“
+6 [] 修飾å­ãŒä¸å®Œå…¨ã§ã™
+7 $ 展開㯠] ã®å‰ã«çµ‚ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™
+8 $ 内㮠: 修飾å­ãŒé–“é•ã£ã¦ã„ã¾ã™ (%c)
+9 é…列ã®æ·»ãˆå­—ãŒé–“é•ã£ã¦ã„ã¾ã™
+10 番å·ãŒæ­£ã—ã„書å¼ã«ãªã£ã¦ã„ã¾ã›ã‚“
+11 文字列ã¯ã‚‚ã†ã‚ã‚Šã¾ã›ã‚“
+12 ファイルåãŒé–“é•ã£ã¦ã„ã‚‹ã‹ãƒ•ã‚¡ã‚¤ãƒ«ãŒå­˜åœ¨ã—ã¾ã›ã‚“
+13 globã®å†…部エラーã§ã™
+14 コマンドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“
+15 引数ãŒä¸è¶³ã—ã¦ã„ã¾ã™
+16 引数ãŒå¤šéŽãŽã¾ã™
+17 å±é™ºãªã‚¨ã‚¤ãƒªã‚¢ã‚¹å®šç¾©ã§ã™
+18 ifæ–‡ã®ä¸­ã«æ¡ä»¶ãŒã‚ã‚Šã¾ã›ã‚“
+19 é–“é•ã£ãŸthenã§ã™
+20 文字列ãŒæ‹¬å¼§å†…ã«ã‚ã‚Šã¾ã›ã‚“
+21 %s ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“
+22 é–“é•ã£ãŸmaskã§ã™
+23 ãã®ã‚ˆã†ãªlimit値ã¯ã‚ã‚Šã¾ã›ã‚“
+24 引数ãŒé•·ã™ãŽã¾ã™
+25 オプションå˜ä½ãŒä¸æ˜Žã‹é–“é•ã£ã¦ã„ã¾ã™
+26 定義ã•ã‚Œã¦ã„ãªã„変数ã§ã™
+27 ディレクトリースタックã®æŒ‡å®šãŒæ·±éŽãŽã¾ã™
+28 シグナル番å·ãŒé–“é•ã£ã¦ã„ã¾ã™
+29 シグナルã®åå‰ãŒé–“é•ã£ã¦ã„ã¾ã™ "kill -l"ã§è¦‹ã‚‹äº‹ãŒå‡ºæ¥ã¾ã™
+30 変数åã¯è‹±å­—ã§å§‹ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™
+31 変数ã®åå‰ãŒé•·ã™ãŽã¾ã™
+32 変数åã¯è‹±æ•°å­—ã ã‘ã§æ§‹æˆã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™
+33 ã“ã®shellã§ã¯ã‚¸ãƒ§ãƒ–コントロールã¯ä½¿ç”¨ã§ãã¾ã›ã‚“
+34 å¼æ§‹æ–‡?
+35 ホームディレクトリーãŒã‚ã‚Šã¾ã›ã‚“
+36 ホームディレクトリーã«å¤‰æ›´ã§ãã¾ã›ã‚“
+37 ä¸æ­£ãªãƒŒãƒ«ã‚³ãƒžãƒ³ãƒ‰ã§ã™
+38 代入å¼ãŒæ¬ ã‘ã¦ã„る箇所ãŒã‚ã‚Šã¾ã™
+39 定義ã•ã‚Œã¦ã„ãªã„演算å­ã§ã™
+40 曖昧ã§ã™
+41 %sã¨è¨€ã†ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã™ã§ã«å­˜åœ¨ã—ã¾ã™
+42 -c用ã®å¼•æ•°ã¯ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ã§çµ‚ã‚ã‚Šã¾ã™
+43 割り込ã¿ãŒå…¥ã‚Šã¾ã—ãŸ
+44 é…列ã«å…¥ã‚Œã‚‹æ·»ãˆå­—ãŒç¯„囲を超ãˆã¦ã„ã¾ã™
+45 è¡Œã®ã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼ã§ã™
+46 ãã®ã‚ˆã†ãªã‚¸ãƒ§ãƒ–ã¯ã‚ã‚Šã¾ã›ã‚“
+47 端末ã‹ã‚‰ã¯ã§ãã¾ã›ã‚“
+48 while/foreachã®ä¸­ã§ã¯ã‚ã‚Šã¾ã›ã‚“
+49 プロセスを生æˆã§ãã¾ã›ã‚“
+50 ç…§åˆãƒ‘ターンã«åˆã„ã¾ã›ã‚“
+51 %c ãŒæ¬ ã‘ã¦ã„る箇所ãŒã‚ã‚Šã¾ã™
+52 %c ãŒå¯¾å¿œã—ã¾ã›ã‚“
+53 メモリãŒä¸è¶³ã—ã¦ã„ã¾ã™
+54 パイプを作れã¾ã›ã‚“
55 %s: %s
56 %s
-57 ·Á¼°: jobs [ -l ]
-58 ¥¢¡¼¥®¥å¥á¥ó¥È¤Ï¥¸¥ç¥Ö¤«¥×¥í¥»¥¹ID¤Ç¤¹.
-59 ¥«¥ì¥ó¥È¤Îjob¤Ï¤¢¤ê¤Þ¤»¤ó
-60 Á°¤Îjob¤Ï¤¢¤ê¤Þ¤»¤ó
-61 ¥¸¥ç¥Ö¤¬¥Ñ¥¿¡¼¥ó¤Ë°ìÃפ·¤Þ¤»¤ó
-62 Fork¤Î¿¼¤µ¤¬ %d¤òĶ¤¨¤Þ¤·¤¿; ¤ª¤½¤é¤¯``¤Î¥Í¥¹¥È¤¬¿¼¤¹¤®¤ë°Ù¤Ç¤¹¡£
-63 ¤³¤Îsubshell¤Ç¤Ï¥¸¥ç¥Ö¥³¥ó¥È¥í¡¼¥ë¤Ï»ÈÍѤǤ­¤Þ¤»¤ó
-64 sync¼ºÇÔ: ¥×¥í¥»¥¹ %d ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó
-65 %sÃæÃǤ·¤¿job¤¬»Ä¤Ã¤Æ¤¤¤Þ¤¹
-66 %s»ß¤Þ¤Ã¤¿job¤¬»Ä¤Ã¤Æ¤¤¤Þ¤¹
-67 ¾¤Î¥Ç¥£¥ì¥¯¥È¥ê¡¼¤Ï¤¢¤ê¤Þ¤»¤ó
-68 ¥Ç¥£¥ì¥¯¥È¥ê¡¼¥¹¥¿¥Ã¥¯¤Ï¶õ¤Ç¤¹
-69 ¥Ç¥£¥ì¥¯¥È¥ê¡¼Ì¾¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹
-70 ·Á¼°: %s [-%s]%s
-71 -h¥Õ¥é¥°ÍѤΥª¥Ú¥é¥ó¥É¤¬¤¢¤ê¤Þ¤»¤ó
-72 ¥í¥°¥¤¥ó¥·¥§¥ë¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó
-73 0¤Ç³ä¤ê»»¤·¤Þ¤·¤¿
-74 0¤Ç³ä¤ê»»¤·¤Þ¤·¤¿(;¤ê·×»»)
-75 ´Ö°ã¤Ã¤¿¥ª¥×¥·¥ç¥óñ°Ì¤Ç¤¹: "%s"¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¤«?
-76 ¥í¥°¥¤¥ó¥·¥§¥ë¤Ê¤Î¤ÇÃæÃǤǤ­¤Þ¤»¤ó
-77 %s¤È¤¤¤¦¥æ¡¼¥¶¡¼¤Ï¸ºß¤·¤Þ¤»¤ó
-78 ÊÑ¿ô$home¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó
-79 ·Á¼°: history [-%s] [¥¤¥Ù¥ó¥ÈÈÖ¹æ]
-80 $¡¢ ! ¤â¤·¤¯¤Ï < ¤Ï $# ¤â¤·¤¯¤Ï $? ¤È°ì½ï¤Ë¤Ï»ÈÍѤǤ­¤Þ¤»¤ó
-81 ÊÑ¿ô̾¤Ë²þ¹Ô¤¬Æþ¤Ã¤Æ¤¤¤Þ¤¹
-82 * ¤Ï $# ¤â¤·¤¯¤Ï $? ¤È°ì½ï¤Ë¤Ï»ÈÍѤǤ­¤Þ¤»¤ó
-83 $?<¿ô»ú> ¤â¤·¤¯¤Ï $#<¿ô»ú> ¤Ï»ÈÍѤǤ­¤Þ¤»¤ó
-84 ÊÑ¿ô̾¤¬ÉÔÀµ¤Ç¤¹
-85 ÊÑ¿ô¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ë²þ¹Ô¤¬Æþ¤Ã¤Æ¤¤¤Þ¤¹
-86 Ÿ³«ÍѥХåե¡¡¼¥ª¡¼¥Ð¡¼¥Õ¥í¡¼
-87 ÊÑ¿ô¹½Ê¸?
-88 ´Ö°ã¤Ã¤¿ ! ¤Î½ñ¼°¤Ç¤¹
-89 Á°¤ÎÃÖ´¹¤Ï¤¢¤ê¤Þ¤»¤ó
-90 ÉÔÀµ¤ÊÃÖ´¹¤Ç¤¹
-91 ľÁ°¤Îº¸¥µ¥¤¥É¤¬¤¢¤ê¤Þ¤»¤ó
-92 ±¦¥µ¥¤¥É¤¬Ä¹²á¤®¤Þ¤¹
-93 ´Ö°ã¤Ã¤¿ ! ½¤¾þ»Ò¤Ç¤¹: %c
-94 ½¤¾þ»Ò¤Î¼ºÇԤǤ¹
-95 ÃÖ´¹¥Ð¥Ã¥Õ¥¡¤¬¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤·¤Þ¤·¤¿
-96 ´Ö°ã¤Ã¤¿ ! °ú¿ô¤Î¥»¥ì¥¯¥¿¡¼¤Ç¤¹
-97 Á°¤Î¸¡º÷·ë²Ì¤Ï¤¢¤ê¤Þ¤»¤ó
-98 %s: ¥¤¥Ù¥ó¥È¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó
-99 ")"¤¬Â¿¤¹¤®¤Þ¤¹
-100 "("¤¬Â¿¤¹¤®¤Þ¤¹
-101 ( ¤Î¾ì½ê¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹
-102 ¥ê¥À¥¤¥ì¥¯¥ÈÀè¤Î̾Á°¤¬·ç¤±¤Æ¤¤¤Þ¤¹
-103 Û£Ëæ¤Ê½ÐÎÏ¥ê¥À¥¤¥ì¥¯¥È¤Ç¤¹
-104 () ¤ÎÃæ¤Ç << ¤Ï»È¤¨¤Þ¤»¤ó
-105 Û£Ëæ¤ÊÆþÎÏ¥ê¥À¥¤¥ì¥¯¥È¤Ç¤¹
-106 () ¤Î¾ì½ê¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹
-107 ¥¨¥¤¥ê¥¢¥¹¤¬¥ë¡¼¥×¤·¤Æ¤¤¤Þ¤¹
-108 ÊÑ¿ô"$watch"¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó
-109 ¥¹¥±¥¸¥å¡¼¥ë¤µ¤ì¤¿¥¤¥Ù¥ó¥È¤Ï¤¢¤ê¤Þ¤»¤ó
-110 ·Á¼°: sched -<¹àÌÜÈÖ¹æ>.\n·Á¼°: sched [+]hh:mm <¥³¥Þ¥ó¥É>
-111 ¥¹¥±¥¸¥å¡¼¥ë¤µ¤ì¤¿¥¤¥Ù¥ó¥È¤Ï¤¢¤ê¤Þ¤»¤ó
-112 ¼Â¹Ô¤Ç¤­¤ë¥³¥Þ¥ó¥É¤Ï¤¢¤ê¤Þ¤»¤ó
-113 ÉÔÀµ¤Ê¥¤¥Ù¥ó¥È³«»Ï»þ´Ö¤Ç¤¹
-114 am/pm»ØÄê¤ÇÁêÂÐŪ¤Ê»þ´Ö»ØÄê¤Ï¤Ç¤­¤Þ¤»¤ó
-115 termcap¤Îʸ»úÎóÎΰèÉÔ­¤Ç¤¹
-116 ·Á¼°: settc %s [yes|no]
-117 ÃΤé¤Ê¤¤capability `%s'
-118 ÃΤé¤Ê¤¤termcap¥Ñ¥é¥á¥¿ `%%%c'
-119 `%s' ¤ËÂФ¹¤ë°ú¿ô¤¬Â¿²á¤®¤Þ¤¹ (%d)
-120 `%s' ¤Ë¤Ï %d °ú¿ô¤¬É¬ÍפǤ¹
-121 ·Á¼°: echotc [-v|-s] [<capability> [<args>]]
-122 %s: %s. ´Ö°ã¤Ã¤¿¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Ç¤¹
-123 !# ¥Ò¥¹¥È¥ê¡¼¤Î¥ë¡¼¥×
-124 ÉÔ´°Á´¤Ê¥Õ¥¡¥¤¥ë¥Á¥§¥Ã¥¯¤Ç¤¹
-125 ¥»¥ì¥¯¥¿¡¼ ¥ª¡¼¥Ð¡¼¥Õ¥í¡¼
-126 ÉÔÌÀ¥ª¥×¥·¥ç¥ó: `-%s'\nUsage: %s [ -bcdefilmnqstvVxX -Dname[=value] ] [ argument ... ]
-127 ÉÔÌÀ¥ª¥×¥·¥ç¥ó: `-%s'\nUsage: %s [ -bcdefFilmnqstvVxX ] [ argument ... ]
-128 ÉÔÌÀ¥ª¥×¥·¥ç¥ó: `-%s'\nUsage: %s [ -bcdefilmnqstvVxX ] [ argument ... ]
-129 \nÉÔÀµ¤ÊÊä´°: "%s"
-130 \nÉÔÀµ¤Ê %s: '%c'
-131 \n'%c' ( %s ¤Î¸å¤í)¤Ï´Ö°ã¤Ã¤¿¥»¥Ñ¥ì¡¼¥¿¡¼¤Ç¤¹ "%s"
-132 \nÉÔ´°Á´¤Ê %s: "%s"
-133 -m¥Õ¥é¥°ÍѤΥª¥Ú¥é¥ó¥É¤¬¤¢¤ê¤Þ¤»¤ó
-134 ·Á¼°: unlimit [-fh] [limits]
-135 $%S ¤ÏÆɼèÀìÍѤǤ¹
-136 job¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó
-137 ÉÔÌÀ¤ÎcolorlsÊÑ¿ô¤Ç¤¹ `%c%c'
+57 å½¢å¼: jobs [ -l ]
+58 アーギュメントã¯ã‚¸ãƒ§ãƒ–ã‹ãƒ—ロセスIDã§ã™.
+59 カレントã®jobã¯ã‚ã‚Šã¾ã›ã‚“
+60 å‰ã®jobã¯ã‚ã‚Šã¾ã›ã‚“
+61 ジョブãŒãƒ‘ターンã«ä¸€è‡´ã—ã¾ã›ã‚“
+62 Forkã®æ·±ã•ãŒ %dを超ãˆã¾ã—ãŸ; ãŠãらã``ã®ãƒã‚¹ãƒˆãŒæ·±ã™ãŽã‚‹ç‚ºã§ã™ã€‚
+63 ã“ã®subshellã§ã¯ã‚¸ãƒ§ãƒ–コントロールã¯ä½¿ç”¨ã§ãã¾ã›ã‚“
+64 sync失敗: プロセス %d ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“
+65 %s中断ã—ãŸjobãŒæ®‹ã£ã¦ã„ã¾ã™
+66 %sæ­¢ã¾ã£ãŸjobãŒæ®‹ã£ã¦ã„ã¾ã™
+67 ä»–ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ¼ã¯ã‚ã‚Šã¾ã›ã‚“
+68 ディレクトリースタックã¯ç©ºã§ã™
+69 ディレクトリーåãŒé–“é•ã£ã¦ã„ã¾ã™
+70 å½¢å¼: %s [-%s]%s
+71 -hフラグ用ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒã‚ã‚Šã¾ã›ã‚“
+72 ログインシェルã§ã¯ã‚ã‚Šã¾ã›ã‚“
+73 0ã§å‰²ã‚Šç®—ã—ã¾ã—ãŸ
+74 0ã§å‰²ã‚Šç®—ã—ã¾ã—ãŸ(余り計算)
+75 é–“é•ã£ãŸã‚ªãƒ—ションå˜ä½ã§ã™: "%s"ã§ã¯ã‚ã‚Šã¾ã›ã‚“ã‹?
+76 ログインシェルãªã®ã§ä¸­æ–­ã§ãã¾ã›ã‚“
+77 %sã¨ã„ã†ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯å­˜åœ¨ã—ã¾ã›ã‚“
+78 変数$homeãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“
+79 å½¢å¼: history [-%s] [イベント番å·]
+80 $〠! ã‚‚ã—ã㯠< 㯠$# ã‚‚ã—ã㯠$? ã¨ä¸€ç·’ã«ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“
+81 変数åã«æ”¹è¡ŒãŒå…¥ã£ã¦ã„ã¾ã™
+82 * 㯠$# ã‚‚ã—ã㯠$? ã¨ä¸€ç·’ã«ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“
+83 $?<æ•°å­—> ã‚‚ã—ã㯠$#<æ•°å­—> ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“
+84 変数åãŒä¸æ­£ã§ã™
+85 変数インデックスã«æ”¹è¡ŒãŒå…¥ã£ã¦ã„ã¾ã™
+86 展開用ãƒãƒƒãƒ•ã‚¡ãƒ¼ã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼
+87 変数構文?
+88 é–“é•ã£ãŸ ! ã®æ›¸å¼ã§ã™
+89 å‰ã®ç½®æ›ã¯ã‚ã‚Šã¾ã›ã‚“
+90 ä¸æ­£ãªç½®æ›ã§ã™
+91 ç›´å‰ã®å·¦ã‚µã‚¤ãƒ‰ãŒã‚ã‚Šã¾ã›ã‚“
+92 å³ã‚µã‚¤ãƒ‰ãŒé•·éŽãŽã¾ã™
+93 é–“é•ã£ãŸ ! 修飾å­ã§ã™: %c
+94 修飾å­ã®å¤±æ•—ã§ã™
+95 ç½®æ›ãƒãƒƒãƒ•ã‚¡ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼ã—ã¾ã—ãŸ
+96 é–“é•ã£ãŸ ! 引数ã®ã‚»ãƒ¬ã‚¯ã‚¿ãƒ¼ã§ã™
+97 å‰ã®æ¤œç´¢çµæžœã¯ã‚ã‚Šã¾ã›ã‚“
+98 %s: イベントãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“
+99 ")"ãŒå¤šã™ãŽã¾ã™
+100 "("ãŒå¤šã™ãŽã¾ã™
+101 ( ã®å ´æ‰€ãŒé–“é•ã£ã¦ã„ã¾ã™
+102 リダイレクト先ã®åå‰ãŒæ¬ ã‘ã¦ã„ã¾ã™
+103 曖昧ãªå‡ºåŠ›ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã§ã™
+104 () ã®ä¸­ã§ << ã¯ä½¿ãˆã¾ã›ã‚“
+105 曖昧ãªå…¥åŠ›ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã§ã™
+106 () ã®å ´æ‰€ãŒé–“é•ã£ã¦ã„ã¾ã™
+107 エイリアスãŒãƒ«ãƒ¼ãƒ—ã—ã¦ã„ã¾ã™
+108 変数"$watch"ãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“
+109 スケジュールã•ã‚ŒãŸã‚¤ãƒ™ãƒ³ãƒˆã¯ã‚ã‚Šã¾ã›ã‚“
+110 å½¢å¼: sched -<項目番å·>.\nå½¢å¼: sched [+]hh:mm <コマンド>
+111 スケジュールã•ã‚ŒãŸã‚¤ãƒ™ãƒ³ãƒˆã¯ã‚ã‚Šã¾ã›ã‚“
+112 実行ã§ãるコマンドã¯ã‚ã‚Šã¾ã›ã‚“
+113 ä¸æ­£ãªã‚¤ãƒ™ãƒ³ãƒˆé–‹å§‹æ™‚é–“ã§ã™
+114 am/pm指定ã§ç›¸å¯¾çš„ãªæ™‚間指定ã¯ã§ãã¾ã›ã‚“
+115 termcapã®æ–‡å­—列領域ä¸è¶³ã§ã™
+116 å½¢å¼: settc %s [yes|no]
+117 知らãªã„capability `%s'
+118 知らãªã„termcapパラメタ `%%%c'
+119 `%s' ã«å¯¾ã™ã‚‹å¼•æ•°ãŒå¤šéŽãŽã¾ã™ (%d)
+120 `%s' ã«ã¯ %d 引数ãŒå¿…è¦ã§ã™
+121 å½¢å¼: echotc [-v|-s] [<capability> [<args>]]
+122 %s: %s. é–“é•ã£ãŸã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã§ã™
+123 !# ヒストリーã®ãƒ«ãƒ¼ãƒ—
+124 ä¸å®Œå…¨ãªãƒ•ã‚¡ã‚¤ãƒ«ãƒã‚§ãƒƒã‚¯ã§ã™
+125 セレクター オーãƒãƒ¼ãƒ•ãƒ­ãƒ¼
+126 ä¸æ˜Žã‚ªãƒ—ション: `-%s'\nUsage: %s [ -bcdefilmnqstvVxX -Dname[=value] ] [ argument ... ]
+127 ä¸æ˜Žã‚ªãƒ—ション: `-%s'\nUsage: %s [ -bcdefFilmnqstvVxX ] [ argument ... ]
+128 ä¸æ˜Žã‚ªãƒ—ション: `-%s'\nUsage: %s [ -bcdefilmnqstvVxX ] [ argument ... ]
+129 \nä¸æ­£ãªè£œå®Œ: "%s"
+130 \nä¸æ­£ãª %s: '%c'
+131 \n'%c' ( %s ã®å¾Œã‚)ã¯é–“é•ã£ãŸã‚»ãƒ‘レーターã§ã™ "%s"
+132 \nä¸å®Œå…¨ãª %s: "%s"
+133 -mフラグ用ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒã‚ã‚Šã¾ã›ã‚“
+134 å½¢å¼: unlimit [-fh] [limits]
+135 $%S ã¯èª­å–専用ã§ã™
+136 jobãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“
+137 ä¸æ˜Žã®colorls変数ã§ã™ `%c%c'
diff --git a/nls/ja/set10 b/nls/ja/set10
index e09a8e507f00..8c2991da8c9f 100644
--- a/nls/ja/set10
+++ b/nls/ja/set10
@@ -1,8 +1,8 @@
-$ $tcsh: set10,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set10,v 1.3 2011/02/04 18:19:39 christos Exp $
$ ma.setp.c
$set 10
-1 setpath: ¥³¥Þ¥ó¥É¤¬ÉÔÀµ¤Ç¤¹ '%s'.\n
-2 setpath: '%s' ¥³¥Þ¥ó¥É¤Î¤¿¤á¤Î¥¢¡¼¥®¥å¥á¥ó¥È¤¬ÉÔ­¤·¤Æ¤¤¤Þ¤¹.\n
-3 setpath: ¥Ñ¥¹ '%s'¤ÎÆâÍƤ¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹\n
-4 setpath: %s ¤¬ %s ¤ÎÃæ¤Ë¤¢¤ê¤Þ¤»¤ó\n
-5 setpath: %d ¤Ï %s ¤ÎÃæ¤Ç¤Ï,´Ö°ã¤Ã¤¿°ÌÃ֤Ǥ¹\n
+1 setpath: コマンドãŒä¸æ­£ã§ã™ '%s'.\n
+2 setpath: '%s' コマンドã®ãŸã‚ã®ã‚¢ãƒ¼ã‚®ãƒ¥ãƒ¡ãƒ³ãƒˆãŒä¸è¶³ã—ã¦ã„ã¾ã™.\n
+3 setpath: パス '%s'ã®å†…容ãŒé–“é•ã£ã¦ã„ã¾ã™\n
+4 setpath: %s ㌠%s ã®ä¸­ã«ã‚ã‚Šã¾ã›ã‚“\n
+5 setpath: %d 㯠%s ã®ä¸­ã§ã¯,é–“é•ã£ãŸä½ç½®ã§ã™\n
diff --git a/nls/ja/set11 b/nls/ja/set11
index bc00dbfd3eee..55a998b498e4 100644
--- a/nls/ja/set11
+++ b/nls/ja/set11
@@ -1,10 +1,10 @@
-$ $tcsh: set11,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set11,v 1.3 2011/02/04 18:19:39 christos Exp $
$ sh.c
$set 11
-1 ·Ù¹ð: tty¤Ë¥¢¥¯¥»¥¹¤¬¤Ç¤­¤Þ¤»¤ó (%s).\n
-2 ¤³¤Î¤¿¤á¤Ë,¤³¤Îshell¤Ë¤Ï¥¸¥ç¥Ö¥³¥ó¥È¥í¡¼¥ë¤¬¤¢¤ê¤Þ¤»¤ó.\n
-3 ¤¢¤Ê¤¿¤Ë %d Ä̤Υ᡼¥ë¥á¥Ã¥»¡¼¥¸¤¬¤¢¤ê¤Þ¤¹.\n
-4 ¤¢¤Ê¤¿¤Ë %d Ä̤Υ᡼¥ë¥á¥Ã¥»¡¼¥¸¤¬ %s ¤Ë¤¢¤ê¤Þ¤¹.\n
-5 ¤¢¤Ê¤¿¤Ë %s¥á¡¼¥ë¤¬¤¢¤ê¤Þ¤¹.\n
-6 ¿·¤·¤¤
-7 ¤¢¤Ê¤¿¤Ë %s¥á¡¼¥ë¤¬ %s¤Ë¤¢¤ê¤Þ¤¹.\n
+1 警告: ttyã«ã‚¢ã‚¯ã‚»ã‚¹ãŒã§ãã¾ã›ã‚“ (%s).\n
+2 ã“ã®ãŸã‚ã«,ã“ã®shellã«ã¯ã‚¸ãƒ§ãƒ–コントロールãŒã‚ã‚Šã¾ã›ã‚“.\n
+3 ã‚ãªãŸã« %d 通ã®ãƒ¡ãƒ¼ãƒ«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒã‚ã‚Šã¾ã™.\n
+4 ã‚ãªãŸã« %d 通ã®ãƒ¡ãƒ¼ãƒ«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒ %s ã«ã‚ã‚Šã¾ã™.\n
+5 ã‚ãªãŸã« %sメールãŒã‚ã‚Šã¾ã™.\n
+6 æ–°ã—ã„
+7 ã‚ãªãŸã« %sメール㌠%sã«ã‚ã‚Šã¾ã™.\n
diff --git a/nls/ja/set12 b/nls/ja/set12
index d3a331830b49..05e6445ea833 100644
--- a/nls/ja/set12
+++ b/nls/ja/set12
@@ -1,4 +1,4 @@
-$ $tcsh: set12,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set12,v 1.3 2011/02/04 18:19:39 christos Exp $
$ sh.dir.c
$set 12
-1 %s: "%s"¤«¤é¤Î¼Â¹Ô¤ò»î¤·¤Þ¤¹\n
+1 %s: "%s"ã‹ã‚‰ã®å®Ÿè¡Œã‚’試ã—ã¾ã™\n
diff --git a/nls/ja/set13 b/nls/ja/set13
index cc8c20f40b76..78708800122d 100644
--- a/nls/ja/set13
+++ b/nls/ja/set13
@@ -1,12 +1,12 @@
-$ $tcsh: set13,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set13,v 1.3 2011/02/04 18:19:39 christos Exp $
$ sh.exec.c
$set 13
1 hash=%-4d dir=%-2d prog=%s\n
-2 %d ¤Î¥Ï¥Ã¥·¥åÎΰè (%d ¥Ó¥Ã¥ÈËè)\n
-3 ¥Ç¥Ð¥Ã¥°¥Þ¥¹¥¯ = 0x%08x\n
-4 %d À®¸ù, %d ¼ºÇÔ, %d%%\n
-5 %S: ¥·¥§¥ë¤ËÆþ¤Ã¤Æ¤¤¤ë¥³¥Þ¥ó¥É¤Ç¤¹.\n
-6 %S: ¥³¥Þ¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó\n
-7 where: / ¤¬Æþ¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ï»È¤¨¤Þ¤»¤ó\n
-8 %S ¤Ï¥¨¥¤¥ê¥¢¥¹ÄêµÁ¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹:
-9 %S ¤Ï¥·¥§¥ë¤ËÆþ¤Ã¤Æ¤¤¤Þ¤¹.\n
+2 %d ã®ãƒãƒƒã‚·ãƒ¥é ˜åŸŸ (%d ビット毎)\n
+3 デãƒãƒƒã‚°ãƒžã‚¹ã‚¯ = 0x%08x\n
+4 %d æˆåŠŸ, %d 失敗, %d%%\n
+5 %S: シェルã«å…¥ã£ã¦ã„るコマンドã§ã™.\n
+6 %S: コマンドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\n
+7 where: / ãŒå…¥ã£ã¦ã„ã‚‹å ´åˆã¯ä½¿ãˆã¾ã›ã‚“\n
+8 %S ã¯ã‚¨ã‚¤ãƒªã‚¢ã‚¹å®šç¾©ã‚’è¡Œã£ã¦ã„ã¾ã™:
+9 %S ã¯ã‚·ã‚§ãƒ«ã«å…¥ã£ã¦ã„ã¾ã™.\n
diff --git a/nls/ja/set15 b/nls/ja/set15
index 5cfb860a52ca..28b334f07dca 100644
--- a/nls/ja/set15
+++ b/nls/ja/set15
@@ -1,7 +1,7 @@
-$ $tcsh: set15,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set15,v 1.3 2011/02/04 18:19:39 christos Exp $
$ sh.func.c
$set 15
-1 %s: %s: %s ½ÐÍè¤Þ¤»¤ó. (%s À©¸Â)\n
-2 ²ò½ü
-3 ÀßÄê
-4 \040¥Ï¡¼¥É
+1 %s: %s: %s 出æ¥ã¾ã›ã‚“. (%s 制é™)\n
+2 解除
+3 設定
+4 \040ãƒãƒ¼ãƒ‰
diff --git a/nls/ja/set16 b/nls/ja/set16
index 7edcc43bc802..c329b29f0e8a 100644
--- a/nls/ja/set16
+++ b/nls/ja/set16
@@ -1,13 +1,13 @@
-$ $tcsh: set16,v 1.3 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set16,v 1.4 2011/02/04 18:19:40 christos Exp $
$ sh.lex.c
$set 16
-1 tty pgrp ¤ò %d ¤«¤é %d¤ËºÆÀßÄꤷ¤Þ¤¹\n
-2 \n¥í¥°¥¢¥¦¥È¤Ï"logout"¤ò»ÈÍѤ·¤Æ²¼¤µ¤¤\n
-3 \n%s½ªÎ»¤Ï"exit"¤ò»ÈÍѤ·¤Æ²¼¤µ¤¤\n
+1 tty pgrp ã‚’ %d ã‹ã‚‰ %dã«å†è¨­å®šã—ã¾ã™\n
+2 \nログアウトã¯"logout"を使用ã—ã¦ä¸‹ã•ã„\n
+3 \n%s終了ã¯"exit"を使用ã—ã¦ä¸‹ã•ã„\n
4 seek to eval %x %x\n
5 seek to alias %x %x\n
6 seek to file %x\n
-7 ´Ö°ã¤Ã¤¿ seek ¥¿¥¤¥×¤Ç¤¹ %d\n
+7 é–“é•ã£ãŸ seek タイプã§ã™ %d\n
8 tell eval %x %x\n
9 tell alias %x %x\n
10 tell file %x\n
diff --git a/nls/ja/set17 b/nls/ja/set17
index bf9de54ae799..d748bc75762b 100644
--- a/nls/ja/set17
+++ b/nls/ja/set17
@@ -1,16 +1,16 @@
-$ $tcsh: set17,v 1.3 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set17,v 1.4 2011/02/04 18:19:40 christos Exp $
$ sh.proc.c
$set 17
-1 ¾ã³²: ¥Ð¥Ã¥°¥°¥é¥¦¥ó¥É¥¸¥ç¥Ö¤òÂԤäƤ¤¤Þ¤¹\n
-2 %d¤Ç½ªÎ»¤·¤Þ¤·¤¿\n
-3 ¾ã³²: ¥×¥í¥»¥¹¥Õ¥é¥Ã¥·¥å¤¬ÆóÅټ¹Ԥµ¤ì¤Þ¤·¤¿
-4 ¼Â¹ÔÃæ¤Ç¤¹
-5 ¥·¥°¥Ê¥ë
-6 %-d¤Ç½ªÎ»¤·¤Þ¤·¤¿
-7 ½ªÎ»
-8 ¾ã³²: ¾õÂÖ=%-9o
-9 \040(core¤ò½ÐÎϤ·¤Þ¤·¤¿)
+1 障害: ãƒãƒƒã‚°ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã‚¸ãƒ§ãƒ–ã‚’å¾…ã£ã¦ã„ã¾ã™\n
+2 %dã§çµ‚了ã—ã¾ã—ãŸ\n
+3 障害: プロセスフラッシュãŒäºŒåº¦å®Ÿè¡Œã•ã‚Œã¾ã—ãŸ
+4 実行中ã§ã™
+5 シグナル
+6 %-dã§çµ‚了ã—ã¾ã—ãŸ
+7 終了
+8 障害: 状態=%-9o
+9 \040(coreを出力ã—ã¾ã—ãŸ)
10 \040(wd:
-12 %S: ¤¹¤Ç¤ËÃæÃǤ·¤Æ¤¤¤Þ¤¹\n
-13 %S: ¤¹¤Ç¤ËÄä»ß¤·¤Æ¤¤¤Þ¤¹\n
+12 %S: ã™ã§ã«ä¸­æ–­ã—ã¦ã„ã¾ã™\n
+13 %S: ã™ã§ã«åœæ­¢ã—ã¦ã„ã¾ã™\n
14 %S: Badly formed number\n
diff --git a/nls/ja/set18 b/nls/ja/set18
index b9364ac141eb..ef4715dd2676 100644
--- a/nls/ja/set18
+++ b/nls/ja/set18
@@ -1,4 +1,4 @@
-$ $tcsh: set18,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set18,v 1.3 2011/02/04 18:19:40 christos Exp $
$ sh.set.c
$set 18
-1 ·Ù¹ð: ÉÔ¼«Á³¤ËŤ¤ PATH ¤ÏÀÚ¤ê¼Î¤Æ¤é¤ì¤Þ¤¹\n
+1 警告: ä¸è‡ªç„¶ã«é•·ã„ PATH ã¯åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™\n
diff --git a/nls/ja/set2 b/nls/ja/set2
index 34e780ce968a..59ce40785e01 100644
--- a/nls/ja/set2
+++ b/nls/ja/set2
@@ -1,94 +1,94 @@
-$ $tcsh: set2,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set2,v 1.3 2011/02/04 18:19:40 christos Exp $
$ Signal names
$set 2
-1 ¥Ì¥ë¥·¥°¥Ê¥ë
-2 ¥Ï¥ó¥°¥¢¥Ã¥×
-3 ³ä¤ê¹þ¤ß
-4 ̾ȧ
-5 ÉÔÀµ¤Êµ¡³£¸ì¤ÎÌ¿Îá
-6 ¥È¥ì¡¼¥¹¡¦¥Ö¥ì¡¼¥¯¥Ý¥¤¥ó¥È¥È¥é¥Ã¥×
-7 ¥¢¥Ü¡¼¥È
-8 IOT¥È¥é¥Ã¥×
-9 ¥·¥¹¥Æ¥à¥¯¥é¥Ã¥·¥å²ÄǽÀ­Áý
-10 ¥¨¥é¡¼½ªÎ»
-11 ¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó¥È¥é¥Ã¥×
-12 ±é»»Îã³°
-13 ¶¯À©½ªÎ»
-14 ¥æ¡¼¥¶¡¼¥·¥°¥Ê¥ë1
-15 ¥æ¡¼¥¶¡¼¥·¥°¥Ê¥ë2
-16 ¥»¥°¥á¥ó¥È¥¨¥é¡¼
-17 ¥Ð¥¹¥¨¥é¡¼
-18 ¥×¥í¥°¥é¥àÈÏ°Ï¥¨¥é¡¼
-19 ¥ª¥Ú¥é¥ó¥ÉÈÏ°Ï¥¨¥é¡¼
-20 ÉÔÀµ¥·¥¹¥Æ¥à¥³¡¼¥ë
-21 ¥Ñ¥¤¥×Ç˲õ
-22 ¥¢¥é¡¼¥à¥·¥°¥Ê¥ë
-23 ½ªÎ»
-24 »Ò¥×¥í¥»¥¹¤Î¾õÂÖÊѹ¹
-25 »Ò¥×¥í¥»¥¹»àË´
-26 Apollo¸ÂÄꥨ¥é¡¼
-27 »Ò¥×¥í¥»¥¹Ää»ß¤â¤·¤¯¤Ï½ªÎ»
-28 »Ò¥×¥í¥»¥¹½ªÎ»
-29 ÅŸ»°Û¾ï
-30 ¥ê¥½¡¼¥¹¾ÃÌÇ
-31 ¥Ö¥ì¡¼¥¯ (Ctrl-Break)
-32 Æþ½ÐÎÏ ²Äǽ¥·¥°¥Ê¥ë
-33 ÈóƱ´ü I/O (select)
-34 ¥½¥±¥Ã¥È¶ÛµÞÍ×µá
-35 ¿½Å¥¿¥¹¥¯wake-up
-36 ¿½Å¥¿¥¹¥¯kill
-37 FortranÈóƱ´üI/O½ªÎ»
-38 ¥ê¥«¥Ð¥ê
-39 ÉÔÀµ¤Ê¥á¥â¥ê¡¼¥¨¥é¡¼
-40 CPU »þ´ÖÀ©¸Â¥ª¡¼¥Ð¡¼
-41 ¥·¥¹¥Æ¥àÄä»ß ²ÄǽÀ­Áý
-42 ¥Þ¥¤¥¯¥í¥¿¥¹¥­¥ó¥° group-no wakeup ¥Õ¥é¥°ÀßÄê
-43 ¥¹¥ì¥Ã¥É¥¨¥é¡¼ - (cord -T ¤ò»ÈÍѤ·¤Æ¾ÜºÙ¾ðÊó¤ò»²¾È¤·¤Æ²¼¤µ¤¤)
-44 CRAY Y-MP ¥ì¥¸¥¹¥¿¥Ñ¥ê¥Æ¥£¡¼¥¨¥é¡¼
-45 ¾ðÊóÍ×µá
-46 ÃæÃÇ(¥·¥°¥Ê¥ë)
-47 Ää»ß(¥·¥°¥Ê¥ë)
-48 ̾̂
-49 Ää»ß
-50 ·Ñ³
-51 ÃæÃÇ(ttyÆþÎÏ)
-52 Ää»ß(ttyÆþÎÏ)
-53 ÃæÃÇ(tty½ÐÎÏ)
-54 Ää»ß(tty½ÐÎÏ)
-55 ¥¦¥£¥ó¥É¥¦¾õÂÖÊѹ¹
-56 ¥¦¥£¥ó¥É¥¦¥µ¥¤¥ºÊѹ¹
-57 ÅÅÏòóÀþ¾õÂÖÊѹ¹
-58 CPU»þ´ÖÀ©¸Â¥ª¡¼¥Ð¡¼
-59 ¥Õ¥¡¥¤¥ë¥µ¥¤¥ºÀ©¸Â¥ª¡¼¥Ð¡¼
-60 ²¾ÁÛ»þ´Ö¥¢¥é¡¼¥à
-61 ¥×¥í¥Õ¥¡¥¤¥ê¥ó¥°»þ´Ö¥¢¥é¡¼¥à
-62 DIL¥·¥°¥Ê¥ë
-63 ´Æ»ë²Äǽ¥¤¥Ù¥ó¥ÈȯÀ¸
-64 ¥×¥í¥»¥¹¤ÎLWPS¤¬¥Ö¥í¥Ã¥¯¤µ¤ì¤Þ¤·¤¿
-65 ÆÃÊÌ LWP ¥·¥°¥Ê¥ë
-66 ÆÃÊÌ CPR ¥·¥°¥Ê¥ë
-67 ÆÃÊÌ CPR ¥·¥°¥Ê¥ë
-68 Â裱 ¥ê¥¢¥ë¥¿¥¤¥à¥·¥°¥Ê¥ë
-69 Â裲 ¥ê¥¢¥ë¥¿¥¤¥à¥·¥°¥Ê¥ë
-70 Â裳 ¥ê¥¢¥ë¥¿¥¤¥à¥·¥°¥Ê¥ë
-71 Â裴 ¥ê¥¢¥ë¥¿¥¤¥à¥·¥°¥Ê¥ë
-72 Â裴 ºÇ½ª¥ê¥¢¥ë¥¿¥¤¥à¥·¥°¥Ê¥ë
-73 Â裳 ºÇ½ª¥ê¥¢¥ë¥¿¥¤¥à¥·¥°¥Ê¥ë
-74 Â裲 ºÇ½ª¥ê¥¢¥ë¥¿¥¤¥à¥·¥°¥Ê¥ë
-75 ºÇ½ª¥ê¥¢¥ë¥¿¥¤¥à¥·¥°¥Ê¥ë
-76 LAN ÈóƱ´ü I/O
-77 PTY read/write ²Äǽ
-78 I/O ²ðÆþÍ×µá
-79 HFT ¥â¥Ë¥¿¡¼¥â¡¼¥ÉÉÕÍ¿
-80 HFT ¥â¥Ë¥¿¡¼¥â¡¼¥É¤Ërelinguish?¤¬É¬Í×
-81 HFT ¥µ¥¦¥ó¥É¥³¥ó¥È¥í¡¼¥ë´°Î»
-82 HFT ring buffer¤Ë¥Ç¡¼¥¿¤¢¤ê
-83 ¥×¥í¥»¥¹°Ü¹Ô
-84 Secure ¥¢¥Æ¥ó¥·¥ç¥ó¥­¡¼
-85 ºÆ¥¹¥±¥¸¥å¡¼¥ë
-86 ¥·¥°¥Ê¥ë SS$_DEBUG
-87 Í¥ÀèÅÙÊѹ¹
-88 ¿¿¥Ç¥Ã¥É¥í¥Ã¥¯¸¡½Ð
-89 ¿·¤·¤¤Ê¸»úÆþÎÏ
-90 ¥¹¥¿¥Ã¥¯À©¸Â¥ª¡¼¥Ð¡¼
-91 ̤»ÈÍÑ¥·¥°¥Ê¥ë
+1 ヌルシグナル
+2 ãƒãƒ³ã‚°ã‚¢ãƒƒãƒ—
+3 割り込ã¿
+4 中止
+5 ä¸æ­£ãªæ©Ÿæ¢°èªžã®å‘½ä»¤
+6 トレース・ブレークãƒã‚¤ãƒ³ãƒˆãƒˆãƒ©ãƒƒãƒ—
+7 アボート
+8 IOTトラップ
+9 システムクラッシュå¯èƒ½æ€§å¢—
+10 エラー終了
+11 エミュレーショントラップ
+12 演算例外
+13 強制終了
+14 ユーザーシグナル1
+15 ユーザーシグナル2
+16 セグメントエラー
+17 ãƒã‚¹ã‚¨ãƒ©ãƒ¼
+18 プログラム範囲エラー
+19 オペランド範囲エラー
+20 ä¸æ­£ã‚·ã‚¹ãƒ†ãƒ ã‚³ãƒ¼ãƒ«
+21 パイプ破壊
+22 アラームシグナル
+23 終了
+24 å­ãƒ—ロセスã®çŠ¶æ…‹å¤‰æ›´
+25 å­ãƒ—ロセス死亡
+26 Apolloé™å®šã‚¨ãƒ©ãƒ¼
+27 å­ãƒ—ロセスåœæ­¢ã‚‚ã—ãã¯çµ‚了
+28 å­ãƒ—ロセス終了
+29 é›»æºç•°å¸¸
+30 リソース消滅
+31 ブレーク (Ctrl-Break)
+32 入出力 å¯èƒ½ã‚·ã‚°ãƒŠãƒ«
+33 éžåŒæœŸ I/O (select)
+34 ソケット緊急è¦æ±‚
+35 多é‡ã‚¿ã‚¹ã‚¯wake-up
+36 多é‡ã‚¿ã‚¹ã‚¯kill
+37 FortranéžåŒæœŸI/O終了
+38 リカãƒãƒª
+39 ä¸æ­£ãªãƒ¡ãƒ¢ãƒªãƒ¼ã‚¨ãƒ©ãƒ¼
+40 CPU 時間制é™ã‚ªãƒ¼ãƒãƒ¼
+41 システムåœæ­¢ å¯èƒ½æ€§å¢—
+42 マイクロタスキング group-no wakeup フラグ設定
+43 スレッドエラー - (cord -T を使用ã—ã¦è©³ç´°æƒ…報をå‚ç…§ã—ã¦ä¸‹ã•ã„)
+44 CRAY Y-MP レジスタパリティーエラー
+45 情報è¦æ±‚
+46 中断(シグナル)
+47 åœæ­¢(シグナル)
+48 中断
+49 åœæ­¢
+50 継続
+51 中断(tty入力)
+52 åœæ­¢(tty入力)
+53 中断(tty出力)
+54 åœæ­¢(tty出力)
+55 ウィンドウ状態変更
+56 ウィンドウサイズ変更
+57 電話回線状態変更
+58 CPU時間制é™ã‚ªãƒ¼ãƒãƒ¼
+59 ファイルサイズ制é™ã‚ªãƒ¼ãƒãƒ¼
+60 仮想時間アラーム
+61 プロファイリング時間アラーム
+62 DILシグナル
+63 監視å¯èƒ½ã‚¤ãƒ™ãƒ³ãƒˆç™ºç”Ÿ
+64 プロセスã®LWPSãŒãƒ–ロックã•ã‚Œã¾ã—ãŸ
+65 特別 LWP シグナル
+66 特別 CPR シグナル
+67 特別 CPR シグナル
+68 第1 リアルタイムシグナル
+69 第2 リアルタイムシグナル
+70 第3 リアルタイムシグナル
+71 第4 リアルタイムシグナル
+72 第4 最終リアルタイムシグナル
+73 第3 最終リアルタイムシグナル
+74 第2 最終リアルタイムシグナル
+75 最終リアルタイムシグナル
+76 LAN éžåŒæœŸ I/O
+77 PTY read/write å¯èƒ½
+78 I/O 介入è¦æ±‚
+79 HFT モニターモード付与
+80 HFT モニターモードã«relinguish?ãŒå¿…è¦
+81 HFT サウンドコントロール完了
+82 HFT ring bufferã«ãƒ‡ãƒ¼ã‚¿ã‚ã‚Š
+83 プロセス移行
+84 Secure アテンションキー
+85 å†ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«
+86 シグナル SS$_DEBUG
+87 優先度変更
+88 真デッドロック検出
+89 æ–°ã—ã„文字入力
+90 スタック制é™ã‚ªãƒ¼ãƒãƒ¼
+91 未使用シグナル
diff --git a/nls/ja/set21 b/nls/ja/set21
index 9a7783ec070d..995fb0291b8e 100644
--- a/nls/ja/set21
+++ b/nls/ja/set21
@@ -1,5 +1,5 @@
-$ $tcsh: set21,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set21,v 1.3 2011/02/04 18:19:40 christos Exp $
$ tc.disc.c
$set 21
-1 ¥í¡¼¥«¥ë¥­¥ã¥é¤ò¼èÆÀ¤Ç¤­¤Þ¤»¤ó.\n
-2 ¥í¡¼¥«¥ë¥­¥ã¥é¤òÀßÄê¤Ç¤­¤Þ¤»¤ó.\n
+1 ローカルキャラをå–å¾—ã§ãã¾ã›ã‚“.\n
+2 ローカルキャラを設定ã§ãã¾ã›ã‚“.\n
diff --git a/nls/ja/set29 b/nls/ja/set29
index 9f67ef664316..003e49d81cf1 100644
--- a/nls/ja/set29
+++ b/nls/ja/set29
@@ -1,4 +1,4 @@
-$ $tcsh: set29,v 1.3 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set29,v 1.4 2011/02/04 18:19:40 christos Exp $
$ tw.help.c
$set 29
-1 %S ÍѤΥإë¥×¥Õ¥¡¥¤¥ë¤¬¤¢¤ê¤Þ¤»¤ó\n
+1 %S 用ã®ãƒ˜ãƒ«ãƒ—ファイルãŒã‚ã‚Šã¾ã›ã‚“\n
diff --git a/nls/ja/set3 b/nls/ja/set3
index cc3dc3bcb535..92f7986a63f0 100644
--- a/nls/ja/set3
+++ b/nls/ja/set3
@@ -1,124 +1,124 @@
$ $tcsh: set3,v 1.4 2001/04/26 19:07:48 kim Exp $
$ Editor function descriptions
$set 3
-1 1ʸ»úÌá¤ë
-2 ¥«¡¼¥½¥ë°ÌÃÖ¤Îʸ»ú¤òºï½ü
-3 ¸½ºß¤Î¥ï¡¼¥É¤ÎÀèƬ¤«¤é¥«¡¼¥½¥ë¤Þ¤Ç¤òºï½ü - ¥«¥Ã¥È¥Ð¥Ã¥Õ¥¡¡¼¤ËÊݸ
-4 ¹ÔƬ¤«¤é¥«¡¼¥½¥ë¤Þ¤Ç¤òºï½ü - ¥«¥Ã¥È¥Ð¥Ã¥Õ¥¡¡¼¤ËÊݸ
-5 ¸½ºß¤Î¥ï¡¼¥É¤ÎÀèƬ¤Ë°ÜÆ°
-6 ¹ÔƬ¤Ë°ÜÆ°
-7 ¥«¡¼¥½¥ë°ÌÃÖ¤«¤é¥ï¡¼¥É¤ÎËöÈø¤Þ¤Ç¤ò¥­¥ã¥Ô¥¿¥é¥¤¥º
-8 ¥«¡¼¥½¥ë°ÌÃÖ¤ÎÂçʸ»ú¾®Ê¸»ú¤òÊÑ´¹¤·¡¢1ʸ»ú°ÜÆ°(vi)
-9 ¹ÔËö¤Þ¤Ç¤òÊѹ¹(vi)
-10 ²èÌÌ¥¯¥ê¥¢¤·¤Æ¸½ºß¹Ô¤ò²èÌ̤κǾå¹Ô¤Ë
-11 ¸½ºß¤Î¥ï¡¼¥É¤òÊä´°
+1 1文字戻る
+2 カーソルä½ç½®ã®æ–‡å­—を削除
+3 ç¾åœ¨ã®ãƒ¯ãƒ¼ãƒ‰ã®å…ˆé ­ã‹ã‚‰ã‚«ãƒ¼ã‚½ãƒ«ã¾ã§ã‚’削除 - カットãƒãƒƒãƒ•ã‚¡ãƒ¼ã«ä¿å­˜
+4 行頭ã‹ã‚‰ã‚«ãƒ¼ã‚½ãƒ«ã¾ã§ã‚’削除 - カットãƒãƒƒãƒ•ã‚¡ãƒ¼ã«ä¿å­˜
+5 ç¾åœ¨ã®ãƒ¯ãƒ¼ãƒ‰ã®å…ˆé ­ã«ç§»å‹•
+6 行頭ã«ç§»å‹•
+7 カーソルä½ç½®ã‹ã‚‰ãƒ¯ãƒ¼ãƒ‰ã®æœ«å°¾ã¾ã§ã‚’キャピタライズ
+8 カーソルä½ç½®ã®å¤§æ–‡å­—å°æ–‡å­—を変æ›ã—ã€1文字移動(vi)
+9 行末ã¾ã§ã‚’変更(vi)
+10 ç”»é¢ã‚¯ãƒªã‚¢ã—ã¦ç¾åœ¨è¡Œã‚’ç”»é¢ã®æœ€ä¸Šè¡Œã«
+11 ç¾åœ¨ã®ãƒ¯ãƒ¼ãƒ‰ã‚’補完
12 Tab forward through files
13 Tab backward through files
-14 ¥×¥í¥°¥é¥à²Äǽ¤ÊÊä´°¤ò»È¤ï¤Ê¤¤¸½ºß¤Î¥ï¡¼¥É¤ÎÊä´°
-15 ¸½ºß¤Î¥ï¡¼¥É¤Î¥«¡¼¥½¥ë°ÌÃ֤ޤǤò¥³¥Ô¡¼
-16 ¥Þ¡¼¥¯°ÌÃÖ¤«¤é¥«¡¼¥½¥ë¤Þ¤Ç¤ÎÎΰè¤ò¥«¥Ã¥È¥Ð¥Ã¥Õ¥¡¡¼¤Ë¥³¥Ô¡¼
+14 プログラムå¯èƒ½ãªè£œå®Œã‚’使ã‚ãªã„ç¾åœ¨ã®ãƒ¯ãƒ¼ãƒ‰ã®è£œå®Œ
+15 ç¾åœ¨ã®ãƒ¯ãƒ¼ãƒ‰ã®ã‚«ãƒ¼ã‚½ãƒ«ä½ç½®ã¾ã§ã‚’コピー
+16 マークä½ç½®ã‹ã‚‰ã‚«ãƒ¼ã‚½ãƒ«ã¾ã§ã®é ˜åŸŸã‚’カットãƒãƒƒãƒ•ã‚¡ãƒ¼ã«ã‚³ãƒ”ー
17 Expand to preceding word for which this is a prefix
-18 ¥«¡¼¥½¥ë°ÌÃÖ¤Îʸ»ú¤òºï½ü
-19 ¥«¡¼¥½¥ë°ÌÃÖ¤Îʸ»ú¤òºï½ü¡£¶õ¹Ô¤Ç¤Ïend of file¤ò¼¨¤¹
-20 ¥«¡¼¥½¥ë°ÌÃÖ¤Îʸ»ú¤òºï½ü¡£¹ÔËö¤Ç¤ÏÊä´°¸õÊä°ìÍ÷
-21 ¥«¡¼¥½¥ë°ÌÃÖ¤Îʸ»ú¤òºï½ü¡£end of file¤òsignal¤â¤·¤¯¤ÏÊä´°¸õÊä°ìÍ÷
-22 ¥«¡¼¥½¥ë°ÌÃÖ¤«¤é¸½ºß¤Î¥ï¡¼¥É¤ÎËöÈø¤Þ¤Ç¤òºï½ü¡£¥«¥Ã¥È¥Ð¥Ã¥Õ¥¡¡¼¤ËÊݸ¡£
+18 カーソルä½ç½®ã®æ–‡å­—を削除
+19 カーソルä½ç½®ã®æ–‡å­—を削除。空行ã§ã¯end of fileを示ã™
+20 カーソルä½ç½®ã®æ–‡å­—を削除。行末ã§ã¯è£œå®Œå€™è£œä¸€è¦§
+21 カーソルä½ç½®ã®æ–‡å­—を削除。end of fileã‚’signalã‚‚ã—ãã¯è£œå®Œå€™è£œä¸€è¦§
+22 カーソルä½ç½®ã‹ã‚‰ç¾åœ¨ã®ãƒ¯ãƒ¼ãƒ‰ã®æœ«å°¾ã¾ã§ã‚’削除。カットãƒãƒƒãƒ•ã‚¡ãƒ¼ã«ä¿å­˜ã€‚
23 Adds to argument if started or enters digit
24 Digit that starts argument
-25 ¼¡¤ÎÍúÎò¹Ô¤Ë°ÜÆ°
-26 ¥«¡¼¥½¥ë°ÌÃÖ¤«¤é¸½ºß¤Î¥ï¡¼¥É¤ÎËöÈø¤Þ¤Ç¤ò¾®Ê¸»ú¤Ë¤¹¤ë
-27 ¥Õ¥¡¥¤¥ë½ªÃ¼¤òɽ¼¨
-28 ¹ÔËö¤Ë¥«¡¼¥½¥ë¤ò°ÜÆ°
-29 ¥«¡¼¥½¥ë¤È¥Þ¡¼¥¯¤òÆþ¤ìÂؤ¨¤ë
-30 ¥Õ¥¡¥¤¥ë̾¤Î¥ï¥¤¥ë¥É¥«¡¼¥É¤òŸ³«
-31 ÍúÎò¥¨¥¹¥±¥¤¥×¤òŸ³«
-32 ¹ÔÃæ¤ÎÍúÎò¥¨¥¹¥±¥¤¥×¤òŸ³«
-33 ÊÑ¿ô¤òŸ³«
-34 1ʸ»ú¿Ê¤à
-35 ¸½ºß¤Î¥ï¡¼¥ÉËö¤Þ¤Ç°ÜÆ°
-36 ¥«¡¼¥½¥ë¤ÎÁ°¤Î2ʸ»ú¤òÆþ¤ìÂؤ¨¤ë
-37 ¸½ºß¹Ô¤ÈƱ¤¸¤è¤¦¤Ë»Ï¤Þ¤ë¤â¤Î¤òÍúÎòÃ椫¤é¸å¤í¸þ¤­¤Ë¸¡º÷
-38 ¸½ºß¹Ô¤ÈƱ¤¸¤è¤¦¤Ë»Ï¤Þ¤ë¤â¤Î¤òÍúÎòÃ椫¤éÁ°¸þ¤­¤Ë¸¡º÷
-39 Á°¤Î¥³¥Þ¥ó¥É¤ÎºÇ¸å¤Î¹àÌܤòÁÞÆþ
-40 ½çÊý¸þ¥¤¥ó¥¯¥ê¥á¥ó¥¿¥ë¸¡º÷
-41 µÕÊý¸þ¥¤¥ó¥¯¥ê¥á¥ó¥¿¥ë¸¡º÷
-42 1¹Ô¥¯¥ê¥¢
-43 ¹ÔËö¤Þ¤Çºï½ü¤·¤Æ¥«¥Ã¥È¥Ð¥Ã¥Õ¥¡¡¼¤ËÊݸ
-44 ¥Þ¡¼¥¯°ÌÃÖ¤«¤é¥«¡¼¥½¥ë¤Þ¤Ç¤ÎÎΰè¤òºï½ü¤·¤Æ¥«¥Ã¥È¥Ð¥Ã¥Õ¥¡¡¼¤ËÊݸ
-45 1¹ÔÁ´ÂΤòºï½ü¤·¤Æ¥«¥Ã¥È¥Ð¥Ã¥Õ¥¡¡¼¤ËÊݸ
-46 Êä´°¸õÊä¤Î°ìÍ÷
-47 ¥×¥í¥°¥é¥à²Äǽ¤ÊÊä´°¤ò»ÈÍѤ·¤Ê¤¤Êä´°¸õÊä¤Î°ìÍ÷
-48 ¥ï¥¤¥ë¥É¥«¡¼¥É¤Ë¹çÃפ¹¤ë¥Õ¥¡¥¤¥ë̾¤Î°ìÍ÷
-49 Êä´°¸õÊä¤Î°ìÍ÷¡£¶õ¹Ô¤Î¾ì¹ç¤Ïend of file¤ò¼¨¤¹¡£
-50 Ê¿¶ÑÉé²Ù¤È¸½ºß¤Î¥×¥í¥»¥¹¤Î¾õÂÖ¤òɽ¼¨
-51 ÍúÎò¥¨¥¹¥±¥¤¥×¤òŸ³«¤·¤Æ¶õÇò¤òÁÞÆþ
-52 ¥³¥Þ¥ó¥É¼Â¹Ô
-53 ¥Ñ¥¹Ì¾¤òŸ³«(.¤ä..¤Ç»Ï¤Þ¤ë¤â¤Î¤ò½ü¤¯)
-54 ¥³¥Þ¥ó¥É¤ò¼ÂºÝ¤Î¥Ñ¥¹Ì¾¤äÊÌ̾¤ËŸ³«
-55 ÁÞÆþ¥â¡¼¥É¤«¤é¾å½ñ¤­¥â¡¼¥É¤Ø¤ÎÀÚ¤êÂؤ¨¤â¤·¤¯¤Ï¤½¤ÎµÕ
-56 ¼¡¤ËÂǤÄʸ»ú¤Î8bit¤á¤òΩ¤Æ¤ë
-57 ¼¡¤ËÂǤÄʸ»ú¤ò¹Ô¤Ë¤½¤Î¤Þ¤Þ²Ã¤¨¤ë
-58 ¤¹¤Ù¤Æ¤òºÆÉÁ²è
-59 Ää»ß¤·¤Æ¤¤¤¿¥¨¥Ç¥£¥¿¡¼¤òºÆµ¯Æ°
-60 ¸½ºß¤Î¥³¥Þ¥ó¥É¤Î¥Ø¥ë¥×¤òõ¤¹
-61 ¤³¤Îʸ»ú¤Ï¹Ô¤Ë²Ã¤¨¤é¤ì¤ë
-62 ¤³¤Îʸ»ú¤Ïʸ»ú¥·¡¼¥±¥ó¥¹¤ÎÀèƬ
-63 ¥«¡¼¥½¥ë°ÌÃÖ¤ò¥Þ¡¼¥¯¤¹¤ë
-64 ¸½ºß¤Î¥ï¡¼¥É¤ÎÄÖ¤ê¤òÄûÀµ
-65 1¹ÔÁ´ÂΤÎÄÖ¤ê¤òÄûÀµC
-66 ʸ»ú¤òcocked¥â¡¼¥É¤Çtty¤ËÁ÷¤ë
+25 次ã®å±¥æ­´è¡Œã«ç§»å‹•
+26 カーソルä½ç½®ã‹ã‚‰ç¾åœ¨ã®ãƒ¯ãƒ¼ãƒ‰ã®æœ«å°¾ã¾ã§ã‚’å°æ–‡å­—ã«ã™ã‚‹
+27 ファイル終端を表示
+28 行末ã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動
+29 カーソルã¨ãƒžãƒ¼ã‚¯ã‚’入れ替ãˆã‚‹
+30 ファイルåã®ãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã‚’展開
+31 履歴エスケイプを展開
+32 行中ã®å±¥æ­´ã‚¨ã‚¹ã‚±ã‚¤ãƒ—を展開
+33 変数を展開
+34 1文字進む
+35 ç¾åœ¨ã®ãƒ¯ãƒ¼ãƒ‰æœ«ã¾ã§ç§»å‹•
+36 カーソルã®å‰ã®2文字を入れ替ãˆã‚‹
+37 ç¾åœ¨è¡Œã¨åŒã˜ã‚ˆã†ã«å§‹ã¾ã‚‹ã‚‚ã®ã‚’履歴中ã‹ã‚‰å¾Œã‚å‘ãã«æ¤œç´¢
+38 ç¾åœ¨è¡Œã¨åŒã˜ã‚ˆã†ã«å§‹ã¾ã‚‹ã‚‚ã®ã‚’履歴中ã‹ã‚‰å‰å‘ãã«æ¤œç´¢
+39 å‰ã®ã‚³ãƒžãƒ³ãƒ‰ã®æœ€å¾Œã®é …目を挿入
+40 順方å‘インクリメンタル検索
+41 逆方å‘インクリメンタル検索
+42 1行クリア
+43 行末ã¾ã§å‰Šé™¤ã—ã¦ã‚«ãƒƒãƒˆãƒãƒƒãƒ•ã‚¡ãƒ¼ã«ä¿å­˜
+44 マークä½ç½®ã‹ã‚‰ã‚«ãƒ¼ã‚½ãƒ«ã¾ã§ã®é ˜åŸŸã‚’削除ã—ã¦ã‚«ãƒƒãƒˆãƒãƒƒãƒ•ã‚¡ãƒ¼ã«ä¿å­˜
+45 1行全体を削除ã—ã¦ã‚«ãƒƒãƒˆãƒãƒƒãƒ•ã‚¡ãƒ¼ã«ä¿å­˜
+46 補完候補ã®ä¸€è¦§
+47 プログラムå¯èƒ½ãªè£œå®Œã‚’使用ã—ãªã„補完候補ã®ä¸€è¦§
+48 ワイルドカードã«åˆè‡´ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«åã®ä¸€è¦§
+49 補完候補ã®ä¸€è¦§ã€‚空行ã®å ´åˆã¯end of fileを示ã™ã€‚
+50 å¹³å‡è² è·ã¨ç¾åœ¨ã®ãƒ—ロセスã®çŠ¶æ…‹ã‚’表示
+51 履歴エスケイプを展開ã—ã¦ç©ºç™½ã‚’挿入
+52 コマンド実行
+53 パスåを展開(.ã‚„..ã§å§‹ã¾ã‚‹ã‚‚ã®ã‚’除ã)
+54 コマンドを実際ã®ãƒ‘スåや別åã«å±•é–‹
+55 挿入モードã‹ã‚‰ä¸Šæ›¸ãモードã¸ã®åˆ‡ã‚Šæ›¿ãˆã‚‚ã—ãã¯ãã®é€†
+56 次ã«æ‰“ã¤æ–‡å­—ã®8bitã‚ã‚’ç«‹ã¦ã‚‹
+57 次ã«æ‰“ã¤æ–‡å­—ã‚’è¡Œã«ãã®ã¾ã¾åŠ ãˆã‚‹
+58 ã™ã¹ã¦ã‚’å†æç”»
+59 åœæ­¢ã—ã¦ã„ãŸã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã‚’å†èµ·å‹•
+60 ç¾åœ¨ã®ã‚³ãƒžãƒ³ãƒ‰ã®ãƒ˜ãƒ«ãƒ—を探ã™
+61 ã“ã®æ–‡å­—ã¯è¡Œã«åŠ ãˆã‚‰ã‚Œã‚‹
+62 ã“ã®æ–‡å­—ã¯æ–‡å­—シーケンスã®å…ˆé ­
+63 カーソルä½ç½®ã‚’マークã™ã‚‹
+64 ç¾åœ¨ã®ãƒ¯ãƒ¼ãƒ‰ã®ç¶´ã‚Šã‚’訂正
+65 1行全体ã®ç¶´ã‚Šã‚’訂正C
+66 文字をcockedモードã§ttyã«é€ã‚‹
67 Toggle between literal and lexical current history line
-68 ¥«¡¼¥½¥ë¤Îº¸¤Îʸ»ú¤ò1¤Ä¾®¤µ¤¤¤â¤Î¤Ë¤¹¤ë
-69 ¥«¡¼¥½¥ë¤ÎÁ°¤Î2¤Ä¤Îʸ»ú¤òÆþ¤ìÂؤ¨¤ë
-70 delayed suspendʸ»ú¤ò»î¤¹
-71 flush outputʸ»ú¤ò»î¤¹
-72 interruptʸ»ú¤ò»î¤¹
-73 quitʸ»ú¤ò»î¤¹
-74 suspendʸ»ú¤ò»î¤¹
-75 allow outputʸ»ú¤ò»î¤¹
-76 disallowʸ»ú¤ò»î¤¹
-77 ³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤Ê¤¤Ê¸»ú¤òɽ¼¨
+68 カーソルã®å·¦ã®æ–‡å­—ã‚’1ã¤å°ã•ã„ã‚‚ã®ã«ã™ã‚‹
+69 カーソルã®å‰ã®2ã¤ã®æ–‡å­—を入れ替ãˆã‚‹
+70 delayed suspend文字を試ã™
+71 flush output文字を試ã™
+72 interrupt文字を試ã™
+73 quit文字を試ã™
+74 suspend文字を試ã™
+75 allow output文字を試ã™
+76 disallow文字を試ã™
+77 割り当ã¦ã‚‰ã‚Œã¦ã„ãªã„文字を表示
78 Emacs universal argument (argument times 4)
-79 1¤ÄÁ°¤ÎÍúÎò¹Ô¤Ë°ÜÆ°
-80 ¥«¡¼¥½¥ë°ÌÃÖ¤«¤é¸½ºß¤Î¥ï¡¼¥É¤ÎËöÈø¤Þ¤Ç¤òÂçʸ»ú¤Ë¤¹¤ë
-81 ¼¡¤Î¥ï¡¼¥É¤ÎÀèƬ¤Ø°ÜÆ°(vi)
-82 ¥«¡¼¥½¥ë¤Î¸å¤í¤ØÁÞÆþ¥â¡¼¥É¤Ø°Ü¹Ô(vi)
-83 ¥«¡¼¥½¥ë°ÌÃÖ¤ËÁÞÆþ¥â¡¼¥É¤Ø°Ü¹Ô(vi)
-84 ¥«¡¼¥½¥ë°ÌÃÖ¤ÎÂçʸ»ú¾®Ê¸»ú¤òÊÑ´¹¤·¡¢1ʸ»ú¿Ê¤à(vi)
+79 1ã¤å‰ã®å±¥æ­´è¡Œã«ç§»å‹•
+80 カーソルä½ç½®ã‹ã‚‰ç¾åœ¨ã®ãƒ¯ãƒ¼ãƒ‰ã®æœ«å°¾ã¾ã§ã‚’大文字ã«ã™ã‚‹
+81 次ã®ãƒ¯ãƒ¼ãƒ‰ã®å…ˆé ­ã¸ç§»å‹•(vi)
+82 カーソルã®å¾Œã‚ã¸æŒ¿å…¥ãƒ¢ãƒ¼ãƒ‰ã¸ç§»è¡Œ(vi)
+83 カーソルä½ç½®ã«æŒ¿å…¥ãƒ¢ãƒ¼ãƒ‰ã¸ç§»è¡Œ(vi)
+84 カーソルä½ç½®ã®å¤§æ–‡å­—å°æ–‡å­—を変æ›ã—ã€1文字進む(vi)
85 Vi change prefix command
-86 ¹ÔËö¤Þ¤Ç¤òÊѹ¹(vi)
-87 ¥³¥Þ¥ó¥É¥â¡¼¥É¤Ø°Ü¹Ô (¥­¡¼³ä¤êÅö¤ÆÊѹ¹)(vi)
-88 ¥³¥Þ¥ó¥É¥â¡¼¥É¤Ç¤Î¸½ºß¤Î¥ï¡¼¥É¤ÎÊä´°(vi)
-89 Á°¤Îʸ»ú¤Ë°ÜÆ°(¥Ð¥Ã¥¯¥¹¥Ú¥¤¥¹)(vi)
+86 行末ã¾ã§ã‚’変更(vi)
+87 コマンドモードã¸ç§»è¡Œ (キー割り当ã¦å¤‰æ›´)(vi)
+88 コマンドモードã§ã®ç¾åœ¨ã®ãƒ¯ãƒ¼ãƒ‰ã®è£œå®Œ(vi)
+89 å‰ã®æ–‡å­—ã«ç§»å‹•(ãƒãƒƒã‚¯ã‚¹ãƒšã‚¤ã‚¹)(vi)
90 Vi delete prefix command
-91 ¸½ºß¤Î¥ï¡¼¥É´Ö¤Î¶õÇò¤ÎËöÈø¤Ë°ÜÆ°(vi)
-92 ¸½ºß¤Î¥ï¡¼¥É¤ÎËöÈø¤Ë°ÜÆ°(vi)
-93 µÕÊý¸þ¤Î»ØÄꤵ¤ì¤¿Ê¸»ú¤Ë°ÜÆ°(vi)
-94 ½çÊýË¡¤Î»ØÄꤵ¤ì¤¿Ê¸»ú¤Ë°ÜÆ°(vi)
-95 µÕÊý¸þ¤Î»ØÄꤵ¤ì¤¿Ê¸»ú¤ÎľÁ°¤Þ¤Ç°ÜÆ°(vi)
-96 ½çÊý¸þ¤Î»ØÄꤵ¤ì¤¿Ê¸»ú¤ÎľÁ°¤Þ¤Ç°ÜÆ°(vi)
-97 vi¤ÎÁÞÆþ¥â¡¼¥É¤Ë°Ü¹Ô
-98 ¹ÔƬ¤Çvi¤ÎÁÞÆþ¥â¡¼¥É¤Ë°Ü¹Ô
-99 ¸½ºß¤Î1ʸ»ú¸¡º÷¤òƱ¤¸Êý¸þ¤Ë·«¤êÊÖ¤¹(vi)
-100 ¸½ºß¤Î1ʸ»ú¸¡º÷¤òÈ¿ÂÐÊý¸þ¤Ë·«¤êÊÖ¤¹(vi)
-101 ¸½ºß¤Î¸¡º÷¤òƱ¤¸Êý¸þ¤Ë·«¤êÊÖ¤¹(vi)
-102 ¸½ºß¤Î¸¡º÷¤òÈ¿ÂÐÊý¸þ¤Ë·«¤êÊÖ¤¹(vi)
-103 °ÌÃÖ¤Î1ʸ»ú¤ò¼¡¤ËÂǤÄ1ʸ»ú¤ÈÃÖ´¹(vi)
-104 ÃÖ´¹¥â¡¼¥Éreplace mode(vi)
-105 µÕÊý¸þÍúÎò¸¡º÷(vi)
-106 ½çÊý¸þÍúÎò¸¡º÷(vi)
-107 ¥«¡¼¥½¥ë°ÌÃÖ¤Îʸ»ú¤òÃÖ´¹¤·¤ÆÁÞÆþ¥â¡¼¥É¤Ë°Ü¹Ô(vi)
-108 1¹ÔÁ´ÃÖ´¹(vi)
-109 Á°¤Î¥ï¡¼¥É¤Ø°ÜÆ°(vi)
-110 ¼¡¤Î¥ï¡¼¥É¤Ø°Ü¹Ô(vi)
-111 ľÁ°¤ÎÊѹ¹¤ò¼è¤ê¾Ã¤¹(vi)
-112 ¹Ô¤ÎÀèƬ¤Ø°ÜÆ°(vi)
+91 ç¾åœ¨ã®ãƒ¯ãƒ¼ãƒ‰é–“ã®ç©ºç™½ã®æœ«å°¾ã«ç§»å‹•(vi)
+92 ç¾åœ¨ã®ãƒ¯ãƒ¼ãƒ‰ã®æœ«å°¾ã«ç§»å‹•(vi)
+93 逆方å‘ã®æŒ‡å®šã•ã‚ŒãŸæ–‡å­—ã«ç§»å‹•(vi)
+94 順方法ã®æŒ‡å®šã•ã‚ŒãŸæ–‡å­—ã«ç§»å‹•(vi)
+95 逆方å‘ã®æŒ‡å®šã•ã‚ŒãŸæ–‡å­—ã®ç›´å‰ã¾ã§ç§»å‹•(vi)
+96 順方å‘ã®æŒ‡å®šã•ã‚ŒãŸæ–‡å­—ã®ç›´å‰ã¾ã§ç§»å‹•(vi)
+97 viã®æŒ¿å…¥ãƒ¢ãƒ¼ãƒ‰ã«ç§»è¡Œ
+98 行頭ã§viã®æŒ¿å…¥ãƒ¢ãƒ¼ãƒ‰ã«ç§»è¡Œ
+99 ç¾åœ¨ã®1文字検索をåŒã˜æ–¹å‘ã«ç¹°ã‚Šè¿”ã™(vi)
+100 ç¾åœ¨ã®1文字検索をå対方å‘ã«ç¹°ã‚Šè¿”ã™(vi)
+101 ç¾åœ¨ã®æ¤œç´¢ã‚’åŒã˜æ–¹å‘ã«ç¹°ã‚Šè¿”ã™(vi)
+102 ç¾åœ¨ã®æ¤œç´¢ã‚’å対方å‘ã«ç¹°ã‚Šè¿”ã™(vi)
+103 ä½ç½®ã®1文字を次ã«æ‰“ã¤1文字ã¨ç½®æ›(vi)
+104 ç½®æ›ãƒ¢ãƒ¼ãƒ‰replace mode(vi)
+105 逆方å‘履歴検索(vi)
+106 順方å‘履歴検索(vi)
+107 カーソルä½ç½®ã®æ–‡å­—ã‚’ç½®æ›ã—ã¦æŒ¿å…¥ãƒ¢ãƒ¼ãƒ‰ã«ç§»è¡Œ(vi)
+108 1行全置æ›(vi)
+109 å‰ã®ãƒ¯ãƒ¼ãƒ‰ã¸ç§»å‹•(vi)
+110 次ã®ãƒ¯ãƒ¼ãƒ‰ã¸ç§»è¡Œ(vi)
+111 ç›´å‰ã®å¤‰æ›´ã‚’å–り消ã™(vi)
+112 è¡Œã®å…ˆé ­ã¸ç§»å‹•(vi)
113 Perform which of current command
-114 ¥«¥Ã¥È¥Ð¥Ã¥Õ¥¡¡¼¤ÎÆâÍƤò¥«¡¼¥½¥ë°ÌÃ֤ˎ¤êÉÕ¤±¤ë
+114 カットãƒãƒƒãƒ•ã‚¡ãƒ¼ã®å†…容をカーソルä½ç½®ã«è²¼ã‚Šä»˜ã‘ã‚‹
115 Replace just-yanked text with yank from earlier kill
-116 (WIN32¤Î¤ß) ¥«¥Ã¥È¥Ð¥Ã¥Õ¥¡¡¼¤ÎÆâÍƤò¥·¥¹¥Æ¥à¤Î¥¯¥ê¥Ã¥×¥Ü¡¼¥É¤Ë¥³¥Ô¡¼
-117 (WIN32¤Î¤ß) ¥¯¥ê¥Ã¥×¥Ü¡¼¥É¤ÎÆâÍƤò¥«¡¼¥½¥ë°ÌÃ֤ˎ¤êÉÕ¤±
-118 (WIN32¤Î¤ß) ¼¡¤Î¥ï¡¼¥ÉÃæ¤Î'/'¤ò¤¹¤Ù¤Æ'\\\\'¤ËÊÑ´¹
-119 (WIN32¤Î¤ß) Á°¤Î¥ï¡¼¥ÉÃæ¤Î'/'¤ò¤¹¤Ù¤Æ'\\\\'¤ËÊÑ´¹
-120 (WIN32¤Î¤ß) Page visible console window up
-121 (WIN32¤Î¤ß) Page visible console window down
+116 (WIN32ã®ã¿) カットãƒãƒƒãƒ•ã‚¡ãƒ¼ã®å†…容をシステムã®ã‚¯ãƒªãƒƒãƒ—ボードã«ã‚³ãƒ”ー
+117 (WIN32ã®ã¿) クリップボードã®å†…容をカーソルä½ç½®ã«è²¼ã‚Šä»˜ã‘
+118 (WIN32ã®ã¿) 次ã®ãƒ¯ãƒ¼ãƒ‰ä¸­ã®'/'ã‚’ã™ã¹ã¦'\\\\'ã«å¤‰æ›
+119 (WIN32ã®ã¿) å‰ã®ãƒ¯ãƒ¼ãƒ‰ä¸­ã®'/'ã‚’ã™ã¹ã¦'\\\\'ã«å¤‰æ›
+120 (WIN32ã®ã¿) Page visible console window up
+121 (WIN32ã®ã¿) Page visible console window down
diff --git a/nls/ja/set30 b/nls/ja/set30
index d48bdc30a166..ffea304e6000 100644
--- a/nls/ja/set30
+++ b/nls/ja/set30
@@ -1,16 +1,16 @@
-$ $tcsh: set30,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set30,v 1.3 2011/02/04 18:19:40 christos Exp $
$ tw.parse.c
$set 30
-1 ¥³¥Þ¥ó¥É³«»Ï %d\n
-2 ´°Î» %d
-3 ´°Î» %d %S\n
-4 %s: ÆâÉô¥Þ¥Ã¥Á¥¨¥é¡¼.\n
+1 コマンド開始 %d\n
+2 完了 %d
+3 完了 %d %S\n
+4 %s: 内部マッãƒã‚¨ãƒ©ãƒ¼.\n
5 items
6 rows
-7 %d %s¤¢¤ê¤Þ¤¹. ¥ê¥¹¥È½ÐÎϤò¹Ô¤¤¤Þ¤¹¤«? [n/y]
-8 ɽ¼¨ = %d\n
-9 \ntcsh ÆâÉô¥¨¥é¡¼: ²¿¤òõ¤·¤Æ¤¤¤ë¤«Ê¬¤«¤é¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿!\n
-10 ¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó
-11 ¸«¤Ä¤«¤ê¤Þ¤»¤ó
-12 Æɤ߹þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó
+7 %d %sã‚ã‚Šã¾ã™. リスト出力を行ã„ã¾ã™ã‹? [n/y]
+8 表示 = %d\n
+9 \ntcsh 内部エラー: 何を探ã—ã¦ã„ã‚‹ã‹åˆ†ã‹ã‚‰ãªããªã£ã¦ã—ã¾ã£ãŸ!\n
+10 ディレクトリã§ã¯ã‚ã‚Šã¾ã›ã‚“
+11 見ã¤ã‹ã‚Šã¾ã›ã‚“
+12 読ã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã›ã‚“
13 yY
diff --git a/nls/ja/set4 b/nls/ja/set4
index 3743178a474e..718952f09ee2 100644
--- a/nls/ja/set4
+++ b/nls/ja/set4
@@ -1,45 +1,45 @@
$ $tcsh: set4,v 1.2 1995/03/19 18:07:15 christos Exp $
$ Termcap strings
$set 4
-1 ¶õ¹ÔÁÞÆþ
-2 ²ÄÄ°¥Ù¥ë
-3 ²èÌÌËö¤Þ¤Ç¾Ãµî
-4 ¹ÔËö¤Þ¤Ç¾Ãµî
-5 ¥«¡¼¥½¥ë¿åÊ¿°ÜÆ°
-6 ²èÌ̾õî
-7 1ʸ»úºï½ü
-8 1¹Ôºï½ü
-9 ºï½ü¥â¡¼¥É³«»Ï
-10 ºï½ü¥â¡¼¥É½ªÎ»
-11 ÁÞÆþ¥â¡¼¥É½ªÎ»
-12 ¥¹¥Æ¡¼¥¿¥¹¹Ô¤«¤é¥«¡¼¥½¥ë¤òÉüµ¢
-13 ¥«¡¼¥½¥ë¤ò¥Û¡¼¥à°ÌÃÖ¤Ø
-14 ʸ»úÁÞÆþ
-15 ÁÞÆþ¥â¡¼¥É³«»Ï
-16 ¥Ñ¥Ç¥£¥ó¥°ÁÞÆþ
-17 ¥«¡¼¥½¥ë²¼°ÜÆ°
-18 ¥«¡¼¥½¥ëº¸°ÜÆ°
-19 ¥«¡¼¥½¥ë±¦°ÜÆ°
-20 ¥«¡¼¥½¥ë¾å°ÜÆ°
-21 ÂÀ»ú³«»Ï
-22 °À­½ªÎ»
-23 ʬ³ä¶Ø»ß¶õÇò
-24 ¶¯Ä´½ªÎ»
-25 ¶¯Ä´³«»Ï
-26 ¥«¡¼¥½¥ë¤ò¥¹¥Æ¡¼¥¿¥¹¹Ô¤Ø
-27 ¥«¡¼¥½¥ë¤ò1¤Ä¾å¤Ø
-28 ²¼Àþ³«»Ï
-29 ²¼Àþ½ªÎ»
-30 ²Ä»ë¥Ù¥ë
-31 Ê£¿ôʸ»úºï½ü
-32 ¥«¡¼¥½¥ë²¼°ÜÆ°(multiple)
-33 Ê£¿ôʸ»úÁÞÆþ
-34 ¥«¡¼¥½¥ëjº¸°ÜÆ°(multiple)
-35 ¥«¡¼¥½¥ë±¦°ÜÆ°(multiple)
-36 ¥«¡¼¥½¥ë¾å°ÜÆ°(multiple)
-37 ¼«Æ°¥Þ¡¼¥¸¥ó²Äǽ
-38 ʪÍý¥¿¥Ö»ÈÍѲÄǽ
-39 ¹Ô¿ô
-40 ·å¿ô
-41 ¥á¥¿¥­¡¼¤¢¤ê
-42 ±¦¥Þ¡¼¥¸¥ó¤ò̵»ë¤·¤¿²þ¹Ô
+1 空行挿入
+2 å¯è´ãƒ™ãƒ«
+3 ç”»é¢æœ«ã¾ã§æ¶ˆåŽ»
+4 行末ã¾ã§æ¶ˆåŽ»
+5 カーソル水平移動
+6 ç”»é¢æ¶ˆåŽ»
+7 1文字削除
+8 1行削除
+9 削除モード開始
+10 削除モード終了
+11 挿入モード終了
+12 ステータス行ã‹ã‚‰ã‚«ãƒ¼ã‚½ãƒ«ã‚’復帰
+13 カーソルをホームä½ç½®ã¸
+14 文字挿入
+15 挿入モード開始
+16 パディング挿入
+17 カーソル下移動
+18 カーソル左移動
+19 カーソルå³ç§»å‹•
+20 カーソル上移動
+21 太字開始
+22 属性終了
+23 分割ç¦æ­¢ç©ºç™½
+24 強調終了
+25 強調開始
+26 カーソルをステータス行ã¸
+27 カーソルを1ã¤ä¸Šã¸
+28 下線開始
+29 下線終了
+30 å¯è¦–ベル
+31 複数文字削除
+32 カーソル下移動(multiple)
+33 複数文字挿入
+34 カーソルj左移動(multiple)
+35 カーソルå³ç§»å‹•(multiple)
+36 カーソル上移動(multiple)
+37 自動マージンå¯èƒ½
+38 物ç†ã‚¿ãƒ–使用å¯èƒ½
+39 行数
+40 æ¡æ•°
+41 メタキーã‚ã‚Š
+42 å³ãƒžãƒ¼ã‚¸ãƒ³ã‚’無視ã—ãŸæ”¹è¡Œ
diff --git a/nls/ja/set5 b/nls/ja/set5
index 924181848d79..7a65e3fd912d 100644
--- a/nls/ja/set5
+++ b/nls/ja/set5
@@ -1,4 +1,4 @@
-$ $tcsh: set5,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set5,v 1.3 2011/02/04 18:19:40 christos Exp $
$ ed.chared.c
$set 5
-1 ¥·¥¹¥Æ¥àÉé²Ùɽ¼¨¤Ï»ÈÍѤǤ­¤Þ¤»¤ó\n
+1 システム負è·è¡¨ç¤ºã¯ä½¿ç”¨ã§ãã¾ã›ã‚“\n
diff --git a/nls/ja/set6 b/nls/ja/set6
index 203f6644b39f..d390d6558048 100644
--- a/nls/ja/set6
+++ b/nls/ja/set6
@@ -1,11 +1,11 @@
-$ $tcsh: set6,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set6,v 1.3 2011/02/04 18:19:40 christos Exp $
$ ed.inputl.c
$set 6
-1 ¥¨¥é¡¼: ÉÔÀµ¤Ê¥­¡¼¤«¤é¤Î¥³¥Þ¥ó¥É 0%o\r\n
-2 ¤Ï¤¤\n
-3 ÊÔ½¸\n
-4 ̾ȧ\n
-5 ¤¤¤¤¤¨\n
-6 °ìÃפ·¤¿¥³¥Þ¥ó¥É¤¬¤¢¤ê¤Þ¤»¤ó\n
-7 Û£Ëæ¤Ê¥³¥Þ¥ó¥É¤Ç¤¹\n
-8 *** ¥¨¥Ç¥£¥¿¡¼¤ÎÃ×̿Ū¥¨¥é¡¼ ***\r\n\n
+1 エラー: ä¸æ­£ãªã‚­ãƒ¼ã‹ã‚‰ã®ã‚³ãƒžãƒ³ãƒ‰ 0%o\r\n
+2 ã¯ã„\n
+3 編集\n
+4 中止\n
+5 ã„ã„ãˆ\n
+6 一致ã—ãŸã‚³ãƒžãƒ³ãƒ‰ãŒã‚ã‚Šã¾ã›ã‚“\n
+7 曖昧ãªã‚³ãƒžãƒ³ãƒ‰ã§ã™\n
+8 *** エディターã®è‡´å‘½çš„エラー ***\r\n\n
diff --git a/nls/ja/set7 b/nls/ja/set7
index 911ad750d964..915942ad3204 100644
--- a/nls/ja/set7
+++ b/nls/ja/set7
@@ -1,30 +1,30 @@
-$ $tcsh: set7,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set7,v 1.3 2011/02/04 18:19:40 christos Exp $
$ ed.screen.c
$set 7
-1 \n\tTcsh ¤Î¿ä¬¤Ç¤Ï¡¢¤¢¤Ê¤¿¤ÎüËö¤Ï\n
-2 \t°Ê²¼¤ÎÆÃÀ­¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹:\n\n
-3 \t%d ·å %d ¹Ô\n
-4 \tmeta ¥­¡¼¤ò%s\n
-5 »ý¤Ã¤Æ¤¤¤Þ¤¹
-6 »ý¤Ã¤Æ¤¤¤Þ¤»¤ó
-7 \ttab ¤ò»È¤¦%s\n
-8 ¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó
-9 \t¼«Æ°¥Þ¡¼¥¸¥ó¤ò%s\n
-10 »ý¤Ã¤Æ¤¤¤Þ¤¹
-11 »ý¤Ã¤Æ¤¤¤Þ¤»¤ó
-12 \t¥Þ¥¸¥Ã¥¯¥Þ¡¼¥¸¥ó¤ò%s\n
-13 (̤ÄêµÁ)
-14 ¤¢¤ë
-15 ¤Ê¤¤
-16 ¥¨¥é¡¼: ºï½ü¤Ç¤­¤Þ¤»¤ó\r\n
-17 DeleteChars: ¤¢¤ê¤¨¤Ê¤¤¿ôÃͤǤ¹: %d\r\n
-18 ¥¨¥é¡¼: ÁÞÆþ¤Ç¤­¤Þ¤»¤ó\r\n
-19 StartInsert: ¤¢¤ê¤¨¤Ê¤¤¿ôÃͤǤ¹: %d\r\n
-20 %s: /etc/termcap ¤ò³«¤¯¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó.\n
-21 %s: ¥¿¡¼¥ß¥Ê¥ë¥¿¥¤¥× "%s" ¤ÏÅÐÏ¿¤µ¤ì¤Æ¤¤¤Þ¤»¤ó\n
-22 %s: ¥À¥àüËö¤ÎÀßÄê¤ò»È¤¤¤Þ¤¹\n
-23 %s: ·Ù¹ð: ¤¢¤Ê¤¿¤ÎüËö¤Ï move up ¤Ç¤­¤Þ¤»¤ó.\n
-24 Ť¤¹Ô¤Î¤¿¤áÊÔ½¸¤¬¤ª¤«¤·¤¯¤Ê¤Ã¤Æ¤¤¤Þ¤¹.\n
-25 ¹ÔËö¤Þ¤Ç¾Ãµî¤¹¤ë¤¿¤á¤Îµ¡Ç½¤¬¤¢¤ê¤Þ¤»¤ó.\n
-26 ʸ»úºï½ü¤Îµ¡Ç½¤¬¤¢¤ê¤Þ¤»¤ó.\n
-27 ʸ»úÁÞÆþ¤Îµ¡Ç½¤¬¤¢¤ê¤Þ¤»¤ó.\n
+1 \n\tTcsh ã®æŽ¨æ¸¬ã§ã¯ã€ã‚ãªãŸã®ç«¯æœ«ã¯\n
+2 \t以下ã®ç‰¹æ€§ã‚’æŒã£ã¦ã„ã¾ã™:\n\n
+3 \t%d æ¡ %d è¡Œ\n
+4 \tmeta キーを%s\n
+5 æŒã£ã¦ã„ã¾ã™
+6 æŒã£ã¦ã„ã¾ã›ã‚“
+7 \ttab を使ã†%s\n
+8 ã“ã¨ãŒã§ãã¾ã›ã‚“
+9 \t自動マージンを%s\n
+10 æŒã£ã¦ã„ã¾ã™
+11 æŒã£ã¦ã„ã¾ã›ã‚“
+12 \tマジックマージンを%s\n
+13 (未定義)
+14 ã‚ã‚‹
+15 ãªã„
+16 エラー: 削除ã§ãã¾ã›ã‚“\r\n
+17 DeleteChars: ã‚ã‚Šãˆãªã„数値ã§ã™: %d\r\n
+18 エラー: 挿入ã§ãã¾ã›ã‚“\r\n
+19 StartInsert: ã‚ã‚Šãˆãªã„数値ã§ã™: %d\r\n
+20 %s: /etc/termcap ã‚’é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“.\n
+21 %s: ターミナルタイプ "%s" ã¯ç™»éŒ²ã•ã‚Œã¦ã„ã¾ã›ã‚“\n
+22 %s: ダム端末ã®è¨­å®šã‚’使ã„ã¾ã™\n
+23 %s: 警告: ã‚ãªãŸã®ç«¯æœ«ã¯ move up ã§ãã¾ã›ã‚“.\n
+24 é•·ã„è¡Œã®ãŸã‚編集ãŒãŠã‹ã—ããªã£ã¦ã„ã¾ã™.\n
+25 行末ã¾ã§æ¶ˆåŽ»ã™ã‚‹ãŸã‚ã®æ©Ÿèƒ½ãŒã‚ã‚Šã¾ã›ã‚“.\n
+26 文字削除ã®æ©Ÿèƒ½ãŒã‚ã‚Šã¾ã›ã‚“.\n
+27 文字挿入ã®æ©Ÿèƒ½ãŒã‚ã‚Šã¾ã›ã‚“.\n
diff --git a/nls/ja/set8 b/nls/ja/set8
index f979f4e683a5..bc19a165832c 100644
--- a/nls/ja/set8
+++ b/nls/ja/set8
@@ -1,5 +1,5 @@
-$ $tcsh: set8,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set8,v 1.3 2011/02/04 18:19:40 christos Exp $
$ ed.term.c
$set 8
-1 ÉÔÌÀ¤Êswitch
-2 ÉÔÀµ¤Ê¥¢¡¼¥®¥å¥á¥ó¥È¤Ç¤¹
+1 ä¸æ˜Žãªswitch
+2 ä¸æ­£ãªã‚¢ãƒ¼ã‚®ãƒ¥ãƒ¡ãƒ³ãƒˆã§ã™
diff --git a/nls/pl/charset b/nls/pl/charset
index 9932e07c20f8..81f1b6669c79 100644
--- a/nls/pl/charset
+++ b/nls/pl/charset
@@ -1,3 +1,3 @@
-$ codeset=ISO-8859-2
+$ codeset=UTF-8
$set 255
-1 ISO-8859-2
+1 UTF-8
diff --git a/nls/pl/set1 b/nls/pl/set1
index d9106f57a5dc..19b107bee6fc 100644
--- a/nls/pl/set1
+++ b/nls/pl/set1
@@ -1,140 +1,140 @@
$ $tcsh: set1,v 1.5 1998/06/27 12:27:55 christos Exp $
$ Error messages
$set 1
-1 B³±d sk³adni
+1 Błąd składni
2 %s jest niedozwolone
-3 Zbyt d³ugie s³owo
-4 $< zbyt d³uga linia
+3 Zbyt długie słowo
+4 $< zbyt długa linia
5 Brak pliku dla $0
6 Niekompletny modyfikator []
-7 ekspansja $ musi zakoñczyæ siê przed ]
-8 B³±d : modyfikator w $ (%c)
-9 B³±d subskrypcji
-10 ¬le stworzona liczba
-11 Brak s³ów
+7 ekspansja $ musi zakończyć się przed ]
+8 BÅ‚Ä…d : modyfikator w $ (%c)
+9 BÅ‚Ä…d subskrypcji
+10 Źle stworzona liczba
+11 Brak słów
12 Brakuje nazwy pliku
-13 Wewnêtrzny b³±d podczas dopasowywania
+13 Wewnętrzny błąd podczas dopasowywania
14 Nie znaleziono polecenia
-15 Zbyt ma³o argumentów
-16 Zbyt du¿o argumentów
-17 Zbyt niebezpiecznie aliasowaæ
+15 Zbyt mało argumentów
+16 Zbyt dużo argumentów
+17 Zbyt niebezpiecznie aliasować
18 Pusty if
-19 Nieprawid³owy then
-20 S³owa nie s± w nawiasach
-21 %s nie zosta³ znaleziony
-22 Nieprawid³owa maska
+19 Nieprawidłowy then
+20 SÅ‚owa nie sÄ… w nawiasach
+21 %s nie został znaleziony
+22 Nieprawidłowa maska
23 Nie ma takiego limitu
-24 Zbyt du¿y argument
-25 Nieprawid³owy, lub nieznany wspó³czynnik skali
+24 Zbyt duży argument
+25 Nieprawidłowy, lub nieznany współczynnik skali
26 Niezdefiniowana zmienna
-27 Stos katalogów nie jest a¿ tak g³êboki
-28 Z³y numer sygna³u
-29 Nieznany sygna³; kill -l poka¿e znane sygna³y
-30 Nazwa zmiennej musi zaczynaæ siê od litery
-31 Nazwa zmiennej jest zbyt d³uga
-32 Nazwa zmiennej musi zawieraæ znaki alfanumeryczne
-33 Brak kontroli pracami w tej pow³oce
-34 B³±d sk³adni wyra¿enia
+27 Stos katalogów nie jest aż tak głęboki
+28 Zły numer sygnału
+29 Nieznany sygnał; kill -l pokaże znane sygnały
+30 Nazwa zmiennej musi zaczynać się od litery
+31 Nazwa zmiennej jest zbyt długa
+32 Nazwa zmiennej musi zawierać znaki alfanumeryczne
+33 Brak kontroli pracami w tej powłoce
+34 Błąd składni wyrażenia
35 Brak katalogu domowego
-36 Nie mogê przej¶æ do katalogu domowego
-37 Nieprawid³owe puste polecenie
-38 Wyra¿enie pozbawione przyporz±dkowania
+36 Nie mogę przejść do katalogu domowego
+37 Nieprawidłowe puste polecenie
+38 Wyrażenie pozbawione przyporządkowania
39 Nieznany operator
40 Niejasne
41 %s: Plik istnieje
-42 Argument dla -c zakoñczony jest backslashem
+42 Argument dla -c zakończony jest backslashem
43 Przerwano
-44 Za du¿a warto¶æ przyporz±dkowania
-45 Przepe³nienie linii
+44 Za duża wartość przyporządkowania
+45 Przepełnienie linii
46 Brak takiej pracy
-47 Z terminala nie mogê
+47 Z terminala nie mogÄ™
48 Nie w while/foreach
-49 Brak innych procesów
-50 Brak pasuj±cych
+49 Brak innych procesów
+50 Brak pasujÄ…cych
51 Brakuje %c
52 Niedopasowany %c
-53 Brak pamiêci
-54 Nie mogê stworzyæ potoku
+53 Brak pamięci
+54 Nie mogę stworzyć potoku
55 %s: %s
56 %s
-57 U¿ycie: jobs [ -l ]
-58 Argumentami powinny byæ identyfikatory prac lub procesów
+57 Użycie: jobs [ -l ]
+58 Argumentami powinny być identyfikatory prac lub procesów
59 Nie ma aktualnej pracy
60 Brak poprzednich prac
-61 Brak prac pasuj±cych do wzorca
-62 Zagnie¿d¿enie fork > %d; prawdopodobnie pêtla `...`
-63 Brak kontroli pracami w podpow³okach
-64 B³±d synchronizacji: Proces %d nie zosta³ znaleziony
-65 %sIstniej± u¶pione prace
-66 %sIstniej± zatrzymane prace
-67 Brak innych katalogów
-68 Stos katalogów jest pusty
-69 Z³y katalog
-70 U¿ycie: %s [-%s]%s
+61 Brak prac pasujÄ…cych do wzorca
+62 Zagnieżdżenie fork > %d; prawdopodobnie pętla `...`
+63 Brak kontroli pracami w podpowłokach
+64 Błąd synchronizacji: Proces %d nie został znaleziony
+65 %sIstnieją uśpione prace
+66 %sIstniejÄ… zatrzymane prace
+67 Brak innych katalogów
+68 Stos katalogów jest pusty
+69 ZÅ‚y katalog
+70 Użycie: %s [-%s]%s
71 Brak operandu dla flagi -h
-72 To nie jest pow³oka logowania
+72 To nie jest powłoka logowania
73 Dzielenie przez 0
74 Modula przez 0
-75 Z³a skala; czy my¶la³e¶ o "%s"?
-76 Nie mo¿na zatrzymaæ pow³oki logowania (na razie)
-77 Nieznany u¿ytkownik: %s
+75 Zła skala; czy myślałeś o "%s"?
+76 Nie można zatrzymać powłoki logowania (na razie)
+77 Nieznany użytkownik: %s
78 Zmienna $home nie jest ustawiona
-79 U¿ycie: history [-%s] [# liczba zdarzeñ]
-80 $, ! i < s± niedozwolone z $#, lub $?
+79 Użycie: history [-%s] [# liczba zdarzeń]
+80 $, ! i < sÄ… niedozwolone z $#, lub $?
81 Znak nowej linii w nazwie zmiennej
82 * jest zabronione z $# i $?
-83 $?<cyfra> lub $#<cyfra> s± zabronione
+83 $?<cyfra> lub $#<cyfra> sÄ… zabronione
84 Nielegalna nazwa zmiennej
85 Znak nowej linii w indeksie zmiennych
-86 Przepe³nienie bufora ekspansji
-87 S³adnia zmiennej
-88 Z³a forma !
+86 Przepełnienie bufora ekspansji
+87 SÅ‚adnia zmiennej
+88 ZÅ‚a forma !
89 Brak poprzedniego dopasowania
-90 Z³e dopasowanie
+90 ZÅ‚e dopasowanie
91 No previous left hand side
92 Right hand side too long
-93 Z³y modyfikator ! : %c
-94 Modyfikator zawiód³
-95 Przepe³nienie bufora dopasowania
-96 Z³y ! selektor argumentów
+93 ZÅ‚y modyfikator ! : %c
+94 Modyfikator zawiódł
+95 Przepełnienie bufora dopasowania
+96 Zły ! selektor argumentów
97 Brak poprzedniego wyszukiwania
-98 %s: Zdarzenie nie zosta³o znalezione
+98 %s: Zdarzenie nie zostało znalezione
99 Zbyt wiele )
100 Zbyt wiele (
-101 ¬le wstawiony (
+101 Źle wstawiony (
102 Brakuje nazwy dla przekierowania
-103 Niejasne przekierowanie wyj¶cia
-104 Nie mo¿na << wewn±trz ()
-105 Niejasne przekierowanie wej¶cia
-106 ¬le wstawione ()
-107 Zapêtlenie siê aliasów
-108 Zmienna $watch nie zosta³a ustawiona
+103 Niejasne przekierowanie wyjścia
+104 Nie można << wewnątrz ()
+105 Niejasne przekierowanie wejścia
+106 Źle wstawione ()
+107 Zapętlenie się aliasów
+108 Zmienna $watch nie została ustawiona
109 Brak zaplanowanych prac
-110 U¿ycie: sched -<item#>.\nU¿ycie: sched [+]hh:mm <polecenie>
-111 Nie ma a¿ tylu zaplanowanych prac
+110 Użycie: sched -<item#>.\nUżycie: sched [+]hh:mm <polecenie>
+111 Nie ma aż tylu zaplanowanych prac
112 Brak programu do uruchomienia
-113 Nieprawid³owy czas dla pracy
+113 Nieprawidłowy czas dla pracy
114 Czas relatywny jest sprzeczny z am/pm
-115 Brak miejsc w ³añcuchu termcap
-116 U¿ycie: settc %s [yes|no]
-117 Nieznana zdolno¶æ `%s'
+115 Brak miejsc w łańcuchu termcap
+116 Użycie: settc %s [yes|no]
+117 Nieznana zdolność `%s'
118 Nieznany parametr termcap `%%%c'
-119 Zbyt wiele argumentów dla `%s' (%d)
+119 Zbyt wiele argumentów dla `%s' (%d)
120 `%s' requires %d arguments
-121 U¿ycie: echotc [-v|-s] [<zdolno¶æ> [<argumenty>]]
-122 %s: %s. Nieprawid³owa architektura
-123 !# Zapêtlenie siê historii
-124 Zniekszta³cony zapytanie na temat pliku
-125 Przepe³nienie selektora
-126 Nieznana opcja: `-%s'\nU¿ycie: %s [ -bcdefilmnqstvVxX -Dnazwa[=warto¶æ] ] [ argument ... ]
-127 Nieznana opcja: `-%s'\nU¿ycie: %s [ -bcdefFilmnqstvVxX ] [ argument ... ]
-128 Nieznana opcja: `-%s'\nU¿ycie: %s [ -bcdefilmnqstvVxX ] [ argument ... ]
-129 \nNieprawid³owe dope³nienie: "%s"
-130 \nNieprawid³owe %s: '%c'
+121 Użycie: echotc [-v|-s] [<zdolność> [<argumenty>]]
+122 %s: %s. Nieprawidłowa architektura
+123 !# Zapętlenie się historii
+124 Zniekształcony zapytanie na temat pliku
+125 Przepełnienie selektora
+126 Nieznana opcja: `-%s'\nUżycie: %s [ -bcdefilmnqstvVxX -Dnazwa[=wartość] ] [ argument ... ]
+127 Nieznana opcja: `-%s'\nUżycie: %s [ -bcdefFilmnqstvVxX ] [ argument ... ]
+128 Nieznana opcja: `-%s'\nUżycie: %s [ -bcdefilmnqstvVxX ] [ argument ... ]
+129 \nNieprawidłowe dopełnienie: "%s"
+130 \nNieprawidłowe %s: '%c'
131 \nBrakuje separatora '%c' po %s "%s"
132 \nNiekompletne %s: "%s"
133 Brak operandu dla flagi -m
-134 U¿ycie: unlimit [-fh] [limity]
+134 Użycie: unlimit [-fh] [limity]
135 $%S jest tylko-do-odczytu
136 Brak takiej pracy
137 Nieznana zmienna colorls `%c%c'
diff --git a/nls/pl/set10 b/nls/pl/set10
index 0c9dfb70de67..bdfbb430b0f3 100644
--- a/nls/pl/set10
+++ b/nls/pl/set10
@@ -1,8 +1,8 @@
$ $tcsh: set10,v 1.2 1995/03/19 18:07:15 christos Exp $
$ ma.setp.c
$set 10
-1 setpath: nieprawid³owe polecenie '%s'.\n
-2 setpath: za ma³o argumentów dla polecenia '%s'.\n
-3 setpath: brakuje warto¶ci w ¶cie¿ce '%s'\n
-4 setpath: %s nie zosta³ znaleziony w %s\n
-5 setpath: %d nie jest prawid³ow± pozycj± w %s\n
+1 setpath: nieprawidłowe polecenie '%s'.\n
+2 setpath: za mało argumentów dla polecenia '%s'.\n
+3 setpath: brakuje wartości w ścieżce '%s'\n
+4 setpath: %s nie został znaleziony w %s\n
+5 setpath: %d nie jest prawidłową pozycją w %s\n
diff --git a/nls/pl/set11 b/nls/pl/set11
index aade2f9498ac..4e6c6915b6f2 100644
--- a/nls/pl/set11
+++ b/nls/pl/set11
@@ -1,10 +1,10 @@
$ $tcsh: set11,v 1.2 1995/03/19 18:07:15 christos Exp $
$ sh.c
$set 11
-1 Uwaga: brak dostêpu do tty (%s).\n
-2 Innymi s³owy brak zarz±dzania pracami w tej pow³oce.\n
-3 Masz %d wiadomo¶ci.\n
-4 Masz %d wiadomo¶ci w %s.\n
-5 Masz %spocztê.\n
-6 now±
-7 Masz %spocztê w %s.\n
+1 Uwaga: brak dostępu do tty (%s).\n
+2 Innymi słowy brak zarządzania pracami w tej powłoce.\n
+3 Masz %d wiadomości.\n
+4 Masz %d wiadomości w %s.\n
+5 Masz %spocztÄ™.\n
+6 nowÄ…
+7 Masz %spocztÄ™ w %s.\n
diff --git a/nls/pl/set12 b/nls/pl/set12
index afbb1465adf2..69128f2cbaf7 100644
--- a/nls/pl/set12
+++ b/nls/pl/set12
@@ -1,4 +1,4 @@
$ $tcsh: set12,v 1.3 1996/04/26 20:31:52 christos Exp $
$ sh.dir.c
$set 12
-1 %s: Próbujê wystartowaæ z "%s"\n
+1 %s: Próbuję wystartować z "%s"\n
diff --git a/nls/pl/set13 b/nls/pl/set13
index 4d44a0b43e83..90e819ccb89c 100644
--- a/nls/pl/set13
+++ b/nls/pl/set13
@@ -4,10 +4,10 @@ $set 13
1 hash=%-4d dir=%-2d prog=%s\n
2 %d hash buckets of %d bits each\n
3 maska odpluskwiania = 0x%08x\n
-4 %d trafieñ, %d chybieñ, %d%%\n
-5 %S: polecenie wbudowane w pow³okê.\n
+4 %d trafień, %d chybień, %d%%\n
+5 %S: polecenie wbudowane w powłokę.\n
6 %S: Nie znaleziono polecenia.\n
7 gdzie: / w poleceniu nie ma sensu\n
8 %S jest aliasem do
-9 %S jest wbudowane w pow³okê\n
-10 chybieñ hash:
+9 %S jest wbudowane w powłokę\n
+10 chybień hash:
diff --git a/nls/pl/set14 b/nls/pl/set14
index b456721648f6..a38ec4f054d0 100644
--- a/nls/pl/set14
+++ b/nls/pl/set14
@@ -2,5 +2,5 @@ $ $tcsh: set14,v 1.3 1998/11/24 18:18:06 christos Exp $
$ sh.file.c
$set 14
1 \nKurcze!! Zbyt wiele %s!!\n
-2 nazw w pliku hase³
+2 nazw w pliku haseł
3 pliki
diff --git a/nls/pl/set15 b/nls/pl/set15
index 8f04af3bc876..f2026f68a2d1 100644
--- a/nls/pl/set15
+++ b/nls/pl/set15
@@ -1,7 +1,7 @@
$ $tcsh: set15,v 1.3 1996/10/19 17:52:32 christos Exp $
$ sh.func.c
$set 15
-1 %s: %s: Nie mogê limitowaæ %s%s\n
-2 usuñ
+1 %s: %s: Nie mogę limitować %s%s\n
+2 usuń
3 ustaw
4 \040twardy
diff --git a/nls/pl/set16 b/nls/pl/set16
index 2d07f5fb65d9..6c058af17e1e 100644
--- a/nls/pl/set16
+++ b/nls/pl/set16
@@ -2,8 +2,8 @@ $ $tcsh: set16,v 1.3 1996/04/26 20:31:55 christos Exp $
$ sh.lex.c
$set 16
1 Reset tty pgrp from %d to %d\n
-2 \nAby wylogowaæ siê u¿yj "logout".\n
-3 \nAby opu¶ciæ %s u¿yj "exit".\n
+2 \nAby wylogować się użyj "logout".\n
+3 \nAby opuścić %s użyj "exit".\n
4 seek to eval %x %x\n
5 seek to alias %x %x\n
6 seek to file %x\n
diff --git a/nls/pl/set17 b/nls/pl/set17
index e72adaa4e16a..f87afe79af03 100644
--- a/nls/pl/set17
+++ b/nls/pl/set17
@@ -1,17 +1,17 @@
$ $tcsh: set17,v 1.3 1996/10/19 17:52:33 christos Exp $
$ sh.proc.c
$set 17
-1 PLUSKWA: czekam na zadanie pracuj±ce w tle!\n
-2 Zakoñczono %d\n
-3 PLUSKWA: proces wywo³any drugi raz
+1 PLUSKWA: czekam na zadanie pracujÄ…ce w tle!\n
+2 Zakończono %d\n
+3 PLUSKWA: proces wywołany drugi raz
4 Running
-5 Sygna³
-6 Zwrócono %-25d
-7 Zakoñczony
+5 Sygnał
+6 Zwrócono %-25d
+7 Zakończony
8 PLUSKWA: status=%-9o
9 \040(zrzucono core)
10 \040(KR:
11 (KR jest:
-12 %S: Ju¿ jest zawieszony\n
-13 %S: Ju¿ jest zatrzymany\n
+12 %S: Już jest zawieszony\n
+13 %S: Już jest zatrzymany\n
14 %S: Badly formed number\n
diff --git a/nls/pl/set18 b/nls/pl/set18
index 02b3d75991a0..2680f5f9dadf 100644
--- a/nls/pl/set18
+++ b/nls/pl/set18
@@ -1,4 +1,4 @@
$ $tcsh: set18,v 1.2 1995/03/19 18:07:15 christos Exp $
$ sh.set.c
$set 18
-1 Uwaga: ¶miesznie d³uga PATH zosta³a obciêta\n
+1 Uwaga: śmiesznie długa PATH została obcięta\n
diff --git a/nls/pl/set19 b/nls/pl/set19
index 6170f4b8c494..25883092f2b9 100644
--- a/nls/pl/set19
+++ b/nls/pl/set19
@@ -1,15 +1,23 @@
$ $tcsh: set19,v 1.3 1996/04/26 20:31:58 christos Exp $
$ tc.alloc.c
$set 19
-1 n-bajtów=%d: Brak pamiêci\n
-2 free(%lx) wywo³any przez jak±kolwiek allokacj±.
+1 n-bajtów=%d: Brak pamięci\n
+2 free(%lx) wywołany przez jakąkolwiek allokacją.
3 free(%lx) above top of memory.
4 free(%lx) below bottom of memory.
5 free(%lx) bad block.
6 free(%lx) bad range check.
7 free(%lx) bad block index.
-8 %s aktualnie allokowana pamiêæ:\nwolna:\t
-9 \nu¿ywane:\t
-10 \n\tAktualnie w u¿yciu: %d, wolnych: %d\n
-11 \tZaallokowano pamiêæ od 0x%lx do 0x%lx. Wierzcho³ek 0x%lx\n
-12 Zaallokowano pamiêæ od 0x%lx do 0x%lx (%ld).\n
+8 %s aktualnie allokowana pamięć:\nwolna:\t
+9 używane
+10 \n\tAktualnie w użyciu: %d, wolnych: %d\n
+11 \tZaallokowano pamięć od 0x%lx do 0x%lx. Wierzchołek 0x%lx\n
+12 Zaallokowano pamięć od 0x%lx do 0x%lx (%ld).\n
+13 %s current memory allocation:\n
+14 Total space allocated from system: %d\n
+15 Number of non-inuse chunks: %d\n
+16 Number of mmapped regions: %d\n
+17 Total space in mmapped regions: %d\n
+18 Total allocated space: %d\n
+19 Total non-inuse space: %d\n
+20 Top-most, releasable space: %d\n
diff --git a/nls/pl/set2 b/nls/pl/set2
index 549c0b70627c..c464055c06bb 100644
--- a/nls/pl/set2
+++ b/nls/pl/set2
@@ -1,11 +1,11 @@
$ $tcsh: set2,v 1.4 1998/10/25 15:12:38 christos Exp $
$ Signal names
$set 2
-1 Pusty sygna³
+1 Pusty sygnał
2 Hangup
3 Przerwij
4 Quit
-5 Nieprawdi³owa instrukcja
+5 Nieprawdiłowa instrukcja
6 Trace/BPT trap
7 Abort
8 IOT trap
@@ -16,19 +16,19 @@ $set 2
13 Zabity
14 User signal 1
15 User signal 2
-16 Naruszenie ochrony pamiêci
-17 B³±d szyny
+16 Naruszenie ochrony pamięci
+17 BÅ‚Ä…d szyny
18 Program range error
19 Operand range error
-20 Nieprawid³owe wywo³anie systemowe
+20 Nieprawidłowe wywołanie systemowe
21 Broken pipe
22 Alarm clock
-23 Zakoñczono
+23 Zakończono
24 Child status change
-25 ¦mieræ potomka
+25 Śmierć potomka
26 Apollo-specific fault
-27 Potomek zakoñczy³ dzia³anie, lub zosta³ wy³±czony
-28 Potomek zakoñczy³ dzia³anie
+27 Potomek zakończył działanie, lub został wyłączony
+28 Potomek zakończył działanie
29 Brak zasilania
30 Resource Lost
31 Przerwanie (Ctrl-Break)
@@ -46,8 +46,8 @@ $set 2
43 Thread error - (use cord -T for detailed info)
44 CRAY Y-MP register parity error
45 Information request
-46 Zawieszony (sygna³)
-47 Zatrzymany (sygna³)
+46 Zawieszony (sygnał)
+47 Zatrzymany (sygnał)
48 Zawieszony
49 Zatrzymany
50 Continued
diff --git a/nls/pl/set23 b/nls/pl/set23
index 4f90b8fe147a..7538fdf86d52 100644
--- a/nls/pl/set23
+++ b/nls/pl/set23
@@ -7,28 +7,28 @@ $set 23
4 site: %s\n
5 %d: Nie znaleziono komputera\n
6 setlocal: %s: %s\n
-7 Komputer nie zosta³ znaleziony
+7 Komputer nie został znaleziony
8 You're trapped in a universe you never made
9 Getwarp failed
10 Invalid warp
11 Setwarp failed
12 Illegal universe
-13 Nieznany b³±d: %d
+13 Nieznany błąd: %d
14 sysname: %s\n
15 nodename: %s\n
16 release: %s\n
17 version: %s\n
18 machine: %s\n
-19 getwd: Nie mogê otworzyæ ".." (%s)
-20 getwd: Nie mogê przej¶æ do ".." (%s)
-21 getwd: B³±d odczytu w ".." (%s)
-22 getwd: Nie mogê przej¶æ do "." (%s)
+19 getwd: Nie mogę otworzyć ".." (%s)
+20 getwd: Nie mogę przejść do ".." (%s)
+21 getwd: BÅ‚Ä…d odczytu w ".." (%s)
+22 getwd: Nie mogę przejść do "." (%s)
23 getwd: Cannot stat "/" (%s)
24 getwd: Cannot stat "." (%s)
25 getwd: Cannot stat directory "%s" (%s)
26 getwd: Cannot open directory "%s" (%s)
27 getwd: Cannot find "." in ".." (%s)
-28 Nieprawid³owy typ systemu
-29 Typ systemu nie zosta³ ustawiony
-30 Zbyt du¿o argumentów
-31 Nieprawid³owy argument
+28 Nieprawidłowy typ systemu
+29 Typ systemu nie został ustawiony
+30 Zbyt dużo argumentów
+31 Nieprawidłowy argument
diff --git a/nls/pl/set27 b/nls/pl/set27
index 2f444182b922..2649dd72675b 100644
--- a/nls/pl/set27
+++ b/nls/pl/set27
@@ -4,5 +4,5 @@ $set 27
1 polecenie
2 separator
3 pattern
-4 zasiêg
+4 zasięg
5 completion
diff --git a/nls/pl/set3 b/nls/pl/set3
index 0873bb92c620..c1882c95809e 100644
--- a/nls/pl/set3
+++ b/nls/pl/set3
@@ -1,12 +1,12 @@
$ $tcsh: set3,v 1.3 1995/04/24 14:12:51 christos Exp $
$ Editor function descriptions
$set 3
-1 Przejd¼ znak wstecz
-2 Usuñ znak za kursorem
-3 Obetnij od pocz±tku s³owa do kursora, zachowaj w buforze wyciêæ
-4 Obetnij od pocz±tku linii do kursora, zachowaj w buforze wyciêæ
-5 Przejd¼ do pocz±tku aktualnego s³owa
-6 Przejd¼ do pocz±tku linii
+1 Przejdź znak wstecz
+2 Usuń znak za kursorem
+3 Obetnij od początku słowa do kursora, zachowaj w buforze wycięć
+4 Obetnij od początku linii do kursora, zachowaj w buforze wycięć
+5 Przejdź do początku aktualnego słowa
+6 Przejdź do początku linii
7 Capitalize the characters from cursor to end of current word
8 Vi change case of character under cursor and advance one character
9 Vi change to end of line
diff --git a/nls/pl/set30 b/nls/pl/set30
index 45145e0b8662..0e73ed671e9f 100644
--- a/nls/pl/set30
+++ b/nls/pl/set30
@@ -5,12 +5,12 @@ $set 30
2 complete %d
3 complete %d %S\n
4 %s: Internal match error.\n
-5 elementów
+5 elementów
6 wierszy
-7 Jest %d %s, pokazaæ je? [n/y]
+7 Jest %d %s, pokazać je? [n/y]
8 looking = %d\n
9 \ntcsh internal error: I don't know what I'm looking for!\n
10 nie jest katalogiem
-11 nie zosta³ znaleziony
+11 nie został znaleziony
12 jest nieczytelny
13 yY
diff --git a/nls/pl/set31 b/nls/pl/set31
index 89e901557d08..860baa3edcca 100644
--- a/nls/pl/set31
+++ b/nls/pl/set31
@@ -1,7 +1,7 @@
$ $tcsh: set31,v 1.2 1995/03/19 18:07:15 christos Exp $
$ vms.termcap.c
$set 31
-1 Nie mogê otworzyæ TERMCAP: [%s]\n
-2 Nie mogê otworzyæ %s.\n
+1 Nie mogę otworzyć TERMCAP: [%s]\n
+2 Nie mogę otworzyć %s.\n
3 Znaleziono %s w %s.\n
4 Nie znaleziono %s w pliku %s\n
diff --git a/nls/pl/set5 b/nls/pl/set5
index 9dbe6d2a4958..7dccbfef5900 100644
--- a/nls/pl/set5
+++ b/nls/pl/set5
@@ -1,4 +1,4 @@
$ $tcsh: set5,v 1.2 1995/03/19 18:07:15 christos Exp $
$ ed.chared.c
$set 5
-1 ¦rednie obci±¿enie niedostêpne\n
+1 Średnie obciążenie niedostępne\n
diff --git a/nls/pl/set6 b/nls/pl/set6
index bcbfcfbfd400..c2e08bd6beea 100644
--- a/nls/pl/set6
+++ b/nls/pl/set6
@@ -6,6 +6,6 @@ $set 6
3 edytuj\n
4 przerwij\n
5 nie\n
-6 Brak pasuj±cego polecenia\n
+6 Brak pasujÄ…cego polecenia\n
7 Niejasne polecenie\n
-8 *** B£¡D fatalny edytora ***\r\n\n
+8 *** BÅÄ„D fatalny edytora ***\r\n\n
diff --git a/nls/pl/set8 b/nls/pl/set8
index 06867212fa35..f9e078e721df 100644
--- a/nls/pl/set8
+++ b/nls/pl/set8
@@ -1,5 +1,5 @@
$ $tcsh: set8,v 1.2 1995/03/19 18:07:15 christos Exp $
$ ed.term.c
$set 8
-1 Nieprawid³owy prze³±cznik
-2 Nieprawid³owy argument
+1 Nieprawidłowy przełącznik
+2 Nieprawidłowy argument
diff --git a/nls/russian/charset b/nls/russian/charset
index 59ed4cfc67e5..81f1b6669c79 100644
--- a/nls/russian/charset
+++ b/nls/russian/charset
@@ -1,3 +1,3 @@
-$ codeset=KOI8-R
+$ codeset=UTF-8
$set 255
-1 KOI8-R
+1 UTF-8
diff --git a/nls/russian/set1 b/nls/russian/set1
index 7acaf448a835..2ca7b810181f 100644
--- a/nls/russian/set1
+++ b/nls/russian/set1
@@ -1,140 +1,140 @@
-$ $tcsh: set1,v 1.4 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set1,v 1.5 2011/02/04 18:19:41 christos Exp $
$ Error messages
$set 1
-1 óÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ
-2 %s ÎÅÄÏÐÕÓÔÉÍÏ
-3 óÌÏ×Ï ÓÌÉÛËÏÍ ÄÌÉÎÎÏÅ
-4 $< ÓÔÒÏËÁ ÓÌÉÛËÏÍ ÄÌÉÎÎÁÑ
-5 îÅÔ ÆÁÊÌÁ ÄÌÑ $0
-6 îÅÚÁ×ÅÒÛ£ÎÎÙÊ ÍÏÄÉÆÉËÁÔÏÒ []
-7 $ ÒÁÓÛÉÒÅÎÉÅ ÄÏÌÖÎÏ ÏËÁÎÞÉ×ÁÔØÓÑ ÐÅÒÅÄ ]
-8 ðÌÏÈÏÊ ÍÏÄÉÆÉËÁÔÏÒ × $ (%c)
-9 ïÛÉÂËÁ ÐÏÄÐÒÏÇÒÁÍÍÙ
-10 îÅÐÒÁ×ÉÌØÎÏ ÓÆÏÒÍÉÒÏ×ÁÎÎÏÅ ÞÉÓÌÏ
-11 îÅÔ ÂÏÌØÛÅ ÓÌÏ×
-12 ïÔÓÕÔÓÔ×ÕÅÔ ÉÍÑ ÆÁÊÌÁ
-13 ÷ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ glob
-14 ëÏÍÁÎÄÁ ÎÅ ÎÁÊÄÅÎÁ
-15 óÌÉÛËÏÍ ÍÁÌÏ ÁÒÇÕÍÅÎÔÏ×
-16 óÌÉÛËÏÍ ÍÎÏÇÏ ÁÒÇÕÍÅÎÔÏ×
-17 óÌÉÛËÏÍ ÏÐÁÓÎÏ ÐÅÒÅÏÐÒÅÄÅÌÑÔØ ÜÔÏ
-18 ðÕÓÔÏÊ if
-19 îÅ×ÅÒÎÙÊ then
-20 óÌÏ×Á ÎÅ × ÓËÏÂËÁÈ
-21 %s ÎÅ ÎÁÊÄÅÎÏ
-22 îÅ×ÅÒÎÏÅ ÚÎÁÞÅÎÉÅ mask
-23 îÅÔ ÔÁËÏÇÏ ÐÒÅÄÅÌÁ
-24 áÒÇÕÍÅÎÔ ÓÌÉÛËÏÍ ×ÅÌÉË
-25 îÅ×ÅÒÎÙÊ ÉÌÉ ÎÅÉÚ×ÅÓÔÎÙÊ ÆÁËÔÏÒ Õ×ÅÌÉÞÅÎÉÑ
-26 îÅÏÐÒÅÄÅÌÅÎÎÁÑ ÐÅÒÅÍÅÎÎÁÑ
-27 óÔÅË ËÁÔÁÌÏÇÏ× ÎÅ ÔÁËÏÊ ÇÌÕÂÏËÉÊ
-28 îÅ×ÅÒÎÙÊ ÎÏÍÅÒ ÓÉÇÎÁÌÁ
-29 îÅÉÚ×ÅÓÔÎÙÊ ÓÉÇÎÁÌ; kill -l ×Ù×ÅÄÅÔ ÓÐÉÓÏË ÓÉÇÎÁÌÏ×
-30 éÍÑ ÐÅÒÅÍÅÎÎÏÊ ÄÏÌÖÎÏ ÎÁÞÉÎÁÔØÓÑ Ó ÂÕË×Ù
-31 óÌÉÛËÏÍ ÄÌÉÎÎÏÅ ÉÍÑ ÐÅÒÅÍÅÎÎÏÊ
-32 ÷ ÉÍÅÎÉ ÐÅÒÅÍÅÎÎÏÊ ÄÏÌÖÎÙ ÓÏÄÅÒÖÁÔØÓÑ ÁÌÆÁ×ÉÔÎÏ-ÃÉÆÒÏ×ÙÅ ÓÉÍ×ÏÌÙ
-33 õÐÒÁ×ÌÅÎÉÅ ÚÁÄÁÎÉÑÍÉ ÏÔÓÕÔÓÔ×ÕÅÔ × ÜÔÏÍ ÛÅÌÌÅ
-34 óÉÎÔÁËÓÉÓ ×ÙÒÁÖÅÎÉÑ
-35 ïÔÓÕÔÓÔ×ÕÅÔ ÄÏÍÁÛÎÉÊ ËÁÔÁÌÏÇ
-36 îÅ ÍÏÇÕ ÐÅÒÅÊÔÉ × ÄÏÍÁÛÎÉÊ ËÁÔÁÌÏÇ
-37 ðÒÏÐÕÝÅÎÁ ËÏÍÁÎÄÁ
-38 ÷ ÐÒÉÓ×ÏÅÎÉÉ ÏÔÓÕÔÓÔ×ÕÅÔ ×ÙÒÁÖÅÎÉÅ
-39 îÅÉÚ×ÅÓÔÎÙÊ ÏÐÅÒÁÔÏÒ
-40 îÅÏÄÎÏÚÎÁÞÎÏ
-41 %s: æÁÊÌ ÓÕÝÅÓÔ×ÕÅÔ
-42 áÒÇÕÍÅÎÔ ÄÌÑ -c ÎÅ ÄÏÌÖÅÎ ÏËÁÎÞÉ×ÁÔØÓÑ ÎÁ \
-43 ðÒÅÒ×ÁÎÏ
-44 ðÏÄÐÒÏÇÒÁÍÍÁ ×ÙÈÏÄÉÔ ÚÁ ÐÒÅÄÅÌÙ
-45 ðÅÒÅÐÏÌÎÅÎÉÅ ÓÔÒÏËÉ
-46 îÅÔ ÔÁËÏÇÏ ÚÁÄÁÎÉÑ
-47 îÅ ÍÏÇÕ ÉÚ ÔÅÒÍÉÎÁÌÁ
-48 îÅ ×ÎÕÔÒÉ while/foreach
-49 îÅÔ ÂÏÌØÛÅ ÐÒÏÃÅÓÓÏ×
-50 îÅÔ ÓÏÏÔ×ÅÔÓÔ×ÉÊ
-51 ïÔÓÕÔÓÔ×ÕÅÔ %c
-52 îÅÔ ÓÏÏÔ×ÅÔÓÔ×ÉÑ ÄÌÑ %c
-53 îÅÔ ÐÁÍÑÔÉ
-54 îÅ ÍÏÇÕ ÓÏÚÄÁÔØ ÎÅÉÍÅÎÏ×ÁÎÎÙÊ ËÁÎÁÌ
+1 СинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°
+2 %s недопуÑтимо
+3 Слово Ñлишком длинное
+4 $< Ñтрока Ñлишком длиннаÑ
+5 Ðет файла Ð´Ð»Ñ $0
+6 Ðезавершённый модификатор []
+7 $ раÑширение должно оканчиватьÑÑ Ð¿ÐµÑ€ÐµÐ´ ]
+8 Плохой модификатор в $ (%c)
+9 Ошибка подпрограммы
+10 Ðеправильно Ñформированное чиÑло
+11 Ðет больше Ñлов
+12 ОтÑутÑтвует Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°
+13 ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° glob
+14 Команда не найдена
+15 Слишком мало аргументов
+16 Слишком много аргументов
+17 Слишком опаÑно переопределÑÑ‚ÑŒ Ñто
+18 ПуÑтой if
+19 Ðеверный then
+20 Слова не в Ñкобках
+21 %s не найдено
+22 Ðеверное значение mask
+23 Ðет такого предела
+24 Ðргумент Ñлишком велик
+25 Ðеверный или неизвеÑтный фактор увеличениÑ
+26 ÐÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð½Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ
+27 Стек каталогов не такой глубокий
+28 Ðеверный номер Ñигнала
+29 ÐеизвеÑтный Ñигнал; kill -l выведет ÑпиÑок Ñигналов
+30 Ð˜Ð¼Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ должно начинатьÑÑ Ñ Ð±ÑƒÐºÐ²Ñ‹
+31 Слишком длинное Ð¸Ð¼Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹
+32 Ð’ имени переменной должны ÑодержатьÑÑ Ð°Ð»Ñ„Ð°Ð²Ð¸Ñ‚Ð½Ð¾-цифровые Ñимволы
+33 Управление заданиÑми отÑутÑтвует в Ñтом шелле
+34 СинтакÑÐ¸Ñ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ
+35 ОтÑутÑтвует домашний каталог
+36 Ðе могу перейти в домашний каталог
+37 Пропущена команда
+38 Ð’ приÑвоении отÑутÑтвует выражение
+39 ÐеизвеÑтный оператор
+40 Ðеоднозначно
+41 %s: Файл ÑущеÑтвует
+42 Ðргумент Ð´Ð»Ñ -c не должен оканчиватьÑÑ Ð½Ð° \
+43 Прервано
+44 Подпрограмма выходит за пределы
+45 Переполнение Ñтроки
+46 Ðет такого заданиÑ
+47 Ðе могу из терминала
+48 Ðе внутри while/foreach
+49 Ðет больше процеÑÑов
+50 Ðет ÑоответÑтвий
+51 ОтÑутÑтвует %c
+52 Ðет ÑоответÑÑ‚Ð²Ð¸Ñ Ð´Ð»Ñ %c
+53 Ðет памÑти
+54 Ðе могу Ñоздать неименованный канал
55 %s: %s
56 %s
-57 éÓÐÏÌØÚÏ×ÁÎÉÅ: jobs [ -l ]
-58 áÒÇÕÍÅÎÔÙ ÄÏÌÖÎÙ Ñ×ÌÑÔØÓÑ ÉÄÅÎÔÉÆÉËÁÔÏÒÁÍÉ ÚÁÄÁÎÉÊ ÉÌÉ ÐÒÏÃÅÓÓÏ×
-59 îÅÔ ÔÅËÕÝÅÇÏ ÚÁÄÁÎÉÑ
-60 îÅÔ ÐÒÅÄÙÄÕÝÅÇÏ ÚÁÄÁÎÉÑ
-61 óÏÏÔ×ÅÔÓÔ×ÕÀÝÅÅ ÛÁÂÌÏÎÕ ÚÁÄÁÎÉÅ ÏÔÓÕÔÓÔ×ÕÅÔ
-62 ÷ÌÏÖÅÎÎÏÓÔØ fork > %d; ×ÏÚÍÏÖÎÏ ÜÔÏ ÃÉËÌ `...`
-63 õÐÒÁ×ÌÅÎÉÅ ÚÁÄÁÎÉÑÍÉ ÏÔÓÕÔÓÔ×ÕÅÔ × ÓÁÂÛÅÌÌÁÈ
-64 ïÛÉÂËÁ ÓÉÎÈÒÏÎÉÚÁÃÉÉ: ðÒÏÃÅÓÓ %d ÎÅ ÎÁÊÄÅÎ
-65 %sóÕÝÅÓÔ×ÕÀÔ ÏÔÌÏÖÅÎÎÙÅ ÚÁÄÁÎÉÑ
-66 %sóÕÝÅÓÔ×ÕÀÔ ÏÓÔÁÎÏ×ÌÅÎÎÙÅ ÚÁÄÁÎÉÑ
-67 îÅÔ ÄÒÕÇÏÇÏ ËÁÔÁÌÏÇÁ
-68 óÔÅË ËÁÔÁÌÏÇÏ× ÐÕÓÔ
-69 îÅ×ÅÒÎÏÅ ÉÍÑ ËÁÔÁÌÏÇÁ
-70 éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [-%s]%s
-71 ïÔÓÕÔÓÔ×ÕÅÔ ÏÐÅÒÁÎÄ ÄÌÑ ÆÌÁÇÁ -h
-72 îÅ Ñ×ÌÑÅÔÓÑ login-ÛÅÌÌÏÍ
-73 äÅÌÅÎÉÅ ÎÁ 0
-74 ïÓÔÁÔÏË ÏÔ ÄÅÌÅÎÉÑ ÎÁ 0
-75 ðÌÏÈÏÊ scaling; ×Ù ÉÍÅÅÔÅ × ×ÉÄÕ "%s"?
-76 îÅ ÍÏÇÕ ÏÔÌÏÖÉÔØ login-ÛÅÌÌ (ÐÏËÁ)
-77 îÅÉÚ×ÅÓÔÎÙÊ ÐÏÌØÚÏ×ÁÔÅÌØ: %s
-78 ðÅÒÅÍÅÎÎÁÑ $home ÎÅ ÕÓÔÁÎÏ×ÌÅÎÁ
-79 éÓÐÏÌØÚÏ×ÁÎÉÅ: history [-%s] [# ÞÉÓÌÏ ÓÏÂÙÔÉÊ]
-80 $, ! ÉÌÉ < ÚÁÐÒÅÝÅÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ Ó $# ÉÌÉ $?
-81 ðÅÒÅ×ÏÄ ÓÔÒÏËÉ × ÉÍÅÎÉ ÐÅÒÅÍÅÎÎÏÊ
-82 * ÚÁÐÒÅÝÅÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ Ó $# ÉÌÉ $?
-83 $?<ÃÉÆÒÁ> ÉÌÉ $#<ÃÉÆÒÁ> ÚÁÐÒÅÝÅÎÏ
-84 îÅ×ÅÒÎÏÅ ÉÍÑ ÐÅÒÅÍÅÎÎÏÊ
-85 ðÅÒÅ×ÏÄ ÓÔÒÏËÉ × ÉÎÄÅËÓÅ ÐÅÒÅÍÅÎÎÏÊ
-86 ðÅÒÅÐÏÌÎÅÎÉÅ ÂÕÆÅÒÁ ÒÁÓÛÉÒÅÎÉÑ
-87 óÉÎÔÁËÓÉÓ ÐÅÒÅÍÅÎÎÏÊ
-88 îÅ×ÅÒÎÁÑ ÆÏÒÍÁ !
-89 ïÔÓÕÔÓÔ×ÕÅÔ ÐÒÅÄÙÄÕÝÁÑ ÐÏÄÓÔÁÎÏ×ËÁ
-90 ðÌÏÈÁÑ ÐÏÄÓÔÁÎÏ×ËÁ
-91 ïÔÓÕÔÓÔ×ÕÅÔ ÐÒÅÄÙÄÕÝÁÑ ÌÅ×ÁÑ ÓÔÏÒÏÎÁ
-92 ðÒÁ×ÁÑ ÓÔÏÒÏÎÁ ÓÌÉÛËÏÍ ÄÌÉÎÎÁÑ
-93 ðÌÏÈÏÊ ÍÏÄÉÆÉËÁÔÏÒ !: %c
-94 ïÛÉÂËÁ ÍÏÄÉÆÉËÁÔÏÒÁ
-95 ðÅÒÅÐÏÌÎÅÎÉÅ ÂÕÆÅÒÁ ÐÏÄÓÔÁÎÏ×ËÉ
-96 ðÌÏÈÏÊ ÓÅÌÅËÔÏÒ ÄÌÑ ÁÒÇÕÍÅÎÔÁ !
-97 îÅÔ ÐÒÅÄÙÄÕÝÅÊ ÓÔÒÏËÉ ÐÏÉÓËÁ
-98 %s: óÏÂÙÔÉÅ ÎÅ ÎÁÊÄÅÎÏ
-99 óÌÉÛËÏÍ ÍÎÏÇÏ )
-100 óÌÉÛËÏÍ ÍÎÏÇÏ (
-101 îÅ×ÅÒÎÏ ÕËÁÚÁÎÎÁÑ (
-102 ïÔÓÕÔÓÔ×ÕÅÔ ÉÍÑ ÄÌÑ ÐÅÒÅÎÁÐÒÁ×ÌÅÎÉÑ
-103 îÅÏÄÎÏÚÎÁÞÎÏÅ ÐÅÒÅÎÁÐÒÁ×ÌÅÎÉÅ ×Ù×ÏÄÁ
-104 îÅÌØÚÑ ÉÓÐÏÌØÚÏ×ÁÔØ << × ()
-105 îÅÏÄÎÏÚÎÁÞÎÏÅ ÐÅÒÅÎÁÐÒÁ×ÌÅÎÉÅ ××ÏÄÁ
-106 îÅ×ÅÒÎÏ ÕËÁÚÁÎÎÙÅ ()
-107 úÁÃÉËÌÉ×ÁÎÉÅ ÐÓÅ×ÄÏÎÉÍÏ×
-108 ðÅÒÅÍÅÎÎÁÑ $watch ÎÅ ÕÓÔÁÎÏ×ÌÅÎÁ
-109 îÅÔ ÚÁÐÌÁÎÉÒÏ×ÁÎÎÙÈ ÓÏÂÙÔÉÊ
-110 éÓÐÏÌØÚÏ×ÁÎÉÅ: sched -<ÎÏÍÅÒ ÜÌÅÍÅÎÔÁ>.\néÓÐÏÌØÚÏ×ÁÎÉÅ: sched [+]þþ:íí <ËÏÍÁÎÄÁ>
-111 îÅ ÔÁË ÍÎÏÇÏ ÓÏÂÙÔÉÊ ÄÌÑ ÚÁÐÕÓËÁ ÐÏ ÒÁÓÐÉÓÁÎÉÀ
-112 ïÔÓÕÔÓÔ×ÕÅÔ ËÏÍÁÎÄÁ ÄÌÑ ÉÓÐÏÌÎÅÎÉÑ
-113 îÅ×ÅÒÎÏÅ ×ÒÅÍÑ ÄÌÑ ÓÏÂÙÔÉÑ
-114 ïÔÎÏÓÉÔÅÌØÎÏÅ ×ÒÅÍÑ ÎÅ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ am/pm
-115 ðÅÒÅÐÏÌÎÅÎÉÅ ÓÔÒÏËÉ termcap
-116 éÓÐÏÌØÚÏ×ÁÎÉÅ: settc %s [yes|no]
-117 îÅÉÚ×ÅÓÔÎÁÑ capability `%s'
-118 îÅÉÚ×ÅÓÔÎÙÊ ÐÁÒÁÍÅÔÒ termcap `%%%c'
-119 óÌÉÛËÏÍ ÍÎÏÇÏ ÁÒÇÕÍÅÎÔÏ× ÄÌÑ `%s' (%d)
-120 `%s' ÔÒÅÂÕÅÔ %d ÁÒÇÕÍÅÎÔÏ×
-121 éÓÐÏÌØÚÏ×ÁÎÉÅ: echotc [-v|-s] [<capability> [<ÁÒÇÕÍÅÎÔÙ>]]
-122 %s: %s. îÅ×ÅÒÎÁÑ ÁÒÈÉÔÅËÔÕÒÁ
-123 !# ÚÁÃÉËÌÉ×ÁÎÉÅ ÐÁÍÑÔÉ ËÏÍÁÎÄ
-124 îÅÐÒÁ×ÉÌØÎÏ ÓÆÏÒÍÉÒÏ×ÁÎÎÙÊ ÆÁÊÌÏ×ÙÊ ÚÁÐÒÏÓ
-125 ðÅÒÅÐÏÌÎÅÎÉÅ ÓÅÌÅËÔÏÒÁ
-126 îÅÉÚ×ÅÓÔÎÁÑ ÏÐÃÉÑ: `-%s'\néÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ -bcdefilmnqstvVxX -DÉÍÑ[=ÚÎÁÞÅÎÉÅ] ] [ ÁÒÇÕÍÅÎÔ ... ]
-127 îÅÉÚ×ÅÓÔÎÁÑ ÏÐÃÉÑ: `-%s'\néÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ -bcdefFilmnqstvVxX ] [ ÁÒÇÕÍÅÎÔ ... ]
-128 îÅÉÚ×ÅÓÔÎÁÑ ÏÐÃÉÑ: `-%s'\néÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ -bcdefilmnqstvVxX ] [ ÁÒÇÕÍÅÎÔ ... ]
-129 \nîÅ×ÅÒÎÏÅ ÄÏÓÔÒÁÉ×ÁÎÉÅ: "%s"
-130 \nîÅ×ÅÒÎÙÊ %s: '%c'
-131 \nïÔÓÕÔÓÔ×ÕÅÔ ÓÅÐÁÒÁÔÏÒ '%c' ÐÏÓÌÅ %s "%s"
-132 \n%s ÎÅ ÐÏÌÎÏ: "%s"
-133 ïÔÓÕÔÓÔ×ÕÅÔ ÏÐÅÒÁÎÄ ÄÌÑ ÆÌÁÇÁ -m
-134 éÓÐÏÌØÚÏ×ÁÎÉÅ: unlimit [-fh] [ÐÒÅÄÅÌÙ]
-135 $%S ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ
-136 îÅÔ ÔÁËÏÇÏ ÚÁÄÁÎÉÑ
-137 îÅÉÚ×ÅÓÔÎÏÅ ÚÎÁÞÅÎÉÅ `%c%c' ÐÅÒÅÍÅÎÎÏÊ colorls
+57 ИÑпользование: jobs [ -l ]
+58 Ðргументы должны ÑвлÑÑ‚ÑŒÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð°Ð¼Ð¸ заданий или процеÑÑов
+59 Ðет текущего заданиÑ
+60 Ðет предыдущего заданиÑ
+61 СоответÑтвующее шаблону задание отÑутÑтвует
+62 ВложенноÑÑ‚ÑŒ fork > %d; возможно Ñто цикл `...`
+63 Управление заданиÑми отÑутÑтвует в Ñабшеллах
+64 Ошибка Ñинхронизации: ПроцеÑÑ %d не найден
+65 %sСущеÑтвуют отложенные заданиÑ
+66 %sСущеÑтвуют оÑтановленные заданиÑ
+67 Ðет другого каталога
+68 Стек каталогов пуÑÑ‚
+69 Ðеверное Ð¸Ð¼Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°
+70 ИÑпользование: %s [-%s]%s
+71 ОтÑутÑтвует операнд Ð´Ð»Ñ Ñ„Ð»Ð°Ð³Ð° -h
+72 Ðе ÑвлÑетÑÑ login-шеллом
+73 Деление на 0
+74 ОÑтаток от Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð½Ð° 0
+75 Плохой scaling; вы имеете в виду "%s"?
+76 Ðе могу отложить login-шелл (пока)
+77 ÐеизвеÑтный пользователь: %s
+78 ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $home не уÑтановлена
+79 ИÑпользование: history [-%s] [# чиÑло Ñобытий]
+80 $, ! или < запрещено иÑпользовать Ñ $# или $?
+81 Перевод Ñтроки в имени переменной
+82 * запрещено иÑпользовать Ñ $# или $?
+83 $?<цифра> или $#<цифра> запрещено
+84 Ðеверное Ð¸Ð¼Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹
+85 Перевод Ñтроки в индекÑе переменной
+86 Переполнение буфера раÑширениÑ
+87 СинтакÑÐ¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹
+88 ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð° !
+89 ОтÑутÑтвует Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð¿Ð¾Ð´Ñтановка
+90 ÐŸÐ»Ð¾Ñ…Ð°Ñ Ð¿Ð¾Ð´Ñтановка
+91 ОтÑутÑтвует Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð»ÐµÐ²Ð°Ñ Ñторона
+92 ÐŸÑ€Ð°Ð²Ð°Ñ Ñторона Ñлишком длиннаÑ
+93 Плохой модификатор !: %c
+94 Ошибка модификатора
+95 Переполнение буфера подÑтановки
+96 Плохой Ñелектор Ð´Ð»Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð° !
+97 Ðет предыдущей Ñтроки поиÑка
+98 %s: Событие не найдено
+99 Слишком много )
+100 Слишком много (
+101 Ðеверно ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ (
+102 ОтÑутÑтвует Ð¸Ð¼Ñ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ
+103 Ðеоднозначное перенаправление вывода
+104 ÐÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать << в ()
+105 Ðеоднозначное перенаправление ввода
+106 Ðеверно указанные ()
+107 Зацикливание пÑевдонимов
+108 ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $watch не уÑтановлена
+109 Ðет запланированных Ñобытий
+110 ИÑпользование: sched -<номер Ñлемента>.\nИÑпользование: sched [+]ЧЧ:ММ <команда>
+111 Ðе так много Ñобытий Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка по раÑпиÑанию
+112 ОтÑутÑтвует команда Ð´Ð»Ñ Ð¸ÑполнениÑ
+113 Ðеверное Ð²Ñ€ÐµÐ¼Ñ Ð´Ð»Ñ ÑобытиÑ
+114 ОтноÑительное Ð²Ñ€ÐµÐ¼Ñ Ð½Ðµ ÑоответÑтвует am/pm
+115 Переполнение Ñтроки termcap
+116 ИÑпользование: settc %s [yes|no]
+117 ÐеизвеÑÑ‚Ð½Ð°Ñ capability `%s'
+118 ÐеизвеÑтный параметр termcap `%%%c'
+119 Слишком много аргументов Ð´Ð»Ñ `%s' (%d)
+120 `%s' требует %d аргументов
+121 ИÑпользование: echotc [-v|-s] [<capability> [<аргументы>]]
+122 %s: %s. ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð°
+123 !# зацикливание памÑти команд
+124 Ðеправильно Ñформированный файловый запроÑ
+125 Переполнение Ñелектора
+126 ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾Ð¿Ñ†Ð¸Ñ: `-%s'\nИÑпользование: %s [ -bcdefilmnqstvVxX -DимÑ[=значение] ] [ аргумент ... ]
+127 ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾Ð¿Ñ†Ð¸Ñ: `-%s'\nИÑпользование: %s [ -bcdefFilmnqstvVxX ] [ аргумент ... ]
+128 ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾Ð¿Ñ†Ð¸Ñ: `-%s'\nИÑпользование: %s [ -bcdefilmnqstvVxX ] [ аргумент ... ]
+129 \nÐеверное доÑтраивание: "%s"
+130 \nÐеверный %s: '%c'
+131 \nОтÑутÑтвует Ñепаратор '%c' поÑле %s "%s"
+132 \n%s не полно: "%s"
+133 ОтÑутÑтвует операнд Ð´Ð»Ñ Ñ„Ð»Ð°Ð³Ð° -m
+134 ИÑпользование: unlimit [-fh] [пределы]
+135 $%S только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ
+136 Ðет такого заданиÑ
+137 ÐеизвеÑтное значение `%c%c' переменной colorls
diff --git a/nls/russian/set10 b/nls/russian/set10
index 273abd266a9a..8215a2516e07 100644
--- a/nls/russian/set10
+++ b/nls/russian/set10
@@ -1,8 +1,8 @@
-$ $tcsh: set10,v 1.3 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set10,v 1.4 2011/02/04 18:19:41 christos Exp $
$ ma.setp.c
$set 10
-1 setpath: ÎÅ×ÅÒÎÁÑ ËÏÍÁÎÄÁ '%s'.\n
-2 setpath: ÎÅÄÏÓÔÁÔÏÞÎÏ ÁÒÇÕÍÅÎÔÏ× ÄÌÑ ËÏÍÁÎÄÙ '%s'.\n
-3 setpath: ÏÔÓÕÔÓÔ×ÕÅÔ ÚÎÁÞÅÎÉÅ × ÐÕÔÉ '%s'\n
-4 setpath: %s ÎÅ ÎÁÊÄÅÎÏ × %s\n
-5 setpath: %d ÎÅ×ÅÒÎÁÑ ÐÏÚÉÃÉÑ × %s\n
+1 setpath: Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° '%s'.\n
+2 setpath: недоÑтаточно аргументов Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ '%s'.\n
+3 setpath: отÑутÑтвует значение в пути '%s'\n
+4 setpath: %s не найдено в %s\n
+5 setpath: %d Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð² %s\n
diff --git a/nls/russian/set11 b/nls/russian/set11
index b165bd72d173..4ea0f42d4a44 100644
--- a/nls/russian/set11
+++ b/nls/russian/set11
@@ -1,10 +1,10 @@
-$ $tcsh: set11,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set11,v 1.3 2011/02/04 18:19:41 christos Exp $
$ sh.c
$set 11
-1 ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÎÅÔ ÄÏÓÔÕÐÁ Ë tty (%s).\n
-2 ðÏÜÔÏÍÕ ÕÐÒÁ×ÌÅÎÉÅ ÚÁÄÁÎÉÑÍÉ × ÜÔÏÍ ÛÅÌÌÅ ÏÔÓÕÔÓÔ×ÕÅÔ.\n
-3 äÌÑ ×ÁÓ ÅÓÔØ %d ÐÏÞÔÏ×ÙÈ ÓÏÏÂÝÅÎÉÑ(Ê).\n
-4 äÌÑ ×ÁÓ ÅÓÔØ %d ÐÏÞÔÏ×ÙÈ ÓÏÏÂÝÅÎÉÑ(Ê) × %s.\n
-5 äÌÑ ×ÁÓ ÅÓÔØ %sÐÏÞÔÁ.\n
-6 ÎÏ×ÁÑ
-7 äÌÑ ×ÁÓ ÅÓÔØ %sÐÏÞÔÁ × %s.\n
+1 Предупреждение: нет доÑтупа к tty (%s).\n
+2 ПоÑтому управление заданиÑми в Ñтом шелле отÑутÑтвует.\n
+3 Ð”Ð»Ñ Ð²Ð°Ñ ÐµÑÑ‚ÑŒ %d почтовых ÑообщениÑ(й).\n
+4 Ð”Ð»Ñ Ð²Ð°Ñ ÐµÑÑ‚ÑŒ %d почтовых ÑообщениÑ(й) в %s.\n
+5 Ð”Ð»Ñ Ð²Ð°Ñ ÐµÑÑ‚ÑŒ %sпочта.\n
+6 новаÑ
+7 Ð”Ð»Ñ Ð²Ð°Ñ ÐµÑÑ‚ÑŒ %sпочта в %s.\n
diff --git a/nls/russian/set12 b/nls/russian/set12
index b676c6c53723..9a7993c1360e 100644
--- a/nls/russian/set12
+++ b/nls/russian/set12
@@ -1,4 +1,4 @@
-$ $tcsh: set12,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set12,v 1.3 2011/02/04 18:19:41 christos Exp $
$ sh.dir.c
$set 12
-1 %s: ðÙÔÁÀÓØ ÎÁÞÁÔØ Ó "%s"\n
+1 %s: ПытаюÑÑŒ начать Ñ "%s"\n
diff --git a/nls/russian/set13 b/nls/russian/set13
index 206ea895ccf9..5a8009e1f342 100644
--- a/nls/russian/set13
+++ b/nls/russian/set13
@@ -1,13 +1,13 @@
-$ $tcsh: set13,v 1.3 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set13,v 1.4 2011/02/04 18:19:41 christos Exp $
$ sh.exec.c
$set 13
1 hash=%-4d dir=%-2d prog=%s\n
2 %d hash buckets of %d bits each\n
-3 ÚÎÁÞÅÎÉÅ mask ÄÌÑ ÏÔÌÁÄËÉ = 0x%08x\n
-4 %d ÓÏ×ÐÁÄÅÎÉÑ(Ê), %d ÐÒÏÍÁÈÁ(Ï×), %d%%\n
-5 %S: ×ÎÕÔÒÅÎÎÑÑ ËÏÍÁÎÄÁ.\n
-6 %S: ëÏÍÁÎÄÁ ÎÅ ÎÁÊÄÅÎÁ.\n
-7 where: / × ËÏÍÁÎÄÅ ÎÅ ÉÍÅÅÔ ÓÍÙÓÌÁ\n
-8 %S ÐÅÒÅÏÐÒÅÄÅÌÅÎÏ ÎÁ
-9 %S Ñ×ÌÑÅÔÓÑ ×ÎÕÔÒÅÎÎÅÊ ËÏÍÁÎÄÏÊ\n
+3 значение mask Ð´Ð»Ñ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸ = 0x%08x\n
+4 %d ÑовпадениÑ(й), %d промаха(ов), %d%%\n
+5 %S: внутреннÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°.\n
+6 %S: Команда не найдена.\n
+7 where: / в команде не имеет ÑмыÑла\n
+8 %S переопределено на
+9 %S ÑвлÑетÑÑ Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½ÐµÐ¹ командой\n
10 hash miss:
diff --git a/nls/russian/set14 b/nls/russian/set14
index d9632d8a108c..b79837acb61c 100644
--- a/nls/russian/set14
+++ b/nls/russian/set14
@@ -1,6 +1,6 @@
-$ $tcsh: set14,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set14,v 1.3 2011/02/04 18:19:41 christos Exp $
$ sh.file.c
$set 14
-1 \nYikes!! óÌÉÛËÏÍ ÍÎÏÇÏ %s!!\n
-2 ÉÍÅÎ × ÆÁÊÌÅ ÐÁÒÏÌÅÊ
-3 ÆÁÊÌÙ
+1 \nYikes!! Слишком много %s!!\n
+2 имен в файле паролей
+3 файлы
diff --git a/nls/russian/set15 b/nls/russian/set15
index 60c2a36a56b2..62ea78dc28da 100644
--- a/nls/russian/set15
+++ b/nls/russian/set15
@@ -1,7 +1,7 @@
-$ $tcsh: set15,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set15,v 1.3 2011/02/04 18:19:41 christos Exp $
$ sh.func.c
$set 15
-1 %s: %s: îÅ ÍÏÇÕ %s%s ÐÒÅÄÅÌ\n
-2 ÕÄÁÌÉÔØ
-3 ÕÓÔÁÎÏ×ÉÔØ
-4 \040ÖÅÓÔËÉÊ
+1 %s: %s: Ðе могу %s%s предел\n
+2 удалить
+3 уÑтановить
+4 \040жеÑткий
diff --git a/nls/russian/set16 b/nls/russian/set16
index 877acbe75c3e..8ad2081c3aa4 100644
--- a/nls/russian/set16
+++ b/nls/russian/set16
@@ -1,9 +1,9 @@
-$ $tcsh: set16,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set16,v 1.3 2011/02/04 18:19:41 christos Exp $
$ sh.lex.c
$set 16
1 Reset tty pgrp from %d to %d\n
-2 \néÓÐÏÌØÚÕÊÔÅ "logout" ÄÌÑ ÚÁ×ÅÒÛÅÎÉÑ ÓÅÓÓÉÉ.\n
-3 \néÓÐÏÌØÚÕÊÔÅ "exit" ÄÌÑ ×ÙÈÏÄÁ ÉÚ %s.\n
+2 \nИÑпользуйте "logout" Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ ÑеÑÑии.\n
+3 \nИÑпользуйте "exit" Ð´Ð»Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð° из %s.\n
4 seek to eval %x %x\n
5 seek to alias %x %x\n
6 seek to file %x\n
diff --git a/nls/russian/set17 b/nls/russian/set17
index 8d7384da80ba..1d11468760ca 100644
--- a/nls/russian/set17
+++ b/nls/russian/set17
@@ -1,17 +1,17 @@
-$ $tcsh: set17,v 1.4 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set17,v 1.5 2011/02/04 18:19:41 christos Exp $
$ sh.proc.c
$set 17
1 BUG: waiting for background job!\n
-2 ÷ÙÈÏÄ %d\n
+2 Выход %d\n
3 BUG: process flushed twice
-4 ÷ÙÐÏÌÎÑÅÔÓÑ
-5 óÉÇÎÁÌ
+4 ВыполнÑетÑÑ
+5 Сигнал
6 Exit %-25d
-7 ïËÏÎÞÅÎÏ
+7 Окончено
8 BUG: status=%-9o
9 \040(core dumped)
10 \040(wd:
11 wd now:
-12 %S: õÖÅ ÏÔÌÏÖÅÎÏ\n
-13 %S: õÖÅ ÏÓÔÁÎÏ×ÌÅÎÏ\n
+12 %S: Уже отложено\n
+13 %S: Уже оÑтановлено\n
14 %S: Badly formed number\n
diff --git a/nls/russian/set18 b/nls/russian/set18
index 277af0de5065..a3f46f31fac7 100644
--- a/nls/russian/set18
+++ b/nls/russian/set18
@@ -1,4 +1,4 @@
-$ $tcsh: set18,v 1.3 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set18,v 1.4 2011/02/04 18:19:41 christos Exp $
$ sh.set.c
$set 18
-1 ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: þÅÒÅÓÞÕÒ ÄÌÉÎÎÙÊ PATH ÏÂÒÅÚÁÎ\n
+1 Предупреждение: ЧереÑчур длинный PATH обрезан\n
diff --git a/nls/russian/set19 b/nls/russian/set19
index 2824aba57d87..e182a37571bf 100644
--- a/nls/russian/set19
+++ b/nls/russian/set19
@@ -1,7 +1,7 @@
-$ $tcsh: set19,v 1.3 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set19,v 1.6 2011/02/25 23:58:08 christos Exp $
$ tc.alloc.c
$set 19
-1 nbytes=%d: îÅÔ ÐÁÍÑÔÉ\n
+1 nbytes=%d: Ðет памÑти\n
2 free(%lx) called before any allocations.
3 free(%lx) above top of memory.
4 free(%lx) below bottom of memory.
@@ -9,7 +9,15 @@ $set 19
6 free(%lx) bad range check.
7 free(%lx) bad block index.
8 %s current memory allocation:\nfree:\t
-9 \nused:\t
-10 \n\t÷ÓÅÇÏ ÉÓÐÏÌØÚÕÅÔÓÑ: %d, ×ÓÅÇÏ Ó×ÏÂÏÄÎÏ: %d\n
+9 used
+10 \n\tÐ’Ñего иÑпользуетÑÑ: %d, вÑего Ñвободно: %d\n
11 \tAllocated memory from 0x%lx to 0x%lx. Real top at 0x%lx\n
12 Allocated memory from 0x%lx to 0x%lx (%ld).\n
+13 %s current memory allocation:\n
+14 Total space allocated from system: %d\n
+15 Number of non-inuse chunks: %d\n
+16 Number of mmapped regions: %d\n
+17 Total space in mmapped regions: %d\n
+18 Total allocated space: %d\n
+19 Total non-inuse space: %d\n
+20 Top-most, releasable space: %d\n
diff --git a/nls/russian/set2 b/nls/russian/set2
index 1466e731eb9a..e076f6093de7 100644
--- a/nls/russian/set2
+++ b/nls/russian/set2
@@ -1,51 +1,51 @@
-$ $tcsh: set2,v 1.3 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set2,v 1.4 2011/02/04 18:19:42 christos Exp $
$ Signal names
$set 2
-1 îÕÌÅ×ÏÊ ÓÉÇÎÁÌ
-2 òÁÚÒÙ× Ó×ÑÚÉ
-3 ðÒÅÒÙ×ÁÎÉÅ
-4 ÷ÙÈÏÄ
-5 îÅ×ÅÒÎÁÑ ÉÎÓÔÒÕËÃÉÑ
+1 Ðулевой Ñигнал
+2 Разрыв ÑвÑзи
+3 Прерывание
+4 Выход
+5 ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¸Ð½ÑтрукциÑ
6 Trace/BPT trap
-7 á×ÁÒÉÊÎÏÅ ÚÁ×ÅÒÛÅÎÉÅ
+7 Ðварийное завершение
8 IOT trap
9 System Crash Imminent
-10 ÷ÙÈÏÄ ÐÏ ÏÛÉÂËÅ
+10 Выход по ошибке
11 EMT trap
-12 ïÛÉÂËÁ ÏÐÅÒÁÃÉÉ Ó ÐÌÁ×ÁÀÝÅÊ ÔÏÞËÏÊ
-13 õÂÉÔ
-14 ðÏÌØÚÏ×ÁÔÅÌØÓËÉÊ ÓÉÇÎÁÌ 1
-15 ðÏÌØÚÏ×ÁÔÅÌØÓËÉÊ ÓÉÇÎÁÌ 2
-16 ïÛÉÂËÁ ÓÅÇÍÅÎÔÁÃÉÉ
-17 ïÛÉÂËÁ ÁÄÒÅÓÁÃÉÉ ÎÁ ÛÉÎÅ
+12 Ошибка операции Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой
+13 Убит
+14 ПользовательÑкий Ñигнал 1
+15 ПользовательÑкий Ñигнал 2
+16 Ошибка Ñегментации
+17 Ошибка адреÑации на шине
18 Program range error
19 Operand range error
-20 îÅ×ÅÒÎÙÊ ÓÉÓÔÅÍÎÙÊ ×ÙÚÏ×
+20 Ðеверный ÑиÑтемный вызов
21 Broken pipe
22 Alarm clock
-23 ðÒÅÒ×ÁÎÏ
-24 éÚÍÅÎÅÎÉÅ ÓÏÓÔÏÑÎÉÑ ÐÏÔÏÍËÁ
-25 óÍÅÒÔØ ÐÏÔÏÍËÁ
+23 Прервано
+24 Изменение ÑоÑтоÑÐ½Ð¸Ñ Ð¿Ð¾Ñ‚Ð¾Ð¼ÐºÐ°
+25 Смерть потомка
26 Apollo-specific fault
-27 ðÏÔÏÍÏË ÏÓÔÁÎÏ×ÉÌÓÑ ÉÌÉ ÚÁ×ÅÒÛÉÌÓÑ
-28 ðÏÔÏÍÏË ÚÁ×ÅÒÛÉÌÓÑ
-29 óÂÏÊ ÐÉÔÁÎÉÑ
+27 Потомок оÑтановилÑÑ Ð¸Ð»Ð¸ завершилÑÑ
+28 Потомок завершилÑÑ
+29 Сбой питаниÑ
30 Resource Lost
31 Break (Ctrl-Break)
32 Input/output possible signal
-33 áÓÉÎÈÒÏÎÎÙÊ ××ÏÄ/×Ù×ÏÄ (select)
+33 ÐÑинхронный ввод/вывод (select)
34 Urgent condition on I/O channel
35 Multitasking wake-up
36 Multitasking kill
37 Fortran asynchronous I/O completion
38 Recovery
-39 îÅÉÓÐÒÁ×ÉÍÁÑ ÏÛÉÂËÁ ÐÁÍÑÔÉ
+39 ÐеиÑÐ¿Ñ€Ð°Ð²Ð¸Ð¼Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° памÑти
40 CPU time limit exceeded
41 System shutdown imminent
42 micro-tasking group-no wakeup flag set
43 Thread error - (use cord -T for detailed info)
-44 ïÛÉÂËÁ ÞÅÔÎÏÓÔÉ × ÒÅÇÉÓÔÒÅ CRAY Y-MP
-45 úÁÐÒÏÓ ÎÁ ÉÎÆÏÒÍÁÃÉÀ
+44 Ошибка четноÑти в региÑтре CRAY Y-MP
+45 Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° информацию
46 Suspended (signal)
47 Stopped (signal)
48 Suspended
diff --git a/nls/russian/set20 b/nls/russian/set20
index d8df302be476..2023593dd854 100644
--- a/nls/russian/set20
+++ b/nls/russian/set20
@@ -1,41 +1,41 @@
-$ $tcsh: set20,v 1.5 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set20,v 1.6 2011/02/04 18:19:42 christos Exp $
$ tc.bind.c
$set 20
-1 îÅ×ÅÒÎÏÅ ÉÍÑ ËÌÁ×ÉÛÉ `%S'\n
-2 ðÌÏÈÏÅ ÉÍÑ ËÌÁ×ÉÛÉ: %S\n
-3 ðÌÏÈÏÅ ÉÍÑ ËÏÍÁÎÄÙ: %S\n
-4 ðÌÏÈÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ËÌÁ×ÉÛÉ %S\n
-5 ðÕÓÔÁÑ ÓÔÒÏËÁ\n
-6 óÔÁÎÄÁÒÔÎÙÅ ÐÒÉ×ÑÚËÉ ËÌÁ×ÉÛ\n
-7 áÌØÔÅÒÎÁÔÉ×ÎÙÅ ÐÒÉ×ÑÚËÉ ËÌÁ×ÉÛ\n
-8 íÎÏÇÏ-ÓÉÍ×ÏÌØÎÙÅ ÐÒÉ×ÑÚËÉ\n
-9 ðÒÉ×ÑÚËÉ ÕÐÒÁ×ÌÑÀÝÉÈ ËÌÁ×ÉÛ\n
-10 %-15s-> ÎÅ ÏÐÒÅÄÅÌÅÎÏ\n
-11 BUG!!! %s ÎÅ Ó×ÑÚÁÎ ÎÉ Ó ÞÅÍ.\n
-12 éÓÐÏÌØÚÏ×ÁÎÉÅ: bindkey [ÏÐÃÉÉ] [--] [ëìá÷éûÁ [ëïíáîäÁ]]\n
-13 -a ×Ù×ÅÓÔÉ ÉÌÉ ÐÒÉ×ÑÚÁÔØ ëìá÷éûÕ × ÁÌØÔÅÒÎÁÔÉ×ÎÏÊ ÒÁÓËÌÁÄËÅ ËÌÁ×ÉÁÔÕÒÙ\n
-14 -b ×ÏÓÐÒÉÎÉÍÁÔØ ëìá÷éûÕ ËÁË C-, M-, F- ÉÌÉ X- ÎÁÚ×ÁÎÉÅ ËÌÁ×ÉÛÉ\n
-15 -s ×ÏÓÐÒÉÎÉÍÁÔØ ëïíáîäÕ ËÁË ÓÔÒÏËÕ, ËÏÔÏÒÕÀ ÎÕÖÎÏ ×Ù×ÅÓÔÉ\n
-16 -c ×ÏÓÐÒÉÎÉÍÁÔØ ëïíáîäÕ ËÁË ×ÓÔÒÏÅÎÎÕÀ ÉÌÉ ×ÎÅÛÎÀÀ ËÏÍÁÎÄÕ\n
-17 -v ÐÒÉ×ÑÚÁÔØ ×ÓÅ ËÌÁ×ÉÛÉ × ÓÏÏÔ×ÅÔÓÔ×ÉÉ Ó ÒÅÄÁËÔÏÒÏÍ vi\n
-18 -e ÐÒÉ×ÑÚÁÔØ ×ÓÅ ËÌÁ×ÉÛÉ × ÓÏÏÔ×ÅÔÓÔ×ÉÉ Ó ÒÅÄÁËÔÏÒÏÍ emacs\n
-19 -d ÐÒÉ×ÑÚÁÔØ ×ÓÅ ËÌÁ×ÉÛÉ × ÓÏÏÔ×ÅÔÓÔ×ÉÉ Ó ÒÅÄÁËÔÏÒÏÍ ÐÏ ÕÍÏÌÞÁÎÉÀ\n
-20 -l ×Ù×ÅÓÔÉ ÓÐÉÓÏË ËÏÍÁÎÄ ÒÅÄÁËÔÏÒÁ É ÉÈ ÏÐÉÓÁÎÉÑ\n
-21 -r ÕÄÁÌÉÔØ ÐÒÉ×ÑÚËÕ ëìá÷éûÉ\n
-22 -k ×ÏÓÐÒÉÎÉÍÁÔØ ëìá÷éûÕ ËÁË Ñ×ÎÏÅ ÎÁÚ×ÁÎÉÅ ÕÐÒÁ×ÌÑÀÝÅÊ ËÌÁ×ÉÛÉ\n
-23 -- ÎÅ ×ÏÓÐÒÉÎÉÍÁÔØ ×ÓÅ ÐÏÓÌÅÄÕÀÝÉÅ ÐÁÒÁÍÅÔÒÙ ËÁË ÏÐÃÉÉ\n
-24 -u (ÉÌÉ ÌÀÂÁÑ ÎÅÐÒÁ×ÉÌØÎÁÑ ÏÐÃÉÑ) ×Ù×ÅÓÔÉ ÜÔÏÔ ÔÅËÓÔ\n
-25 âÅÚ ëìá÷éûÉ ÉÌÉ ëïíáîäÙ, ×Ù×ÅÓÔÉ ×ÓÅ ÐÒÉ×ÑÚËÉ.\n
-26 âÅÚ ëïíáîäÙ, ×Ù×ÅÓÔÉ ÐÒÉ×ÑÚËÕ ëìá÷éûÉ\n.\n
-27 ÐÌÏÈÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ËÌÁ×ÉÛÉ -- ÎÕÌÅ×ÁÑ ÓÔÒÏËÁ\n
-28 ÐÌÏÈÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ËÌÁ×ÉÛÉ -- ÐÕÓÔÁÑ ÓÔÒÏËÁ\n
-29 ðÌÏÈÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ÆÕÎËÃÉÏÎÁÌØÎÏÊ ËÌÁ×ÉÛÉ. îÕÌÅ×ÁÑ ËÌÁ×ÉÛÁ ÚÁÐÒÅÝÅÎÁ\n
-30 ÐÌÏÈÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ËÌÁ×ÉÛÉ -- ÎÅ×ÅÒÎÙÊ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÊ ÎÏÍÅÒ\n
-31 ÐÌÏÈÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ËÌÁ×ÉÛÉ -- ÎÅ×ÅÒÎÙÊ ×ÏÓØÍÅÒÉÞÎÙÊ ÎÏÍÅÒ\n
-32 ÐÌÏÈÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ËÌÁ×ÉÛÉ -- ÎÅ×ÅÒÎÙÊ ÄÅÓÑÔÉÞÎÙÊ ÎÏÍÅÒ\n
-33 ðÌÏÈÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ÆÕÎËÃÉÏÎÁÌØÎÏÊ ËÌÁ×ÉÛÉ.\n
-34 îÕÌÅ×ÙÅ ËÌÁ×ÉÛÉ ÚÁÐÒÅÝÅÎÙ\n
-35 ÐÌÏÈÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ËÌÁ×ÉÛÉ -- ÎÅÉÚ×ÅÓÔÎÏÅ ÉÍÑ "%S"\n
-36 ÉÓÐÏÌØÚÏ×ÁÎÉÅ: bind [ëìá÷éûÁ | ëïíáîäÁ ëìá÷éûÁ | "emacs" | "vi" | "-a"]\n
-37 îÅ×ÅÒÎÁÑ ÆÕÎËÃÉÑ
-38 %s\t\tÎÅ ÏÐÒÅÄÅÌÅÎ\n
+1 Ðеверное Ð¸Ð¼Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ¸ `%S'\n
+2 Плохое Ð¸Ð¼Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ¸: %S\n
+3 Плохое Ð¸Ð¼Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹: %S\n
+4 ÐŸÐ»Ð¾Ñ…Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ¸ %S\n
+5 ПуÑÑ‚Ð°Ñ Ñтрока\n
+6 Стандартные привÑзки клавиш\n
+7 Ðльтернативные привÑзки клавиш\n
+8 Много-Ñимвольные привÑзки\n
+9 ПривÑзки управлÑющих клавиш\n
+10 %-15s-> не определено\n
+11 BUG!!! %s не ÑвÑзан ни Ñ Ñ‡ÐµÐ¼.\n
+12 ИÑпользование: bindkey [опции] [--] [КЛÐВИШа [КОМÐÐДа]]\n
+13 -a вывеÑти или привÑзать КЛÐВИШу в альтернативной раÑкладке клавиатуры\n
+14 -b воÑпринимать КЛÐВИШу как C-, M-, F- или X- название клавиши\n
+15 -s воÑпринимать КОМÐÐДу как Ñтроку, которую нужно вывеÑти\n
+16 -c воÑпринимать КОМÐÐДу как вÑтроенную или внешнюю команду\n
+17 -v привÑзать вÑе клавиши в ÑоответÑтвии Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð¾Ð¼ vi\n
+18 -e привÑзать вÑе клавиши в ÑоответÑтвии Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð¾Ð¼ emacs\n
+19 -d привÑзать вÑе клавиши в ÑоответÑтвии Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð¾Ð¼ по умолчанию\n
+20 -l вывеÑти ÑпиÑок команд редактора и их опиÑаниÑ\n
+21 -r удалить привÑзку КЛÐВИШи\n
+22 -k воÑпринимать КЛÐВИШу как Ñвное название управлÑющей клавиши\n
+23 -- не воÑпринимать вÑе поÑледующие параметры как опции\n
+24 -u (или Ð»ÑŽÐ±Ð°Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð¾Ð¿Ñ†Ð¸Ñ) вывеÑти Ñтот текÑÑ‚\n
+25 Без КЛÐВИШи или КОМÐÐДы, вывеÑти вÑе привÑзки.\n
+26 Без КОМÐÐДы, вывеÑти привÑзку КЛÐВИШи\n.\n
+27 Ð¿Ð»Ð¾Ñ…Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ¸ -- Ð½ÑƒÐ»ÐµÐ²Ð°Ñ Ñтрока\n
+28 Ð¿Ð»Ð¾Ñ…Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ¸ -- пуÑÑ‚Ð°Ñ Ñтрока\n
+29 ÐŸÐ»Ð¾Ñ…Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¾Ð½Ð°Ð»ÑŒÐ½Ð¾Ð¹ клавиши. ÐÑƒÐ»ÐµÐ²Ð°Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ° запрещена\n
+30 Ð¿Ð»Ð¾Ñ…Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ¸ -- неверный шеÑтнадцатеричный номер\n
+31 Ð¿Ð»Ð¾Ñ…Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ¸ -- неверный воÑьмеричный номер\n
+32 Ð¿Ð»Ð¾Ñ…Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ¸ -- неверный деÑÑтичный номер\n
+33 ÐŸÐ»Ð¾Ñ…Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¾Ð½Ð°Ð»ÑŒÐ½Ð¾Ð¹ клавиши.\n
+34 Ðулевые клавиши запрещены\n
+35 Ð¿Ð»Ð¾Ñ…Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ¸ -- неизвеÑтное Ð¸Ð¼Ñ "%S"\n
+36 иÑпользование: bind [КЛÐВИШа | КОМÐÐДа КЛÐВИШа | "emacs" | "vi" | "-a"]\n
+37 ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ
+38 %s\t\tне определен\n
diff --git a/nls/russian/set22 b/nls/russian/set22
index 02b53f5f23bc..814957eb2942 100644
--- a/nls/russian/set22
+++ b/nls/russian/set22
@@ -1,17 +1,17 @@
-$ $tcsh: set22,v 1.4 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set22,v 1.5 2011/02/04 18:19:42 christos Exp $
$ tc.func.c
$set 22
-1 %S: \t ÐÅÒÅÏÐÒÅÄÅÌÅÎÏ ×
-2 \nîÅ×ÅÒÎÙÊ ÐÁÒÏÌØ ÄÌÑ %s\n
-3 ïÛÉÂÏÞÎÏÅ ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÅ 'precmd' ÕÄÁÌÅÎÏ.\n
-4 ïÛÉÂÏÞÎÏÅ ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÅ 'cwdcmd' ÕÄÁÌÅÎÏ.\n
-5 ïÛÉÂÏÞÎÏÅ ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÅ 'beepcmd' ÕÄÁÌÅÎÏ.\n
-6 ïÛÉÂÏÞÎÏÅ ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÅ 'periodic' ÕÄÁÌÅÎÏ.\n
-7 ÒÁÚÂÏÒ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ\n
-8 ÷Ù ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÈÏÔÉÔÅ ÕÄÁÌÉÔØ ×ÓÅ ÆÁÊÌÙ? [n/y]
-9 ÕÄÁÌÅÎÉÅ ×ÓÅÈ ÆÁÊÌÏ× ÐÒÏÐÕÝÅÎÏ!\n
-10 ËÏÍÁÎÄÎÁÑ ÓÔÒÏËÁ ÔÅÐÅÒØ:\n
-11 ÒÁÚÂÏÒ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ\n
-12 × ÏÄÎÏÍ ÉÚ ÓÐÉÓËÏ×\n
-13 ËÏÍÁÎÄÎÁÑ ÓÔÒÏËÁ ÔÅÐÅÒØ:\n
+1 %S: \t переопределено в
+2 \nÐеверный пароль Ð´Ð»Ñ %s\n
+3 Ошибочное переопределение 'precmd' удалено.\n
+4 Ошибочное переопределение 'cwdcmd' удалено.\n
+5 Ошибочное переопределение 'beepcmd' удалено.\n
+6 Ошибочное переопределение 'periodic' удалено.\n
+7 разбор командной Ñтроки\n
+8 Ð’Ñ‹ дейÑтвительно хотите удалить вÑе файлы? [n/y]
+9 удаление вÑех файлов пропущено!\n
+10 ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ Ñтрока теперь:\n
+11 разбор командной Ñтроки\n
+12 в одном из ÑпиÑков\n
+13 ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ Ñтрока теперь:\n
14 yY
diff --git a/nls/russian/set23 b/nls/russian/set23
index 7d77ab86687c..771e1f6f4be0 100644
--- a/nls/russian/set23
+++ b/nls/russian/set23
@@ -1,4 +1,4 @@
-$ $tcsh: set23,v 1.3 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set23,v 1.4 2011/02/04 18:19:42 christos Exp $
$ tc.os.c
$set 23
1 Bad cpu/site name
@@ -19,16 +19,16 @@ $set 23
16 release: %s\n
17 version: %s\n
18 machine: %s\n
-19 getwd: îÅ ÍÏÇÕ ÏÔËÒÙÔØ ".." (%s)
-20 getwd: îÅ ÍÏÇÕ ÓÍÅÎÉÔØ ËÁÔÁÌÏÇ ÎÁ ".." (%s)
-21 getwd: ïÛÉÂËÁ ÞÔÅÎÉÑ × ".." (%s)
-22 getwd: îÅ ÍÏÇÕ ×ÅÒÎÕÔØÓÑ ÎÁÚÁÄ × "." (%s)
-23 getwd: îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ stat ÎÁ "/" (%s)
-24 getwd: îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ stat ÎÁ "." (%s)
-25 getwd: îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ stat ÎÁ ËÁÔÁÌÏÇ "%s" (%s)
-26 getwd: îÅ ÍÏÇÕ ÏÔËÒÙÔØ ËÁÔÁÌÏÇ "%s" (%s)
-27 getwd: îÅ ÍÏÇÕ ÎÁÊÔÉ "." × ".." (%s)
-28 îÅ×ÅÒÎÙÊ ÔÉÐ ÓÉÓÔÅÍÙ
-29 ôÉÐ ÓÉÓÔÅÍÙ ÎÅ ÕÓÔÁÎÏ×ÌÅÎ
-30 óÌÉÛËÏÍ ÍÎÏÇÏ ÁÒÇÕÍÅÎÔÏ×
-31 îÅ×ÅÒÎÙÊ ÁÒÇÕÍÅÎÔ
+19 getwd: Ðе могу открыть ".." (%s)
+20 getwd: Ðе могу Ñменить каталог на ".." (%s)
+21 getwd: Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð² ".." (%s)
+22 getwd: Ðе могу вернутьÑÑ Ð½Ð°Ð·Ð°Ð´ в "." (%s)
+23 getwd: Ðе могу выполнить stat на "/" (%s)
+24 getwd: Ðе могу выполнить stat на "." (%s)
+25 getwd: Ðе могу выполнить stat на каталог "%s" (%s)
+26 getwd: Ðе могу открыть каталог "%s" (%s)
+27 getwd: Ðе могу найти "." в ".." (%s)
+28 Ðеверный тип ÑиÑтемы
+29 Тип ÑиÑтемы не уÑтановлен
+30 Слишком много аргументов
+31 Ðеверный аргумент
diff --git a/nls/russian/set25 b/nls/russian/set25
index ff9aab92676e..b1c22ab0edf7 100644
--- a/nls/russian/set25
+++ b/nls/russian/set25
@@ -1,6 +1,6 @@
-$ $tcsh: set25,v 1.2 2006/03/02 18:46:47 christos Exp $
+$ $tcsh: set25,v 1.3 2011/02/04 18:19:42 christos Exp $
$ tc.sig.c
$set 25
1 our wait %d\n
-2 ÏÛÉÂËÁ: bsd_signal(%d) ÓÉÇÎÁÌ ×ÙÛÅÌ ÚÁ ÐÒÅÄÅÌÙ ÉÎÔÅÒ×ÁÌÁ\n
-3 ÏÛÉÂËÁ: bsd_signal(%d) - sigaction ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÎÏ, errno %d\n
+2 ошибка: bsd_signal(%d) Ñигнал вышел за пределы интервала\n
+3 ошибка: bsd_signal(%d) - sigaction завершилÑÑ Ð½ÐµÑƒÐ´Ð°Ñ‡Ð½Ð¾, errno %d\n
diff --git a/nls/russian/set26 b/nls/russian/set26
index 5aefd2290aaa..7a93f01538fc 100644
--- a/nls/russian/set26
+++ b/nls/russian/set26
@@ -1,15 +1,15 @@
-$ $tcsh: set26,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set26,v 1.4 2011/02/04 18:19:42 christos Exp $
$ tc.who.c
$set 26
-1 ÎÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ stat ÎÁ %s. ðÏÖÁÌÕÊÓÔÁ, ×ÙÐÏÌÎÉÔÅ "unset watch".\n
-2 %s ÎÅ ÍÏÖÅÔ ÂÙÔØ ÏÔËÒÙÔ. ðÏÖÁÌÕÊÓÔÁ, ×ÙÐÏÌÎÉÔÅ "unset watch".\n
-3 BUG! ÐÏÓÌÅÄÎÉÊ ÜÌÅÍÅÎÔ ÎÅ Ñ×ÌÑÅÔÓÑ whotail!\n
-4 ÎÁÚÁÄ:
-5 BUG! ÐÅÒ×ÙÊ ÜÌÅÍÅÎÔ ÎÅ Ñ×ÌÑÅÔÓÑ whohead!\n
-6 ÎÏ×ÙÊ: %s/%s\n
+1 не могу выполнить stat на %s. ПожалуйÑта, выполните "unset watch".\n
+2 %s не может быть открыт. ПожалуйÑта, выполните "unset watch".\n
+3 BUG! поÑледний Ñлемент не ÑвлÑетÑÑ whotail!\n
+4 назад:
+5 BUG! первый Ñлемент не ÑвлÑетÑÑ whohead!\n
+6 новый: %s/%s\n
7 %n has %a %l from %m.
8 %n has %a %l.
9 logged on
10 logged off
11 replaced %s on
-12 ÌÏËÁÌØÎÙÊ
+12 локальный
diff --git a/nls/russian/set27 b/nls/russian/set27
index a995389674a0..5179fe02866a 100644
--- a/nls/russian/set27
+++ b/nls/russian/set27
@@ -1,8 +1,8 @@
-$ $tcsh: set27,v 1.4 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set27,v 1.5 2011/02/04 18:19:42 christos Exp $
$ tw.comp.c
$set 27
-1 ËÏÍÁÎÄÁ
-2 ÓÅÐÁÒÁÔÏÒ
-3 ÛÁÂÌÏÎ
-4 ÉÎÔÅÒ×ÁÌ
-5 ÚÁ×ÅÒÛÅÎÉÅ
+1 команда
+2 Ñепаратор
+3 шаблон
+4 интервал
+5 завершение
diff --git a/nls/russian/set29 b/nls/russian/set29
index b7b4da92ab4c..24aee57e76bd 100644
--- a/nls/russian/set29
+++ b/nls/russian/set29
@@ -1,4 +1,4 @@
-$ $tcsh: set29,v 1.2 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set29,v 1.3 2011/02/04 18:19:42 christos Exp $
$ tw.help.c
$set 29
-1 ïÔÓÕÔÓÔ×ÕÅÔ ÆÁÊÌ ÐÏÍÏÝÉ ÄÌÑ %S\n
+1 ОтÑутÑтвует файл помощи Ð´Ð»Ñ %S\n
diff --git a/nls/russian/set30 b/nls/russian/set30
index 7ac5fe61f43a..be6f9aa4ef3a 100644
--- a/nls/russian/set30
+++ b/nls/russian/set30
@@ -1,16 +1,16 @@
-$ $tcsh: set30,v 1.4 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set30,v 1.5 2011/02/04 18:19:42 christos Exp $
$ tw.parse.c
$set 30
1 starting_a_command %d\n
2 complete %d
3 complete %d %S\n
-4 %s: ÷ÎÕÔÒÅÎÎÑÑ match error.\n
-5 ÜÌÅÍÅÎÔÏ×
-6 ÒÑÄÏ×
-7 îÁÊÄÅÎÏ %d %s, ×Ù ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÈÏÔÉÔÅ ×Ù×ÅÓÔÉ ÉÈ ×ÓÅÈ? [n/y]
+4 %s: ВнутреннÑÑ match error.\n
+5 Ñлементов
+6 Ñ€Ñдов
+7 Ðайдено %d %s, вы дейÑтвительно хотите вывеÑти их вÑех? [n/y]
8 looking = %d\n
-9 \n×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ tcsh: Ñ ÎÅ ÚÎÁÀ, ÞÔÏ Ñ ÉÝÕ!\n
-10 ÎÅ ËÁÔÁÌÏÇ
-11 ÎÅ ÎÁÊÄÅÎÏ
-12 ÎÅÞÉÔÁÅÍÏ
+9 \nвнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° tcsh: Ñ Ð½Ðµ знаю, что Ñ Ð¸Ñ‰Ñƒ!\n
+10 не каталог
+11 не найдено
+12 нечитаемо
13 yY
diff --git a/nls/russian/set31 b/nls/russian/set31
index 908cb023aba0..b9f8cae9a841 100644
--- a/nls/russian/set31
+++ b/nls/russian/set31
@@ -1,7 +1,7 @@
-$ $tcsh: set31,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set31,v 1.4 2011/02/04 18:19:42 christos Exp $
$ vms.termcap.c
$set 31
-1 îÅ ÍÏÇÕ ÏÔËÒÙÔØ TERMCAP: [%s]\n
-2 îÅ ÍÏÇÕ ÏÔËÒÙÔØ %s.\n
-3 îÁÊÄÅÎÏ %s × %s.\n
-4 óÏÏÔ×ÅÔÓÔ×ÉÊ ÄÌÑ %s ÎÅ ÎÁÊÄÅÎÏ × ÆÁÊÌÅ %s\n
+1 Ðе могу открыть TERMCAP: [%s]\n
+2 Ðе могу открыть %s.\n
+3 Ðайдено %s в %s.\n
+4 СоответÑтвий Ð´Ð»Ñ %s не найдено в файле %s\n
diff --git a/nls/russian/set4 b/nls/russian/set4
index 58d84158cd2b..ad47bfbaaa9d 100644
--- a/nls/russian/set4
+++ b/nls/russian/set4
@@ -1,26 +1,26 @@
-$ $tcsh: set4,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set4,v 1.4 2011/02/04 18:19:42 christos Exp $
$ Termcap strings
$set 4
-1 ÄÏÂÁ×ÉÔØ ÎÏ×ÕÀ ÐÕÓÔÕÀ ÓÔÒÏËÕ
-2 Ú×ÕËÏ×ÏÊ Ú×ÏÎÏË
-3 ÏÞÉÓÔÉÔØ ÄÏ ËÏÎÃÁ
-4 ÏÞÉÓÔÉÔØ ÄÏ ËÏÎÃÁ ÓÔÒÏËÉ
-5 ËÕÒÓÏÒ ÎÁ ÇÏÒÉÚÏÎÔÁÌØÎÕÀ ÐÏÚÉÃÉÀ
-6 ÏÞÉÓÔÉÔØ ÜËÒÁÎ
-7 ÕÄÁÌÉÔØ ÓÉÍ×ÏÌ
-8 ÕÄÁÌÉÔØ ÓÔÒÏËÕ
-9 ÐÅÒÅÊÔÉ × ÒÅÖÉÍ ÕÄÁÌÅÎÉÑ
-10 ×ÙÊÔÉ ÉÚ ÒÅÖÉÍÁ ÕÄÁÌÅÎÉÑ
-11 ×ÙÊÔÉ ÉÚ ÒÅÖÉÍÁ ×ÓÔÁ×ËÉ
+1 добавить новую пуÑтую Ñтроку
+2 звуковой звонок
+3 очиÑтить до конца
+4 очиÑтить до конца Ñтроки
+5 курÑор на горизонтальную позицию
+6 очиÑтить Ñкран
+7 удалить Ñимвол
+8 удалить Ñтроку
+9 перейти в режим удалениÑ
+10 выйти из режима удалениÑ
+11 выйти из режима вÑтавки
12 cursor from status line
13 home cursor
-14 ×ÓÔÁ×ÉÔØ ÓÉÍ×ÏÌ
-15 ÐÅÒÅÊÔÉ × ÒÅÖÉÍ ×ÓÔÁ×ËÉ
+14 вÑтавить Ñимвол
+15 перейти в режим вÑтавки
16 insert padding
-17 ÐÅÒÅÍÅÓÔÉÔØ ËÕÒÓÏÒ ×ÎÉÚ
-18 ÐÅÒÅÍÅÓÔÉÔØ ËÕÒÓÏÒ ×ÌÅ×Ï
-19 ÐÅÒÅÍÅÓÔÉÔØ ËÕÒÓÏÒ ×ÐÒÁ×Ï
-20 ÐÅÒÅÍÅÓÔÉÔØ ËÕÒÓÏÒ ××ÅÒÈ
+17 перемеÑтить курÑор вниз
+18 перемеÑтить курÑор влево
+19 перемеÑтить курÑор вправо
+20 перемеÑтить курÑор вверх
21 begin bold
22 end attributes
23 non destructive space
@@ -30,16 +30,16 @@ $set 4
27 cursor up one
28 begin underline
29 end underline
-30 ×ÉÚÕÁÌØÎÙÊ Ú×ÏÎÏË
-31 ÕÄÁÌÉÔØ ÎÅÓËÏÌØËÏ ÓÉÍ×ÏÌÏ×
+30 визуальный звонок
+31 удалить неÑколько Ñимволов
32 cursor down multiple
-33 ×ÓÔÁ×ÉÔØ ÎÅÓËÏÌØËÏ ÓÉÍ×ÏÌÏ×
+33 вÑтавить неÑколько Ñимволов
34 cursor left multiple
35 cursor right multiple
36 cursor up multiple
37 Has automatic margins
38 Can use physical tabs
-39 þÉÓÌÏ ÓÔÒÏË
-40 þÉÓÔÏ ÓÔÏÌÂÃÏ×
+39 ЧиÑло Ñтрок
+40 ЧиÑто Ñтолбцов
41 Has meta key
42 Newline ignored at right margin
diff --git a/nls/russian/set5 b/nls/russian/set5
index 6e488980808b..03960655e7b8 100644
--- a/nls/russian/set5
+++ b/nls/russian/set5
@@ -1,4 +1,4 @@
-$ $tcsh: set5,v 1.2 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set5,v 1.3 2011/02/04 18:19:42 christos Exp $
$ ed.chared.c
$set 5
-1 óÒÅÄÎÑÑ ÚÁÇÒÕÚËÁ ÎÅÄÏÓÔÕÐÎÁ\n
+1 СреднÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° недоÑтупна\n
diff --git a/nls/russian/set6 b/nls/russian/set6
index bffc35e16d2a..532d65737cc9 100644
--- a/nls/russian/set6
+++ b/nls/russian/set6
@@ -1,11 +1,11 @@
-$ $tcsh: set6,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set6,v 1.4 2011/02/04 18:19:42 christos Exp $
$ ed.inputl.c
$set 6
-1 ïûéâëá: ÎÅ×ÅÒÎÁÑ ËÏÍÁÎÄÁ ËÌÀÞÁ 0%o\r\n
-2 ÄÁ\n
-3 ÒÅÄÁËÔÉÒÏ×ÁÔØ\n
-4 ÐÒÅÒ×ÁÔØ\n
-5 ÎÅÔ\n
-6 îÅÔ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÊ ËÏÍÁÎÄÙ\n
-7 îÅÏÄÎÏÚÎÁÞÎÁÑ ËÏÍÁÎÄÁ\n
-8 *** ÆÁÔÁÌØÎÁÑ ïûéâëá ÒÅÄÁËÔÏÒÁ ***\r\n\n
+1 ОШИБКÐ: Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° ключа 0%o\r\n
+2 да\n
+3 редактировать\n
+4 прервать\n
+5 нет\n
+6 Ðет ÑоответÑтвующей команды\n
+7 ÐÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ‡Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°\n
+8 *** Ñ„Ð°Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ ÐžÐ¨Ð˜Ð‘ÐšÐ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð° ***\r\n\n
diff --git a/nls/russian/set7 b/nls/russian/set7
index 7f7cbc7cee6b..61a216e26984 100644
--- a/nls/russian/set7
+++ b/nls/russian/set7
@@ -1,4 +1,4 @@
-$ $tcsh: set7,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set7,v 1.4 2011/02/04 18:19:42 christos Exp $
$ ed.screen.c
$set 7
1 \n\tTcsh thinks your terminal has the\n
@@ -10,20 +10,20 @@ $set 7
7 \tIt can%s use tabs\n
8 not
9 \tIt %s automatic margins\n
-10 ÉÍÅÅÔ
-11 ÎÅ ÉÍÅÅÔ
+10 имеет
+11 не имеет
12 \tIt %s magic margins\n
-13 (ÐÕÓÔÏ)
-14 ÄÁ
-15 ÎÅÔ
-16 ïûéâëá: ÎÅ ÍÏÇÕ ÕÄÁÌÉÔØ\r\n
+13 (пуÑто)
+14 да
+15 нет
+16 ОШИБКÐ: не могу удалить\r\n
17 DeleteChars: num is riduculous: %d\r\n
-18 ïûéâëá: ÎÅ ÍÏÇÕ ×ÓÔÁ×ÉÔØ\r\n
+18 ОШИБКÐ: не могу вÑтавить\r\n
19 StartInsert: num is riduculous: %d\r\n
-20 %s: îÅ ÍÏÇÕ ÏÔËÒÙÔØ /etc/termcap.\n
+20 %s: Ðе могу открыть /etc/termcap.\n
21 %s: No entry for terminal type "%s"\n
22 %s: using dumb terminal settings.\n
-23 %s: ÷îéíáîéå: Your terminal cannot move up.\n
+23 %s: Ð’ÐИМÐÐИЕ: Your terminal cannot move up.\n
24 Editing may be odd for long lines.\n
25 no clear EOL capability.\n
26 no delete char capability.\n
diff --git a/nls/russian/set8 b/nls/russian/set8
index 80bede0c3a69..266d0e74f8f3 100644
--- a/nls/russian/set8
+++ b/nls/russian/set8
@@ -1,5 +1,5 @@
-$ $tcsh: set8,v 1.2 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set8,v 1.3 2011/02/04 18:19:42 christos Exp $
$ ed.term.c
$set 8
-1 îÅÉÚ×ÅÓÔÎÙÊ ÐÅÒÅËÌÀÞÁÔÅÌØ
-2 îÅ×ÅÒÎÙÊ ÁÒÇÕÍÅÎÔ
+1 ÐеизвеÑтный переключатель
+2 Ðеверный аргумент
diff --git a/nls/russian/set9 b/nls/russian/set9
index cef9379d2699..bb2ce250d470 100644
--- a/nls/russian/set9
+++ b/nls/russian/set9
@@ -1,4 +1,4 @@
-$ $tcsh: set9,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set9,v 1.4 2011/02/04 18:19:42 christos Exp $
$ ed.xmap.c
$set 9
1 AddXkey: Null extended-key not allowed.\n
@@ -6,7 +6,7 @@ $set 9
3 DeleteXkey: Null extended-key not allowed.\n
4 Unbound extended key "%S"\n
5 Some extended keys too long for internal print buffer
-6 Enumerate: BUG!! ðÅÒÅÄÁÎ ÎÕÌÅ×ÏÊ ÕËÁÚÁÔÅÌØ!\n
-7 ÎÅÔ ××ÏÄÉÍÙÈ ÄÁÎÎÙÈ
+6 Enumerate: BUG!! Передан нулевой указатель!\n
+7 нет вводимых данных
8 Something must follow: %c\n
-9 ÷ÏÓØÍÅÒÉÞÎÁÑ ËÏÎÓÔÁÎÔÁ ÎÅ ÕÍÅÝÁÅÔÓÑ × char.\n
+9 ВоÑÑŒÐ¼ÐµÑ€Ð¸Ñ‡Ð½Ð°Ñ ÐºÐ¾Ð½Ñтанта не умещаетÑÑ Ð² char.\n
diff --git a/nls/spanish/charset b/nls/spanish/charset
index 0b13559084f6..81f1b6669c79 100644
--- a/nls/spanish/charset
+++ b/nls/spanish/charset
@@ -1,3 +1,3 @@
-$ codeset=ISO-8859-1
+$ codeset=UTF-8
$set 255
-1 ISO-8859-1
+1 UTF-8
diff --git a/nls/spanish/set1 b/nls/spanish/set1
index 0accb679eb65..ad8ec9c81b01 100644
--- a/nls/spanish/set1
+++ b/nls/spanish/set1
@@ -1,140 +1,140 @@
-$ $tcsh: set1,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set1,v 1.4 2011/02/04 18:19:42 christos Exp $
$ Mensajes de Error
$set 1
1 Error de sintaxis
-2 %s no está permitido
+2 %s no está permitido
3 Palabra demasiado larga
-4 $< línea demasiado larga
+4 $< línea demasiado larga
5 No hay fichero para $0
6 Modificador [] incompleto
-7 $ expansión debe terminar antes de ]
-8 Modificador erróneo : en $ (%c)
-9 Error de índice
-10 Número erróneamente formado
-11 No hay más palabras
+7 $ expansión debe terminar antes de ]
+8 Modificador erróneo : en $ (%c)
+9 Error de índice
+10 Número erróneamente formado
+11 No hay más palabras
12 Falta nombre de fichero
13 Error interno de glob
14 Comando no encontrado
15 Demasiado pocos argumentos
16 Demasiados argumentos
17 Es demasiado peligroso crear un alias para eso
-18 `If' vacío
+18 `If' vacío
19 `Then' incorrecto
-20 Las palabras no están entre paréntesis
+20 Las palabras no están entre paréntesis
21 No se encuentra %s
-22 Máscara incorrecta
-23 No existe límite de ese tipo
+22 Máscara incorrecta
+23 No existe límite de ese tipo
24 Argumento demasiado grande
25 Factor de escala incorrecto o desconocido
26 Variable indefinida
27 La pila de directorios no es tan profunda
-28 Mal número de señal
-29 Señal desconocida; `kill -l' lista las señales
+28 Mal número de señal
+29 Señal desconocida; `kill -l' lista las señales
30 El nombre de la variable debe comenzar con una letra
31 El nombre de la variable es demasiado grande
-32 El nombre de la variable debe contener caracteres alfanuméricos
+32 El nombre de la variable debe contener caracteres alfanuméricos
33 No hay control de trabajos en esta shell
-34 Sintaxis de la expresión
-35 No está el directorio personal
+34 Sintaxis de la expresión
+35 No está el directorio personal
36 No se puede cambiar al directorio personal
-37 Comando nulo inválido
-38 Expresion carece de asignación
+37 Comando nulo inválido
+38 Expresion carece de asignación
39 Operador desconocido
40 Ambiguo
41 %s: Archivo existente
42 El argumento para `-c' debe terminar en una barra invertida
43 Interumpido
-44 Índice fuera del rango válido
-45 Sobrepasada la capacidad de la línea
+44 Ãndice fuera del rango válido
+45 Sobrepasada la capacidad de la línea
46 No existe ese trabajo
47 No se puede desde una terminal
48 No se encuentra en bucle while/foreach
-49 No hay más procesos
+49 No hay más procesos
50 No existe correspondencia
51 Falta %c
52 No se ha hallado correspondencia con %c
53 Memoria insuficiente
-54 No se puede crear la tubería
+54 No se puede crear la tubería
55 %s: %s
56 %s
57 Uso: jobs [ -l ]
58 Los argumentos deben ser trabajos o identificadores de proceso
59 No hay trabajo en curso
60 No hay trabajo previo
-61 No hay trabajo que corresponda con este patrón
+61 No hay trabajo que corresponda con este patrón
62 Llamadas a `fork' entrelazadas > %d; puede ser un bucle `...`
63 No se puede gestionar trabajos en sub-shells
-64 Fallo de sincronización: No se encuentra el proceso %d
+64 Fallo de sincronización: No se encuentra el proceso %d
65 %shay trabajos interrumpidos
66 %shay trabajos parados
-67 No hay más directorios
-68 Pila de directorios vacía
-69 Directorio erróneo
+67 No hay más directorios
+68 Pila de directorios vacía
+69 Directorio erróneo
70 Uso: %s [-%s]%s
71 `-h' necesita operandos
72 No es un shell de ingreso
-73 División por 0
-74 Módulo por 0
+73 División por 0
+74 Módulo por 0
75 Error de escala: Seguro que era "%s"?
-76 No se puede suspender un shell de ingreso (aún)
+76 No se puede suspender un shell de ingreso (aún)
77 Usuario desconocido: %s
-78 La variable $home no está definida
-79 Uso: history [-%s] [# número de comandos]
+78 La variable $home no está definida
+79 Uso: history [-%s] [# número de comandos]
80 No esta permitido el uso de $, ! o < con $# o $?
81 Nombre de variable incluye un retorno de carro
82 No esta permitido el uso de * con $# o $?
-83 No esta permitido usar $?<dígito> o $#<dígito>
+83 No esta permitido usar $?<dígito> o $#<dígito>
84 Nombre de variable ilegal
-85 Retorno de carro en el índice de variables
-86 Desborde en el buffer de expansión
+85 Retorno de carro en el índice de variables
+86 Desborde en el buffer de expansión
87 Sintaxis de variable
88 Forma ! incorrecta
89 No existe sustituto previo
-90 Sustituto erróneo
+90 Sustituto erróneo
91 No existe `lado izquierdo' previo
-92 Valor de asignación demasiado largo
+92 Valor de asignación demasiado largo
93 Modificador de ! incorrecto: %c
94 Error de modificador
-95 Desborde el el buffer de sustitución
-96 Selector de argumento de ! erróneo
-97 No existe búsqueda previa
+95 Desborde el el buffer de sustitución
+96 Selector de argumento de ! erróneo
+97 No existe búsqueda previa
98 %s: No se encuentra el comando
99 Demasiados `)'
100 Demasiados `('
-101 Colocación de `(' incorrecta
-102 Falta el nombre de la redirección
-103 Redirección de salida ambigua
-104 No se puede usar << entre paréntesis
-105 Redirección de entrada ambigua
-106 Colocación de paréntesis errónea
+101 Colocación de `(' incorrecta
+102 Falta el nombre de la redirección
+103 Redirección de salida ambigua
+104 No se puede usar << entre paréntesis
+105 Redirección de entrada ambigua
+106 Colocación de paréntesis errónea
107 Lazo en los `alias'
108 La variable $watch no ha sido definida
109 No hay comandos programados
110 Uso: sched -<item#>.\nUso: sched [+]hh:mm <comando>
111 No hay tantos comandos programados
-112 No hay ningún comando a ejecutar
-113 Tiempo de ejecución del comando incorrecto
+112 No hay ningún comando a ejecutar
+113 Tiempo de ejecución del comando incorrecto
114 Tiempo relativo inconsistente con am/pm
115 Se ha agotado el espacio para cadenas termcap
116 Uso: settc %s [yes|no]
-117 Característica `%s' desconocida
-118 Parámetro termcap `%%%c' desconocido
+117 Característica `%s' desconocida
+118 Parámetro termcap `%%%c' desconocido
119 Demasiados argumentos para `%s' (%d)
120 `%s' requiere %d argumentos
-121 Uso: echotc [-v|-s] [<característica> [<args>]]
-122 %s: %s. Arquitectura errónea
+121 Uso: echotc [-v|-s] [<característica> [<args>]]
+122 %s: %s. Arquitectura errónea
123 !# Lazo en el historial
124 Consulta de archivo incorrecta
125 Desborde en el selector
-126 Opción desconocida: `-%s'\nUso: %s [ -bcdefilmnqstvVxX -Dnombre[=valor] ] [ argumento ... ]
-127 Opción desconocida: `-%s'\nUso: %s [ -bcdefFilmnqstvVxX ] [ argumento ... ]
-128 Opción desconocida: `-%s'\nUso: %s [ -bcdefilmnqstvVxX ] [ argumento ... ]
-129 \nModo de terminación automática inválido: "%s"
-130 \nInválido %s: '%c'
-131 \nFalta el separador '%c' después %s "%s"
+126 Opción desconocida: `-%s'\nUso: %s [ -bcdefilmnqstvVxX -Dnombre[=valor] ] [ argumento ... ]
+127 Opción desconocida: `-%s'\nUso: %s [ -bcdefFilmnqstvVxX ] [ argumento ... ]
+128 Opción desconocida: `-%s'\nUso: %s [ -bcdefilmnqstvVxX ] [ argumento ... ]
+129 \nModo de terminación automática inválido: "%s"
+130 \nInválido %s: '%c'
+131 \nFalta el separador '%c' después %s "%s"
132 \n%s incompleto: "%s"
133 `-m' no necesita operandos
-134 Uso: unlimit [-fh] [límites]
-135 $%S es de sólo-lectura
+134 Uso: unlimit [-fh] [límites]
+135 $%S es de sólo-lectura
136 No existe ese trabajo
137 Unknown colorls variable `%c%c'
diff --git a/nls/spanish/set10 b/nls/spanish/set10
index 8d5b0577dfbf..600342eb8b28 100644
--- a/nls/spanish/set10
+++ b/nls/spanish/set10
@@ -1,8 +1,8 @@
-$ $tcsh: set10,v 1.2 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set10,v 1.3 2011/02/04 18:19:42 christos Exp $
$ ma.setp.c
$set 10
1 setpath: comando '%s' incorrecto.\n
2 setpath: insuficientes argumentos para el comando '%s'.\n
3 setpath: falta el valor en la ruta '%s'\n
4 setpath: no se encuentra %s en %s\n
-5 setpath: %d posición inválida en %s\n
+5 setpath: %d posición inválida en %s\n
diff --git a/nls/spanish/set13 b/nls/spanish/set13
index 12b32b0c24a2..e31f6d34416d 100644
--- a/nls/spanish/set13
+++ b/nls/spanish/set13
@@ -1,9 +1,9 @@
-$ $tcsh: set13,v 1.2 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set13,v 1.3 2011/02/04 18:19:42 christos Exp $
$ sh.exec.c
$set 13
1 hash=%-4d dir=%-2d prog=%s\n
2 %d grupos de hash de %d bits cada uno\n
-3 máscara de depurado = 0x%08x\n
+3 máscara de depurado = 0x%08x\n
4 %d aciertos, %d fallos, %d%%\n
5 %S: comando integrado en la shell.\n
6 %S: Comando inexistente.\n
diff --git a/nls/spanish/set14 b/nls/spanish/set14
index 5bb621e5c6bb..9571a7ccaff3 100644
--- a/nls/spanish/set14
+++ b/nls/spanish/set14
@@ -1,6 +1,6 @@
-$ $tcsh: set14,v 1.2 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set14,v 1.3 2011/02/04 18:19:42 christos Exp $
$ sh.file.c
$set 14
-1 \n¡¡Qué asco!! ¡¡Hay demasiados %s!!\n
+1 \n¡¡Qué asco!! ¡¡Hay demasiados %s!!\n
2 nombres en el archivo de claves
3 archivos
diff --git a/nls/spanish/set15 b/nls/spanish/set15
index 825af2eccad5..06b581db0bc5 100644
--- a/nls/spanish/set15
+++ b/nls/spanish/set15
@@ -1,7 +1,7 @@
-$ $tcsh: set15,v 1.2 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set15,v 1.3 2011/02/04 18:19:42 christos Exp $
$ sh.func.c
$set 15
-1 %s: %s: No se puede %s el límite %s\n
+1 %s: %s: No se puede %s el límite %s\n
2 quitar
3 poner
4 \040(hard-limit)
diff --git a/nls/spanish/set16 b/nls/spanish/set16
index 0482ffa02ed1..5edb4660087d 100644
--- a/nls/spanish/set16
+++ b/nls/spanish/set16
@@ -1,4 +1,4 @@
-$ $tcsh: set16,v 1.2 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set16,v 1.3 2011/02/04 18:19:43 christos Exp $
$ sh.lex.c
$set 16
1 Se ha reinicializado el grupo de procesos de las terminales de %d a %d\n
@@ -7,7 +7,7 @@ $set 16
4 seek to eval %x %x\n
5 seek to alias %x %x\n
6 seek to file %x\n
-7 Tipo de seek erróneo %d\n
+7 Tipo de seek erróneo %d\n
8 tell eval %x %x\n
9 tell alias %x %x\n
10 tell file %x\n
diff --git a/nls/spanish/set17 b/nls/spanish/set17
index 02df1879ead4..a342ab893fea 100644
--- a/nls/spanish/set17
+++ b/nls/spanish/set17
@@ -1,11 +1,11 @@
-$ $tcsh: set17,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set17,v 1.4 2011/02/04 18:19:43 christos Exp $
$ sh.proc.c
$set 17
-1 BUG: ¡en espera de un trabajo en segundo plano!\n
-2 Finalizó %d\n
+1 BUG: ¡en espera de un trabajo en segundo plano!\n
+2 Finalizó %d\n
3 BUG: Se ha aplicado "flush" al proceso por segunda vez
4 Ejecutando
-5 Señal
+5 Señal
6 Finalizado %-25d
7 Fin
8 BUG: status=%-9o
diff --git a/nls/spanish/set18 b/nls/spanish/set18
index b2d7736c6c4e..caf7ae7b076f 100644
--- a/nls/spanish/set18
+++ b/nls/spanish/set18
@@ -1,4 +1,4 @@
-$ $tcsh: set18,v 1.2 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set18,v 1.3 2011/02/04 18:19:43 christos Exp $
$ sh.set.c
$set 18
-1 Aviso: PATH de tamaño ridículo ha sido truncado\n
+1 Aviso: PATH de tamaño ridículo ha sido truncado\n
diff --git a/nls/spanish/set19 b/nls/spanish/set19
index fdce85da1a87..0f83042047db 100644
--- a/nls/spanish/set19
+++ b/nls/spanish/set19
@@ -1,15 +1,23 @@
-$ $tcsh: set19,v 1.2 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set19,v 1.5 2011/02/25 23:58:08 christos Exp $
$ tc.alloc.c
$set 19
1 nbytes=%d: Se ha agotado la memoria\n
2 Se ha llamado a free(%lx) antes de asignar nada.
-3 free(%lx) por encima del límite superior de la memoria.
-4 free(%lx) por debajo del límite inferior de la memoria.
-5 free(%lx) bloque erróneo.
-6 free(%lx) chequeo de rango erróneo.
-7 free(%lx) índice de bloque erróneo.
-8 %s asignación actual de memoria:\nfree:\t
-9 \nusada:\t
+3 free(%lx) por encima del límite superior de la memoria.
+4 free(%lx) por debajo del límite inferior de la memoria.
+5 free(%lx) bloque erróneo.
+6 free(%lx) chequeo de rango erróneo.
+7 free(%lx) índice de bloque erróneo.
+8 %s asignación actual de memoria:\nfree:\t
+9 usada
10 \n\tTotal en uso: %d, total libre: %d\n
-11 \tSe ha asignado memoria de 0x%lx a 0x%lx. Límite superior real en 0x%lx\n
+11 \tSe ha asignado memoria de 0x%lx a 0x%lx. Límite superior real en 0x%lx\n
12 Se ha asignado memoria de 0x%lx a 0x%lx (%ld).\n
+13 %s current memory allocation:\n
+14 Total space allocated from system: %d\n
+15 Number of non-inuse chunks: %d\n
+16 Number of mmapped regions: %d\n
+17 Total space in mmapped regions: %d\n
+18 Total allocated space: %d\n
+19 Total non-inuse space: %d\n
+20 Top-most, releasable space: %d\n
diff --git a/nls/spanish/set2 b/nls/spanish/set2
index b73c6930feab..dc43d3850cd0 100644
--- a/nls/spanish/set2
+++ b/nls/spanish/set2
@@ -1,92 +1,92 @@
-$ $tcsh: set2,v 1.2 2006/03/02 18:46:48 christos Exp $
-$ Nombres de señales
+$ $tcsh: set2,v 1.3 2011/02/04 18:19:43 christos Exp $
+$ Nombres de señales
$set 2
-1 Señal nula
+1 Señal nula
2 Colgar
3 Interrumpir
4 Salir
-5 Instrucción ilegal
+5 Instrucción ilegal
6 trap Trace/BPT
7 Abortar
8 trap IOT
-9 Caída del sistema inminente
+9 Caída del sistema inminente
10 Salida con error
11 trap EMT
-12 Excepción de punto flotante
+12 Excepción de punto flotante
13 Terminado
-14 Señal de usuario 1
-15 Señal de usuario 2
-16 Error de segmentación
+14 Señal de usuario 1
+15 Señal de usuario 2
+16 Error de segmentación
17 Error de bus
18 Error de rango de programa
19 Error de rango de operando
-20 Llamada del sistema errónea
-21 Tubería rota
+20 Llamada del sistema errónea
+21 Tubería rota
22 Despertador
23 Terminado
24 Cambio de estado en el hijo
25 Muerte del hijo
-26 Fallo específico de Apollo
+26 Fallo específico de Apollo
27 El hijo ha parado o terminado
28 Hijo ha terminado
-29 Fallo de alimentación
+29 Fallo de alimentación
30 Recurso perdido
31 Break (Ctrl-Break)
-32 Posible señal de entrada/salida
-33 E/S asíncrona (select)
-34 Condición urgente en el canal de E/S
+32 Posible señal de entrada/salida
+33 E/S asíncrona (select)
+34 Condición urgente en el canal de E/S
35 Despertar mutiltarea
-36 Finalización multitarea
-37 Final de E/S asíncrona Fortran
-38 Recuperación
+36 Finalización multitarea
+37 Final de E/S asíncrona Fortran
+38 Recuperación
39 Error incorregible de memoria
40 Excedido el tiempo de CPU
41 Bajada del sistema inminente
42 Grupo micro-tarea-no se ha activado la bandera de despertar
-43 Error de hilo de ejecución - (use cord -T para información detallada)
+43 Error de hilo de ejecución - (use cord -T para información detallada)
44 Error de paridad de registro CRAY Y-MP
-45 Petición de información
-46 Suspendido (señal)
-47 Parado (señal)
+45 Petición de información
+46 Suspendido (señal)
+47 Parado (señal)
48 Suspendido
49 Parado
-50 Continúa
+50 Continúa
51 Suspendido (entrada tty)
52 Parado (entrada tty)
53 Suspendido (salida tty)
54 Parado (salida tty)
55 Modificado el estado de la ventana
-56 Modificado el tamaño de la ventana
-57 Modificado el estado del teléfono
+56 Modificado el tamaño de la ventana
+57 Modificado el estado del teléfono
58 Excedido el tiempo de CPU
-59 Excedido el límite del tamaño de archivo
-60 Señal de temporizador virtual
+59 Excedido el límite del tamaño de archivo
+60 Señal de temporizador virtual
61 Perfilando la alarma de temporizador
-62 Señal DIL
+62 Señal DIL
63 Ha tenido lugar un evento interrogable
-64 Los lwps del proceso están bloqueados
-65 Señal LWP especial
-66 Señal CPR especial
-67 Señal CPR especial
-68 Primera señal de tiempo real
-69 Segunda señal de tiempo real
-70 Tercera señal de tiempo real
-71 Cuarta señal de tiempo real
-72 Cuarta señal por la cola de tiempo real
-73 Antepenúltima señal de tiempo real
-74 Penúltima señal de tiempo real
-75 Última señal de tiempo real
-76 E/S asíncrona LAN
+64 Los lwps del proceso están bloqueados
+65 Señal LWP especial
+66 Señal CPR especial
+67 Señal CPR especial
+68 Primera señal de tiempo real
+69 Segunda señal de tiempo real
+70 Tercera señal de tiempo real
+71 Cuarta señal de tiempo real
+72 Cuarta señal por la cola de tiempo real
+73 Antepenúltima señal de tiempo real
+74 Penúltima señal de tiempo real
+75 Última señal de tiempo real
+76 E/S asíncrona LAN
77 Lectura/escritura PTY disponible
-78 Intervención E/S requerida
+78 Intervención E/S requerida
79 Otorgado modo monitor HFT
-80 Se debería abandonar el modo monitor HFT
+80 Se debería abandonar el modo monitor HFT
81 Se ha completado el control de sonido HFT
82 Hay datos en el buffer circular HFT
83 Migrar proceso
-84 Tecla de atención asegurada
-85 Reprogramación
-86 Señalar SS$_DEBUG
+84 Tecla de atención asegurada
+85 Reprogramación
+86 Señalar SS$_DEBUG
87 Prioridad cambiada
88 Bloqueo real detectado
-89 Nuevo carácter de entrada
+89 Nuevo carácter de entrada
diff --git a/nls/spanish/set20 b/nls/spanish/set20
index 9458fef24046..529751314cfe 100644
--- a/nls/spanish/set20
+++ b/nls/spanish/set20
@@ -1,41 +1,41 @@
-$ $tcsh: set20,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set20,v 1.4 2011/02/04 18:19:43 christos Exp $
$ tc.bind.c
$set 20
-1 Nombre de tecla no válido `%S'\n
+1 Nombre de tecla no válido `%S'\n
2 Nombre de tecla incorrecto: %S\n
3 Nombre de comando incorrecto: %S\n
4 Especificador de tecla incorrecto %S\n
5 Especificada la cadena nula\n
-6 Definiciones de teclas estándar\n
+6 Definiciones de teclas estándar\n
7 Definiciones de teclas alternativas\n
-8 Definiciones Multi-carácter\n
+8 Definiciones Multi-carácter\n
9 Definiciones de las teclas de flechas\n
10 %-15s-> indefinida\n
-11 ¡¡¡BUG!!! %s no tiene definición asociada.\n
+11 ¡¡¡BUG!!! %s no tiene definición asociada.\n
12 Uso: bindkey [opciones] [--] [TECLA [COMANDO]]\n
13 -a lista o define TECLA en un mapa de teclas alternativo\n
-14 -b acepta definiciones de teclas simbólicas\n
+14 -b acepta definiciones de teclas simbólicas\n
15 -s asume que COMANDO es una cadena ha de imprimir literalmente\n
16 -c interpreta COMANDO como comando interno o externo\n
17 -v usa las definiciones del editor vi\n
18 -e usa las definiciones del editor vi\n
19 -d usa las definiciones del editor por defecto\n
20 -l lista los comandos del editor y sus descripciones\n
-21 -r elimina la definición asociada a TECLA\n
-22 -k interpreta TECLA como nombre simbólico de tecla de flecha\n
+21 -r elimina la definición asociada a TECLA\n
+22 -k interpreta TECLA como nombre simbólico de tecla de flecha\n
23 -- fuerza "break" en el procesamiento de opciones\n
-24 -u (o cualquier opción no válida) este mensaje\n
+24 -u (o cualquier opción no válida) este mensaje\n
25 Sin TECLA o COMANDO, imprime todas las asociaciones de teclas\n
-26 Sin COMANDO, imprime la asociación de TECLA.\n
-27 especificación de tecla inválida -- cadena nula\n
-28 especificación de tecla inválida -- cadena vacía\n
-29 Especificación de tecla de función inválida. No se permite una tecla nula\n
-30 especificación de tecla inválida -- número hexadecimal incorrecto\n
-31 especificación de tecla inválida -- número octal incorrecto\n
-32 especificación de tecla inválida -- número decimal incorrecto\n
-33 Especificación de tecla de función incorrecta.\n
+26 Sin COMANDO, imprime la asociación de TECLA.\n
+27 especificación de tecla inválida -- cadena nula\n
+28 especificación de tecla inválida -- cadena vacía\n
+29 Especificación de tecla de función inválida. No se permite una tecla nula\n
+30 especificación de tecla inválida -- número hexadecimal incorrecto\n
+31 especificación de tecla inválida -- número octal incorrecto\n
+32 especificación de tecla inválida -- número decimal incorrecto\n
+33 Especificación de tecla de función incorrecta.\n
34 No se permite una tecla nula\n
-35 especificación de tecla inválida -- nombre desconocido "%S"\n
+35 especificación de tecla inválida -- nombre desconocido "%S"\n
36 uso: bind [TECLA | COMANDO TECLA | "emacs" | "vi" | "-a"]\n
-37 función no válida
-38 %s\t\tno está definida\n
+37 función no válida
+38 %s\t\tno está definida\n
diff --git a/nls/spanish/set22 b/nls/spanish/set22
index fb311ae466bf..7014632f9c11 100644
--- a/nls/spanish/set22
+++ b/nls/spanish/set22
@@ -1,17 +1,17 @@
-$ $tcsh: set22,v 1.2 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set22,v 1.3 2011/02/04 18:19:43 christos Exp $
$ tc.func.c
$set 22
1 %S: \t es un alias de
2 \nClave incorrecta para %s\n
-3 Alias erróneo de 'precmd' borrado.\n
-4 Alias erróneo de 'cwdcmd' borrado.\n
-5 Alias erróneo de 'beepcmd' borrado.\n
-6 Alias erróneo de 'periodic' borrado.\n
-7 analizando la línea de comandos\n
-8 ¿Realmente quiere borrar todos los archivos? [n/s]
-9 ¡Anulado el borrado de los archivos!\n
-10 ahora, la línea de comandos es:\n
-11 analizando la línea de comandos\n
+3 Alias erróneo de 'precmd' borrado.\n
+4 Alias erróneo de 'cwdcmd' borrado.\n
+5 Alias erróneo de 'beepcmd' borrado.\n
+6 Alias erróneo de 'periodic' borrado.\n
+7 analizando la línea de comandos\n
+8 ¿Realmente quiere borrar todos los archivos? [n/s]
+9 ¡Anulado el borrado de los archivos!\n
+10 ahora, la línea de comandos es:\n
+11 analizando la línea de comandos\n
12 en una de las listas\n
-13 ahora, la línea de comandos es:\n
+13 ahora, la línea de comandos es:\n
14 sSyY
diff --git a/nls/spanish/set23 b/nls/spanish/set23
index 86a81e4d957b..3a1febb1d773 100644
--- a/nls/spanish/set23
+++ b/nls/spanish/set23
@@ -1,24 +1,24 @@
-$ $tcsh: set23,v 1.2 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set23,v 1.3 2011/02/04 18:19:43 christos Exp $
$ tc.os.c
$set 23
-1 Nombre de cpu/máquina incorrecto
-2 Ruta hasta máquina demasiado grande
+1 Nombre de cpu/máquina incorrecto
+2 Ruta hasta máquina demasiado grande
3 desconocida
-4 máquina: %s\n
-5 %d: No he encontrado esa máquina\n
+4 máquina: %s\n
+5 %d: No he encontrado esa máquina\n
6 setlocal: %s: %s\n
-7 No he encontrado esa máquina
-8 Está atrapado en un universo que nunca creo
-9 Getwarp falló
-10 Warp inválido
-11 Setwarp falló
+7 No he encontrado esa máquina
+8 Está atrapado en un universo que nunca creo
+9 Getwarp falló
+10 Warp inválido
+11 Setwarp falló
12 Universo ilegal
13 Error Desconocido: %d
14 nombre_sis: %s\n
15 nombre_nodo: %s\n
16 release: %s\n
-17 versión: %s\n
-18 máquina: %s\n
+17 versión: %s\n
+18 máquina: %s\n
19 getwd: No puedo abrir ".." (%s)
20 getwd: No puedo cambiar a ".." (%s)
21 getwd: Error de lectura en ".." (%s)
@@ -28,7 +28,7 @@ $set 23
25 getwd: No puedo ejecutar stat de "%s" (%s)
26 getwd: No puedo abrir el directorio "%s" (%s)
27 getwd: No puedo encontrar "." en ".." (%s)
-28 Tipo de sistema inválido
+28 Tipo de sistema inválido
29 No se ha fijado el tipo de sistema
30 Demasiados argumentos
-31 Argumento inválido
+31 Argumento inválido
diff --git a/nls/spanish/set25 b/nls/spanish/set25
index c81ef4aea948..6a0dcb43c0f6 100644
--- a/nls/spanish/set25
+++ b/nls/spanish/set25
@@ -1,6 +1,6 @@
-$ $tcsh: set25,v 1.2 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set25,v 1.3 2011/02/04 18:19:43 christos Exp $
$ tc.sig.c
$set 25
1 nuestro wait %d\n
-2 error: bsd_signal(%d) señal fuera de rango\n
+2 error: bsd_signal(%d) señal fuera de rango\n
3 error: bsd_signal(%d) - sigaction ha fallado, errno %d\n
diff --git a/nls/spanish/set26 b/nls/spanish/set26
index 74c990e77a80..71f3855a3e1f 100644
--- a/nls/spanish/set26
+++ b/nls/spanish/set26
@@ -1,11 +1,11 @@
-$ $tcsh: set26,v 1.2 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set26,v 1.3 2011/02/04 18:19:43 christos Exp $
$ tc.who.c
$set 26
1 No se puede completar stat %s. Por favor, ejecute "unset watch".\n
2 No se puede abrir %s. Por favor, ejecute "unset watch".\n
-3 ¡BUG! El último elemento no es whotail!\n
-4 hacia atrás:
-5 ¡BUG! El primer elemento no es whohead!\n
+3 ¡BUG! El último elemento no es whotail!\n
+4 hacia atrás:
+5 ¡BUG! El primer elemento no es whohead!\n
6 nuevo: %s/%s\n
7 %n tiene %a %l de %m.
8 %n tiene %a %l.
diff --git a/nls/spanish/set27 b/nls/spanish/set27
index 6f75760080df..7e1280c192da 100644
--- a/nls/spanish/set27
+++ b/nls/spanish/set27
@@ -1,8 +1,8 @@
-$ $tcsh: set27,v 1.2 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set27,v 1.3 2011/02/04 18:19:43 christos Exp $
$ tw.comp.c
$set 27
1 comando
2 separador
-3 patrón
+3 patrón
4 rango
-5 modo de terminación automática
+5 modo de terminación automática
diff --git a/nls/spanish/set3 b/nls/spanish/set3
index 2465dec3785d..23e72443141a 100644
--- a/nls/spanish/set3
+++ b/nls/spanish/set3
@@ -1,118 +1,118 @@
-$ $tcsh: set3,v 1.3 2006/03/02 18:46:48 christos Exp $
-$ Descripción de las funciones de edición
+$ $tcsh: set3,v 1.4 2011/02/04 18:19:43 christos Exp $
+$ Descripción de las funciones de edición
$set 3
-1 Retroceder un carácter
-2 Borrar el carácter detrás del cursor
+1 Retroceder un carácter
+2 Borrar el carácter detrás del cursor
3 Cortar desde el comienzo de la palabra hasta el cursor - se guarda en el buffer
-4 Cortar desde el comienzo de la línea hasta el cursor - se guarda en el buffer
+4 Cortar desde el comienzo de la línea hasta el cursor - se guarda en el buffer
5 Ir hasta el comienzo de la palabra
-6 Ir hasta el comienzo de la línea
-7 Convertir en mayúsculas los caracteres desde el cursor hasta el final de la palabra
-8 Vi: cambiar a mayúsculas o minúsculas el carácter bajo el cursor y avanza una posición
-9 Vi: cambia hasta el final de la línea
-10 Borra la pantalla y coloca la línea actual al comienzo
+6 Ir hasta el comienzo de la línea
+7 Convertir en mayúsculas los caracteres desde el cursor hasta el final de la palabra
+8 Vi: cambiar a mayúsculas o minúsculas el carácter bajo el cursor y avanza una posición
+9 Vi: cambia hasta el final de la línea
+10 Borra la pantalla y coloca la línea actual al comienzo
11 Completa la palabra
12 Avanza mediante `Tab' por los ficheros
13 Retrocede mediante `Tab' por los ficheros
14 Completa la palabra ignorando los modos programables
15 Copia la palabra hasta el cursor
-16 Copia el área entre la marca y el cursor al buffer
+16 Copia el área entre la marca y el cursor al buffer
17 Expande a aquella palabra para la que esto es un prefijo
-18 Borra el carácter bajo el cursor
-19 Borra el carácter bajo el cursor o señala el fin de archivo en un archivo vacío
-20 Borra el carácter bajo el cursor o lista posibles finales si está al final de una línea
-21 Borra el carácter bajo el cursor, lista posibles finales o marca final de archivo
+18 Borra el carácter bajo el cursor
+19 Borra el carácter bajo el cursor o señala el fin de archivo en un archivo vacío
+20 Borra el carácter bajo el cursor o lista posibles finales si está al final de una línea
+21 Borra el carácter bajo el cursor, lista posibles finales o marca final de archivo
22 Corta del cursor al final de la palabra - se guarda en el buffer
-23 Se suma al argumento si ha arrancado o introduce el dígito
-24 Dígito al comienzo del argumento
-25 Ir al final de la línea de historia
-26 Convierte en minúsculas los caracteres desde el cursor al final de la palabra
+23 Se suma al argumento si ha arrancado o introduce el dígito
+24 Dígito al comienzo del argumento
+25 Ir al final de la línea de historia
+26 Convierte en minúsculas los caracteres desde el cursor al final de la palabra
27 Indica el fin de archivo
-28 Mover el cursor hasta el final de línea
+28 Mover el cursor hasta el final de línea
29 Intercambia el cursor y la marca
30 Expande los comodines de nombre de archivo
31 Expande los escapes del historial
-32 Expande los escapes del historial en una línea
+32 Expande los escapes del historial en una línea
33 Expande variables
-34 Avanza un carácter
+34 Avanza un carácter
35 Avanza hasta el final de la palabra
36 Intercambia los dos caracteres delante del cursor
-37 Busca hacia atrás en el historial una línea que comience igual que la actual
-38 Busca hacia delante una línea que comience igual que la actual
-39 Inserta el último ítem del comando previo
-40 Búsqueda incremental hacia deleante
-41 Búsqueda incremental hacia atrás
-42 Borra la línea
-43 Corta hasta el final de la línea y guarda la información en el buffer
-44 Corta el área de la marca al cursor y guarda la información en el buffer
-45 Corta la línea completa y la guarda en el buffer
+37 Busca hacia atrás en el historial una línea que comience igual que la actual
+38 Busca hacia delante una línea que comience igual que la actual
+39 Inserta el último ítem del comando previo
+40 Búsqueda incremental hacia deleante
+41 Búsqueda incremental hacia atrás
+42 Borra la línea
+43 Corta hasta el final de la línea y guarda la información en el buffer
+44 Corta el área de la marca al cursor y guarda la información en el buffer
+45 Corta la línea completa y la guarda en el buffer
46 Lista opciones para completar
47 Lista opciones para completar ignorando los modos programables
-48 Lista los nombres de archivos que concuerdan con el comodín
-49 Lista opciones para completar o indica el final de línea si es una línea vacía
+48 Lista los nombres de archivos que concuerdan con el comodín
+49 Lista opciones para completar o indica el final de línea si es una línea vacía
50 Imprime la media de carga y es estado de este proceso
51 Expande los escapes del historial e inserta un espacio
52 Ejecuta el comando
53 Expande rutas, eliminando cualquier `.' y `..' que encuentre al comienzo
54 Expande comandos a la ruta o el alias resultante
-55 Cambia de modo de inserción a sobre escritura y vice versa
-56 Añade el octavo bit al siguiente carácter introducido
-57 Añade el siguiente carácter sin modificar a la línea
+55 Cambia de modo de inserción a sobre escritura y vice versa
+56 Añade el octavo bit al siguiente carácter introducido
+57 Añade el siguiente carácter sin modificar a la línea
58 Reimprime todo
59 Reinicia un editor parado
60 Busca ayuda sobre el comando actual
-61 Se añade este carácter a la línea
-62 Este carácter es el primero de una secuencia de caracteres
+61 Se añade este carácter a la línea
+62 Este carácter es el primero de una secuencia de caracteres
63 Establece una marca bajo el cursor
-64 Corrige la ortografía de esta palabra
-65 Corrige la ortografía de la línea completa
-66 Envía el carácter a la terminal en modo `cooked'
-67 Cambia entre los modos literal y léxico en esta línea de historial
-68 Intercambia el carácter a la izquierda con el que está bajo el cursor
+64 Corrige la ortografía de esta palabra
+65 Corrige la ortografía de la línea completa
+66 Envía el carácter a la terminal en modo `cooked'
+67 Cambia entre los modos literal y léxico en esta línea de historial
+68 Intercambia el carácter a la izquierda con el que está bajo el cursor
69 Intercambia los dos caracteres que preceden al cursor
-70 Carácter tty para suspensión retrasada
-71 Carácter tty para `flush' de salida
-72 Carácter tty para interrupción
-73 Carácter tty para salida
-74 Carácter tty para suspensión
-75 Carácter tty para permitir salida
-76 Carácter tty para impedir salida
-77 Indica carácter no asignado
+70 Carácter tty para suspensión retrasada
+71 Carácter tty para `flush' de salida
+72 Carácter tty para interrupción
+73 Carácter tty para salida
+74 Carácter tty para suspensión
+75 Carácter tty para permitir salida
+76 Carácter tty para impedir salida
+77 Indica carácter no asignado
78 Argumento Emacs universal (argumento por 4)
-79 Ir a la línea anterior
-80 Convierte en mayúsculas los caracteres desde el cursor al final de la palabra
+79 Ir a la línea anterior
+80 Convierte en mayúsculas los caracteres desde el cursor al final de la palabra
81 Vi: ir al comienzo de la siguiente palabra
-82 Vi: entrar en modo de inserción después el cursor
-83 Vi: entrar en modo de inserción al final de la línea
-84 Vi: cambia a mayúsculas o minúsculas el carácter bajo el cursor y avanza una posición
+82 Vi: entrar en modo de inserción después el cursor
+83 Vi: entrar en modo de inserción al final de la línea
+84 Vi: cambia a mayúsculas o minúsculas el carácter bajo el cursor y avanza una posición
85 Vi: cambiar el comando de prefijo
-86 Vi: cambiar hasta el final de la línea
-87 Entrar en modo vi (usa asignación de teclas alternativa)
+86 Vi: cambiar hasta el final de la línea
+87 Entrar en modo vi (usa asignación de teclas alternativa)
88 Vi: modo de comando completa la palabra
-89 Vi: ir al carácter previo (retroceso)
+89 Vi: ir al carácter previo (retroceso)
90 Vi: borrar el comando de prefijo
91 Vi: ir hasta el final de la palabra delimitado por espacios
92 Vi: ir hasta el final de la palabra
-93 Vi: retroceder al carácter especificado
-94 Vi: avanzar al carácter especificado
-95 Vi: retrocede hasta el carácter especificado
-96 Vi: avanzar hasta el carácter especificado
-97 Entrar en modo de inserción `vi'
-98 Entrar en modo de inserción `vi' al comienzo de la línea
-99 Vi: repetir la búsqueda de carácter en la misma dirección
-100 Vi: repetir la búsqueda de carácter en la dirección contraria
-101 Vi: repetir la búsqueda en la misma dirección
-102 Vi: repetir la búsqueda en la dirección contraria
-103 Vi: reemplazar el carácter bajo el cursor por el que se introduzca
+93 Vi: retroceder al carácter especificado
+94 Vi: avanzar al carácter especificado
+95 Vi: retrocede hasta el carácter especificado
+96 Vi: avanzar hasta el carácter especificado
+97 Entrar en modo de inserción `vi'
+98 Entrar en modo de inserción `vi' al comienzo de la línea
+99 Vi: repetir la búsqueda de carácter en la misma dirección
+100 Vi: repetir la búsqueda de carácter en la dirección contraria
+101 Vi: repetir la búsqueda en la misma dirección
+102 Vi: repetir la búsqueda en la dirección contraria
+103 Vi: reemplazar el carácter bajo el cursor por el que se introduzca
104 Vi: modo de reemplazo
-105 Vi: buscar en el historial hacia atrás
+105 Vi: buscar en el historial hacia atrás
106 Vi: buscar en el historial hacia adelante
-107 Vi: reemplazar el carácter bajo el cursor cambiando a modo inserción
-108 Vi: reemplazar la línea completa
+107 Vi: reemplazar el carácter bajo el cursor cambiando a modo inserción
+108 Vi: reemplazar la línea completa
109 Vi: ir a la palabra anterior
110 Vi: ir a la palabra siguiente
111 Vi: deshacer el cambio anterior
-112 Vi: ir al comienzo de la línea
+112 Vi: ir al comienzo de la línea
113 Ejecutar `which' para el comando actual
114 Pegar el buffer donde el cursor
115 Replace just-yanked text with yank from earlier kill
diff --git a/nls/spanish/set30 b/nls/spanish/set30
index ea9e5be912da..be2af2a6c32b 100644
--- a/nls/spanish/set30
+++ b/nls/spanish/set30
@@ -1,15 +1,15 @@
-$ $tcsh: set30,v 1.2 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set30,v 1.3 2011/02/04 18:19:43 christos Exp $
$ tw.parse.c
$set 30
1 comienzo_de_comando %d\n
2 completar %d
3 completar %d %S\n
4 %s: Error interno de concordancia.\n
-5 ítems
+5 ítems
6 filas
-7 Existen %d %s, ¿listarlas de todos modos? [n/s]
+7 Existen %d %s, ¿listarlas de todos modos? [n/s]
8 buscando = %d\n
-9 \nerror interno de tcsh: ¡No sé lo que busco!\n
+9 \nerror interno de tcsh: ¡No sé lo que busco!\n
10 no es un directorio
11 no he encontrado nada
12 ilegible
diff --git a/nls/spanish/set4 b/nls/spanish/set4
index 1ca3b69a6230..c79067a9caca 100644
--- a/nls/spanish/set4
+++ b/nls/spanish/set4
@@ -1,45 +1,45 @@
-$ $tcsh: set4,v 1.2 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set4,v 1.3 2011/02/04 18:19:43 christos Exp $
$ cadenas de Termcap
$set 4
-1 añade una línea vacía
+1 añade una línea vacía
2 timbre audible
3 borra hasta abajo
-4 borra hasta el final de la línea
-5 cursor hasta posición horizontal
+4 borra hasta el final de la línea
+5 cursor hasta posición horizontal
6 borra la pantalla
-7 borra un carácter
-8 borra una línea
+7 borra un carácter
+8 borra una línea
9 entra en modo de borrado
10 termina modo de borrado
-11 termina modo de inserción
-12 cursor de línea de estado
-13 cursor en posición inicial
-14 insertar carácter
-15 entra en modo de inserción
-16 inserta carácter de relleno
-17 envía cursor hacia abajo
-18 envía cursor hacia la izquierda
-19 envía cursor hacia la derecha
-20 envía cursor hacia arriba
+11 termina modo de inserción
+12 cursor de línea de estado
+13 cursor en posición inicial
+14 insertar carácter
+15 entra en modo de inserción
+16 inserta carácter de relleno
+17 envía cursor hacia abajo
+18 envía cursor hacia la izquierda
+19 envía cursor hacia la derecha
+20 envía cursor hacia arriba
21 comienza negrita
22 fin de atributos
23 espacio no destructivo
-24 fin de énfasis
-25 comienzo de énfasis
-26 cursor a la línea de estado
-27 mueve el cursor hacia arriba una línea
+24 fin de énfasis
+25 comienzo de énfasis
+26 cursor a la línea de estado
+27 mueve el cursor hacia arriba una línea
28 comienza subrayado
29 fin de subrayado
30 timbre visible
-31 borra múltiples caracteres
-32 mueve el cursor varias líneas hacia abajo
-33 inserta múltiples caracteres
-34 mueve el cursor varias líneas hacia la izquierda
-35 mueve el cursor varias líneas hacia la derecha
-36 mueve el cursor varias líneas hacia arriba
-37 Tiene márgenes automáticos
-38 Puede usar tabuladores físicos
-39 Número de líneas
-40 Número de columnas
+31 borra múltiples caracteres
+32 mueve el cursor varias líneas hacia abajo
+33 inserta múltiples caracteres
+34 mueve el cursor varias líneas hacia la izquierda
+35 mueve el cursor varias líneas hacia la derecha
+36 mueve el cursor varias líneas hacia arriba
+37 Tiene márgenes automáticos
+38 Puede usar tabuladores físicos
+39 Número de líneas
+40 Número de columnas
41 Tiene teclas alternativa
42 Ignorando retorno de carro en el margen derecho
diff --git a/nls/spanish/set5 b/nls/spanish/set5
index 4ec38af9459f..6451769fea02 100644
--- a/nls/spanish/set5
+++ b/nls/spanish/set5
@@ -1,4 +1,4 @@
-$ $tcsh: set5,v 1.2 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set5,v 1.3 2011/02/04 18:19:43 christos Exp $
$ ed.chared.c
$set 5
-1 No está disponible la carga media\n
+1 No está disponible la carga media\n
diff --git a/nls/spanish/set6 b/nls/spanish/set6
index 06ded32829d8..d7b1dbd7d380 100644
--- a/nls/spanish/set6
+++ b/nls/spanish/set6
@@ -1,8 +1,8 @@
-$ $tcsh: set6,v 1.2 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set6,v 1.3 2011/02/04 18:19:43 christos Exp $
$ ed.inputl.c
$set 6
1 ERROR: comando ilegal asignado a la tecla 0%o\r\n
-2 sí\n
+2 sí\n
3 editar\n
4 abortar\n
5 no\n
diff --git a/nls/spanish/set7 b/nls/spanish/set7
index a50dbcd8038c..ebabe6b9ff82 100644
--- a/nls/spanish/set7
+++ b/nls/spanish/set7
@@ -1,30 +1,30 @@
-$ $tcsh: set7,v 1.2 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set7,v 1.3 2011/02/04 18:19:43 christos Exp $
$ ed.screen.c
$set 7
1 \n\tTcsh cree que su terminal tiene las\n
-2 \tsiguientes características:\n\n
-3 \tTiene %d columnas y %d líneas\n
+2 \tsiguientes características:\n\n
+3 \tTiene %d columnas y %d líneas\n
4 \t%s tecla `Alt'\n
5 Tiene
6 No tiene
7 \t%spuede usar tabuladores\n
8 No
-9 \t%s márgenes automáticos\n
+9 \t%s márgenes automáticos\n
10 Tiene
11 No tiene
-12 \t%s márgenes mágicos\n
-13 (vacío)
-14 sí
+12 \t%s márgenes mágicos\n
+13 (vacío)
+14 sí
15 no
16 ERROR: no se puede suprimir\r\n
-17 DeleteChars: num es ridículo: %d\r\n
+17 DeleteChars: num es ridículo: %d\r\n
18 ERROR: no se puede insertar\r\n
-19 StartInsert: num es ridículo: %d\r\n
+19 StartInsert: num es ridículo: %d\r\n
20 %s: No se puede abrir /etc/termcap.\n
21 %s: No hay ninguna entrada correspondiente a la terminal tipo "%s"\n
22 %s: usando los valores de una terminal tonta.\n
23 %s: Aviso: Su terminal no puede moverse hacia arriba.\n
-24 La edición de líneas largas puede resultar extraña.\n
-25 no se puede borrar hasta el final de línea.\n
-26 no se puede borrar el siguiente carácter.\n
-27 no se puede insertar un carácter.\n
+24 La edición de líneas largas puede resultar extraña.\n
+25 no se puede borrar hasta el final de línea.\n
+26 no se puede borrar el siguiente carácter.\n
+27 no se puede insertar un carácter.\n
diff --git a/nls/spanish/set8 b/nls/spanish/set8
index abda41517746..754a816dd91e 100644
--- a/nls/spanish/set8
+++ b/nls/spanish/set8
@@ -1,5 +1,5 @@
-$ $tcsh: set8,v 1.2 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set8,v 1.3 2011/02/04 18:19:43 christos Exp $
$ ed.term.c
$set 8
1 Interruptor desconocido
-2 Argumento inválido
+2 Argumento inválido
diff --git a/nls/spanish/set9 b/nls/spanish/set9
index c94db0884ee6..478385a0e9a6 100644
--- a/nls/spanish/set9
+++ b/nls/spanish/set9
@@ -1,12 +1,12 @@
-$ $tcsh: set9,v 1.2 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set9,v 1.3 2011/02/04 18:19:43 christos Exp $
$ ed.xmap.c
$set 9
1 AddXkey: No se permite una tecla extendida nula.\n
-2 AddXkey: No se permite comando introducción de secuencia (sequence-lead-in)\n
+2 AddXkey: No se permite comando introducción de secuencia (sequence-lead-in)\n
3 DeleteXkey: No se permite una tecla extendida nula.\n
4 Tecla de extendida indefinida "%S"\n
-5 Algunas teclas extendidas son demasiado grandes para el buffer de impresión interno
-6 Enumerate: ¡¡BUG!! Se ha pasado un puntero nulo!\n
+5 Algunas teclas extendidas son demasiado grandes para el buffer de impresión interno
+6 Enumerate: ¡¡BUG!! Se ha pasado un puntero nulo!\n
7 no hay entrada
-8 Falta algo a continuación: %c\n
-9 Una constante octal no cabe en un carácter.\n
+8 Falta algo a continuación: %c\n
+9 Una constante octal no cabe en un carácter.\n
diff --git a/nls/ukrainian/charset b/nls/ukrainian/charset
index fd65f43e5785..81f1b6669c79 100644
--- a/nls/ukrainian/charset
+++ b/nls/ukrainian/charset
@@ -1,3 +1,3 @@
-$ codeset=KOI8-U
+$ codeset=UTF-8
$set 255
-1 KOI8-U
+1 UTF-8
diff --git a/nls/ukrainian/set1 b/nls/ukrainian/set1
index 2a4aa95d6ed4..f98e741d50c7 100644
--- a/nls/ukrainian/set1
+++ b/nls/ukrainian/set1
@@ -1,140 +1,140 @@
-$ $tcsh: set1,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set1,v 1.4 2011/02/04 18:19:44 christos Exp $
$ Error messages
$set 1
-1 óÉÎÔÁËÓÉÞÎÁ ÐÏÍÉÌËÁ
-2 %s ÎÅ ÄÏÚ×ÏÌѤÔØÓÑ
-3 úÁÄÏ×ÇÅ ÓÌÏ×Ï
-4 úÁÄÏ×ÇÉÊ ÒÑÄÏË $<
-5 îÅÍÁ¤ ÆÁÊÌÕ ÄÌÑ $0
-6 îÅÐÏ×ÎÉÊ ÍÏÄÉƦËÁÔÏÒ []
-7 òÏÚÛÉÒÅÎÎÑ $ ÍÁ¤ ÂÕÔÉ ÐÅÒÅÄ ]
-8 ðÏÇÁÎÉÊ ÍÏÄÉƦËÁÔÏÒ : × $ (%c)
-9 ðÏÍÉÌËÏ×ÉÊ ¦ÎÄÅËÓ
-10 þÉÓÌÏ ÐÏÇÁÎÏ ÓÆÏÒÍÏ×ÁÎÅ
-11 îÅ ÍÏÖÎÁ ¦ÌØÛÅ Ó̦×
-12 ðÒÏÐÕÝÅÎÏ ¦Í'Ñ ÆÁÊÌÕ
-13 ÷ÎÕÔÒ¦ÛÎÑ ÐÏÍÉÌËÁ glob
-14 îÅצÄÏÍÁ ËÏÍÁÎÄÁ
-15 úÁÍÁÌÏ ÐÁÒÁÍÅÔÒ¦×
-16 úÁÂÁÇÁÔÏ ÐÁÒÁÍÅÔÒ¦×
-17 îÅÂÅÚÐÅÞÎÏ ÓÔ×ÏÒÀ×ÁÔÉ ÔÁËÉÊ ÐÓÅ×ÄÏΦÍ
-18 ðÏÒÏÖÎ¦Ê ÏÐÅÒÁÔÏÒ if
-19 îÅצÒÎÅ then
-20 óÌÏ×Á ÎÅ × ÄÕÖËÁÈ
-21 %s ÎÅ ÚÎÁÊÄÅÎÏ
-22 îÅËÏÒÅËÔÎÁ ÍÁÓËÁ
-23 ôÁËÏÇÏ Ì¦Í¦ÔÕ ÎÅ ¦ÓÎÕ¤
-24 úÁÄÏ×ÇÉÊ ÐÁÒÁÍÅÔÒ
+1 СинтакÑична помилка
+2 %s не дозволÑєтьÑÑ
+3 Задовге Ñлово
+4 Задовгий Ñ€Ñдок $<
+5 Ðемає файлу Ð´Ð»Ñ $0
+6 Ðеповний модифікатор []
+7 Ð Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ $ має бути перед ]
+8 Поганий модифікатор : в $ (%c)
+9 Помилковий індекÑ
+10 ЧиÑло погано Ñформоване
+11 Ðе можна більше Ñлів
+12 Пропущено ім'Ñ Ñ„Ð°Ð¹Ð»Ñƒ
+13 Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° glob
+14 Ðевідома команда
+15 Замало параметрів
+16 Забагато параметрів
+17 Ðебезпечно Ñтворювати такий пÑевдонім
+18 Порожній оператор if
+19 Ðевірне then
+20 Слова не в дужках
+21 %s не знайдено
+22 Ðекоректна маÑка
+23 Такого ліміту не Ñ–Ñнує
+24 Задовгий параметр
25 Improper or unknown scale factor
-26 îÅ×ÉÚÎÁÞÅÎÁ ÚͦÎÎÁ
-27 óÔÅË ËÁÔÁÌÏÇ¦× ÎÅ ÔÁËÉÊ ×ÖÅ ¦ ×ÅÌÉËÉÊ
-28 îÅצÒÎÉÊ ÎÏÍÅÒ ÓÉÇÎÁÌÕ
-29 îÅצÄÏÍÉÊ ÓÉÇÎÁÌ; kill -l ÐÏËÁÚÕ¤ ×Ó¦ ÍÏÖÌÉצ
-30 ¶Í'Ñ ÚͦÎÎϧ ÍÁ¤ ÐÏÞÉÎÁÔÉÓÑ Ú Ì¦ÔÅÒÉ
-31 úÁÄÏ×ÇÅ ¦Í'Ñ ÚͦÎÎϧ
-32 ¶Í'Ñ ÚͦÎÎϧ ÍÁ¤ ÐÏÞÉÎÁÔÉÓÑ Ú ÁÌÆÁצÔÎÏ-ÃÉÆÒÏ×ÏÇÏ ÓÉÍ×ÏÌÕ
-33 ãÑ ÏÂÏÌÏÎËÁ ΊͦÓÔÉÔØ ÚÁÓÏÂ¦× ËÅÒÕ×ÁÎÎÑ ÚÁÄÁÞÁÍÉ
-34 óÉÎÔÁËÓ ×ÉÒÁÚÕ
-35 îÅÍÁ¤ ÄÏÍÁÛÎØÏÇÏ ËÁÔÁÌÏÇÕ
-36 îÅ ÍÏÖÕ ÐÅÒÅÊÔÉ ÄÏ ÄÏÍÁÛÎØÏÇÏ ËÁÔÁÌÏÇÕ
-37 îÅËÏÒÅËÔÎÁ ÐÏÒÏÖÎÑ ËÏÍÁÎÄÁ
+26 Ðевизначена змінна
+27 Стек каталогів не такий вже і великий
+28 Ðевірний номер Ñигналу
+29 Ðевідомий Ñигнал; kill -l показує вÑÑ– можливі
+30 Ім'Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ— має починатиÑÑ Ð· літери
+31 Задовге ім'Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ—
+32 Ім'Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ— має починатиÑÑ Ð· алфавітно-цифрового Ñимволу
+33 Ð¦Ñ Ð¾Ð±Ð¾Ð»Ð¾Ð½ÐºÐ° не міÑтить заÑобів ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð´Ð°Ñ‡Ð°Ð¼Ð¸
+34 Ð¡Ð¸Ð½Ñ‚Ð°ÐºÑ Ð²Ð¸Ñ€Ð°Ð·Ñƒ
+35 Ðемає домашнього каталогу
+36 Ðе можу перейти до домашнього каталогу
+37 Ðекоректна Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°
38 Assignment missing expression
-39 îÅצÄÏÍÉÊ ÏÐÅÒÁÔÏÒ
-40 îÅÏÄÎÏÚÎÁÞÎÏ
-41 %s: æÁÊÌ ¦ÓÎÕ¤
-42 áÒÇÕÍÅÎÔ -c ÚÁ˦ÎÞÕ¤ÔØÓÑ backslash'ÅÍ
-43 ðÅÒÅÒ×ÁÎÏ
+39 Ðевідомий оператор
+40 Ðеоднозначно
+41 %s: Файл Ñ–Ñнує
+42 Ðргумент -c закінчуєтьÑÑ backslash'ем
+43 Перервано
44 Subscript out of range
-45 ðÅÒÅÐÏ×ÎÅÎÎÑ ÒÑÄËÕ
-46 îÅÍÁ¤ ÔÁËϧ ÚÁÄÁÞ¦
-47 îÅÍÏÖÌÉ×Ï Ú ÔÅÒͦÎÁÌÕ
-48 îÅ Õ while/foreach
-49 îÅ ÍÏÖÎÁ ¦ÌØÛÅ ÐÒÏÃÅÓ¦×
-50 îÅÍÁ¤ ÓЦ×ÐÁÄÁÎØ
-51 ðÒÏÐÕÝÅÎÏ %c
-52 ÷¦ÄÓÕÔÎ¦Ê ×¦ÄÐÏצÄÎÉË ÄÏ %c
-53 íÁÌÏ ÐÁÍ'ÑÔ¦
-54 îÅ ÍÏÖÕ ÓÔ×ÏÒÉÔÉ ËÁÎÁÌ
+45 ÐŸÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñ€Ñдку
+46 Ðемає такої задачі
+47 Ðеможливо з терміналу
+48 Ðе у while/foreach
+49 Ðе можна більше процеÑів
+50 Ðемає Ñпівпадань
+51 Пропущено %c
+52 ВідÑутній відповідник до %c
+53 Мало пам'ÑÑ‚Ñ–
+54 Ðе можу Ñтворити канал
55 %s: %s
56 %s
-57 ÷ÉËÏÒÉÓÔÁÎÎÑ: jobs [ -l ]
-58 áÒÇÕÍÅÎÔÏÍ ÍÁ¤ ÂÕÔÉ ÎÏÍÅÒ ÚÁÄÁÞ¦ ÞÉ ÐÒÏÃÅÓÕ
-59 îÅÍÁ¤ ÐÏÔÏÞÎϧ ÚÁÄÁÞ¦
-60 îÅÍÁ¤ ÐÏÐÅÒÅÄÎØϧ ÚÁÄÁÞ¦
-61 öÏÄÎÁ ÚÁÄÁÞÁ ΊצÄÐÏצÄÁ¤ ÛÁÂÌÏÎÕ
+57 ВикориÑтаннÑ: jobs [ -l ]
+58 Ðргументом має бути номер задачі чи процеÑу
+59 Ðемає поточної задачі
+60 Ðемає попередньої задачі
+61 Жодна задача не відповідає шаблону
62 Fork nesting > %d; maybe `...` loop
-63 ð¦ÄÏÂÏÌÏÎËÁ ΊͦÓÔÉÔÉÔØ ÚÁÓÏÂ¦× ËÅÒÕ×ÁÎÎÑ ÚÁÄÁÞÁÍÉ
+63 Підоболонка не міÑтитить заÑобів ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð´Ð°Ñ‡Ð°Ð¼Ð¸
64 Sync fault: Process %d not found
-65 %sýÅ ¤ 'ЦÄצÛÅΦ' ÚÁÄÁÞ¦
-66 %sýÅ ¤ 'ÐÒÉÚÕÐÉÎÅΦ' ÚÁÄÁÞ¦
-67 îÅÍÁ¤ ¦ÎÛÉÈ ËÁÔÁÌÏǦ×
-68 óÔÅË ËÁÔÁÌÏÇ¦× ÐÕÓÔÉÊ
-69 ðÏÇÁÎÉÊ ËÁÔÁÌÏÇ
-70 ÷ÉËÏÒÉÓÔÁÎÎÑ: %s [-%s]%s
-71 ÷¦ÄÓÕÔÎ¦Ê ÏÐÅÒÁÎÄ ÐÒÁÐÏÒÃÑ -h
-72 ãÅ ÎÅ ÐÅÒ×ÉÎÎÁ ÏÂÏÌÏÎËÁ
-73 ä¦ÌÅÎÎÑ ÎÁ 0
-74 ä¦ÌÅÎÎÑ ÎÁ 0
+65 %sЩе є 'підвішені' задачі
+66 %sЩе є 'призупинені' задачі
+67 Ðемає інших каталогів
+68 Стек каталогів пуÑтий
+69 Поганий каталог
+70 ВикориÑтаннÑ: %s [-%s]%s
+71 ВідÑутній операнд Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ -h
+72 Це не первинна оболонка
+73 Ð”Ñ–Ð»ÐµÐ½Ð½Ñ Ð½Ð° 0
+74 Ð”Ñ–Ð»ÐµÐ½Ð½Ñ Ð½Ð° 0
75 Bad scaling; did you mean "%s"?
-76 îÅ ÍÏÖÕ Ð¦ÄצÓÉÔÉ ÐÅÒ×ÉÎÎÕ ÏÂÏÌÏÎËÕ (ÐÏËÉ ÝÏ)
-77 îÅצÄÏÍÉÊ ËÏÒÉÓÔÕ×ÁÞ: %s
-78 úͦÎÎÁ $home ÎÅ ×ÉÚÎÁÞÅÎÁ
-79 ÷ÉËÏÒÉÓÔÁÎÎÑ: history [-%s] [# ˦ÌØ˦ÓÔØ ÐÏĦÊ]
-80 îÅ ÍÏÖÎÁ ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ $, ! ÔÁ < ÒÁÚÏÍ Ú $# ÞÉ $?
-81 óÉÍ×ÏÌ ÎÏ×ÏÇÏ ÒÑÄËÕ × ¦ÍÅΦ ÚͦÎÎϧ
-82 îÅ ÍÏÖÎÁ ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ * ÒÁÚÏÍ Ú $# ÞÉ $?
-83 îÅ ÍÏÖÎÁ ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ $?<ÃÉÆÒÁ> ÞÉ $#<ÃÉÆÒÁ>
-84 îÅÐÒÁ×ÉÌØÎÅ ¦Í'Ñ ÚͦÎÎϧ
-85 óÉÍ×ÏÌ ÎÏ×ÏÇÏ ÒÑÄËÁ × ¦ÎÄÅËÓ¦ ÚͦÎÎϧ
-86 ðÅÒÅÐÏ×ÎÅÎÎÑ ÂÕÆÅÒÕ ÒÏÚÛÉÒÅÎÎÑ
-87 óÉÎÔÁËÓ ÚͦÎÎϧ
-88 îÅÐÒÁ×ÉÌØÎÁ ÆÏÒÍÁ '!'
-89 ýÅ ÎÅ ÂÕÌÏ Ð¦ÄÓÔÁÎÏ×ÏË
-90 ðÏÇÁÎÁ ЦÄÓÔÁÎÏ×ËÁ
+76 Ðе можу підвіÑити первинну оболонку (поки що)
+77 Ðевідомий кориÑтувач: %s
+78 Змінна $home не визначена
+79 ВикориÑтаннÑ: history [-%s] [# кількіÑÑ‚ÑŒ подій]
+80 Ðе можна викориÑтовувати $, ! та < разом з $# чи $?
+81 Символ нового Ñ€Ñдку в імені змінної
+82 Ðе можна викориÑтовувати * разом з $# чи $?
+83 Ðе можна викориÑтовувати $?<цифра> чи $#<цифра>
+84 Ðеправильне ім'Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ—
+85 Символ нового Ñ€Ñдка в індекÑÑ– змінної
+86 ÐŸÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð±ÑƒÑ„ÐµÑ€Ñƒ розширеннÑ
+87 Ð¡Ð¸Ð½Ñ‚Ð°ÐºÑ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ—
+88 Ðеправильна форма '!'
+89 Ще не було підÑтановок
+90 Погана підÑтановка
91 No previous left hand side
92 Right hand side too long
-93 ðÏÇÁÎÉÊ ÍÏÄÉƦËÁÔÏÒ !: %c
-94 îÅ×ÄÁÞÁ ÍÏÄÉƦËÁÔÏÒÁ
-95 ðÅÒÅÐÏ×ÎÅÎÎÑ ÂÕÆÅÒÕ Ð¦ÄÓÔÁÎÏ×ËÉ
+93 Поганий модифікатор !: %c
+94 Ðевдача модифікатора
+95 ÐŸÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð±ÑƒÑ„ÐµÑ€Ñƒ підÑтановки
96 Bad ! arg selector
-97 ðÏÛÕËÕ ÝÅ ÎÅ ÂÕÌÏ
-98 %s: ðÏĦÀ ÎÅ ÚÎÁÊÄÅÎÏ
-99 âÁÇÁÔÏ ÄÕÖÏË )
-100 âÁÇÁÔÏ ÄÕÖÏË (
-101 ðÏÇÁÎÏ ÒÏÚͦÝÅÎÏ ÄÕÖËÕ ()
-102 ÷¦ÄÓÕÔΤ ¦Í'Ñ ÄÌÑ ÐÅÒÅÎÁÐÒÁ×ÌÅÎÎÑ
-103 îÅÏÄÎÏÚÎÁÞÎÅ ÐÅÒÅÎÁÐÒÁ×ÌÅÎÎÑ ×É×ÅÄÅÎÎÑ
-104 îÅ ÍÏÖÎÁ ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ << × ÓÅÒÅÄÉΦ ()
-105 îÅÏÄÎÏÚÎÁÞÎÅ ÐÅÒÅÎÁÐÒÁ×ÌÅÎÎÑ ××ÅÄÅÎÎÑ
-106 ðÏÇÁÎÏ ÒÏÚͦÝÅÎÏ ÄÕÖËÉ ()
-107 úÁÃÉËÌÅÎÎÑ ÐÓÅ×ÄÏΦͦ×
-108 úͦÎÎÕ $watch ÎÅ ×ÓÔÁÎÏ×ÌÅÎÏ
-109 îÅÍÁ¤ ÚÁÐÌÁÎÏ×ÁÎÉÈ ÚÁ×ÄÁÎØ
-110 ÷ÉËÏÒÉÓÔÁÎÎÑ: sched -<# ÅÌÅÍÅÎÔÁ>.\n÷ÉËÏÒÉÓÔÁÎÎÑ: sched [+]ÇÏÄ:È× <ËÏÍÁÎÄÁ>
-111 úÁÂÁÇÁÔÏ ÐÌÁÎÕ¤ÔÅ ÚÁÐÕÓËÁÔÉ!
-112 á ÝÏ ÚÁÐÕÓËÁÔÉ?
-113 îÅÐÒÁ×ÉÌØÎÉÊ ÞÁÓ ÄÌÑ ÚÁÐÌÁÎÏ×ÁÎÏÇÏ ÚÁ×ÄÁÎÎÑ
-114 ÷¦ÄÎÏÓÎÉÊ ÞÁÓ ÎÅÓÕͦÓÎÉÊ Ú am/pm
+97 Пошуку ще не було
+98 %s: Подію не знайдено
+99 Багато дужок )
+100 Багато дужок (
+101 Погано розміщено дужку ()
+102 ВідÑутнє ім'Ñ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ
+103 Ðеоднозначне Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ
+104 Ðе можна викориÑтовувати << в Ñередині ()
+105 Ðеоднозначне Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ
+106 Погано розміщено дужки ()
+107 Ð—Ð°Ñ†Ð¸ÐºÐ»ÐµÐ½Ð½Ñ Ð¿Ñевдонімів
+108 Змінну $watch не вÑтановлено
+109 Ðемає запланованих завдань
+110 ВикориÑтаннÑ: sched -<# елемента>.\nВикориÑтаннÑ: sched [+]год:хв <команда>
+111 Забагато плануєте запуÑкати!
+112 Рщо запуÑкати?
+113 Ðеправильний Ñ‡Ð°Ñ Ð´Ð»Ñ Ð·Ð°Ð¿Ð»Ð°Ð½Ð¾Ð²Ð°Ð½Ð¾Ð³Ð¾ завданнÑ
+114 ВідноÑний Ñ‡Ð°Ñ Ð½ÐµÑуміÑний з am/pm
115 Out of termcap string space
-116 ÷ÉËÏÒÉÓÔÁÎÎÑ: settc %s [yes|no]
+116 ВикориÑтаннÑ: settc %s [yes|no]
117 Unknown capability `%s'
-118 îÅצÄÏÍÉÊ ÐÁÒÁÍÅÔÒ termcap `%%%c'
-119 úÁÂÁÇÁÔÏ ÁÒÇÕÍÅÎÔ¦× ÄÌÑ `%s' (%d)
-120 `%s' ×ÉÍÁÇÁ¤ %d ÁÒÇÕÍÅÎÔ(¦×)
-121 ÷ÉËÏÒÉÓÔÁÎÎÑ: echotc [-v|-s] [<capability> [<args>]]
-122 %s: %s. îÅÐÒÁ×ÉÌØÎÁ ÁÒȦÔÅËÔÕÒÁ
-123 !# úÁÃÉËÌÅÎÎÑ ¦ÓÔÏÒ¦§
+118 Ðевідомий параметр termcap `%%%c'
+119 Забагато аргументів Ð´Ð»Ñ `%s' (%d)
+120 `%s' вимагає %d аргумент(ів)
+121 ВикориÑтаннÑ: echotc [-v|-s] [<capability> [<args>]]
+122 %s: %s. Ðеправильна архітектура
+123 !# Ð—Ð°Ñ†Ð¸ÐºÐ»ÐµÐ½Ð½Ñ Ñ–Ñторії
124 Malformed file inquiry
-125 ðÅÒÅÐÏ×ÎÅÎÎÑ ÓÅÌÅËÔÏÒÁ
-126 îÅצÄÏÍÉÊ ÐÁÒÁÍÅÔÒ: `-%s'\n÷ÉËÏÒÉÓÔÁÎÎÑ: %s [ -bcdefilmnqstvVxX -D¦Í'Ñ[=ÚÎÁÞÅÎÎÑ] ] [ ÁÒÇÕÍÅÎÔ ... ]
-127 îÅצÄÏÍÉÊ ÐÁÒÁÍÅÔÒ: `-%s'\n÷ÉËÏÒÉÓÔÁÎÎÑ: %s [ -bcdefFilmnqstvVxX ] [ ÁÒÇÕÍÅÎÔ ... ]
-128 îÅצÄÏÍÉÊ ÐÁÒÁÍÅÔÒ: `-%s'\n÷ÉËÏÒÉÓÔÁÎÎÑ: %s [ -bcdefilmnqstvVxX ] [ ÁÒÇÕÍÅÎÔ ... ]
-129 \nîÅצÒÎÅ ÚÁ×ÅÒÛÅÎÑ: "%s"
-130 \nîÅצÒÎÅ %s: '%c'
-131 \nðÒÏÐÕÝÅÎÏ ÒÏÚĦÌØÎÉË '%c' ЦÓÌÑ %s "%s"
-132 \nîÅÐÏ×ÎÅ %s: "%s"
-133 ÷¦ÄÓÕÔÎ¦Ê ÏÐÅÒÁÎÄ ÐÒÁÐÏÒÃÑ -m
-134 ÷ÉËÏÒÉÓÔÁÎÎÑ: unlimit [-fh] [̦ͦÔÉ]
-135 $%S ÌÉÛÅ ÄÌÑ ÞÉÔÁÎÎÑ
-136 îÅÍÁ¤ ÔÁËϧ ÚÁÄÁÞ¦
-137 îÅצÄÏÍÅ ÚÎÁÞÅÎÎÑ ÚͦÎÎϧ colorls: `%c%c'
+125 ÐŸÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñелектора
+126 Ðевідомий параметр: `-%s'\nВикориÑтаннÑ: %s [ -bcdefilmnqstvVxX -Dім'Ñ[=значеннÑ] ] [ аргумент ... ]
+127 Ðевідомий параметр: `-%s'\nВикориÑтаннÑ: %s [ -bcdefFilmnqstvVxX ] [ аргумент ... ]
+128 Ðевідомий параметр: `-%s'\nВикориÑтаннÑ: %s [ -bcdefilmnqstvVxX ] [ аргумент ... ]
+129 \nÐевірне завершенÑ: "%s"
+130 \nÐевірне %s: '%c'
+131 \nПропущено роздільник '%c' піÑÐ»Ñ %s "%s"
+132 \nÐеповне %s: "%s"
+133 ВідÑутній операнд Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ -m
+134 ВикориÑтаннÑ: unlimit [-fh] [ліміти]
+135 $%S лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ
+136 Ðемає такої задачі
+137 Ðевідоме Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ— colorls: `%c%c'
diff --git a/nls/ukrainian/set10 b/nls/ukrainian/set10
index a406c5125605..2f74b413f1a6 100644
--- a/nls/ukrainian/set10
+++ b/nls/ukrainian/set10
@@ -1,8 +1,8 @@
-$ $tcsh: set10,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set10,v 1.4 2011/02/04 18:19:44 christos Exp $
$ ma.setp.c
$set 10
-1 setpath: ÎÅצÒÎÁ ËÏÍÁÎÄÁ '%s'.\n
-2 setpath: ÎÅÄÏÓÔÁÔÎØÏ ÁÒÇÕÍÅÎÔ¦× ÄÌÑ ËÏÍÁÎÄÉ '%s'.\n
-3 setpath: ÚÎÁÞÅÎÎÑ ×¦ÄÓÕÔΤ × ÛÌÑÈÕ '%s'\n
-4 setpath: %s ÎÅ ÚÎÁÊÄÅÎÏ × %s\n
-5 setpath: %d ÎÅĦÊÓÎÁ ÐÏÚÉÃ¦Ñ × %s\n
+1 setpath: невірна команда '%s'.\n
+2 setpath: недоÑтатньо аргументів Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ '%s'.\n
+3 setpath: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ñутнє в шлÑху '%s'\n
+4 setpath: %s не знайдено в %s\n
+5 setpath: %d недійÑна Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ Ð² %s\n
diff --git a/nls/ukrainian/set11 b/nls/ukrainian/set11
index 4fa15f6d5dac..0117e306ccc6 100644
--- a/nls/ukrainian/set11
+++ b/nls/ukrainian/set11
@@ -1,10 +1,10 @@
-$ $tcsh: set11,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set11,v 1.4 2011/02/04 18:19:44 christos Exp $
$ sh.c
$set 11
-1 õ×ÁÇÁ: ÎÅÍÁ¤ ÄÏÓÔÕÐÕ ÄÏ tty (%s).\n
-2 ÷ÓÅ ÝÅ ÎÅÍÁ ËÅÒÕ×ÁÎÎÑ ÚÁÄÁÞÁÍÉ × Ã¦Ê ÏÂÏÌÏÎæ.\n
-3 ë¦ÌØ˦ÓÔØ ÌÉÓÔ¦×: %d.\n
-4 ë¦ÌØ˦ÓÔØ ÌÉÓÔ¦×: %d (× %s).\n
-5 õ ÷ÁÓ ¤ %sÐÏÛÔÁ.\n
-6 ÎÏ×Á
-7 õ ÷ÁÓ ¤ %sÐÏÛÔÁ × %s.\n
+1 Увага: немає доÑтупу до tty (%s).\n
+2 Ð’Ñе ще нема ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð´Ð°Ñ‡Ð°Ð¼Ð¸ в цій оболонці.\n
+3 КількіÑÑ‚ÑŒ лиÑтів: %d.\n
+4 КількіÑÑ‚ÑŒ лиÑтів: %d (в %s).\n
+5 У Ð’Ð°Ñ Ñ” %sпошта.\n
+6 нова
+7 У Ð’Ð°Ñ Ñ” %sпошта в %s.\n
diff --git a/nls/ukrainian/set12 b/nls/ukrainian/set12
index d55bcfaccbba..9c6c0802c864 100644
--- a/nls/ukrainian/set12
+++ b/nls/ukrainian/set12
@@ -1,4 +1,4 @@
-$ $tcsh: set12,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set12,v 1.4 2011/02/04 18:19:44 christos Exp $
$ sh.dir.c
$set 12
-1 %s: óÐÒÏÂÕÀ ÐÏÞÁÔÉ Ú "%s"\n
+1 %s: Спробую почати з "%s"\n
diff --git a/nls/ukrainian/set13 b/nls/ukrainian/set13
index a7f08b3499c2..4cf0aae7775e 100644
--- a/nls/ukrainian/set13
+++ b/nls/ukrainian/set13
@@ -1,13 +1,13 @@
-$ $tcsh: set13,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set13,v 1.4 2011/02/04 18:19:44 christos Exp $
$ sh.exec.c
$set 13
-1 ÈÅÛ=%-4d dir=%-2d prog=%s\n
+1 хеш=%-4d dir=%-2d prog=%s\n
2 %d hash buckets of %d bits each\n
3 debug mask = 0x%08x\n
-4 %d ÐÏÐÁÄÁÎØ, %d ÐÒÏÍÁȦ×, %d%%\n
-5 %S: ×ÂÕÄÏ×ÁÎÁ ËÏÍÁÎÄÁ.\n
-6 %S: ëÏÍÁÎÄÕ ÎÅ ÚÎÁÊÄÅÎÏ.\n
-7 where: ÓÉÍ×ÏÌ / × ËÏÍÁÎÄÁÈ ÎÅ ÍÁ¤ ÚͦÓÔÕ\n
-8 %S ÐÅÒÅÎÁÚÎÁÞÅÎÏ Õ
-9 %S ×ÎÕÔÒ¦ÛÎÑ ËÏÍÁÎÄÁ ÏÂÏÌÏÎËÉ\n
-10 ÐÒÏÍÁÈÉ ÈÅÛÕ:
+4 %d попадань, %d промахів, %d%%\n
+5 %S: вбудована команда.\n
+6 %S: Команду не знайдено.\n
+7 where: Ñимвол / в командах не має зміÑту\n
+8 %S переназначено у
+9 %S Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° оболонки\n
+10 промахи хешу:
diff --git a/nls/ukrainian/set14 b/nls/ukrainian/set14
index faa6ac6a2d54..1e939213787b 100644
--- a/nls/ukrainian/set14
+++ b/nls/ukrainian/set14
@@ -1,6 +1,6 @@
-$ $tcsh: set14,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set14,v 1.4 2011/02/04 18:19:44 christos Exp $
$ sh.file.c
$set 14
-1 \nïÊ!! úÁÂÁÇÁÔÏ %s!!\n
-2 ¦ÍÅÎ Õ ÆÁÊ̦ ÐÁÒÏ̦×
-3 ÆÁÊ̦×
+1 \nОй!! Забагато %s!!\n
+2 імен у файлі паролів
+3 файлів
diff --git a/nls/ukrainian/set15 b/nls/ukrainian/set15
index 498362fcec4f..d3ffcb021f93 100644
--- a/nls/ukrainian/set15
+++ b/nls/ukrainian/set15
@@ -1,7 +1,7 @@
-$ $tcsh: set15,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set15,v 1.4 2011/02/04 18:19:44 christos Exp $
$ sh.func.c
$set 15
-1 %s: %s: îÅ ÍÏÖÕ %s%s ̦ͦÔ\n
-2 ÚÎÑÔÉ
-3 ×ÉÓÔÁ×ÉÔÉ
-4 \040ÖÏÒÓÔËÉÊ
+1 %s: %s: Ðе можу %s%s ліміт\n
+2 знÑти
+3 виÑтавити
+4 \040жорÑткий
diff --git a/nls/ukrainian/set16 b/nls/ukrainian/set16
index f5cb670a3ae0..ca693ea3c820 100644
--- a/nls/ukrainian/set16
+++ b/nls/ukrainian/set16
@@ -1,9 +1,9 @@
-$ $tcsh: set16,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set16,v 1.4 2011/02/04 18:19:44 christos Exp $
$ sh.lex.c
$set 16
1 Reset tty pgrp from %d to %d\n
-2 \n÷ÉËÏÒÉÓÔÁÊÔÅ "logout" ÝÏ ×ÉÊÔÉ.\n
-3 \n÷ÉËÏÒÉÓÔÁÊÔÅ "exit" ÝÏ ×ÉÊÔÉ Ú %s.\n
+2 \nВикориÑтайте "logout" щоб вийти.\n
+3 \nВикориÑтайте "exit" щоб вийти з %s.\n
4 seek to eval %x %x\n
5 seek to alias %x %x\n
6 seek to file %x\n
diff --git a/nls/ukrainian/set17 b/nls/ukrainian/set17
index f790544659b5..3ef03163d4e4 100644
--- a/nls/ukrainian/set17
+++ b/nls/ukrainian/set17
@@ -1,17 +1,17 @@
-$ $tcsh: set17,v 1.4 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set17,v 1.5 2011/02/04 18:19:44 christos Exp $
$ sh.proc.c
$set 17
-1 ðïíéìëá: ÏÞ¦ËÕ×ÁÎÎÑ ÆÏÎÏ×ϧ ÚÁÄÁÞ¦!\n
-2 úÁ×ÅÒÛÅÎÎÑ %d\n
-3 ðïíéìëá: process flushed twice
-4 úÁÐÕÝÅÎÏ
-5 óÉÇÎÁÌ
-6 úÁ×ÅÒÛÅÎÎÑ %-25d
-7 úÁ×ÅÒÛÅÎÏ
-8 ðïíéìëá: ÓÔÁÔÕÓ=%-9o
-9 \040(ÚÁÐÉÓÁÎÏ core)
+1 ПОМИЛКÐ: Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾Ð½Ð¾Ð²Ð¾Ñ— задачі!\n
+2 Ð—Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ %d\n
+3 ПОМИЛКÐ: process flushed twice
+4 Запущено
+5 Сигнал
+6 Ð—Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ %-25d
+7 Завершено
+8 ПОМИЛКÐ: ÑтатуÑ=%-9o
+9 \040(запиÑано core)
10 \040(wd:
-11 wd ÔÅÐÅÒ:
-12 %S: ×ÖŠЦÄצÛÅÎÏ\n
-13 %S: ×ÖÅ ÐÒÉÚÕÐÉÎÅÎÏ\n
+11 wd тепер:
+12 %S: вже підвішено\n
+13 %S: вже призупинено\n
14 %S: Badly formed number\n
diff --git a/nls/ukrainian/set18 b/nls/ukrainian/set18
index c3d82bf4ad35..7053f50900ab 100644
--- a/nls/ukrainian/set18
+++ b/nls/ukrainian/set18
@@ -1,4 +1,4 @@
-$ $tcsh: set18,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set18,v 1.4 2011/02/04 18:19:44 christos Exp $
$ sh.set.c
$set 18
-1 õ×ÁÇÁ: ÚÁÄÏ×ÇÉÊ PATH ÏÂÒ¦ÚÁÎÏ\n
+1 Увага: задовгий PATH обрізано\n
diff --git a/nls/ukrainian/set19 b/nls/ukrainian/set19
index ae57dfa13c28..8149e89610d6 100644
--- a/nls/ukrainian/set19
+++ b/nls/ukrainian/set19
@@ -1,15 +1,23 @@
-$ $tcsh: set19,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set19,v 1.6 2011/02/25 23:58:08 christos Exp $
$ tc.alloc.c
$set 19
-1 nbytes=%d: íÁÌÏ ÐÁÍ'ÑÔ¦\n
+1 nbytes=%d: Мало пам'ÑÑ‚Ñ–\n
2 free(%lx) called before any allocations.
3 free(%lx) above top of memory.
4 free(%lx) below bottom of memory.
5 free(%lx) bad block.
6 free(%lx) bad range check.
7 free(%lx) bad block index.
-8 îÉΦÛΤ ÒÏÚÐÏĦÌÅÎÎÑ ÐÁÍ'ÑÔ¦ %s:\nצÌØÎÏ:\t
-9 \nÚÁÎÑÔÏ:\t
-10 \n\t÷ÓØÏÇÏ ÚÁÎÑÔÏ: %d, ×ÓØÏÇÏ ×¦ÌØÎÏ: %d\n
-11 \túÁÎÑÔÏ ÐÁÍ'ÑÔØ Ú 0x%lx ÄÏ 0x%lx. Real top at 0x%lx\n
-12 úÁÎÑÔÏ ÐÁÍ'ÑÔØ Ú 0x%lx ÄÏ 0x%lx (%ld).\n
+8 Ðинішнє Ñ€Ð¾Ð·Ð¿Ð¾Ð´Ñ–Ð»ÐµÐ½Ð½Ñ Ð¿Ð°Ð¼'ÑÑ‚Ñ– %s:\nвільно:\t
+9 занÑто
+10 \n\tÐ’Ñього занÑто: %d, вÑього вільно: %d\n
+11 \tЗанÑто пам'ÑÑ‚ÑŒ з 0x%lx до 0x%lx. Real top at 0x%lx\n
+12 ЗанÑто пам'ÑÑ‚ÑŒ з 0x%lx до 0x%lx (%ld).\n
+13 %s current memory allocation:\n
+14 Total space allocated from system: %d\n
+15 Number of non-inuse chunks: %d\n
+16 Number of mmapped regions: %d\n
+17 Total space in mmapped regions: %d\n
+18 Total allocated space: %d\n
+19 Total non-inuse space: %d\n
+20 Top-most, releasable space: %d\n
diff --git a/nls/ukrainian/set2 b/nls/ukrainian/set2
index b25777f6ae01..1768733b647c 100644
--- a/nls/ukrainian/set2
+++ b/nls/ukrainian/set2
@@ -1,36 +1,36 @@
-$ $tcsh: set2,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set2,v 1.4 2011/02/04 18:19:44 christos Exp $
$ Signal names
$set 2
-1 îÕÌØÏ×ÉÊ ÓÉÇÎÁÌ
+1 Ðульовий Ñигнал
2 Hangup
-3 ðÅÒÅÒÉ×ÁÎÎÑ
-4 ÷ÉȦÄ
-5 îÅËÏÒÅËÔÎÁ ¦ÎÓÔÒÕËæÑn
+3 ПерериваннÑ
+4 Вихід
+5 Ðекоректна інÑтрукціÑn
6 Trace/BPT trap
-7 á×ÁÒ¦ÊÎÅ ÚÁ×ÅÒÛÅÎÎÑ
+7 Ðварійне завершеннÑ
8 IOT trap
9 System Crash Imminent
-10 ðÏÍÉÌËÁ ÚÁ×ÅÒÛÅÎÎÑ
+10 Помилка завершеннÑ
11 EMT trap
-12 ðÏÍÉÌËÁ ÏÐÅÒÁæ§ Ú ÐÌÁ×ÁÀÞÏÀ ËÏÍÏÀ
-13 ÷ÂÉÔÏ
-14 óÉÇÎÁÌ ËÏÒÉÓÔÕ×ÁÞÁ 1
-15 óÉÇÎÁÌ ËÏÒÉÓÔÕ×ÁÞÁ 2
-16 ðÏÍÉÌËÁ ÁÄÒÅÓÁæ§
+12 Помилка операції з плаваючою комою
+13 Вбито
+14 Сигнал кориÑтувача 1
+15 Сигнал кориÑтувача 2
+16 Помилка адреÑації
17 Bus error
18 Program range error
19 Operand range error
-20 ðÏÇÁÎÉÊ ÓÉÓÔÅÍÎÉÊ ×ÉËÌÉË
-21 ïÂÒÉ× ËÁÎÁÌÕ
+20 Поганий ÑиÑтемний виклик
+21 Обрив каналу
22 Alarm clock
23 Terminated
-24 úͦÎÁ ÓÔÁÔÕÓÕ ÎÁÝÁÄËÁ
-25 óÍÅÒÔØ ÎÁÝÁÄËÁ
+24 Зміна ÑтатуÑу нащадка
+25 Смерть нащадка
26 Apollo-specific fault
27 Child stopped or exited
28 Child exited
-29 úÂ¦Ê ÖÉ×ÌÅÎÎÑ
-30 ÷ÔÒÁÔÁ ÒÅÓÕÒÓÕ
+29 Збій живленнÑ
+30 Втрата реÑурÑу
31 Break (Ctrl-Break)
32 Input/output possible signal
33 Asynchronous I/O (select)
@@ -40,21 +40,21 @@ $set 2
37 Fortran asynchronous I/O completion
38 Recovery
39 Uncorrectable memory error
-40 äÏÓÑÇÎÕÔÏ Ì¦Í¦ÔÕ CPU time
+40 ДоÑÑгнуто ліміту CPU time
41 System shutdown imminent
42 micro-tasking group-no wakeup flag set
43 Thread error - (use cord -T for detailed info)
44 CRAY Y-MP register parity error
45 Information request
-46 ð¦ÄצÛÅÎÏ (ÓÉÇÎÁÌ)
-47 ðÒÉÚÕÐÉÎÅÎÏ (ÓÉÇÎÁÌ)
-48 ð¦ÄצÛÅÎÏ
-49 ðÒÉÚÕÐÉÎÅÎÏ
-50 ðÒÏÄÏ×ÖÅÎÏ
-51 ð¦ÄצÛÅÎÏ (tty input)
-52 ðÒÉÚÕÐÉÎÅÎÏ (tty input)
-53 ð¦ÄצÛÅÎÏ (tty output)
-54 ðÒÉÚÕÐÉÎÅÎÏ (tty output)
+46 Підвішено (Ñигнал)
+47 Призупинено (Ñигнал)
+48 Підвішено
+49 Призупинено
+50 Продовжено
+51 Підвішено (tty input)
+52 Призупинено (tty input)
+53 Підвішено (tty output)
+54 Призупинено (tty output)
55 Window status changed
56 Window size changed
57 Phone status changed
diff --git a/nls/ukrainian/set20 b/nls/ukrainian/set20
index 64be44e56036..ffcb28871cc6 100644
--- a/nls/ukrainian/set20
+++ b/nls/ukrainian/set20
@@ -1,4 +1,4 @@
-$ $tcsh: set20,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set20,v 1.4 2011/02/04 18:19:44 christos Exp $
$ tc.bind.c
$set 20
1 Invalid key name `%S'\n
@@ -10,9 +10,9 @@ $set 20
7 Alternative key bindings\n
8 Multi-character bindings\n
9 Arrow key bindings\n
-10 %-15s-> ÎÅ ×ÉÚÎÁÞÅÎÏ\n
+10 %-15s-> не визначено\n
11 BUG!!! %s isn't bound to anything.\n
-12 ÷ÉËÏÒÉÓÔÁÎÎÑ: bindkey [ÐÁÒÁÍÅÔÒÉ] [--] [ëìàþ [ëïíáîäá]]\n
+12 ВикориÑтаннÑ: bindkey [параметри] [--] [КЛЮЧ [КОМÐÐДÐ]]\n
13 -a list or bind KEY in alternative key map\n
14 -b interpret KEY as a C-, M-, F- or X- key name\n
15 -s interpret COMMAND as a literal string to be output\n
@@ -36,6 +36,6 @@ $set 20
33 Bad function-key specification.\n
34 Null key not allowed\n
35 bad key specification -- unknown name "%S"\n
-36 ÷ÉËÏÒÉÓÔÁÎÎÑ: bind [KEY | COMMAND KEY | "emacs" | "vi" | "-a"]\n
-37 îÅצÒÎÁ ÆÕÎËæÑ
-38 %s\t\tÎÅ ×ÉÚÎÁÞÅÎÏ\n
+36 ВикориÑтаннÑ: bind [KEY | COMMAND KEY | "emacs" | "vi" | "-a"]\n
+37 Ðевірна функціÑ
+38 %s\t\tне визначено\n
diff --git a/nls/ukrainian/set22 b/nls/ukrainian/set22
index 534298ee510c..57ae392173db 100644
--- a/nls/ukrainian/set22
+++ b/nls/ukrainian/set22
@@ -1,17 +1,17 @@
-$ $tcsh: set22,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set22,v 1.4 2011/02/04 18:19:44 christos Exp $
$ tc.func.c
$set 22
-1 %S: \t ÐÅÒÅ×ÉÚÎÁÞÅÎÏ ÎÁ
-2 \nîÅצÒÎÉÊ ÐÁÒÏÌØ ËÏÒÉÓÔÕ×ÁÞÁ %s\n
+1 %S: \t перевизначено на
+2 \nÐевірний пароль кориÑтувача %s\n
3 Faulty alias 'precmd' removed.\n
4 Faulty alias 'cwdcmd' removed.\n
5 Faulty alias 'beepcmd' removed.\n
6 Faulty alias 'periodic' removed.\n
-7 ÓÉÎÔÁËÓÉÞÎÉÊ ÒÏÚÂ¦Ò ËÏÍÁÎÄÎÏÇÏ ÒÑÄËÁ\n
-8 ÷É ÓÐÒÁ×Ħ ÈÏÞÅÔÅ ×ÉÄÁÌÉÔÉ ×Ó¦ ÆÁÊÌÉ? [n/y]
-9 ÐÒÏÐÕÓËÁ¤ÍÏ ×ÉÄÁÌÅÎÎÑ ×Ó¦È ÆÁÊ̦×!\n
-10 ËÏÍÁÎÄÎÉÊ ÒÑÄÏË ÔÅÐÅÒ:\n
-11 ÓÉÎÔÁËÓÉÞÎÉÊ ÒÏÚÂ¦Ò ËÏÍÁÎÄÎÏÇÏ ÒÑÄËÁ\n
-12 × ÏÄÎÏÍÕ ¦Ú ÓÐÉÓ˦×\n
-13 ËÏÍÁÎÄÎÉÊ ÒÑÄÏË ÔÅÐÅÒ:\n
+7 ÑинтакÑичний розбір командного Ñ€Ñдка\n
+8 Ви Ñправді хочете видалити вÑÑ– файли? [n/y]
+9 пропуÑкаємо Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð²ÑÑ–Ñ… файлів!\n
+10 командний Ñ€Ñдок тепер:\n
+11 ÑинтакÑичний розбір командного Ñ€Ñдка\n
+12 в одному із ÑпиÑків\n
+13 командний Ñ€Ñдок тепер:\n
14 yY
diff --git a/nls/ukrainian/set23 b/nls/ukrainian/set23
index f62702b46e36..1ddbc6f266c9 100644
--- a/nls/ukrainian/set23
+++ b/nls/ukrainian/set23
@@ -1,4 +1,4 @@
-$ $tcsh: set23,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set23,v 1.4 2011/02/04 18:19:44 christos Exp $
$ tc.os.c
$set 23
1 Bad cpu/site name
@@ -17,7 +17,7 @@ $set 23
14 sysname: %s\n
15 nodename: %s\n
16 release: %s\n
-17 ×ÅÒÓ¦Ñ: %s\n
+17 верÑÑ–Ñ: %s\n
18 machine: %s\n
19 getwd: Cannot open ".." (%s)
20 getwd: Cannot chdir to ".." (%s)
@@ -28,7 +28,7 @@ $set 23
25 getwd: Cannot stat directory "%s" (%s)
26 getwd: Cannot open directory "%s" (%s)
27 getwd: Cannot find "." in ".." (%s)
-28 îÅצÒÎÉÊ ÔÉÐ ÓÉÓÔÅÍÉ
-29 ôÉÐ ÓÉÓÔÅÍÉ ÎÅ ×ÉÚÎÁÞÅÎÏ
-30 úÁÂÁÇÁÔÏ ÁÒÇÕÍÅÎÔ¦×
-31 îÅצÒÎÉÊ ÁÒÇÕÍÅÎÔ
+28 Ðевірний тип ÑиÑтеми
+29 Тип ÑиÑтеми не визначено
+30 Забагато аргументів
+31 Ðевірний аргумент
diff --git a/nls/ukrainian/set25 b/nls/ukrainian/set25
index 076952195ea0..f9a4702214ac 100644
--- a/nls/ukrainian/set25
+++ b/nls/ukrainian/set25
@@ -1,6 +1,6 @@
-$ $tcsh: set25,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set25,v 1.4 2011/02/04 18:19:44 christos Exp $
$ tc.sig.c
$set 25
1 our wait %d\n
-2 ÐÏÍÉÌËÁ: bsd_signal(%d) ÓÉÇÎÁÌ ÚÁ ÍÅÖÁÍÉ ¦ÎÔÅÒ×ÁÌÕ\n
-3 ÐÏÍÉÌËÁ: bsd_signal(%d) - ÎÅ×ÄÁÞÁ sigaction, ËÏÄ ÐÏÍÉÌËÉ %d\n
+2 помилка: bsd_signal(%d) Ñигнал за межами інтервалу\n
+3 помилка: bsd_signal(%d) - невдача sigaction, код помилки %d\n
diff --git a/nls/ukrainian/set26 b/nls/ukrainian/set26
index 4c28ab21bf98..c546ce69cc57 100644
--- a/nls/ukrainian/set26
+++ b/nls/ukrainian/set26
@@ -1,15 +1,15 @@
-$ $tcsh: set26,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set26,v 1.4 2011/02/04 18:19:44 christos Exp $
$ tc.who.c
$set 26
1 cannot stat %s. Please "unset watch".\n
2 %s cannot be opened. Please "unset watch".\n
-3 ðïíéìëá! last element is not whotail!\n
+3 ПОМИЛКÐ! last element is not whotail!\n
4 backward:
-5 ðïíéìëá! first element is not whohead!\n
+5 ПОМИЛКÐ! first element is not whohead!\n
6 new: %s/%s\n
-7 ëÏÒÉÓÔÕ×ÁÞ %n %a %l (%m).
-8 ëÏÒÉÓÔÕ×ÁÞ %n %a %l.
-9 ЦÄ'¤ÄÎÁ×ÓÑ ÄÏ
-10 צÄ'¤ÄÎÁ×ÓÑ ×¦Ä
-11 ÚÁͦÎÉ× %s ÎÁ
-12 ÌÏËÁÌØÎÏ
+7 КориÑтувач %n %a %l (%m).
+8 КориÑтувач %n %a %l.
+9 під'єднавÑÑ Ð´Ð¾
+10 від'єднавÑÑ Ð²Ñ–Ð´
+11 замінив %s на
+12 локально
diff --git a/nls/ukrainian/set27 b/nls/ukrainian/set27
index 2670e902f8ed..996fa3761968 100644
--- a/nls/ukrainian/set27
+++ b/nls/ukrainian/set27
@@ -1,8 +1,8 @@
-$ $tcsh: set27,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set27,v 1.4 2011/02/04 18:19:45 christos Exp $
$ tw.comp.c
$set 27
-1 ËÏÍÁÎÄÁ
-2 ÒÏÚĦÌØÎÉË
-3 ÛÁÂÌÏÎ
-4 ÐÒÏͦÖÏË
-5 ÚÁ×ÅÒÛÅÎÎÑ
+1 команда
+2 роздільник
+3 шаблон
+4 проміжок
+5 завершеннÑ
diff --git a/nls/ukrainian/set29 b/nls/ukrainian/set29
index 02c4746d9fdf..1161216ea56a 100644
--- a/nls/ukrainian/set29
+++ b/nls/ukrainian/set29
@@ -1,4 +1,4 @@
-$ $tcsh: set29,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set29,v 1.4 2011/02/04 18:19:45 christos Exp $
$ tw.help.c
$set 29
-1 ÷¦ÄÓÕÔÎ¦Ê ÆÁÊÌ ÄÏצÄËÉ ÄÌÑ %S\n
+1 ВідÑутній файл довідки Ð´Ð»Ñ %S\n
diff --git a/nls/ukrainian/set30 b/nls/ukrainian/set30
index 8b835de9076e..bb8539539197 100644
--- a/nls/ukrainian/set30
+++ b/nls/ukrainian/set30
@@ -1,4 +1,4 @@
-$ $tcsh: set30,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set30,v 1.4 2011/02/04 18:19:45 christos Exp $
$ tw.parse.c
$set 30
1 starting_a_command %d\n
@@ -7,10 +7,10 @@ $set 30
4 %s: Internal match error.\n
5 items
6 rows
-7 ôÕÔ %d %s, ×ÓÅ-ÔÁËÉ ÐÏËÁÚÕ×ÁÔÉ? [n/y]
+7 Тут %d %s, вÑе-таки показувати? [n/y]
8 looking = %d\n
-9 \n×ÎÕÔÒ¦ÛÎÑ ÐÏÍÉÌËÁ tcsh: ÷ÖÅ Ê ÎÅ ÚÎÁÀ, ÝÏ ÓÁÍÅ Ñ ÛÕËÁÀ!\n
-10 ÎÅ ËÁÔÁÌÏÇ
-11 ÎÅ ÚÎÁÊÄÅÎÏ
-12 ÎÅ ÞÉÔÁ¤ÔØÓÑ
+9 \nÐ²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° tcsh: Вже й не знаю, що Ñаме Ñ ÑˆÑƒÐºÐ°ÑŽ!\n
+10 не каталог
+11 не знайдено
+12 не читаєтьÑÑ
13 yY
diff --git a/nls/ukrainian/set31 b/nls/ukrainian/set31
index f0b875252cd2..5163621b7f7b 100644
--- a/nls/ukrainian/set31
+++ b/nls/ukrainian/set31
@@ -1,7 +1,7 @@
-$ $tcsh: set31,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set31,v 1.4 2011/02/04 18:19:45 christos Exp $
$ vms.termcap.c
$set 31
-1 îÅ ÍÏÖÕ ×¦ÄËÒÉÔÉ TERMCAP: [%s]\n
-2 îÅ ÍÏÖÕ ×¦ÄËÒÉÔÉ %s.\n
-3 úÎÁÊÄÅÎÏ %s × %s.\n
-4 îÅ ÚÎÁÊÄÅÎÏ ÓЦ×ÐÁÄÁÎØ ÐÏ %s Õ %s\n
+1 Ðе можу відкрити TERMCAP: [%s]\n
+2 Ðе можу відкрити %s.\n
+3 Знайдено %s в %s.\n
+4 Ðе знайдено Ñпівпадань по %s у %s\n
diff --git a/nls/ukrainian/set5 b/nls/ukrainian/set5
index 8540d1d4144c..9d98f50bf9af 100644
--- a/nls/ukrainian/set5
+++ b/nls/ukrainian/set5
@@ -1,4 +1,4 @@
-$ $tcsh: set5,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set5,v 1.4 2011/02/04 18:19:45 christos Exp $
$ ed.chared.c
$set 5
-1 îÅÄÏÓÔÕÐÎÅ ÚÎÁÞÅÎÎÑ: ÓÅÒÅÄΤ ÚÁ×ÁÎÔÁÖÅÎÎÑ\n
+1 ÐедоÑтупне значеннÑ: Ñереднє завантаженнÑ\n
diff --git a/nls/ukrainian/set6 b/nls/ukrainian/set6
index a86cef763c4f..03b6005f4ab7 100644
--- a/nls/ukrainian/set6
+++ b/nls/ukrainian/set6
@@ -1,4 +1,4 @@
-$ $tcsh: set6,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set6,v 1.4 2011/02/04 18:19:45 christos Exp $
$ ed.inputl.c
$set 6
1 ERROR: illegal command from key 0%o\r\n
@@ -6,6 +6,6 @@ $set 6
3 edit\n
4 abort\n
5 no\n
-6 îÅÍÁ¤ ÓÈÏÖϧ ËÏÍÁÎÄÉ\n
-7 îÅÏÄÎÏÚÎÁÞÎÁ ËÏÍÁÎÄÁ\n
-8 *** æÁÔÁÌØÎÁ ðïíéìëá ÒÅÄÁËÔÏÒÁ ***\r\n\n
+6 Ðемає Ñхожої команди\n
+7 Ðеоднозначна команда\n
+8 *** Фатальна ПОМИЛКРредактора ***\r\n\n
diff --git a/nls/ukrainian/set7 b/nls/ukrainian/set7
index 8a1bcbf2e68d..c469b65d9603 100644
--- a/nls/ukrainian/set7
+++ b/nls/ukrainian/set7
@@ -1,4 +1,4 @@
-$ $tcsh: set7,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set7,v 1.4 2011/02/04 18:19:45 christos Exp $
$ ed.screen.c
$set 7
1 \n\tTcsh thinks your terminal has the\n
@@ -14,15 +14,15 @@ $set 7
11 does not have
12 \tIt %s magic margins\n
13 (empty)
-14 ÔÁË
-15 Φ
-16 ðïíéìëá: cannot delete\r\n
+14 так
+15 ні
+16 ПОМИЛКÐ: cannot delete\r\n
17 DeleteChars: num is riduculous: %d\r\n
-18 ðïíéìëá: cannot insert\r\n
+18 ПОМИЛКÐ: cannot insert\r\n
19 StartInsert: num is riduculous: %d\r\n
20 %s: Cannot open /etc/termcap.\n
21 %s: No entry for terminal type "%s"\n
-22 %s: ×ÉËÏÒÉÓÔÁÎÎÑ ÎÁÓÔÒÏÊÏË ÔÕÐÏÇÏ ÔÅÒͦÎÁÌÕ.\n
+22 %s: викориÑÑ‚Ð°Ð½Ð½Ñ Ð½Ð°Ñтройок тупого терміналу.\n
23 %s: WARNING: Your terminal cannot move up.\n
24 Editing may be odd for long lines.\n
25 no clear EOL capability.\n
diff --git a/nls/ukrainian/set8 b/nls/ukrainian/set8
index 693f9b02ee66..6f8dc43f76e2 100644
--- a/nls/ukrainian/set8
+++ b/nls/ukrainian/set8
@@ -1,5 +1,5 @@
-$ $tcsh: set8,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set8,v 1.4 2011/02/04 18:19:45 christos Exp $
$ ed.term.c
$set 8
-1 îÅצÄÏÍÉÊ ÐÅÒÅÍÉËÁÞ
-2 îÅצÒÎÉÊ ÁÒÇÕÍÅÎÔ
+1 Ðевідомий перемикач
+2 Ðевірний аргумент
diff --git a/nls/ukrainian/set9 b/nls/ukrainian/set9
index 97971f59c777..9d11f2cea209 100644
--- a/nls/ukrainian/set9
+++ b/nls/ukrainian/set9
@@ -1,4 +1,4 @@
-$ $tcsh: set9,v 1.3 2006/03/02 18:46:48 christos Exp $
+$ $tcsh: set9,v 1.4 2011/02/04 18:19:45 christos Exp $
$ ed.xmap.c
$set 9
1 AddXkey: Null extended-key not allowed.\n
@@ -6,7 +6,7 @@ $set 9
3 DeleteXkey: Null extended-key not allowed.\n
4 Unbound extended key "%S"\n
5 Some extended keys too long for internal print buffer
-6 Enumerate: ðïíéìëá!! Null ptr passed\n!
+6 Enumerate: ПОМИЛКÐ!! Null ptr passed\n!
7 no input
8 Something must follow: %c\n
9 Octal constant does not fit in a char.\n
diff --git a/patchlevel.h b/patchlevel.h
index c0801cb9bbf8..53009aad0acc 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/patchlevel.h,v 3.167 2009/07/10 17:09:32 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/patchlevel.h,v 3.180 2012/02/13 16:33:50 christos Exp $ */
/*
* patchlevel.h: Our life story.
*/
@@ -7,8 +7,8 @@
#define ORIGIN "Astron"
#define REV 6
-#define VERS 17
-#define PATCHLEVEL 0
-#define DATE "2009-07-10"
+#define VERS 18
+#define PATCHLEVEL 1
+#define DATE "2012-02-14"
#endif /* _h_patchlevel */
diff --git a/pathnames.h b/pathnames.h
index 80d86ebe1704..3d1c8d795b19 100644
--- a/pathnames.h
+++ b/pathnames.h
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/pathnames.h,v 3.18 2002/03/08 17:36:46 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/pathnames.h,v 3.22 2011/02/05 20:34:55 christos Exp $ */
/*
* pathnames.h: Location of things to find
*/
@@ -33,7 +33,7 @@
#ifndef _h_pathnames
#define _h_pathnames
-#ifdef BSD4_4
+#ifdef HAVE_PATHS_H
# include <paths.h>
#endif
@@ -92,6 +92,10 @@
# define _PATH_TCSHELL "/local/bin/tcsh" /* use ram disk */
#endif /* _MINIX && !_PATH_TCSHELL */
+#if defined(__linux__) && !defined(_PATH_TCSHELL)
+# define _PATH_TCSHELL "/bin/tcsh"
+#endif /* __linux__ && !_PATH_TCSHELL */
+
#if defined(__EMX__) && !defined(_PATH_DEVNULL)
# define _PATH_DEVNULL "nul"
#endif /* __EMX__ && !_PATH_DEVNULL */
@@ -141,7 +145,7 @@
#endif /* !_PATH_CSHELL */
#ifndef _PATH_TCSHELL
-# define _PATH_TCSHELL "/usr/local/bin/tcsh"
+# define _PATH_TCSHELL "/usr/local/bin/tcsh"
#endif /* !_PATH_TCSHELL */
#ifndef _PATH_BIN_LOGIN
diff --git a/sh.c b/sh.c
index 73b6d7f54832..dcd911640bba 100644
--- a/sh.c
+++ b/sh.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/sh.c,v 3.145 2009/06/25 21:15:37 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/sh.c,v 3.174 2011/11/29 18:38:54 christos Exp $ */
/*
* sh.c: Main shell routines
*/
@@ -39,7 +39,7 @@ char copyright[] =
All rights reserved.\n";
#endif /* not lint */
-RCSID("$tcsh: sh.c,v 3.145 2009/06/25 21:15:37 christos Exp $")
+RCSID("$tcsh: sh.c,v 3.174 2011/11/29 18:38:54 christos Exp $")
#include "tc.h"
#include "ed.h"
@@ -78,7 +78,7 @@ extern int NLSMapsAreInited;
* ported to Apple Unix (TM) (OREO) 26 -- 29 Jun 1987
*/
-jmp_buf_t reslab INIT_ZERO_STRUCT;
+jmp_buf_t reslab;
static const char tcshstr[] = "tcsh";
@@ -160,6 +160,77 @@ static void st_restore (void *);
int main (int, char **);
+#ifndef LOCALEDIR
+#define LOCALEDIR "/usr/share/locale"
+#endif
+
+#ifdef NLS_CATALOGS
+static void
+add_localedir_to_nlspath(const char *path)
+{
+ static const char msgs_LOC[] = "/%L/LC_MESSAGES/%N.cat";
+ static const char msgs_lang[] = "/%l/LC_MESSAGES/%N.cat";
+ char *old;
+ char *new, *new_p;
+ size_t len;
+ int add_LOC = 1;
+ int add_lang = 1;
+ char trypath[MAXPATHLEN];
+ struct stat st;
+
+ if (path == NULL)
+ return;
+
+ (void) xsnprintf(trypath, sizeof(trypath), "%s/en/LC_MESSAGES/tcsh.cat",
+ path);
+ if (stat(trypath, &st) == -1)
+ return;
+
+ if ((old = getenv("NLSPATH")) != NULL)
+ len = strlen(old) + 1; /* don't forget the colon. */
+ else
+ len = 0;
+
+ len += 2 * strlen(path) +
+ sizeof(msgs_LOC) + sizeof(msgs_lang); /* includes the extra colon */
+
+ new = new_p = xcalloc(len, 1);
+
+ if (old != NULL) {
+ size_t pathlen = strlen(path);
+ char *old_p;
+
+ (void) xsnprintf(new_p, len, "%s", old);
+ new_p += strlen(new_p);
+ len -= new_p - new;
+
+ /* Check if the paths we try to add are already present in NLSPATH.
+ If so, note it by setting the appropriate flag to 0. */
+ for (old_p = old; old_p; old_p = strchr(old_p, ':'),
+ old_p = old_p ? old_p + 1 : NULL) {
+ if (strncmp(old_p, path, pathlen) != 0)
+ continue;
+ if (strncmp(old_p + pathlen, msgs_LOC, sizeof(msgs_LOC) - 1) == 0)
+ add_LOC = 0;
+ else if (strncmp(old_p + pathlen, msgs_lang,
+ sizeof(msgs_lang) - 1) == 0)
+ add_lang = 0;
+ }
+ }
+
+ /* Add the message catalog paths not already present to NLSPATH. */
+ if (add_LOC || add_lang)
+ (void) xsnprintf(new_p, len, "%s%s%s%s%s%s",
+ old ? ":" : "",
+ add_LOC ? path : "", add_LOC ? msgs_LOC : "",
+ add_LOC && add_lang ? ":" : "",
+ add_lang ? path : "", add_lang ? msgs_lang : "");
+
+ tsetenv(STRNLSPATH, str2short(new));
+ free(new);
+}
+#endif
+
int
main(int argc, char **argv)
{
@@ -179,6 +250,7 @@ main(int argc, char **argv)
int osetintr;
struct sigaction oparintr;
+ (void)memset(&reslab, 0, sizeof(reslab));
#ifdef WINNT_NATIVE
nt_init();
#endif /* WINNT_NATIVE */
@@ -192,6 +264,13 @@ main(int argc, char **argv)
# endif /* LC_CTYPE */
#endif /* NLS */
+ STR_environ = blk2short(environ);
+ environ = short2blk(STR_environ); /* So that we can free it */
+
+#ifdef NLS_CATALOGS
+ add_localedir_to_nlspath(LOCALEDIR);
+#endif
+
nlsinit();
#ifdef MALLOC_TRACE
@@ -247,7 +326,7 @@ main(int argc, char **argv)
t = t ? t + 1 : argv[0];
if (*t == '-') t++;
progname = strsave((t && *t) ? t : tcshstr); /* never want a null */
- tcsh = strcmp(progname, tcshstr) == 0;
+ tcsh = strncmp(progname, tcshstr, sizeof(tcshstr) - 1) == 0;
}
/*
@@ -263,16 +342,16 @@ main(int argc, char **argv)
STR_SHELLPATH = SAVE(_PATH_CSHELL);
# endif
#endif
- STR_environ = blk2short(environ);
- environ = short2blk(STR_environ); /* So that we can free it */
STR_WORD_CHARS = SAVE(WORD_CHARS);
HIST = '!';
HISTSUB = '^';
- PRCH = '>';
- PRCHROOT = '#';
+ PRCH = tcsh ? '>' : '%'; /* to replace %# in $prompt for normal users */
+ PRCHROOT = '#'; /* likewise for root */
word_chars = STR_WORD_CHARS;
bslash_quote = 0; /* PWP: do tcsh-style backslash quoting? */
+ anyerror = 1; /* for compatibility */
+ setcopy(STRanyerror, STRNULL, VAR_READWRITE);
/* Default history size to 100 */
setcopy(STRhistory, str2short("100"), VAR_READWRITE);
@@ -319,7 +398,6 @@ main(int argc, char **argv)
setNS(STRloginsh);
}
- AsciiOnly = 1;
NoNLSRebind = getenv("NOREBIND") != NULL;
#ifdef NLS
# ifdef SETLOCALEBUG
@@ -336,13 +414,19 @@ main(int argc, char **argv)
fix_strcoll_bug();
# endif /* STRCOLLBUG */
- {
+ /*
+ * On solaris ISO8859-1 contains no printable characters in the upper half
+ * so we need to test only for MB_CUR_MAX == 1, otherwise for multi-byte
+ * locales we are always AsciiOnly == 0.
+ */
+ if (MB_CUR_MAX == 1) {
int k;
- for (k = 0200; k <= 0377 && !Isprint(CTL_ESC(k)); k++)
+ for (k = 0200; k <= 0377 && !isprint(CTL_ESC(k)); k++)
continue;
- AsciiOnly = MB_CUR_MAX == 1 && k > 0377;
- }
+ AsciiOnly = k > 0377;
+ } else
+ AsciiOnly = 0;
#else
AsciiOnly = getenv("LANG") == NULL && getenv("LC_CTYPE") == NULL;
#endif /* NLS */
@@ -453,7 +537,8 @@ main(int argc, char **argv)
if (loginsh || (uid == 0)) {
if (*cp) {
/* only for login shells or root and we must have a tty */
- if ((cp2 = Strrchr(cp, (Char) '/')) != NULL) {
+ if (((cp2 = Strrchr(cp, (Char) '/')) != NULL) &&
+ (Strncmp(cp, STRptssl, 3) != 0)) {
cp2 = cp2 + 1;
}
else
@@ -506,7 +591,18 @@ main(int argc, char **argv)
if ((tcp = getenv("HOME")) != NULL)
cp = quote(SAVE(tcp));
else
+#ifdef __ANDROID__
+ /* On Android, $HOME usually isn't set, so we can't load user RC files.
+ Check for the environment variable EXTERNAL_STORAGE, which contains
+ the mount point of the external storage (SD card, mostly). If
+ EXTERNAL_STORAGE isn't set fall back to "/sdcard". */
+ if ((tcp = getenv("EXTERNAL_STORAGE")) != NULL)
+ cp = quote(SAVE(tcp));
+ else
+ cp = quote(SAVE("/sdcard"));
+#else
cp = NULL;
+#endif
if (cp == NULL)
fast = 1; /* No home -> can't read scripts */
@@ -531,6 +627,12 @@ main(int argc, char **argv)
setv(STRoid, Itoa(oid, 0, 0), VAR_READWRITE);
#endif /* apollo */
+ setv(STReuid, Itoa(euid, 0, 0), VAR_READWRITE);
+ if ((pw = xgetpwuid(euid)) == NULL)
+ setcopy(STReuser, STRunknown, VAR_READWRITE);
+ else
+ setcopy(STReuser, str2short(pw->pw_name), VAR_READWRITE);
+
setv(STRuid, Itoa(uid, 0, 0), VAR_READWRITE);
setv(STRgid, Itoa(gid, 0, 0), VAR_READWRITE);
@@ -542,7 +644,7 @@ main(int argc, char **argv)
else if (cln != NULL)
setv(STRuser, quote(SAVE(cln)), VAR_READWRITE);
else if ((pw = xgetpwuid(uid)) == NULL)
- setcopy(STRuser, str2short("unknown"), VAR_READWRITE);
+ setcopy(STRuser, STRunknown, VAR_READWRITE);
else
setcopy(STRuser, str2short(pw->pw_name), VAR_READWRITE);
if (cln == NULL)
@@ -554,7 +656,7 @@ main(int argc, char **argv)
if (cgr != NULL)
setv(STRgroup, quote(SAVE(cgr)), VAR_READWRITE);
else if ((gr = xgetgrgid(gid)) == NULL)
- setcopy(STRgroup, str2short("unknown"), VAR_READWRITE);
+ setcopy(STRgroup, STRunknown, VAR_READWRITE);
else
setcopy(STRgroup, str2short(gr->gr_name), VAR_READWRITE);
if (cgr == NULL)
@@ -573,7 +675,7 @@ main(int argc, char **argv)
tsetenv(STRHOST, str2short(cbuff));
}
else
- tsetenv(STRHOST, str2short("unknown"));
+ tsetenv(STRHOST, STRunknown);
}
@@ -697,7 +799,7 @@ main(int argc, char **argv)
parseLS_COLORS(str2short(tcp));
#endif /* COLOR_LS_F */
- doldol = putn((int) getpid()); /* For $$ */
+ doldol = putn((tcsh_number_t)getpid()); /* For $$ */
#ifdef WINNT_NATIVE
{
char *tmp;
@@ -705,8 +807,8 @@ main(int argc, char **argv)
if ((tmp = getenv("TMP")) != NULL) {
tmp = xasprintf("%s/%s", tmp, "sh");
tmp2 = SAVE(tmp);
- xfree(tmp);
- }
+ xfree(tmp);
+ }
else {
tmp2 = SAVE("");
}
@@ -714,7 +816,16 @@ main(int argc, char **argv)
xfree(tmp2);
}
#else /* !WINNT_NATIVE */
+#ifdef HAVE_MKSTEMP
+ {
+ char *tmpdir = getenv ("TMPDIR");
+ if (!tmpdir)
+ tmpdir = "/tmp";
+ shtemp = Strspl(SAVE(tmpdir), SAVE("/sh" TMP_TEMPLATE)); /* For << */
+ }
+#else /* !HAVE_MKSTEMP */
shtemp = Strspl(STRtmpsh, doldol); /* For << */
+#endif /* HAVE_MKSTEMP */
#endif /* WINNT_NATIVE */
/*
@@ -738,10 +849,11 @@ main(int argc, char **argv)
/* PATCH IDEA FROM Issei.Suzuki VERY THANKS */
#if defined(DSPMBYTE)
#if defined(NLS) && defined(LC_CTYPE)
- if (((tcp = setlocale(LC_CTYPE, NULL)) != NULL || (tcp = getenv("LANG")) != NULL) && !adrof(CHECK_MBYTEVAR)) {
+ if (((tcp = setlocale(LC_CTYPE, NULL)) != NULL || (tcp = getenv("LANG")) != NULL) && !adrof(CHECK_MBYTEVAR))
#else
- if ((tcp = getenv("LANG")) != NULL && !adrof(CHECK_MBYTEVAR)) {
+ if ((tcp = getenv("LANG")) != NULL && !adrof(CHECK_MBYTEVAR))
#endif
+ {
autoset_dspmbyte(str2short(tcp));
}
#if defined(WINNT_NATIVE)
@@ -749,7 +861,14 @@ main(int argc, char **argv)
nt_autoset_dspmbyte();
#endif /* WINNT_NATIVE */
#endif
-
+#if defined(AUTOSET_KANJI)
+# if defined(NLS) && defined(LC_CTYPE)
+ if (setlocale(LC_CTYPE, NULL) != NULL || getenv("LANG") != NULL)
+# else
+ if (getenv("LANG") != NULL)
+# endif
+ autoset_kanji();
+#endif /* AUTOSET_KANJI */
fix_version(); /* publish the shell version */
if (argc > 1 && strcmp(argv[1], "--version") == 0) {
@@ -912,6 +1031,8 @@ main(int argc, char **argv)
case ' ':
case '\t':
+ case '\r':
+ case '\n':
/*
* for O/S's that don't do the argument parsing right in
* "#!/foo -f " scripts
@@ -1019,10 +1140,7 @@ main(int argc, char **argv)
* Set up the prompt.
*/
if (prompt) {
- if (tcsh)
- setcopy(STRprompt, STRdeftcshprompt, VAR_READWRITE);
- else
- setcopy(STRprompt, STRdefcshprompt, VAR_READWRITE);
+ setcopy(STRprompt, STRdefprompt, VAR_READWRITE);
/* that's a meta-questionmark */
setcopy(STRprompt2, STRmquestion, VAR_READWRITE);
setcopy(STRprompt3, STRKCORRECT, VAR_READWRITE);
@@ -1291,6 +1409,8 @@ main(int argc, char **argv)
/*
* Mop-up.
*/
+ /* Take care of these (especially HUP) here instead of inside flush. */
+ handle_pending_signals();
if (intty) {
if (loginsh) {
xprintf("logout\n");
@@ -1677,7 +1797,7 @@ void
exitstat(void)
{
#ifdef PROF
- monitor(0);
+ _mcleanup();
#endif
/*
* Note that if STATUS is corrupted (i.e. getn bombs) then error will exit
@@ -1837,7 +1957,7 @@ void
process(int catch)
{
jmp_buf_t osetexit;
- /* PWP: This might get nuked my longjmp so don't make it a register var */
+ /* PWP: This might get nuked by longjmp so don't make it a register var */
size_t omark;
volatile int didexitset = 0;
@@ -1925,9 +2045,11 @@ process(int catch)
/*
* Echo not only on VERBOSE, but also with history expansion. If there
* is a lexical error then we forego history echo.
+ * Do not echo if we're only entering history (source -h).
*/
if ((hadhist && !seterr && intty && !tellwhat && !Expand && !whyles) ||
- adrof(STRverbose)) {
+ (!enterhist && adrof(STRverbose)))
+ {
int odidfds = didfds;
haderr = 1;
didfds = 0;
@@ -1992,9 +2114,14 @@ process(int catch)
* Parse the words of the input into a parse tree.
*/
t = syntax(paraml.next, &paraml, 0);
- cleanup_push(t, syntax_cleanup);
- if (seterr)
+ /*
+ * We cannot cleanup push here, because cd /blah; echo foo
+ * would rewind t on the chdir error, and free the rest of the command
+ */
+ if (seterr) {
+ freesyn(t);
stderror(ERR_OLD);
+ }
postcmd();
/*
@@ -2002,6 +2129,7 @@ process(int catch)
* <mlschroe@immd4.informatik.uni-erlangen.de> was execute(t, tpgrp);
*/
execute(t, (tpgrp > 0 ? tpgrp : -1), NULL, NULL, TRUE);
+ freesyn(t);
/*
* Made it!
@@ -2013,11 +2141,15 @@ process(int catch)
#endif /* SIG_WINDOW */
setcopy(STR_, InputBuf, VAR_READWRITE | VAR_NOGLOB);
cmd_done:
- cleanup_until(&paraml);
+ if (cleanup_reset())
+ cleanup_until(&paraml);
+ else
+ haderr = 1;
}
cleanup_pop_mark(omark);
resexit(osetexit);
exitset--;
+ handle_pending_signals();
}
/*ARGSUSED*/
@@ -2135,12 +2267,15 @@ mailchk(void)
continue;
/* skip . and .. */
- if (!readdir(mailbox) || !readdir(mailbox))
+ if (!readdir(mailbox) || !readdir(mailbox)) {
+ (void)closedir(mailbox);
continue;
+ }
while (readdir(mailbox))
mailcount++;
+ (void)closedir(mailbox);
if (mailcount == 0)
continue;
@@ -2154,7 +2289,7 @@ mailchk(void)
else {
char *type;
- if (stb.st_size == 0 || stb.st_atime > stb.st_mtime ||
+ if (stb.st_size == 0 || stb.st_atime >= stb.st_mtime ||
(stb.st_atime <= chktim && stb.st_mtime <= chktim) ||
(loginsh && !new))
continue;
@@ -2222,8 +2357,14 @@ initdesc(void)
#ifndef CLOSE_ON_EXEC
didcch = 0; /* Havent closed for child */
#endif /* CLOSE_ON_EXEC */
- isdiagatty = isatty(SHDIAG);
- isoutatty = isatty(SHOUT);
+ if (SHDIAG >= 0)
+ isdiagatty = isatty(SHDIAG);
+ else
+ isdiagatty = 0;
+ if (SHDIAG >= 0)
+ isoutatty = isatty(SHOUT);
+ else
+ isoutatty = 0;
#ifdef NLS_BUGS
#ifdef NLS_CATALOGS
nlsinit();
@@ -2258,12 +2399,13 @@ xexit(int i)
{
struct process *pp, *np;
-
+ pid_t mypid = getpid();
/* Kill all processes marked for hup'ing */
for (pp = proclist.p_next; pp; pp = pp->p_next) {
np = pp;
- do
- if ((np->p_flags & PHUP) && np->p_jobid != shpgrp) {
+ do
+ if ((np->p_flags & PHUP) && np->p_jobid != shpgrp &&
+ np->p_parentid == mypid) {
if (killpg(np->p_jobid, SIGHUP) != -1) {
/* In case the job was suspended... */
#ifdef SIGCONT
@@ -2350,6 +2492,7 @@ record(void)
recdirs(NULL, adrof(STRsavedirs) != NULL);
rechist(NULL, adrof(STRsavehist) != NULL);
}
+ displayHistStats("Exiting"); /* no-op unless DEBUG_HIST */
}
/*
diff --git a/sh.char.c b/sh.char.c
index 498cc2f00965..abc1150f7954 100644
--- a/sh.char.c
+++ b/sh.char.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/sh.char.c,v 3.20 2007/03/07 16:31:37 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/sh.char.c,v 3.21 2010/02/09 20:32:34 christos Exp $ */
/*
* sh.char.c: Character classification tables
*/
@@ -32,7 +32,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: sh.char.c,v 3.20 2007/03/07 16:31:37 christos Exp $")
+RCSID("$tcsh: sh.char.c,v 3.21 2010/02/09 20:32:34 christos Exp $")
#include "sh.char.h"
@@ -233,8 +233,8 @@ unsigned short _cmap[256] = {
/* 252 udiaeresis 253 yacute 254 thorn 255 ydiaeresis */
_LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW,
-};
#endif /* SHORT_STRINGS */
+};
#if defined(KANJI) && defined(SHORT_STRINGS) && defined(DSPMBYTE)
/* original table */
diff --git a/sh.char.h b/sh.char.h
index eb20e69930e4..e2848609ebb5 100644
--- a/sh.char.h
+++ b/sh.char.h
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/sh.char.h,v 3.35 2008/09/25 14:41:34 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/sh.char.h,v 3.36 2010/05/08 00:36:02 christos Exp $ */
/*
* sh.char.h: Table for spotting special characters quickly
* Makes for very obscure but efficient coding.
@@ -150,17 +150,15 @@ extern tcshuc _cmap_lower[], _cmap_upper[];
#ifdef WIDE_STRINGS
# define cmap(c, bits) \
- (((c) < 0) ? 0 : \
- ((c) & QUOTE) || (c) >= 0x0080 ? 0 : (_cmap[(tcshuc)ASC(c)] & (bits)))
+ (((c) & QUOTE) || (unsigned int)(c) >= 0x0080 ? 0 : \
+ (_cmap[(tcshuc)ASC(c)] & (bits)))
#elif defined(SHORT_STRINGS) && defined(KANJI)
# define cmap(c, bits) \
- (((c) < 0) ? 0 : \
- (((c) & QUOTE) || ((ASC(c) & 0x80) && adrof(STRnokanji))) ? \
+ ((((c) & QUOTE) || ((tcshuc)(ASC(c) & 0x80) && adrof(STRnokanji))) ? \
0 : (_cmap[(tcshuc)ASC(c)] & (bits)))
#else /* SHORT_STRINGS && KANJI */
# define cmap(c, bits) \
- (((c) < 0) ? 0 : \
- ((c) & QUOTE) ? 0 : (_cmap[(tcshuc)ASC(c)] & (bits)))
+ (((c) & QUOTE) ? 0 : (_cmap[(tcshuc)ASC(c)] & (bits)))
#endif /* SHORT_STRINGS && KANJI */
#define isglob(c) cmap((c), _GLOB)
diff --git a/sh.decls.h b/sh.decls.h
index 70f76a41c6a1..db90288ee0d9 100644
--- a/sh.decls.h
+++ b/sh.decls.h
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/sh.decls.h,v 3.55 2009/02/25 22:54:54 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/sh.decls.h,v 3.62 2011/02/25 23:58:34 christos Exp $ */
/*
* sh.decls.h External declarations from sh*.c
*/
@@ -48,9 +48,9 @@ extern void phup (void);
extern void process (int);
extern void untty (void);
#ifdef PROF
-extern void done (int);
+extern void done (int) __attribute__((__noreturn__));
#else
-extern void xexit (int);
+extern void xexit (int) __attribute__((__noreturn__));
#endif
extern int grabpgrp (int, pid_t);
@@ -82,7 +82,7 @@ extern void heredoc (Char *);
/*
* sh.err.c
*/
-extern void reset (void);
+extern void reset (void) __attribute__((__noreturn__));
extern void cleanup_push_internal(void *, void (*fn) (void *)
#ifdef CLEANUP_DEBUG
, const char *, size_t
@@ -91,8 +91,9 @@ extern void cleanup_push_internal(void *, void (*fn) (void *)
#define cleanup_push(v, f) cleanup_push_internal(v, f)
#endif
);
+extern int cleanup_reset(void);
extern void cleanup_ignore(void *);
-extern void cleanup_until (void *);
+extern void cleanup_until(void *);
extern void cleanup_until_mark(void);
extern size_t cleanup_push_mark(void);
extern void cleanup_pop_mark(size_t);
@@ -103,7 +104,9 @@ extern void sigprocmask_cleanup(void *);
extern void xfree_indirect(void *);
extern void errinit (void);
extern void seterror (unsigned int, ...);
-extern void stderror (unsigned int, ...);
+extern void fixerror (void);
+extern void stderror (unsigned int, ...)
+ __attribute__((__noreturn__));
/*
* sh.exec.c
@@ -122,9 +125,9 @@ extern int find_cmd (Char *, int);
/*
* sh.exp.c
*/
-extern Char *filetest (Char *, Char ***, int);
-extern int expr (Char ***);
-extern int exp0 (Char ***, int);
+extern Char *filetest (Char *, Char ***, int);
+extern tcsh_number_t expr (Char ***);
+extern tcsh_number_t exp0 (Char ***, int);
/*
* sh.file.c
@@ -212,11 +215,12 @@ extern int t_pmatch (const Char *, const Char *,
* sh.hist.c
*/
extern void dohist (Char **, struct command *);
-extern struct Hist *enthist (int, struct wordent *, int, int);
+extern struct Hist *enthist (int, struct wordent *, int, int, int);
extern void savehist (struct wordent *, int);
extern char *fmthist (int, ptr_t);
extern void rechist (Char *, int);
extern void loadhist (Char *, int);
+extern void displayHistStats(const char *);
/*
* sh.init.c
@@ -270,9 +274,11 @@ extern void setzero (void *, size_t);
extern Char *strip (Char *);
extern Char *quote (Char *);
extern const Char *quote_meta (struct Strbuf *, const Char *);
+#ifndef SHORT_STRINGS
extern char *strnsave (const char *, size_t);
+#endif
extern char *strsave (const char *);
-extern void udvar (Char *);
+extern void udvar (Char *) __attribute__((__noreturn__));
#ifndef POSIX
extern char *strstr (const char *, const char *);
#endif /* !POSIX */
@@ -368,8 +374,8 @@ extern void mypipe (int *);
extern struct varent *adrof1 (const Char *, struct varent *);
extern void doset (Char **, struct command *);
extern void dolet (Char **, struct command *);
-extern Char *putn (int);
-extern int getn (Char *);
+extern Char *putn (tcsh_number_t);
+extern tcsh_number_t getn (const Char *);
extern Char *value1 (Char *, struct varent *);
extern void setcopy (const Char *, const Char *, int);
extern void setv (const Char *, Char *, int);
@@ -380,7 +386,7 @@ extern void setq (const Char *, Char **,
extern void unset (Char **, struct command *);
extern void unset1 (Char *[], struct varent *);
extern void unsetv (Char *);
-extern void setNS (Char *);
+extern void setNS (const Char *);
extern void shift (Char **, struct command *);
extern void plist (struct varent *, int);
extern Char *unparse (struct command *);
@@ -388,6 +394,9 @@ extern Char *unparse (struct command *);
extern void update_dspmbyte_vars (void);
extern void autoset_dspmbyte (const Char *);
#endif
+#if defined(AUTOSET_KANJI)
+extern void autoset_kanji (void);
+#endif
/*
* sh.time.c
diff --git a/sh.dir.c b/sh.dir.c
index 9f729519a4e9..ab89855bbd42 100644
--- a/sh.dir.c
+++ b/sh.dir.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/sh.dir.c,v 3.80 2007/05/08 21:05:34 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/sh.dir.c,v 3.82 2011/10/16 16:25:05 christos Exp $ */
/*
* sh.dir.c: Directory manipulation functions
*/
@@ -33,7 +33,7 @@
#include "sh.h"
#include "ed.h"
-RCSID("$tcsh: sh.dir.c,v 3.80 2007/05/08 21:05:34 christos Exp $")
+RCSID("$tcsh: sh.dir.c,v 3.82 2011/10/16 16:25:05 christos Exp $")
/*
* C Shell - directory management
@@ -204,10 +204,12 @@ skipargs(Char ***v, const char *dstr, const char *str)
for (n++; loop && *n != NULL && (*n)[0] == '-'; n++)
if (*(s = &((*n)[1])) == '\0') /* test for bare "-" argument */
dflag |= DIR_OLD;
- else {
+ else if ((*n)[1] == '-' && (*n)[2] == '\0') { /* test for -- */
+ n++;
+ break;
+ } else {
char *p;
- while (*s != '\0') /* examine flags */
- {
+ while (*s != '\0') /* examine flags */ {
if ((p = strchr(dstr, *s++)) != NULL)
dflag |= (1 << (p - dstr));
else
@@ -643,9 +645,13 @@ dfollow(Char *cp, int old)
Char **cdp;
for (cdp = c->vec; *cdp; cdp++) {
+ size_t len = Strlen(*cdp);
buf.len = 0;
- Strbuf_append(&buf, *cdp);
- Strbuf_append1(&buf, '/');
+ if (len > 0) {
+ Strbuf_append(&buf, *cdp);
+ if ((*cdp)[len - 1] != '/')
+ Strbuf_append1(&buf, '/');
+ }
Strbuf_append(&buf, cp);
Strbuf_terminate(&buf);
/*
diff --git a/sh.dol.c b/sh.dol.c
index bafb9715c3d9..45b10e0debec 100644
--- a/sh.dol.c
+++ b/sh.dol.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/sh.dol.c,v 3.77 2009/06/19 16:25:00 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/sh.dol.c,v 3.83 2011/01/25 20:10:46 christos Exp $ */
/*
* sh.dol.c: Variable substitutions
*/
@@ -32,7 +32,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: sh.dol.c,v 3.77 2009/06/19 16:25:00 christos Exp $")
+RCSID("$tcsh: sh.dol.c,v 3.83 2011/01/25 20:10:46 christos Exp $")
/*
* C shell
@@ -47,7 +47,7 @@ RCSID("$tcsh: sh.dol.c,v 3.77 2009/06/19 16:25:00 christos Exp $")
* some QUOTEing may have occurred already, so we dont "trim()" here.
*/
-static Char Dpeekc; /* Peek for DgetC */
+static eChar Dpeekc; /* Peek for DgetC */
static eChar Dpeekrd; /* Peek for Dreadc */
static Char *Dcp, *const *Dvp; /* Input vector for Dreadc */
@@ -317,7 +317,7 @@ Dword(struct blk_buf *bb)
static eChar
DgetC(int flag)
{
- Char c;
+ eChar c;
top:
if ((c = Dpeekc) != 0) {
@@ -402,7 +402,7 @@ Dgetdol(void)
stderror(ERR_SYNTAX);
if (backpid != 0) {
xfree(dolbang);
- setDolp(dolbang = putn(backpid));
+ setDolp(dolbang = putn((tcsh_number_t)backpid));
}
cleanup_until(name);
goto eatbrac;
@@ -528,7 +528,7 @@ Dgetdol(void)
stderror(ERR_DOLZERO);
if (length) {
length = Strlen(ffile);
- addla(putn(length));
+ addla(putn((tcsh_number_t)length));
}
else {
fixDolMod();
@@ -588,7 +588,7 @@ Dgetdol(void)
cleanup_until(name);
fixDolMod();
if (length) {
- addla(putn(Strlen(np)));
+ addla(putn((tcsh_number_t)Strlen(np)));
} else {
xfree(env_val);
env_val = Strsave(np);
@@ -625,7 +625,7 @@ Dgetdol(void)
for (i = 0; Isdigit(*np); i = i * 10 + *np++ - '0')
continue;
- if (i < 0 || i > upb && !any("-*", *np)) {
+ if (i < 0 || (i > upb && !any("-*", *np))) {
cleanup_until(name);
dolerror(vp->v_name);
return;
@@ -687,7 +687,7 @@ Dgetdol(void)
stderror(ERR_MISSING, '}');
unDredc(c);
}
- addla(putn(upb - lwb + 1));
+ addla(putn((tcsh_number_t)(upb - lwb + 1)));
}
else if (length) {
int i;
@@ -698,7 +698,7 @@ Dgetdol(void)
/* We don't want that, since we can always compute it by adding $#xxx */
length += i - 1; /* Add the number of spaces in */
#endif
- addla(putn(length));
+ addla(putn((tcsh_number_t)length));
}
else {
eatmod:
@@ -830,7 +830,7 @@ setDolp(Char *cp)
cp = np;
cp[--len] = '\0';
didmod = 1;
- if (diff >= len)
+ if (diff >= (ssize_t)len)
break;
} else {
/* should this do a seterror? */
@@ -887,7 +887,7 @@ unDredc(eChar c)
static eChar
Dredc(void)
{
- Char c;
+ eChar c;
if ((c = Dpeekrd) != 0) {
Dpeekrd = 0;
@@ -936,45 +936,52 @@ heredoc(Char *term)
Char *lbp, *obp, *mbp;
Char **vp;
int quoted;
+#ifdef HAVE_MKSTEMP
+ char *tmp = short2str(shtemp);
+ char *dot = strrchr(tmp, '.');
+
+ if (!dot)
+ stderror(ERR_NAME | ERR_NOMATCH);
+ strcpy(dot, TMP_TEMPLATE);
+
+ xclose(0);
+ if (mkstemp(tmp) == -1)
+ stderror(ERR_SYSTEM, tmp, strerror(errno));
+#else /* !HAVE_MKSTEMP */
char *tmp;
-#ifndef WINNT_NATIVE
+# ifndef WINNT_NATIVE
struct timeval tv;
again:
-#endif /* WINNT_NATIVE */
+# endif /* WINNT_NATIVE */
tmp = short2str(shtemp);
-#ifndef O_CREAT
-# define O_CREAT 0
+# if O_CREAT == 0
if (xcreat(tmp, 0600) < 0)
stderror(ERR_SYSTEM, tmp, strerror(errno));
-#endif
+# endif
xclose(0);
-#ifndef O_TEMPORARY
-# define O_TEMPORARY 0
-#endif
-#ifndef O_EXCL
-# define O_EXCL 0
-#endif
if (xopen(tmp, O_RDWR|O_CREAT|O_EXCL|O_TEMPORARY|O_LARGEFILE, 0600) ==
-1) {
int oerrno = errno;
-#ifndef WINNT_NATIVE
+# ifndef WINNT_NATIVE
if (errno == EEXIST) {
if (unlink(tmp) == -1) {
(void) gettimeofday(&tv, NULL);
xfree(shtemp);
- mbp = putn((((int)tv.tv_sec) ^
- ((int)tv.tv_usec) ^ ((int)getpid())) & 0x00ffffff);
+ mbp = putn((((tcsh_number_t)tv.tv_sec) ^
+ ((tcsh_number_t)tv.tv_usec) ^
+ ((tcsh_number_t)getpid())) & 0x00ffffff);
shtemp = Strspl(STRtmpsh, mbp);
xfree(mbp);
}
goto again;
}
-#endif /* WINNT_NATIVE */
+# endif /* WINNT_NATIVE */
(void) unlink(tmp);
errno = oerrno;
stderror(ERR_SYSTEM, tmp, strerror(errno));
}
+#endif /* HAVE_MKSTEMP */
(void) unlink(tmp); /* 0 0 inode! */
Dv[0] = term;
Dv[1] = NULL;
@@ -1007,6 +1014,10 @@ again:
}
Strbuf_terminate(&lbuf);
+ /* Catch EOF in the middle of a line. */
+ if (c == CHAR_ERR && lbuf.len != 0)
+ c = '\n';
+
/*
* Check for EOF or compare to terminator -- before expansion
*/
diff --git a/sh.err.c b/sh.err.c
index 279c7b8a9bf8..e157d6aa6e97 100644
--- a/sh.err.c
+++ b/sh.err.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/sh.err.c,v 3.50 2007/09/28 20:25:15 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/sh.err.c,v 3.55 2011/02/25 23:58:34 christos Exp $ */
/*
* sh.err.c: Error printing routines.
*/
@@ -34,7 +34,7 @@
#include "sh.h"
#include <assert.h>
-RCSID("$tcsh: sh.err.c,v 3.50 2007/09/28 20:25:15 christos Exp $")
+RCSID("$tcsh: sh.err.c,v 3.55 2011/02/25 23:58:34 christos Exp $")
/*
* C Shell
@@ -51,6 +51,7 @@ char *seterr = NULL; /* Holds last error if there was one */
#define ERR_NAME 0x10000000
#define ERR_SILENT 0x20000000
#define ERR_OLD 0x40000000
+#define ERR_INTERRUPT 0x80000000
#define ERR_SYNTAX 0
#define ERR_NOTALLOWED 1
@@ -187,7 +188,8 @@ char *seterr = NULL; /* Holds last error if there was one */
#define ERR_BADJOB 132
#define ERR_INVALID 133
#define ERR_BADCOLORVAR 134
-#define NO_ERRORS 135
+#define ERR_EOF 135
+#define NO_ERRORS 136
static const char *elst[NO_ERRORS] INIT_ZERO_STRUCT;
@@ -364,6 +366,7 @@ errinit(void)
elst[ERR_READONLY] = CSAVS(1, 135, "$%S is read-only");
elst[ERR_BADJOB] = CSAVS(1, 136, "No such job (badjob)");
elst[ERR_BADCOLORVAR] = CSAVS(1, 137, "Unknown colorls variable `%c%c'");
+ elst[ERR_EOF] = CSAVS(1, 138, "Unexpected end of file");
}
/* Cleanup data. */
@@ -448,6 +451,12 @@ cleanup_until(void *last_var)
abort();
}
+int
+cleanup_reset(void)
+{
+ return cleanup_sp > cleanup_mark;
+}
+
void
cleanup_until_mark(void)
{
@@ -527,6 +536,7 @@ reset(void)
{
cleanup_until_mark();
_reset();
+ abort();
}
/*
@@ -549,13 +559,35 @@ seterror(unsigned int id, ...)
}
}
+void
+fixerror(void)
+{
+ didfds = 0; /* Forget about 0,1,2 */
+ /*
+ * Go away if -e or we are a child shell
+ */
+ if (!exitset || exiterr || child)
+ xexit(1);
+
+ /*
+ * Reset the state of the input. This buffered seek to end of file will
+ * also clear the while/foreach stack.
+ */
+ btoeof();
+
+ setcopy(STRstatus, STR1, VAR_READWRITE);/*FIXRESET*/
+#ifdef BSDJOBS
+ if (tpgrp > 0)
+ (void) tcsetpgrp(FSHTTY, tpgrp);
+#endif
+}
+
/*
* Print the error with the given id.
*
* Special ids:
* ERR_SILENT: Print nothing.
- * ERR_OLD: Print the previously set error if one was there.
- * otherwise return.
+ * ERR_OLD: Print the previously set error
* ERR_NAME: If this bit is set, print the name of the function
* in bname
*
@@ -573,7 +605,6 @@ stderror(unsigned int id, ...)
{
va_list va;
int flags;
- int vareturn;
va_start(va, id);
@@ -588,61 +619,38 @@ stderror(unsigned int id, ...)
/* Pyramid's OS/x has a subtle bug in <varargs.h> which prevents calling
* va_end more than once in the same function. -- sterling@netcom.com
*/
- if (!((flags & ERR_OLD) && seterr == NULL)) {
- vareturn = 0; /* Don't return immediately after va_end */
- if (id >= sizeof(elst) / sizeof(elst[0]))
- id = ERR_INVALID;
-
-
- if (!(flags & ERR_SILENT)) {
- /*
- * Must flush before we print as we wish output before the error
- * to go * on (some form of) standard output, while output after
- * goes on (some * form of) diagnostic output. If didfds then
- * output will go to 1/2 * else to FSHOUT/FSHDIAG. See flush in
- * sh.print.c.
- */
- flush();/*FIXRESET*/
- haderr = 1; /* Now to diagnostic output */
- if (flags & ERR_NAME)
- xprintf("%s: ", bname);/*FIXRESET*/
- if ((flags & ERR_OLD)) {
- /* Old error. */
- xprintf("%s.\n", seterr);/*FIXRESET*/
- } else {
- xvprintf(elst[id], va);/*FIXRESET*/
- xprintf(".\n");/*FIXRESET*/
- }
+ assert(!((flags & ERR_OLD) && seterr == NULL));
+
+ if (id >= sizeof(elst) / sizeof(elst[0]))
+ id = ERR_INVALID;
+
+ if (!(flags & ERR_SILENT)) {
+ /*
+ * Must flush before we print as we wish output before the error
+ * to go on (some form of) standard output, while output after
+ * goes on (some form of) diagnostic output. If didfds then output
+ * will go to 1/2 else to FSHOUT/FSHDIAG. See flush in sh.print.c.
+ */
+ flush();/*FIXRESET*/
+ haderr = 1; /* Now to diagnostic output */
+ if (flags & ERR_NAME)
+ xprintf("%s: ", bname);/*FIXRESET*/
+ if ((flags & ERR_OLD)) {
+ /* Old error. */
+ xprintf("%s.\n", seterr);/*FIXRESET*/
+ } else {
+ xvprintf(elst[id], va);/*FIXRESET*/
+ xprintf(".\n");/*FIXRESET*/
}
- } else {
- vareturn = 1; /* Return immediately after va_end */
}
va_end(va);
- if (vareturn)
- return;
if (seterr) {
xfree(seterr);
seterr = NULL;
}
- didfds = 0; /* Forget about 0,1,2 */
- /*
- * Go away if -e or we are a child shell
- */
- if (!exitset || exiterr || child)
- xexit(1);
+ fixerror();
- /*
- * Reset the state of the input. This buffered seek to end of file will
- * also clear the while/foreach stack.
- */
- btoeof();
-
- setcopy(STRstatus, STR1, VAR_READWRITE);/*FIXRESET*/
-#ifdef BSDJOBS
- if (tpgrp > 0)
- (void) tcsetpgrp(FSHTTY, tpgrp);
-#endif
- reset(); /* Unwind */
+ reset(); /* Unwind */
}
diff --git a/sh.exec.c b/sh.exec.c
index ee7a551fa280..2b41a5343bc2 100644
--- a/sh.exec.c
+++ b/sh.exec.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/sh.exec.c,v 3.75 2009/06/25 21:15:37 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/sh.exec.c,v 3.79 2011/02/25 23:58:34 christos Exp $ */
/*
* sh.exec.c: Search, find, and execute a command!
*/
@@ -32,7 +32,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: sh.exec.c,v 3.75 2009/06/25 21:15:37 christos Exp $")
+RCSID("$tcsh: sh.exec.c,v 3.79 2011/02/25 23:58:34 christos Exp $")
#include "tc.h"
#include "tw.h"
@@ -77,7 +77,7 @@ static Char *expath; /* Path for exerr */
/*
* xhash is an array of hash buckets which are used to hash execs. If
* it is allocated (havhash true), then to tell if ``name'' is
- * (possibly) presend in the i'th component of the variable path, look
+ * (possibly) present in the i'th component of the variable path, look
* at the [hashname(name)] bucket of size [hashwidth] bytes, in the [i
* mod size*8]'th bit. The cache size is defaults to a length of 1024
* buckets, each 1 byte wide. This implementation guarantees that
@@ -141,7 +141,7 @@ static int hits, misses;
/* Dummy search path for just absolute search when no path */
static Char *justabs[] = {STRNULL, 0};
-static void pexerr (void);
+static void pexerr (void) __attribute__((__noreturn__));
static void texec (Char *, Char **);
int hashname (Char *);
static int iscommand (Char *);
@@ -149,9 +149,9 @@ static int iscommand (Char *);
void
doexec(struct command *t, int do_glob)
{
- Char *dp, **pv, **av, *sav;
+ Char *dp, **pv, **opv, **av, *sav;
struct varent *v;
- int slash, gflag;
+ int slash, gflag, rehashed;
int hashval, i;
Char *blk[2];
@@ -253,9 +253,9 @@ doexec(struct command *t, int do_glob)
* command search.
*/
if (v == NULL || v->vec == NULL || v->vec[0] == NULL || slash)
- pv = justabs;
+ opv = justabs;
else
- pv = v->vec;
+ opv = v->vec;
sav = Strspl(STRslash, *av);/* / command name for postpending */
#ifndef VFORK
cleanup_push(sav, xfree);
@@ -264,6 +264,9 @@ doexec(struct command *t, int do_glob)
#endif /* VFORK */
hashval = havhash ? hashname(*av) : 0;
+ rehashed = 0;
+retry:
+ pv = opv;
i = 0;
#ifdef VFORK
hits++;
@@ -313,6 +316,11 @@ cont:
#ifdef VFORK
hits--;
#endif /* VFORK */
+ if (adrof(STRautorehash) && !rehashed && havhash && opv != justabs) {
+ dohash(NULL, NULL);
+ rehashed = 1;
+ goto retry;
+ }
#ifndef VFORK
cleanup_until(sav);
#else /* VFORK */
@@ -719,11 +727,15 @@ dohash(Char **vv, struct command *c)
#if defined(_UWIN) || defined(__CYGWIN__)
/* Turn foo.{exe,com,bat} into foo since UWIN's readdir returns
* the file with the .exe, .com, .bat extension
+ *
+ * Same for Cygwin, but only for .exe and .com extension.
*/
{
ssize_t ext = strlen(dp->d_name) - 4;
if ((ext > 0) && (strcasecmp(&dp->d_name[ext], ".exe") == 0 ||
+#ifndef __CYGWIN__
strcasecmp(&dp->d_name[ext], ".bat") == 0 ||
+#endif
strcasecmp(&dp->d_name[ext], ".com") == 0)) {
#ifdef __CYGWIN__
/* Also store the variation with extension. */
@@ -801,19 +813,23 @@ hashname(Char *cp)
static int
iscommand(Char *name)
{
- Char **pv;
+ Char **opv, **pv;
Char *sav;
struct varent *v;
int slash = any(short2str(name), '/');
- int hashval, i;
+ int hashval, rehashed, i;
v = adrof(STRpath);
if (v == NULL || v->vec == NULL || v->vec[0] == NULL || slash)
- pv = justabs;
+ opv = justabs;
else
- pv = v->vec;
+ opv = v->vec;
sav = Strspl(STRslash, name); /* / command name for postpending */
hashval = havhash ? hashname(name) : 0;
+
+ rehashed = 0;
+retry:
+ pv = opv;
i = 0;
do {
if (!slash && ABSOLUTEP(pv[0]) && havhash) {
@@ -842,6 +858,11 @@ cont:
pv++;
i++;
} while (*pv);
+ if (adrof(STRautorehash) && !rehashed && havhash && opv != justabs) {
+ dohash(NULL, NULL);
+ rehashed = 1;
+ goto retry;
+ }
xfree(sav);
return 0;
}
@@ -1063,7 +1084,7 @@ find_cmd(Char *cmd, int prt)
const struct biltins *bptr;
Char **pv;
Char *sv;
- int hashval, i, ex, rval = 0;
+ int hashval, rehashed, i, ex, rval = 0;
if (prt && any(short2str(cmd), '/')) {
xprintf("%s", CGETS(13, 7, "where: / in command makes no sense\n"));
@@ -1115,6 +1136,8 @@ find_cmd(Char *cmd, int prt)
sv = Strspl(STRslash, cmd);
cleanup_push(sv, xfree);
+ rehashed = 0;
+retry:
for (pv = var->vec, i = 0; pv && *pv; pv++, i++) {
if (havhash && !eq(*pv, STRdot)) {
#ifdef FASTHASH
@@ -1143,6 +1166,11 @@ find_cmd(Char *cmd, int prt)
return rval;
}
}
+ if (adrof(STRautorehash) && !rehashed && havhash) {
+ dohash(NULL, NULL);
+ rehashed = 1;
+ goto retry;
+ }
cleanup_until(sv);
return rval;
}
diff --git a/sh.exp.c b/sh.exp.c
index e995e864faec..abb176429bf5 100644
--- a/sh.exp.c
+++ b/sh.exp.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/sh.exp.c,v 3.53 2007/10/01 19:09:28 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/sh.exp.c,v 3.58 2011/12/25 15:21:50 christos Exp $ */
/*
* sh.exp.c: Expression evaluations
*/
@@ -32,7 +32,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: sh.exp.c,v 3.53 2007/10/01 19:09:28 christos Exp $")
+RCSID("$tcsh: sh.exp.c,v 3.58 2011/12/25 15:21:50 christos Exp $")
#include "tw.h"
@@ -57,24 +57,24 @@ RCSID("$tcsh: sh.exp.c,v 3.53 2007/10/01 19:09:28 christos Exp $")
#define EQMATCH 7
#define NOTEQMATCH 8
-static int sh_access (const Char *, int);
-static int exp1 (Char ***, int);
-static int exp2x (Char ***, int);
-static int exp2a (Char ***, int);
-static int exp2b (Char ***, int);
-static int exp2c (Char ***, int);
-static Char *exp3 (Char ***, int);
-static Char *exp3a (Char ***, int);
-static Char *exp4 (Char ***, int);
-static Char *exp5 (Char ***, int);
-static Char *exp6 (Char ***, int);
-static void evalav (Char **);
-static int isa (Char *, int);
-static int egetn (Char *);
+static int sh_access (const Char *, int);
+static tcsh_number_t exp1 (Char ***, int);
+static tcsh_number_t exp2x (Char ***, int);
+static tcsh_number_t exp2a (Char ***, int);
+static tcsh_number_t exp2b (Char ***, int);
+static tcsh_number_t exp2c (Char ***, int);
+static Char *exp3 (Char ***, int);
+static Char *exp3a (Char ***, int);
+static Char *exp4 (Char ***, int);
+static Char *exp5 (Char ***, int);
+static Char *exp6 (Char ***, int);
+static void evalav (Char **);
+static int isa (Char *, int);
+static tcsh_number_t egetn (const Char *);
#ifdef EDEBUG
-static void etracc (const char *, const Char *, Char ***);
-static void etraci (const char *, int, Char ***);
+static void etracc (const char *, const Char *, Char ***);
+static void etraci (const char *, tcsh_number_t, Char ***);
#else /* !EDEBUG */
#define etracc(A, B, C) ((void)0)
#define etraci(A, B, C) ((void)0)
@@ -183,16 +183,16 @@ sh_access(const Char *fname, int mode)
#endif /* !POSIX */
}
-int
+tcsh_number_t
expr(Char ***vp)
{
return (exp0(vp, 0));
}
-int
+tcsh_number_t
exp0(Char ***vp, int ignore)
{
- int p1 = exp1(vp, ignore);
+ tcsh_number_t p1 = exp1(vp, ignore);
etraci("exp0 p1", p1, vp);
while (**vp && eq(**vp, STRor2)) {
@@ -212,14 +212,14 @@ exp0(Char ***vp, int ignore)
return (p1);
}
-static int
+static tcsh_number_t
exp1(Char ***vp, int ignore)
{
- int p1 = exp2x(vp, ignore);
+ tcsh_number_t p1 = exp2x(vp, ignore);
etraci("exp1 p1", p1, vp);
while (**vp && eq(**vp, STRand2)) {
- int p2;
+ tcsh_number_t p2;
(*vp)++;
p2 = compat_expr ?
@@ -236,14 +236,14 @@ exp1(Char ***vp, int ignore)
return (p1);
}
-static int
+static tcsh_number_t
exp2x(Char ***vp, int ignore)
{
- int p1 = exp2a(vp, ignore);
+ tcsh_number_t p1 = exp2a(vp, ignore);
etraci("exp2x p1", p1, vp);
while (**vp && eq(**vp, STRor)) {
- int p2;
+ tcsh_number_t p2;
(*vp)++;
p2 = compat_expr ?
@@ -259,14 +259,14 @@ exp2x(Char ***vp, int ignore)
return (p1);
}
-static int
+static tcsh_number_t
exp2a(Char ***vp, int ignore)
{
- int p1 = exp2b(vp, ignore);
+ tcsh_number_t p1 = exp2b(vp, ignore);
etraci("exp2a p1", p1, vp);
while (**vp && eq(**vp, STRcaret)) {
- int p2;
+ tcsh_number_t p2;
(*vp)++;
p2 = compat_expr ?
@@ -282,14 +282,14 @@ exp2a(Char ***vp, int ignore)
return (p1);
}
-static int
+static tcsh_number_t
exp2b(Char ***vp, int ignore)
{
- int p1 = exp2c(vp, ignore);
+ tcsh_number_t p1 = exp2c(vp, ignore);
etraci("exp2b p1", p1, vp);
while (**vp && eq(**vp, STRand)) {
- int p2;
+ tcsh_number_t p2;
(*vp)++;
p2 = compat_expr ?
@@ -305,12 +305,12 @@ exp2b(Char ***vp, int ignore)
return (p1);
}
-static int
+static tcsh_number_t
exp2c(Char ***vp, int ignore)
{
Char *p1 = exp3(vp, ignore);
Char *p2;
- int i;
+ tcsh_number_t i;
cleanup_push(p1, xfree);
etracc("exp2c p1", p1, vp);
@@ -352,7 +352,7 @@ static Char *
exp3(Char ***vp, int ignore)
{
Char *p1, *p2;
- int i;
+ tcsh_number_t i;
p1 = exp3a(vp, ignore);
etracc("exp3 p1", p1, vp);
@@ -399,7 +399,7 @@ exp3a(Char ***vp, int ignore)
{
Char *p1, *p2;
const Char *op;
- int i;
+ tcsh_number_t i;
p1 = exp4(vp, ignore);
etracc("exp3a p1", p1, vp);
@@ -427,7 +427,7 @@ static Char *
exp4(Char ***vp, int ignore)
{
Char *p1, *p2;
- int i = 0;
+ tcsh_number_t i = 0;
p1 = exp5(vp, ignore);
etracc("exp4 p1", p1, vp);
@@ -464,7 +464,7 @@ static Char *
exp5(Char ***vp, int ignore)
{
Char *p1, *p2;
- int i = 0;
+ tcsh_number_t i = 0;
p1 = exp6(vp, ignore);
etracc("exp5 p1", p1, vp);
@@ -519,7 +519,8 @@ exp5(Char ***vp, int ignore)
static Char *
exp6(Char ***vp, int ignore)
{
- int ccode, i = 0;
+ tcsh_number_t ccode;
+ tcsh_number_t i = 0;
Char *cp;
if (**vp == 0)
@@ -626,12 +627,12 @@ filetest(Char *cp, Char ***vp, int ignore)
char *filnam;
#endif /* S_IFLNK */
- int i = 0;
+ tcsh_number_t i = 0;
unsigned pmask = 0xffff;
int altout = 0;
Char *ft = cp, *dp, *ep, *strdev, *strino, *strF, *str, valtest = '\0',
*errval = STR0;
- char *string, string0[8];
+ char *string, string0[22 + MB_LEN_MAX + 1]; // space for 64 bit octal
time_t footime;
struct passwd *pw;
struct group *gr;
@@ -851,11 +852,11 @@ filetest(Char *cp, Char ***vp, int ignore)
*/
case 'D':
- i = (int) st->st_dev;
+ i = (tcsh_number_t) st->st_dev;
break;
case 'I':
- i = (int) st->st_ino;
+ i = (tcsh_number_t) st->st_ino;
break;
case 'F':
@@ -889,7 +890,7 @@ filetest(Char *cp, Char ***vp, int ignore)
case 'N':
- i = (int) st->st_nlink;
+ i = (tcsh_number_t) st->st_nlink;
break;
case 'P':
@@ -907,7 +908,7 @@ filetest(Char *cp, Char ***vp, int ignore)
cleanup_until(ep);
return(Strsave(str2short(pw->pw_name)));
}
- i = (int) st->st_uid;
+ i = (tcsh_number_t) st->st_uid;
break;
case 'G':
@@ -915,11 +916,11 @@ filetest(Char *cp, Char ***vp, int ignore)
cleanup_until(ep);
return(Strsave(str2short(gr->gr_name)));
}
- i = (int) st->st_gid;
+ i = (tcsh_number_t) st->st_gid;
break;
case 'Z':
- i = (int) st->st_size;
+ i = (tcsh_number_t) st->st_size;
break;
case 'A': case 'M': case 'C':
@@ -932,7 +933,7 @@ filetest(Char *cp, Char ***vp, int ignore)
cleanup_until(ep);
return(Strsave(strF));
}
- i = (int) footime;
+ i = (tcsh_number_t) footime;
break;
}
@@ -1024,8 +1025,8 @@ isa(Char *cp, int what)
return (0);
}
-static int
-egetn(Char *cp)
+static tcsh_number_t
+egetn(const Char *cp)
{
if (*cp && *cp != '-' && !Isdigit(*cp))
stderror(ERR_NAME | ERR_EXPRESSION);
@@ -1036,9 +1037,13 @@ egetn(Char *cp)
#ifdef EDEBUG
static void
-etraci(const char *str, int i, Char ***vp)
+etraci(const char *str, tcsh_number_t i, Char ***vp)
{
- xprintf("%s=%d\t", str, i);
+#ifdef HAVE_LONG_LONG
+ xprintf("%s=%lld\t", str, i);
+#else
+ xprintf("%s=%ld\t", str, i);
+#endif
blkpr(*vp);
xputchar('\n');
}
diff --git a/sh.file.c b/sh.file.c
index 37e9475287be..dff07ab0bdc1 100644
--- a/sh.file.c
+++ b/sh.file.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/sh.file.c,v 3.36 2007/07/05 14:13:06 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/sh.file.c,v 3.37 2010/02/09 20:21:49 christos Exp $ */
/*
* sh.file.c: File completion for csh. This file is not used in tcsh.
*/
@@ -33,7 +33,7 @@
#include "sh.h"
#include "ed.h"
-RCSID("$tcsh: sh.file.c,v 3.36 2007/07/05 14:13:06 christos Exp $")
+RCSID("$tcsh: sh.file.c,v 3.37 2010/02/09 20:21:49 christos Exp $")
#if defined(FILEC) && defined(TIOCSTI)
@@ -594,7 +594,7 @@ again: /* search for matches */
static int
compare(const void *p, const void *q)
{
-#ifdef WIDE_STRINGS
+#if defined (WIDE_STRINGS) && !defined (UTF16_STRING)
errno = 0;
return (wcscoll(*(Char *const *) p, *(Char *const *) q));
diff --git a/sh.func.c b/sh.func.c
index 2e37af08143f..d3b890f6b939 100644
--- a/sh.func.c
+++ b/sh.func.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/sh.func.c,v 3.153 2009/06/25 21:15:37 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/sh.func.c,v 3.162 2011/02/26 00:07:06 christos Exp $ */
/*
* sh.func.c: csh builtin functions
*/
@@ -32,7 +32,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: sh.func.c,v 3.153 2009/06/25 21:15:37 christos Exp $")
+RCSID("$tcsh: sh.func.c,v 3.162 2011/02/26 00:07:06 christos Exp $")
#include "ed.h"
#include "tw.h"
@@ -41,8 +41,7 @@ RCSID("$tcsh: sh.func.c,v 3.153 2009/06/25 21:15:37 christos Exp $")
#include "nt.const.h"
#endif /* WINNT_NATIVE */
-#if defined (NLS_CATALOGS) && defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO)
-#include <langinfo.h>
+#if defined (NLS_CATALOGS) && defined(HAVE_ICONV)
static iconv_t catgets_iconv; /* Or (iconv_t)-1 */
#endif
@@ -520,12 +519,13 @@ doforeach(Char **v, struct command *c)
USE(c);
v++;
- sp = cp = strip(*v);
- if (!letter(*sp))
+ cp = sp = strip(*v);
+ if (!letter(*cp))
stderror(ERR_NAME | ERR_VARBEGIN);
- while (*cp && alnum(*cp))
+ do {
cp++;
- if (*cp)
+ } while (alnum(*cp));
+ if (*cp != '\0')
stderror(ERR_NAME | ERR_VARALNUM);
cp = *v++;
if (v[0][0] != '(' || v[blklen(v) - 1][0] != ')')
@@ -587,6 +587,7 @@ dowhile(Char **v, struct command *c)
nwp->w_start = lineloc;
nwp->w_end.type = TCSH_F_SEEK;
nwp->w_end.f_seek = 0;
+ nwp->w_end.a_seek = 0;
nwp->w_next = whyles;
whyles = nwp;
zlast = TC_WHILE;
@@ -763,6 +764,7 @@ search(int type, int level, Char *goal)
struct Ain a;
a.type = TCSH_F_SEEK;
a.f_seek = 0;
+ a.a_seek = 0;
bseek(&a);
}
cleanup_push(&word, Strbuf_cleanup);
@@ -963,9 +965,6 @@ histgetword(struct wordent *histent)
}
}
- unreadc(c);
- return histent;
-
past:
switch (Stype) {
@@ -1376,13 +1375,16 @@ dosetenv(Char **v, struct command *c)
}
vp = *v++;
-
lp = vp;
-
- for (; *lp != '\0' ; lp++) {
- if (*lp == '=')
- stderror(ERR_NAME | ERR_SYNTAX);
- }
+
+ if (!letter(*lp))
+ stderror(ERR_NAME | ERR_VARBEGIN);
+ do {
+ lp++;
+ } while (alnum(*lp));
+ if (*lp != '\0')
+ stderror(ERR_NAME | ERR_VARALNUM);
+
if ((lp = *v++) == 0)
lp = STRNULL;
@@ -1426,6 +1428,9 @@ dosetenv(Char **v, struct command *c)
# ifdef LC_CTYPE
(void) setlocale(LC_CTYPE, ""); /* for iscntrl */
# endif /* LC_CTYPE */
+# if defined(AUTOSET_KANJI)
+ autoset_kanji();
+# endif /* AUTOSET_KANJI */
# ifdef NLS_CATALOGS
# ifdef LC_MESSAGES
(void) setlocale(LC_MESSAGES, "");
@@ -1859,8 +1864,17 @@ doumask(Char **v, struct command *c)
# endif
# endif /* SYSVREL > 3 && BSDLIMIT */
-# if (defined(__linux__) || defined(__GNU__) || defined(__GLIBC__)) && defined(RLIMIT_AS) && !defined(RLIMIT_VMEM)
-# define RLIMIT_VMEM RLIMIT_AS
+# if (defined(__linux__) || defined(__GNU__) || defined(__GLIBC__))
+# if defined(RLIMIT_AS) && !defined(RLIMIT_VMEM)
+# define RLIMIT_VMEM RLIMIT_AS
+# endif
+/*
+ * Oh well, <asm-generic/resource.h> has it, but <bits/resource.h> does not
+ * Linux headers: When the left hand does not know what the right hand does.
+ */
+# if defined(RLIMIT_RTPRIO) && !defined(RLIMIT_RTTIME)
+# define RLIMIT_RTTIME (RLIMIT_RTPRIO + 1)
+# endif
# endif
struct limits limits[] =
@@ -1937,12 +1951,38 @@ struct limits limits[] =
{ RLIMIT_SWAP, "swapsize", 1024, "kbytes" },
# endif /* RLIMIT_SWAP */
+# ifdef RLIMIT_LOCKS
+ { RLIMIT_LOCKS, "maxlocks", 1, "" },
+# endif /* RLIMIT_LOCKS */
+
+# ifdef RLIMIT_SIGPENDING
+ { RLIMIT_SIGPENDING,"maxsignal", 1, "" },
+# endif /* RLIMIT_SIGPENDING */
+
+# ifdef RLIMIT_MSGQUEUE
+ { RLIMIT_MSGQUEUE, "maxmessage", 1, "" },
+# endif /* RLIMIT_MSGQUEUE */
+
+# ifdef RLIMIT_NICE
+ { RLIMIT_NICE, "maxnice", 1, "" },
+# endif /* RLIMIT_NICE */
+
+# ifdef RLIMIT_RTPRIO
+ { RLIMIT_RTPRIO, "maxrtprio", 1, "" },
+# endif /* RLIMIT_RTPRIO */
+
+# ifdef RLIMIT_RTTIME
+ { RLIMIT_RTTIME, "maxrttime", 1, "usec" },
+# endif /* RLIMIT_RTTIME */
+
{ -1, NULL, 0, NULL }
};
static struct limits *findlim (Char *);
static RLIM_TYPE getval (struct limits *, Char **);
+static int strtail (Char *, const char *);
static void limtail (Char *, const char *);
+static void limtail2 (Char *, const char *, const char *);
static void plim (struct limits *, int);
static int setlim (struct limits *, int, RLIM_TYPE);
@@ -2050,29 +2090,43 @@ getval(struct limits *lp, Char **v)
limtail(cp, "hours");
f *= 3600.0;
break;
+# endif /* RLIMIT_CPU */
case 'm':
+# ifdef RLIMIT_CPU
if (lp->limconst == RLIMIT_CPU) {
limtail(cp, "minutes");
f *= 60.0;
break;
}
- *cp = 'm';
- limtail(cp, "megabytes");
+# endif /* RLIMIT_CPU */
+ limtail2(cp, "megabytes", "mbytes");
f *= 1024.0 * 1024.0;
break;
+# ifdef RLIMIT_CPU
case 's':
if (lp->limconst != RLIMIT_CPU)
goto badscal;
limtail(cp, "seconds");
break;
# endif /* RLIMIT_CPU */
+ case 'G':
+ *cp = 'g';
+ /*FALLTHROUGH*/
+ case 'g':
+# ifdef RLIMIT_CPU
+ if (lp->limconst == RLIMIT_CPU)
+ goto badscal;
+# endif /* RLIMIT_CPU */
+ limtail2(cp, "gigabytes", "gbytes");
+ f *= 1024.0 * 1024.0 * 1024.0;
+ break;
case 'M':
# ifdef RLIMIT_CPU
if (lp->limconst == RLIMIT_CPU)
goto badscal;
# endif /* RLIMIT_CPU */
*cp = 'm';
- limtail(cp, "megabytes");
+ limtail2(cp, "megabytes", "mbytes");
f *= 1024.0 * 1024.0;
break;
case 'k':
@@ -2080,7 +2134,7 @@ getval(struct limits *lp, Char **v)
if (lp->limconst == RLIMIT_CPU)
goto badscal;
# endif /* RLIMIT_CPU */
- limtail(cp, "kbytes");
+ limtail2(cp, "kilobytes", "kbytes");
f *= 1024.0;
break;
case 'b':
@@ -2104,25 +2158,34 @@ badscal:
return f == 0.0 ? (RLIM_TYPE) 0 : restrict_limit((f + 0.5));
# else
f += 0.5;
- if (f > (float) RLIM_INFINITY)
+ if (f > (float) ((RLIM_TYPE) RLIM_INFINITY))
return ((RLIM_TYPE) RLIM_INFINITY);
else
return ((RLIM_TYPE) f);
# endif /* convex */
}
-static void
-limtail(Char *cp, const char *str)
+static int
+strtail(Char *cp, const char *str)
{
- const char *sp;
-
- sp = str;
while (*cp && *cp == (Char)*str)
cp++, str++;
- if (*cp)
- stderror(ERR_BADSCALE, sp);
+ return (*cp != '\0');
}
+static void
+limtail(Char *cp, const char *str)
+{
+ if (strtail(cp, str))
+ stderror(ERR_BADSCALE, str);
+}
+
+static void
+limtail2(Char *cp, const char *str1, const char *str2)
+{
+ if (strtail(cp, str1) && strtail(cp, str2))
+ stderror(ERR_BADSCALE, str1);
+}
/*ARGSUSED*/
static void
@@ -2564,13 +2627,24 @@ nlsinit(void)
if (adrof(STRcatalog) != NULL)
catalog = xasprintf("tcsh.%s", short2str(varval(STRcatalog)));
+#ifdef NL_CAT_LOCALE /* POSIX-compliant. */
+ /*
+ * Check if LC_MESSAGES is set in the environment and use it, if so.
+ * If not, fall back to the setting of LANG.
+ */
+ catd = catopen(catalog, tgetenv(STRLC_MESSAGES) ? NL_CAT_LOCALE : 0);
+#else /* pre-POSIX */
+# ifndef MCLoadBySet
+# define MCLoadBySet 0
+# endif
catd = catopen(catalog, MCLoadBySet);
+#endif
if (catalog != default_catalog)
xfree(catalog);
#if defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO)
/* xcatgets (), not CGETS, the charset name should be in ASCII anyway. */
catgets_iconv = iconv_open (nl_langinfo (CODESET),
- xcatgets(catd, 255, 1, "ASCII"));
+ xcatgets(catd, 255, 1, "UTF-8"));
#endif /* HAVE_ICONV && HAVE_NL_LANGINFO */
#endif /* NLS_CATALOGS */
#ifdef WINNT_NATIVE
diff --git a/sh.glob.c b/sh.glob.c
index 6ee5ecc22a4e..16be77e6b510 100644
--- a/sh.glob.c
+++ b/sh.glob.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/sh.glob.c,v 3.76 2008/06/19 15:20:56 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/sh.glob.c,v 3.82 2011/02/27 00:15:17 christos Exp $ */
/*
* sh.glob.c: Regular expression expansion
*/
@@ -32,7 +32,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: sh.glob.c,v 3.76 2008/06/19 15:20:56 christos Exp $")
+RCSID("$tcsh: sh.glob.c,v 3.82 2011/02/27 00:15:17 christos Exp $")
#include "tc.h"
#include "tw.h"
@@ -431,6 +431,12 @@ libglob(Char **vl)
char *ptr;
int nonomatch = adrof(STRnonomatch) != 0, magic = 0, match = 0;
+ if (adrof(STRglobdot))
+ gflgs |= GLOB_DOT;
+
+ if (adrof(STRglobstar))
+ gflgs |= GLOB_STAR;
+
if (!vl || !vl[0])
return(vl);
@@ -510,11 +516,11 @@ globone(Char *str, int action)
stderror(ERR_NAME | ERR_NOMATCH);
}
result:
- if (vl[0] == NULL) {
+ if (vl && vl[0] == NULL) {
xfree(vl);
return (Strsave(STRNULL));
}
- if (vl[1])
+ if (vl && vl[1])
return (handleone(str, vl, action));
else {
str = strip(*vl);
@@ -687,7 +693,7 @@ dobackp(Char *cp, int literal)
static void
backeval(struct blk_buf *bb, struct Strbuf *word, Char *cp, int literal)
{
- int icnt;
+ ssize_t icnt;
Char c, *ip;
struct command faket;
int hadnl;
@@ -775,7 +781,13 @@ backeval(struct blk_buf *bb, struct Strbuf *word, Char *cp, int literal)
stderror(ERR_OLD);
alias(&paraml);
t = syntax(paraml.next, &paraml, 0);
+ if (t == NULL)
+ return;
cleanup_push(t, syntax_cleanup);
+ /* The F_BACKQ flag must set so the job output is correct if
+ * printexitvalue is set. If it's not set, the job output
+ * will have "Exit N" appended where N is the exit status. */
+ t->t_dflg = F_BACKQ|F_NOFORK;
if (seterr)
stderror(ERR_OLD);
#ifdef SIGTSTP
@@ -796,7 +808,7 @@ backeval(struct blk_buf *bb, struct Strbuf *word, Char *cp, int literal)
c = 0;
ip = NULL;
do {
- int cnt = 0;
+ ssize_t cnt = 0;
char *tmp;
tmp = tibuf;
diff --git a/sh.h b/sh.h
index f955734ee242..691add351bb5 100644
--- a/sh.h
+++ b/sh.h
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/sh.h,v 3.150 2009/06/25 21:27:37 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/sh.h,v 3.165 2011/04/14 18:25:25 christos Exp $ */
/*
* sh.h: Catch it all globals and includes file!
*/
@@ -75,6 +75,10 @@ typedef unsigned long intptr_t;
# define INIT_ZERO_STRUCT
# define force_read xread
#endif /*!WINNT_NATIVE */
+
+#if defined(KANJI) && defined(WIDE_STRINGS) && defined(HAVE_NL_LANGINFO) && defined(CODESET)
+#define AUTOSET_KANJI
+#endif
/*
* Sanity
*/
@@ -86,15 +90,21 @@ typedef unsigned long intptr_t;
# define BSDJOBS
#endif
+#define TMP_TEMPLATE ".XXXXXX"
+
#ifdef SHORT_STRINGS
# ifdef WIDE_STRINGS
#include <wchar.h>
+# ifdef UTF16_STRINGS
+typedef wint_t Char;
+# else
typedef wchar_t Char;
+#endif
typedef unsigned long uChar;
typedef wint_t eChar; /* Can contain any Char value or CHAR_ERR */
#define CHAR_ERR WEOF /* Pretty please, use bit 31... */
#define normal_mbtowc(PWC, S, N) rt_mbtowc(PWC, S, N)
-#define reset_mbtowc() IGNORE(mbtowc(NULL, NULL, 0))
+#define reset_mbtowc() TCSH_IGNORE(mbtowc(NULL, NULL, 0))
# else
typedef short Char;
typedef unsigned short uChar;
@@ -114,10 +124,13 @@ typedef int eChar;
# define SAVE(a) (strsave(a))
#endif
+#if !defined(__inline) && !defined(__GNUC__) && !defined(_MSC_VER)
+#define __inline
+#endif
/* Elide unused argument warnings */
#define USE(a) (void) (a)
-#define IGNORE(a) ignore((intptr_t)a)
-static inline void ignore(intptr_t a)
+#define TCSH_IGNORE(a) tcsh_ignore((intptr_t)a)
+static __inline void tcsh_ignore(intptr_t a)
{
USE(a);
}
@@ -219,6 +232,11 @@ static inline void ignore(intptr_t a)
# define lstat lstat64
#endif /* __HP_CXD_SPP && !__hpux */
+#ifdef HAVE_LONG_LONG
+typedef long long tcsh_number_t;
+#else
+typedef long tcsh_number_t;
+#endif
/*
* This macro compares the st_dev field of struct stat. On aix on ibmESA
* st_dev is a structure, so comparison does not work.
@@ -238,7 +256,6 @@ static inline void ignore(intptr_t a)
# include <locale.h>
#endif /* NLS */
-
#if !defined(_MINIX) && !defined(_VMS_POSIX) && !defined(WINNT_NATIVE) && !defined(__MVS__)
# include <sys/param.h>
#endif /* !_MINIX && !_VMS_POSIX && !WINNT_NATIVE && !__MVS__ */
@@ -272,7 +289,7 @@ static inline void ignore(intptr_t a)
# else
# include <termio.h>
# endif /* _UWIN */
-# if SYSVREL > 3
+# if SYSVREL > 3 || defined(__linux__)
# undef TIOCGLTC /* we don't need those, since POSIX has them */
# undef TIOCSLTC
# undef CSWTCH
@@ -293,7 +310,7 @@ static inline void ignore(intptr_t a)
* redefines malloc(), so we define the following
* to avoid it.
*/
-# if defined(SYSMALLOC) || defined(linux) || defined(__GNU__) || defined(__GLIBC__) || defined(sgi) || defined(_OSD_POSIX)
+# if defined(SYSMALLOC) || defined(__linux__) || defined(__GNU__) || defined(__GLIBC__) || defined(sgi) || defined(_OSD_POSIX)
# define NO_FIX_MALLOC
# include <stdlib.h>
# else /* glibc */
@@ -311,7 +328,7 @@ static inline void ignore(intptr_t a)
#endif /* POSIX && !WINNT_NATIVE */
#include <limits.h>
-#if SYSVREL > 0 || defined(_IBMR2) || defined(_MINIX) || defined(linux) || defined(__GNU__) || defined(__GLIBC__)
+#if SYSVREL > 0 || defined(_IBMR2) || defined(_MINIX) || defined(__linux__) || defined(__GNU__) || defined(__GLIBC__)
# if !defined(pyr) && !defined(stellar)
# include <time.h>
# ifdef _MINIX
@@ -326,6 +343,12 @@ static inline void ignore(intptr_t a)
#if !((defined(SUNOS4) || defined(_MINIX) /* || defined(DECOSF1) */) && defined(TERMIO))
# if !defined(_VMS_POSIX) && !defined(WINNT_NATIVE)
# include <sys/ioctl.h>
+# if SYSVREL > 3 || defined(__linux__)
+# undef TIOCGLTC /* we don't need those, since POSIX has them */
+# undef TIOCSLTC
+# undef CSWTCH
+# define CSWTCH _POSIX_VDISABLE /* So job control works */
+# endif /* SYSVREL > 3 */
# endif
#endif
@@ -345,9 +368,6 @@ static inline void ignore(intptr_t a)
#if !defined(O_RDONLY) || !defined(O_NDELAY)
# include <fcntl.h>
#endif
-#ifndef O_LARGEFILE
-# define O_LARGEFILE 0
-#endif
#include <errno.h>
@@ -553,10 +573,12 @@ EXTERN int neednote IZERO; /* Need to pnotify() */
EXTERN int noexec IZERO; /* Don't execute, just syntax check */
EXTERN int pjobs IZERO; /* want to print jobs if interrupted */
EXTERN int setintr IZERO; /* Set interrupts on/off -> Wait intr... */
+EXTERN int handle_intr IZERO;/* Are we currently handling an interrupt? */
EXTERN int havhash IZERO; /* path hashing is available */
EXTERN int editing IZERO; /* doing filename expansion and line editing */
EXTERN int noediting IZERO; /* initial $term defaulted to noedit */
EXTERN int bslash_quote IZERO;/* PWP: tcsh-style quoting? (in sh.c) */
+EXTERN int anyerror IZERO; /* propagate errors from pipelines/backq */
EXTERN int compat_expr IZERO;/* csh-style expressions? */
EXTERN int isoutatty IZERO; /* is SHOUT a tty */
EXTERN int isdiagatty IZERO;/* is SHDIAG a tty */
@@ -646,7 +668,7 @@ EXTERN int SHDIAG IZERO; /* Diagnostic output... shell errs go here */
EXTERN int OLDSTD IZERO; /* Old standard input (def for cmds) */
-#if SYSVREL == 4 && defined(_UTS)
+#if (SYSVREL == 4 && defined(_UTS)) || defined(__linux__)
/*
* From: fadden@uts.amdahl.com (Andy McFadden)
* we need sigsetjmp for UTS4, but not UTS2.1
@@ -664,7 +686,7 @@ EXTERN int OLDSTD IZERO; /* Old standard input (def for cmds) */
#ifdef SIGSETJMP
typedef struct { sigjmp_buf j; } jmp_buf_t;
-# define setexit() sigsetjmp(reslab.j)
+# define setexit() sigsetjmp(reslab.j, 1)
# define _reset() siglongjmp(reslab.j, 1)
#else
typedef struct { jmp_buf j; } jmp_buf_t;
@@ -1035,11 +1057,12 @@ extern struct limits {
*/
EXTERN struct Hist {
struct wordent Hlex;
- int Hnum;
+ int Hnum; /* eventno when inserted into history list */
int Href;
time_t Htime;
Char *histline;
- struct Hist *Hnext;
+ struct Hist *Hnext, *Hprev; /* doubly linked list */
+ unsigned Hhash; /* hash value of command line */
} Histlist IZERO_STRUCT;
EXTERN struct wordent paraml; /* Current lexical word list */
@@ -1091,7 +1114,7 @@ EXTERN Char PRCHROOT; /* Prompt symbol for root */
#define short2blk(a) saveblk(a)
#define short2str(a) caching_strip(a)
#else
-#ifdef WIDE_STRINGS
+#if defined(WIDE_STRINGS) && !defined(UTF16_STRINGS)
#define Strchr(a, b) wcschr(a, b)
#define Strrchr(a, b) wcsrchr(a, b)
#define Strcat(a, b) wcscat(a, b)
@@ -1187,33 +1210,18 @@ extern char **environ;
#ifndef WINNT_NATIVE
# ifdef NLS_CATALOGS
-# if defined(linux) || defined(__GNU__) || defined(__GLIBC__)
-# include <locale.h>
-# ifdef notdef
-# include <localeinfo.h> /* Has this changed ? */
-# endif
+# ifdef HAVE_FEATURES_H
# include <features.h>
# endif
-# ifdef SUNOS4
- /* Who stole my nl_types.h? :-(
- * All this stuff is in the man pages, but nowhere else?
- * This does not link right now...
- */
- typedef void *nl_catd;
- extern const char * catgets (nl_catd, int, int, const char *);
- nl_catd catopen (const char *, int);
- int catclose (nl_catd);
-# else
-# ifdef __uxps__
-# define gettxt gettxt_ds
-# endif
-# include <nl_types.h>
-# ifdef __uxps__
-# undef gettxt
-# endif
+# ifdef HAVE_NL_LANGINFO
+# include <langinfo.h>
+# endif
+# ifdef __uxps__
+# define gettxt gettxt_ds
# endif
-# ifndef MCLoadBySet
-# define MCLoadBySet 0
+# include <nl_types.h>
+# ifdef __uxps__
+# undef gettxt
# endif
EXTERN nl_catd catd;
# if defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO)
diff --git a/sh.hist.c b/sh.hist.c
index 72b376a19bef..6a127378c766 100644
--- a/sh.hist.c
+++ b/sh.hist.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/sh.hist.c,v 3.40 2007/03/01 17:14:51 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/sh.hist.c,v 3.53 2011/01/24 18:10:26 christos Exp $ */
/*
* sh.hist.c: Shell history expansions and substitutions
*/
@@ -32,8 +32,9 @@
*/
#include "sh.h"
-RCSID("$tcsh: sh.hist.c,v 3.40 2007/03/01 17:14:51 christos Exp $")
+RCSID("$tcsh: sh.hist.c,v 3.53 2011/01/24 18:10:26 christos Exp $")
+#include <assert.h>
#include "tc.h"
extern int histvalid;
@@ -42,8 +43,6 @@ Char HistLit = 0;
static int heq (const struct wordent *, const struct wordent *);
static void hfree (struct Hist *);
-static void dohist1 (struct Hist *, int *, int);
-static void phist (struct Hist *, int);
#define HIST_ONLY 0x01
#define HIST_SAVE 0x02
@@ -57,10 +56,95 @@ static void phist (struct Hist *, int);
* C shell
*/
-void
-savehist(struct wordent *sp, int mflg)
+/* Static functions don't show up in gprof summaries. So eliminate "static"
+ * modifier from some frequently called functions. */
+#ifdef PROF
+#define PG_STATIC
+#else
+#define PG_STATIC static
+#endif
+
+/* #define DEBUG_HIST 1 */
+
+static const int fastMergeErase = 1;
+static unsigned histCount = 0; /* number elements on history list */
+static struct Hist *histTail = NULL; /* last element on history list */
+static struct Hist *histMerg = NULL; /* last element merged by Htime */
+
+static void insertHistHashTable(struct Hist *, unsigned);
+
+
+/* Insert new element (hp) in history list after specified predecessor (pp). */
+static void
+hinsert(struct Hist *hp, struct Hist *pp)
+{
+ struct Hist *fp = pp->Hnext; /* following element, if any */
+ hp->Hnext = fp, hp->Hprev = pp;
+ pp->Hnext = hp;
+ if (fp)
+ fp->Hprev = hp;
+ else
+ histTail = hp; /* meaning hp->Hnext == NULL */
+ histCount++;
+}
+
+/* Remove the entry from the history list. */
+static void
+hremove(struct Hist *hp)
+{
+ struct Hist *pp = hp->Hprev;
+ assert(pp); /* elements always have a previous */
+ pp->Hnext = hp->Hnext;
+ if (hp->Hnext)
+ hp->Hnext->Hprev = pp;
+ else
+ histTail = pp; /* we must have been last */
+ if (hp == histMerg) /* deleting this hint from list */
+ histMerg = NULL;
+ assert(histCount > 0);
+ histCount--;
+}
+
+/* Prune length of history list to specified size by history variable. */
+PG_STATIC void
+discardExcess(int histlen)
{
struct Hist *hp, *np;
+ if (histTail == NULL) {
+ assert(histCount == 0);
+ return; /* no entries on history list */
+ }
+ /* Prune dummy entries from the front, then old entries from the back. If
+ * the list is still too long scan the whole list as before. But only do a
+ * full scan if the list is more than 6% (1/16th) too long. */
+ while (histCount > (unsigned)histlen && (np = Histlist.Hnext)) {
+ if (eventno - np->Href >= histlen || histlen == 0)
+ hremove(np), hfree(np);
+ else
+ break;
+ }
+ while (histCount > (unsigned)histlen && (np = histTail) != &Histlist) {
+ if (eventno - np->Href >= histlen || histlen == 0)
+ hremove(np), hfree(np);
+ else
+ break;
+ }
+ if (histCount - (histlen >> 4) <= (unsigned)histlen)
+ return; /* don't bother doing the full scan */
+ for (hp = &Histlist; histCount > (unsigned)histlen &&
+ (np = hp->Hnext) != NULL;)
+ if (eventno - np->Href >= histlen || histlen == 0)
+ hremove(np), hfree(np);
+ else
+ hp = np;
+}
+
+/* Add the command "sp" to the history list. */
+void
+savehist(
+ struct wordent *sp,
+ int mflg) /* true if -m (merge) specified */
+{
int histlen = 0;
Char *cp;
@@ -76,14 +160,445 @@ savehist(struct wordent *sp, int mflg)
histlen = histlen * 10 + *cp++ - '0';
}
if (sp)
- (void) enthist(++eventno, sp, 1, mflg);
- for (hp = &Histlist; (np = hp->Hnext) != NULL;)
- if (eventno - np->Href >= histlen || histlen == 0)
- hp->Hnext = np->Hnext, hfree(np);
- else
- hp = np;
+ (void) enthist(++eventno, sp, 1, mflg, histlen);
+ discardExcess(histlen);
+}
+
+#define USE_JENKINS_HASH 1
+/* #define USE_ONE_AT_A_TIME 1 */
+#undef PRIME_LENGTH /* no need for good HTL */
+
+#ifdef USE_JENKINS_HASH
+#define hashFcnName "lookup3"
+/* From:
+ lookup3.c, by Bob Jenkins, May 2006, Public Domain.
+ "... You can use this free for any purpose. It's in
+ the public domain. It has no warranty."
+ http://burtleburtle.net/bob/hash/index.html
+ */
+
+#define rot(x,k) (((x)<<(k)) | ((x)>>(32-(k))))
+#define mix(a,b,c) \
+{ \
+ a -= c; a ^= rot(c, 4); c += b; \
+ b -= a; b ^= rot(a, 6); a += c; \
+ c -= b; c ^= rot(b, 8); b += a; \
+ a -= c; a ^= rot(c,16); c += b; \
+ b -= a; b ^= rot(a,19); a += c; \
+ c -= b; c ^= rot(b, 4); b += a; \
+}
+#define final(a,b,c) \
+{ \
+ c ^= b; c -= rot(b,14); \
+ a ^= c; a -= rot(c,11); \
+ b ^= a; b -= rot(a,25); \
+ c ^= b; c -= rot(b,16); \
+ a ^= c; a -= rot(c, 4); \
+ b ^= a; b -= rot(a,14); \
+ c ^= b; c -= rot(b,24); \
}
+struct hashValue /* State used to hash a wordend word list. */
+{
+ uint32_t a, b, c;
+};
+
+/* Set up the internal state */
+static void
+initializeHash(struct hashValue *h)
+{
+ h->a = h->b = h->c = 0xdeadbeef;
+}
+
+/* This does a partial hash of the Chars in a single word. For efficiency we
+ * include 3 versions of the code to pack Chars into 32-bit words for the
+ * mixing function. */
+static void
+addWordToHash(struct hashValue *h, const Char *word)
+{
+ uint32_t a = h->a, b = h->b, c = h->c;
+#ifdef SHORT_STRINGS
+#ifdef WIDE_STRINGS
+ assert(sizeof(Char) >= 4);
+ while (1) {
+ unsigned k;
+ if ((k = (uChar)*word++) == 0) break; a += k;
+ if ((k = (uChar)*word++) == 0) break; b += k;
+ if ((k = (uChar)*word++) == 0) break; c += k;
+ mix(a, b, c);
+ }
+#else
+ assert(sizeof(Char) == 2);
+ while (1) {
+ unsigned k;
+ if ((k = (uChar)*word++) == 0) break; a += k;
+ if ((k = (uChar)*word++) == 0) break; a += k << 16;
+ if ((k = (uChar)*word++) == 0) break; b += k;
+ if ((k = (uChar)*word++) == 0) break; b += k << 16;
+ if ((k = (uChar)*word++) == 0) break; c += k;
+ if ((k = (uChar)*word++) == 0) break; c += k << 16;
+ mix(a, b, c);
+ }
+#endif
+#else
+ assert(sizeof(Char) == 1);
+ while (1) {
+ unsigned k;
+ if ((k = *word++) == 0) break; a += k;
+ if ((k = *word++) == 0) break; a += k << 8;
+ if ((k = *word++) == 0) break; a += k << 16;
+ if ((k = *word++) == 0) break; a += k << 24;
+ if ((k = *word++) == 0) break; b += k;
+ if ((k = *word++) == 0) break; b += k << 8;
+ if ((k = *word++) == 0) break; b += k << 16;
+ if ((k = *word++) == 0) break; b += k << 24;
+ if ((k = *word++) == 0) break; c += k;
+ if ((k = *word++) == 0) break; c += k << 8;
+ if ((k = *word++) == 0) break; c += k << 16;
+ if ((k = *word++) == 0) break; c += k << 24;
+ mix(a, b, c);
+ }
+#endif
+ h->a = a, h->b = b, h->c = c;
+}
+
+static void
+addCharToHash(struct hashValue *h, Char ch)
+{
+ /* The compiler (gcc -O2) seems to do a good job optimizing this without
+ * explicitly extracting into local variables. */
+ h->a += (uChar)ch;
+ mix(h->a, h->b, h->c);
+}
+
+static uint32_t
+finalizeHash(struct hashValue *h)
+{
+ uint32_t a = h->a, b = h->b, c = h->c;
+ final(a, b, c);
+ return c;
+}
+
+#elif USE_ONE_AT_A_TIME
+#define hashFcnName "one-at-a-time"
+/* This one is also from Bob Jenkins, but is slower but simpler than lookup3.
+ "... The code given here are all public domain."
+ http://burtleburtle.net/bob/hash/doobs.html */
+
+#if 0
+ub4
+one_at_a_time(char *key, ub4 len)
+{
+ ub4 hash, i;
+ for (hash=0, i=0; i<len; ++i)
+ {
+ hash += key[i];
+ hash += (hash << 10);
+ hash ^= (hash >> 6);
+ }
+ hash += (hash << 3);
+ hash ^= (hash >> 11);
+ hash += (hash << 15);
+ return (hash & mask);
+}
+#endif
+
+struct hashValue { uint32_t h; };
+static void
+initializeHash(struct hashValue *h)
+{
+ h->h = 0;
+}
+
+static void
+addWordToHash(struct hashValue *h, const Char *word)
+{
+ unsigned k;
+ uint32_t hash = h->h;
+ while (k = (uChar)*word++)
+ hash += k, hash += hash << 10, hash ^= hash >> 6;
+ h->h = hash;
+}
+
+static void
+addCharToHash(struct hashValue *h, Char c)
+{
+ Char b[2] = { c, 0 };
+ addWordToHash(h, b);
+}
+
+static uint32_t
+finalizeHash(struct hashValue *h)
+{
+ unsigned hash = h->h;
+ hash += (hash << 3);
+ hash ^= (hash >> 11);
+ hash += (hash << 15);
+ return hash;
+}
+
+#else
+#define hashFcnName "add-mul"
+/* Simple multipy and add hash. */
+#define PRIME_LENGTH 1 /* need "good" HTL */
+struct hashValue { uint32_t h; };
+static void
+initializeHash(struct hashValue *h)
+{
+ h->h = 0xe13e2345;
+}
+
+static void
+addWordToHash(struct hashValue *h, const Char *word)
+{
+ unsigned k;
+ uint32_t hash = h->h;
+ while (k = (uChar)*word++)
+ hash = hash * 0x9e4167b9 + k;
+ h->h = hash;
+}
+
+static void
+addCharToHash(struct hashValue *h, Char c)
+{
+ h->h = h->h * 0x9e4167b9 + (uChar)c;
+}
+
+static uint32_t
+finalizeHash(struct hashValue *h)
+{
+ return h->h;
+}
+#endif
+
+static unsigned
+hashhist(struct wordent *h0)
+{
+ struct hashValue s;
+ struct wordent *firstWord = h0->next;
+ struct wordent *h = firstWord;
+ unsigned hash = 0;
+
+ initializeHash(&s);
+ for (; h != h0; h = h->next) {
+ if (h->word[0] == '\n')
+ break; /* don't hash newline */
+ if (h != firstWord)
+ addCharToHash(&s, ' '); /* space between words */
+ addWordToHash(&s, h->word);
+ }
+ hash = finalizeHash(&s);
+ /* Zero means no hash value, so never return zero as a hash value. */
+ return hash ? hash : 0x7fffffff; /* prime! */
+}
+
+#if 0
+unsigned
+hashStr(Char *str)
+{
+ struct hashValue s;
+ initializeHash(&s);
+ addWordToHash(&s, str);
+ return finalizeHash(&s);
+}
+#endif
+
+#ifdef PRIME_LENGTH /* need good HTL */
+#define hash2tableIndex(hash, len) ((hash) % len)
+#else
+#define hash2tableIndex(hash, len) ((hash) & (len-1))
+#endif
+
+/* This code can be enabled to test the above hash functions for speed and
+ * collision avoidance. The testing is enabled by "occasional" calls to
+ * displayHistStats(), see which. */
+#ifdef DEBUG_HIST
+
+#ifdef BSDTIMES
+static double
+doTiming(int start) {
+ static struct timeval beginTime;
+ if (start) {
+ gettimeofday(&beginTime, NULL);
+ return 0.0;
+ } else {
+ struct timeval now;
+ gettimeofday(&now, NULL);
+ return (now.tv_sec-beginTime.tv_sec) +
+ (now.tv_usec-beginTime.tv_usec)/1e6;
+ }
+}
+#else
+static double
+doTiming(int start) {
+ USE(start);
+ return 0.0;
+}
+#endif
+
+static void
+generateHashes(int nChars, unsigned nWords, unsigned samples, unsigned *hashes,
+ unsigned length)
+{
+ if (nChars < 1)
+ return;
+ nWords = (nWords < 1) ? 1 : (nWords > 4) ? 4 : nWords;
+ Char *number = xmalloc((nChars+nWords)*sizeof(Char));
+ struct wordent word[4];
+ struct wordent base = { NULL, &word[0], &word[0] };
+ word[0].word = number, word[0].next = &base, word[0].prev = &base;
+ unsigned w = 0; /* word number */
+ /* Generate multiple words of length 2, 3, 5, then all the rest. */
+ unsigned wBoundaries[4] = { 2-1, 2+3-1, 2+3+5-1, 0 };
+ /* Ensure the last word has at least 4 Chars in it. */
+ while (nWords >= 2 && nChars < (wBoundaries[nWords-2]+1) + 4)
+ nWords--;
+ wBoundaries[nWords-1] = 0xffffffff; /* don't end word past this point */
+ unsigned i;
+ for (i = 0; i<nChars; i++) {
+ /* In deference to the gawd awful add-mul hash, we won't use the worse
+ * case here (setting all Chars to 1), but assume mostly (or at least
+ * initially) ASCII data. */
+ number[i+w] = '!'; /* 0x21 = 33 */
+
+ if (i == wBoundaries[w]) { /* end a word here and move to next */
+ w++; /* next word */
+ number[i+w] = 0; /* terminate */
+ word[w].word = &number[i+w+1];
+ word[w].next = &base, word[w].prev = &word[w-1];
+ word[w-1].next = &word[w], base.prev = &word[w];
+ }
+ }
+ /* w is the index of the last word actually created. */
+ number[nChars + w] = 0; /* terminate last word */
+ unsigned timeLimit = !samples;
+ if (samples == 0)
+ samples = 1000000000;
+ doTiming(1);
+ double sec;
+ for (i = 0; i < samples; i++) {
+ /* increment 4 digit base 255 number; last characters vary fastest */
+ unsigned j = nChars-1 + w;
+ while (1) {
+ if (++number[j] != 0)
+ break;
+ /* else reset this digit and proceed to next one */
+ number[j] = 1;
+ if (&number[j] <= word[w].word)
+ break; /* stop at beginning of last word */
+ j--;
+ }
+ if (word[w].word[0] == '\n')
+ word[w].word[0]++; /* suppress newline character */
+ unsigned hash = hashhist(&base);
+ hashes[hash2tableIndex(hash, length)]++;
+ if (timeLimit && (i & 0x3ffff) == 0x3ffff) {
+ sec = doTiming(0);
+ if (sec > 10)
+ break;
+ }
+ }
+ if (i >= samples)
+ sec = doTiming(0);
+ else
+ samples = i; /* number we actually did */
+ if (sec > 0.01) {
+ xprintf("Hash %d (%d Char %u words) with %s: %d nsec/hash, %d mcps\n",
+ samples, nChars, w+1, hashFcnName, (int)((sec/samples)*1e9),
+ (int)((double)samples*nChars/sec/1e6));
+ }
+}
+#endif /* DEBUG_HIST */
+
+#ifdef DEBUG_HIST
+static void
+testHash(void)
+{
+ static const Char STRtestHashTimings[] =
+ { 't','e','s','t','H','a','s','h','T','i','m','i','n','g','s', 0 };
+ struct varent *vp = adrof(STRtestHashTimings);
+ if (vp && vp->vec) {
+ unsigned hashes[4]; /* dummy place to put hashes */
+ Char **vals = vp->vec;
+ while (*vals) {
+ int length = getn(*vals);
+ unsigned words =
+ (length < 5) ? 1 : (length < 25) ? 2 : (length < 75) ? 3 : 4;
+ if (length > 0)
+ generateHashes(length, words, 0, hashes, 4);
+ vals++;
+ }
+ }
+ unsigned length = 1024;
+#ifdef PRIME_LENGTH /* need good HTL */
+ length = 1021;
+#endif
+ unsigned *hashes = xmalloc(length*sizeof(unsigned));
+ memset(hashes, 0, length*sizeof(unsigned));
+ /* Compute collision statistics for half full hashes modulo "length". */
+ generateHashes(4, 1, length/2, hashes, length);
+ /* Evaluate collisions by comparing occupancy rates (mean value 0.5).
+ * One bin for each number of hits. */
+ unsigned bins[155];
+ memset(bins, 0, sizeof(bins));
+ unsigned highest = 0;
+ unsigned i;
+ for (i = 0; i<length; i++) {
+ unsigned hits = hashes[i];
+ if (hits >= sizeof(bins)/sizeof(bins[0])) /* clip */
+ hits = highest = sizeof(bins)/sizeof(bins[0]) - 1;
+ if (hits > highest)
+ highest = hits;
+ bins[hits]++;
+ }
+ xprintf("Occupancy of %d buckets by %d hashes %d Chars %d word with %s\n",
+ length, length/2, 4, 1, hashFcnName);
+ for (i = 0; i <= highest; i++) {
+ xprintf(" %d buckets (%d%%) with %d hits\n",
+ bins[i], bins[i]*100/length, i);
+ }
+ /* Count run lengths to evaluate linear rehashing effectiveness. Estimate
+ * a little corrupted by edge effects. */
+ memset(bins, 0, sizeof(bins));
+ highest = 0;
+ for (i = 0; hashes[i] == 0; i++); /* find first occupied bucket */
+ unsigned run = 0;
+ unsigned rehashed = 0;
+ for (; i<length; i++) {
+ unsigned hits = hashes[i];
+ if (hits == 0 && rehashed > 0)
+ hits = 1 && rehashed--;
+ else if (hits > 1)
+ rehashed += hits-1;
+ if (hits)
+ run++;
+ else {
+ /* a real free slot, count it */
+ if (run >= sizeof(bins)/sizeof(bins[0])) /* clip */
+ run = highest = sizeof(bins)/sizeof(bins[0]) - 1;
+ if (run > highest)
+ highest = run;
+ bins[run]++;
+ run = 0;
+ }
+ }
+ /* Ignore the partial run at end as we ignored the beginning. */
+ double merit = 0.0, entries = 0;
+ for (i = 0; i <= highest; i++) {
+ entries += bins[i]*i; /* total hashed objects */
+ merit += bins[i]*i*i;
+ }
+ xprintf("Rehash collision figure of merit %u (ideal=100), run lengths:\n",
+ (int)(100.0*merit/entries));
+ for (i = 0; i <= highest; i++) {
+ if (bins[i] != 0)
+ xprintf(" %d runs of length %d buckets\n", bins[i], i);
+ }
+ xfree(hashes);
+}
+#endif /* DEBUG_HIST */
+
+/* Compares two word lists for equality. */
static int
heq(const struct wordent *a0, const struct wordent *b0)
{
@@ -98,40 +613,362 @@ heq(const struct wordent *a0, const struct wordent *b0)
return (b == b0) ? 1 : 0;
if (b == b0)
return 0;
- }
+ }
+}
+
+/* Renumber entries following p, which we will be deleting. */
+PG_STATIC void
+renumberHist(struct Hist *p)
+{
+ int n = p->Href;
+ while ((p = p->Hnext))
+ p->Href = n--;
+}
+
+/* The hash table is implemented as an array of pointers to Hist entries. Each
+ * entry is located in the table using hash2tableIndex() and checking the
+ * following entries in case of a collision (linear rehash). Free entries in
+ * the table are zero (0, NULL, emptyHTE). Deleted entries that cannot yet be
+ * freed are set to one (deletedHTE). The Hist.Hhash member is non-zero iff
+ * the entry is in the hash table. When the hash table get too full, it is
+ * reallocated to be approximately twice the history length (see
+ * getHashTableSize). */
+static struct Hist **histHashTable = NULL;
+static unsigned histHashTableLength = 0; /* number of Hist pointers in table */
+
+static struct Hist * const emptyHTE = NULL;
+static struct Hist * const deletedHTE = (struct Hist *)1;
+
+static struct {
+ unsigned insertCount;
+ unsigned removeCount;
+ unsigned rehashes;
+ int deleted;
+} hashStats;
+
+#ifdef DEBUG_HIST
+void
+checkHistHashTable(int print)
+{
+ unsigned occupied = 0;
+ unsigned deleted = 0;
+ unsigned i;
+ for (i = 0; i<histHashTableLength; i++)
+ if (histHashTable[i] == emptyHTE)
+ continue;
+ else if (histHashTable[i] == deletedHTE)
+ deleted++;
+ else
+ occupied++;
+ if (print)
+ xprintf(" found len %u occupied %u deleted %u\n",
+ histHashTableLength, occupied, deleted);
+ assert(deleted == hashStats.deleted);
+}
+
+static int doneTest = 0;
+
+/* Main entry point for displaying history statistics and hash function
+ * behavior. */
+void
+displayHistStats(const char *reason)
+{
+ /* Just hash statistics for now. */
+ xprintf("%s history hash table len %u count %u (deleted %d)\n", reason,
+ histHashTableLength, histCount, hashStats.deleted);
+ xprintf(" inserts %u rehashes %u%% each\n",
+ hashStats.insertCount,
+ (hashStats.insertCount
+ ? 100*hashStats.rehashes/hashStats.insertCount : 0));
+ xprintf(" removes %u net %u\n",
+ hashStats.removeCount,
+ hashStats.insertCount - hashStats.removeCount);
+ assert(hashStats.insertCount >= hashStats.removeCount);
+ checkHistHashTable(1);
+ memset(&hashStats, 0, sizeof(hashStats));
+ if (!doneTest) {
+ testHash();
+ doneTest = 1;
+ }
+}
+#else
+void
+displayHistStats(const char *reason)
+{
+ USE(reason);
+}
+#endif
+
+static void
+discardHistHashTable(void)
+{
+ if (histHashTable == NULL)
+ return;
+ displayHistStats("Discarding");
+ xfree(histHashTable);
+ histHashTable = NULL;
+}
+
+/* Computes a new hash table size, when the current one is too small. */
+static unsigned
+getHashTableSize(int histlen)
+{
+ unsigned target = histlen * 2;
+ unsigned e = 5;
+ unsigned size;
+ while ((size = 1<<e) < target)
+ e++;
+#ifdef PRIME_LENGTH /* need good HTL */
+ /* Not all prime, but most are and none have factors smaller than 11. */
+ return size+15;
+#else
+ assert((size & (size-1)) == 0); /* must be a power of two */
+ return size;
+#endif
+}
+
+/* Create the hash table or resize, if necessary. */
+static void
+createHistHashTable(int histlen)
+{
+ if (histlen == 0) {
+ discardHistHashTable();
+ return;
+ }
+ if (histlen < 0) {
+ histlen = getn(varval(STRhistory));
+ if (histlen == 0)
+ return; /* no need for hash table */
+ assert(histlen > 0);
+ }
+ if (histHashTable != NULL) {
+ if (histCount < histHashTableLength * 3 / 4)
+ return; /* good enough for now */
+ discardHistHashTable(); /* too small */
+ }
+ histHashTableLength = getHashTableSize(
+ histlen > (int)histCount ? histlen : (int)histCount);
+ histHashTable = xmalloc(histHashTableLength * sizeof(struct Hist *));
+ memset(histHashTable, 0, histHashTableLength * sizeof(struct Hist *));
+ assert(histHashTable[0] == emptyHTE);
+
+ /* Now insert all the entries on the history list into the hash table. */
+ {
+ struct Hist *hp;
+ for (hp = &Histlist; (hp = hp->Hnext) != NULL;) {
+ unsigned lpHash = hashhist(&hp->Hlex);
+ assert(!hp->Hhash || hp->Hhash == lpHash);
+ hp->Hhash = 0; /* force insert to new hash table */
+ insertHistHashTable(hp, lpHash);
+ }
+ }
+}
+
+/* Insert np into the hash table. We assume that np is already on the
+ * Histlist. The specified hashval matches the new Hist entry but has not yet
+ * been assigned to Hhash (or the element is already on the hash table). */
+static void
+insertHistHashTable(struct Hist *np, unsigned hashval)
+{
+ unsigned rehashes = 0;
+ unsigned hi = 0;
+ if (!histHashTable)
+ return;
+ if (np->Hhash != 0) {
+ /* already in hash table */
+ assert(hashval == np->Hhash);
+ return;
+ }
+ assert(np != deletedHTE);
+ /* Find a free (empty or deleted) slot, using linear rehash. */
+ assert(histHashTable);
+ for (rehashes = 0;
+ ((hi = hash2tableIndex(hashval + rehashes, histHashTableLength)),
+ histHashTable[hi] != emptyHTE && histHashTable[hi] != deletedHTE);
+ rehashes++) {
+ assert(np != histHashTable[hi]);
+ if (rehashes >= histHashTableLength / 10) {
+ /* Hash table is full, so grow it. We assume the create function
+ * will roughly double the size we give it. Create initializes the
+ * new table with everything on the Histlist, so we are done when
+ * it returns. */
+#ifdef DEBUG_HIST
+ xprintf("Growing history hash table from %d ...",
+ histHashTableLength);
+ flush();
+#endif
+ discardHistHashTable();
+ createHistHashTable(histHashTableLength);
+#ifdef DEBUG_HIST
+ xprintf("to %d.\n", histHashTableLength);
+#endif
+ return;
+ }
+ }
+ /* Might be sensible to grow hash table if rehashes is "too big" here. */
+ if (histHashTable[hi] == deletedHTE)
+ hashStats.deleted--;
+ histHashTable[hi] = np;
+ np->Hhash = hashval;
+ hashStats.insertCount++;
+ hashStats.rehashes += rehashes;
+}
+
+/* Remove the 'np' entry from the hash table. */
+static void
+removeHistHashTable(struct Hist *np)
+{
+ unsigned hi = np->Hhash;
+ if (!histHashTable || !hi)
+ return; /* no hash table or not on it */
+ /* find desired entry */
+ while ((hi = hash2tableIndex(hi, histHashTableLength)),
+ histHashTable[hi] != emptyHTE) {
+ if (np == histHashTable[hi]) {
+ unsigned i;
+ unsigned deletes = 0;
+ histHashTable[hi] = deletedHTE; /* dummy, but non-zero entry */
+ /* now peek ahead to see if the dummies are really necessary. */
+ i = 1;
+ while (histHashTable[hash2tableIndex(hi+i, histHashTableLength)] ==
+ deletedHTE)
+ i++;
+ if (histHashTable[hash2tableIndex(hi+i, histHashTableLength)] ==
+ emptyHTE) {
+ /* dummies are no longer necessary placeholders. */
+ deletes = i;
+ while (i-- > 0) {
+ histHashTable[hash2tableIndex(hi+i, histHashTableLength)] =
+ emptyHTE;
+ }
+ }
+ hashStats.deleted += 1 - deletes; /* delta deleted entries */
+ hashStats.removeCount++;
+ return;
+ }
+ hi++; /* linear rehash */
+ }
+ assert(!"Hist entry not found in hash table");
}
+/* Search the history hash table for a command matching lp, using hashval as
+ * its hash value. */
+static struct Hist *
+findHistHashTable(struct wordent *lp, unsigned hashval)
+{
+ unsigned deleted = 0; /* number of deleted entries skipped */
+ unsigned hi = hashval;
+ struct Hist *hp;
+ if (!histHashTable)
+ return NULL;
+ while ((hi = hash2tableIndex(hi, histHashTableLength)),
+ (hp = histHashTable[hi]) != emptyHTE) {
+ if (hp == deletedHTE)
+ deleted++;
+ else if (hp->Hhash == hashval && heq(lp, &(hp->Hlex)))
+ return hp;
+ if (deleted > (histHashTableLength>>4)) {
+ /* lots of deletes, so we need a sparser table. */
+ discardHistHashTable();
+ createHistHashTable(histHashTableLength);
+ return findHistHashTable(lp, hashval);
+ }
+ hi++; /* linear rehash */
+ }
+ return NULL;
+}
+
+/* When merge semantics are in use, find the approximate predecessor for the
+ * new entry, so that the Htime entries are decreasing. Return the entry just
+ * before the first entry with equal times, so the caller can check for
+ * duplicates. When pTime is not NULL, use it as a starting point for search,
+ * otherwise search from beginning (largest time value) of history list. */
+PG_STATIC struct Hist *
+mergeInsertionPoint(
+ struct Hist *np, /* new entry to be inserted */
+ struct Hist *pTime) /* hint about where to insert */
+{
+ struct Hist *pp, *p;
+ if (histTail && histTail->Htime >= np->Htime)
+ pTime = histTail; /* new entry goes at the end */
+ if (histMerg && histMerg != &Histlist && histMerg != Histlist.Hnext) {
+ /* Check above and below previous insertion point, in case we're adding
+ * sequential times in the middle of the list (e.g. history -M). */
+ if (histMerg->Htime >= np->Htime)
+ pTime = histMerg;
+ else if (histMerg->Hprev->Htime >= np->Htime)
+ pTime = histMerg->Hprev;
+ }
+ if (pTime) {
+ /* With hint, search up the list until Htime is greater. We skip past
+ * the equal ones, too, so our caller can elide duplicates. */
+ pp = pTime;
+ while (pp != &Histlist && pp->Htime <= np->Htime)
+ pp = pp->Hprev;
+ } else
+ pp = &Histlist;
+ /* Search down the list while current entry's time is too large. */
+ while ((p = pp->Hnext) && (p->Htime > np->Htime))
+ pp = p; /* advance insertion point */
+ /* Remember recent position as hint for next time */
+ histMerg = pp;
+ return pp;
+}
+
+/* Bubble Hnum & Href in new entry down to pp through earlier part of list. */
+PG_STATIC void bubbleHnumHrefDown(struct Hist *np, struct Hist *pp)
+{
+ struct Hist *p;
+ for (p = Histlist.Hnext; p != pp->Hnext; p = p->Hnext) {
+ /* swap Hnum & Href values of p and np. */
+ int n = p->Hnum, r = p->Href;
+ p->Hnum = np->Hnum; p->Href = np->Href;
+ np->Hnum = n; np->Href = r;
+ }
+}
+/* Enter new command into the history list according to current settings. */
struct Hist *
-enthist(int event, struct wordent *lp, int docopy, int mflg)
+enthist(
+ int event, /* newly incremented global eventno */
+ struct wordent *lp,
+ int docopy,
+ int mflg, /* true if merge requested */
+ int histlen) /* -1 if unknown */
{
- struct Hist *p = NULL, *pp = &Histlist;
- int n, r;
+ struct Hist *p = NULL, *pp = &Histlist, *pTime = NULL;
struct Hist *np;
const Char *dp;
-
+ unsigned lpHash = 0; /* non-zero if hashing entries */
+
if ((dp = varval(STRhistdup)) != STRNULL) {
if (eq(dp, STRerase)) {
/* masaoki@akebono.tky.hp.com (Kobayashi Masaoki) */
- struct Hist *px;
- for (p = pp; (px = p, p = p->Hnext) != NULL;)
- if (heq(lp, &(p->Hlex))){
- px->Hnext = p->Hnext;
- if (Htime != 0 && p->Htime > Htime)
- Htime = p->Htime;
- n = p->Href;
- hfree(p);
- for (p = px->Hnext; p != NULL; p = p->Hnext)
- p->Href = n--;
- break;
- }
+ createHistHashTable(histlen);
+ lpHash = hashhist(lp);
+ assert(lpHash != 0);
+ p = findHistHashTable(lp, lpHash);
+ if (p) {
+ if (Htime != 0 && p->Htime > Htime)
+ Htime = p->Htime;
+ /* If we are merging, and the old entry is at the place we want
+ * to insert the new entry, then remember the place. */
+ if (mflg && Htime != 0 && p->Hprev->Htime >= Htime)
+ pTime = p->Hprev;
+ if (!fastMergeErase)
+ renumberHist(p); /* Reset Href of subsequent entries */
+ hremove(p);
+ hfree(p);
+ p = NULL; /* so new entry is allocated below */
+ }
}
else if (eq(dp, STRall)) {
- for (p = pp; (p = p->Hnext) != NULL;)
- if (heq(lp, &(p->Hlex))) {
- eventno--;
- break;
- }
+ createHistHashTable(histlen);
+ lpHash = hashhist(lp);
+ assert(lpHash != 0);
+ p = findHistHashTable(lp, lpHash);
+ if (p) /* p!=NULL, only update this entry's Htime below */
+ eventno--; /* not adding a new event */
}
else if (eq(dp, STRprev)) {
if (pp->Hnext && heq(lp, &(pp->Hnext->Hlex))) {
@@ -149,14 +986,15 @@ enthist(int event, struct wordent *lp, int docopy, int mflg)
Htime = 0;
}
else
- (void) time(&(np->Htime));
+ (void) time(&(np->Htime));
if (p == np)
- return np;
+ return np; /* reused existing entry */
+ /* Initialize the new entry. */
np->Hnum = np->Href = event;
if (docopy) {
- copylex(&np->Hlex, lp);
+ copylex(&np->Hlex, lp);
if (histvalid)
np->histline = Strsave(histline.s);
else
@@ -166,46 +1004,127 @@ enthist(int event, struct wordent *lp, int docopy, int mflg)
np->Hlex.next = lp->next;
lp->next->prev = &np->Hlex;
np->Hlex.prev = lp->prev;
- lp->prev->next = &np->Hlex;
- np->histline = NULL;
- }
- if (mflg)
- {
- while ((p = pp->Hnext) && (p->Htime > np->Htime))
- pp = p;
- while (p && p->Htime == np->Htime)
- {
- if (heq(&p->Hlex, &np->Hlex))
- {
- eventno--;
- hfree(np);
- return (p);
- }
- pp = p;
- p = p->Hnext;
- }
- for (p = Histlist.Hnext; p != pp->Hnext; p = p->Hnext)
- {
- n = p->Hnum; r = p->Href;
- p->Hnum = np->Hnum; p->Href = np->Href;
- np->Hnum = n; np->Href = r;
- }
- }
- np->Hnext = pp->Hnext;
- pp->Hnext = np;
+ lp->prev->next = &np->Hlex;
+ np->histline = NULL;
+ }
+ np->Hhash = 0;
+
+ /* The head of history list is the default insertion point.
+ If merging, advance insertion point, in pp, according to Htime. */
+ /* XXX -- In histdup=all, Htime values can be non-monotonic. */
+ if (mflg) { /* merge according to np->Htime */
+ pp = mergeInsertionPoint(np, pTime);
+ for (p = pp->Hnext; p && p->Htime == np->Htime; pp = p, p = p->Hnext) {
+ if (heq(&p->Hlex, &np->Hlex)) {
+ eventno--; /* duplicate, so don't add new event */
+ hfree(np);
+ return (p);
+ }
+ }
+ /* pp is now the last entry with time >= to np. */
+ if (!fastMergeErase) { /* renumber at end of loadhist */
+ /* Before inserting np after pp, bubble its Hnum & Href values down
+ * through the earlier part of list. */
+ bubbleHnumHrefDown(np, pp);
+ }
+ }
+ else
+ pp = &Histlist; /* insert at beginning of history */
+ hinsert(np, pp);
+ if (lpHash && histlen != 0) /* erase & all modes use hash table */
+ insertHistHashTable(np, lpHash);
+ else
+ discardHistHashTable();
return (np);
}
static void
hfree(struct Hist *hp)
{
-
+ assert(hp != histMerg);
+ if (hp->Hhash)
+ removeHistHashTable(hp);
freelex(&hp->Hlex);
if (hp->histline)
- xfree(hp->histline);
+ xfree(hp->histline);
xfree(hp);
}
+PG_STATIC void
+phist(struct Hist *hp, int hflg)
+{
+ if (hflg & HIST_ONLY) {
+ int old_output_raw;
+
+ /*
+ * Control characters have to be written as is (output_raw).
+ * This way one can preserve special characters (like tab) in
+ * the history file.
+ * From: mveksler@vnet.ibm.com (Veksler Michael)
+ */
+ old_output_raw = output_raw;
+ output_raw = 1;
+ cleanup_push(&old_output_raw, output_raw_restore);
+ if (hflg & HIST_TIME)
+ /*
+ * Make file entry with history time in format:
+ * "+NNNNNNNNNN" (10 digits, left padded with ascii '0')
+ */
+
+ xprintf("#+%010lu\n", (unsigned long)hp->Htime);
+
+ if (HistLit && hp->histline)
+ xprintf("%S\n", hp->histline);
+ else
+ prlex(&hp->Hlex);
+ cleanup_until(&old_output_raw);
+ }
+ else {
+ Char *cp = str2short("%h\t%T\t%R\n");
+ Char *p;
+ struct varent *vp = adrof(STRhistory);
+
+ if (vp && vp->vec != NULL && vp->vec[0] && vp->vec[1])
+ cp = vp->vec[1];
+
+ p = tprintf(FMT_HISTORY, cp, NULL, hp->Htime, hp);
+ cleanup_push(p, xfree);
+ for (cp = p; *cp;)
+ xputwchar(*cp++);
+ cleanup_until(p);
+ }
+}
+
+PG_STATIC void
+dophist(int n, int hflg)
+{
+ struct Hist *hp;
+ if (setintr) {
+ int old_pintr_disabled;
+
+ pintr_push_enable(&old_pintr_disabled);
+ cleanup_until(&old_pintr_disabled);
+ }
+ if ((hflg & HIST_REV) == 0) {
+ /* Since the history list is stored most recent first, non-reversing
+ * print needs to print (backwards) up the list. */
+ if ((unsigned)n >= histCount)
+ hp = histTail;
+ else {
+ for (hp = Histlist.Hnext;
+ --n > 0 && hp->Hnext != NULL;
+ hp = hp->Hnext)
+ ;
+ }
+ if (hp == NULL)
+ return; /* nothing to print */
+ for (; hp != &Histlist; hp = hp->Hprev)
+ phist(hp, hflg);
+ } else {
+ for (hp = Histlist.Hnext; n-- > 0 && hp != NULL; hp = hp->Hnext)
+ phist(hp, hflg);
+ }
+}
/*ARGSUSED*/
void
@@ -247,11 +1166,10 @@ dohist(Char **vp, struct command *c)
break;
}
}
-
if (hflg & HIST_CLEAR) {
- struct Hist *np, *hp;
- for (hp = &Histlist; (np = hp->Hnext) != NULL;)
- hp->Hnext = np->Hnext, hfree(np);
+ struct Hist *np, *hp;
+ for (hp = &Histlist; (np = hp->Hnext) != NULL;)
+ hremove(np), hfree(np);
}
if (hflg & (HIST_LOAD | HIST_MERGE))
@@ -264,76 +1182,7 @@ dohist(Char **vp, struct command *c)
else {
n = getn(varval(STRhistory));
}
- dohist1(Histlist.Hnext, &n, hflg);
- }
-}
-
-static void
-dohist1(struct Hist *hp, int *np, int hflg)
-{
- int print = (*np) > 0;
-
- for (; hp != 0; hp = hp->Hnext) {
- if (setintr) {
- int old_pintr_disabled;
-
- pintr_push_enable(&old_pintr_disabled);
- cleanup_until(&old_pintr_disabled);
- }
- (*np)--;
- if ((hflg & HIST_REV) == 0) {
- dohist1(hp->Hnext, np, hflg);
- if (print)
- phist(hp, hflg);
- return;
- }
- if (*np >= 0)
- phist(hp, hflg);
- }
-}
-
-static void
-phist(struct Hist *hp, int hflg)
-{
- if (hflg & HIST_ONLY) {
- int old_output_raw;
-
- /*
- * Control characters have to be written as is (output_raw).
- * This way one can preserve special characters (like tab) in
- * the history file.
- * From: mveksler@vnet.ibm.com (Veksler Michael)
- */
- old_output_raw = output_raw;
- output_raw = 1;
- cleanup_push(&old_output_raw, output_raw_restore);
- if (hflg & HIST_TIME)
- /*
- * Make file entry with history time in format:
- * "+NNNNNNNNNN" (10 digits, left padded with ascii '0')
- */
-
- xprintf("#+%010lu\n", (unsigned long)hp->Htime);
-
- if (HistLit && hp->histline)
- xprintf("%S\n", hp->histline);
- else
- prlex(&hp->Hlex);
- cleanup_until(&old_output_raw);
- }
- else {
- Char *cp = str2short("%h\t%T\t%R\n");
- Char *p;
- struct varent *vp = adrof(STRhistory);
-
- if (vp && vp->vec != NULL && vp->vec[0] && vp->vec[1])
- cp = vp->vec[1];
-
- p = tprintf(FMT_HISTORY, cp, NULL, hp->Htime, hp);
- cleanup_push(p, xfree);
- for (cp = p; *cp;)
- xputwchar(*cp++);
- cleanup_until(p);
+ dophist(n, hflg);
}
}
@@ -371,6 +1220,7 @@ fmthist(int fmt, ptr_t ptr)
}
}
+/* Save history before exiting the shell. */
void
rechist(Char *fname, int ref)
{
@@ -424,10 +1274,11 @@ rechist(Char *fname, int ref)
if ((shist = adrof(STRsavehist)) != NULL && shist->vec != NULL)
if (shist->vec[1] && eq(shist->vec[1], STRmerge))
loadhist(fname, 1);
+
fp = xcreat(short2str(fname), 0600);
+ cleanup_until(fname);
if (fp == -1) {
didfds = oldidfds;
- cleanup_until(fname);
return;
}
ftmp = SHOUT;
@@ -437,10 +1288,10 @@ rechist(Char *fname, int ref)
xclose(fp);
SHOUT = ftmp;
didfds = oldidfds;
- cleanup_until(fname);
}
+/* This is the entry point for loading history data from a file. */
void
loadhist(Char *fname, int mflg)
{
@@ -455,4 +1306,14 @@ loadhist(Char *fname, int mflg)
loadhist_cmd[2] = STRtildothist;
dosource(loadhist_cmd, NULL);
+
+ /* During history merging (enthist sees mflg set), we disable management of
+ * Hnum and Href (because fastMergeErase is true). So now reset all the
+ * values based on the final ordering of the history list. */
+ if (mflg) {
+ int n = eventno;
+ struct Hist *hp = &Histlist;
+ while ((hp = hp->Hnext))
+ hp->Hnum = hp->Href = n--;
+ }
}
diff --git a/sh.lex.c b/sh.lex.c
index 536097e4aa75..80643f7b1731 100644
--- a/sh.lex.c
+++ b/sh.lex.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/sh.lex.c,v 3.81 2009/06/25 21:15:37 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/sh.lex.c,v 3.87 2011/01/24 17:48:15 christos Exp $ */
/*
* sh.lex.c: Lexical analysis into tokens
*/
@@ -32,7 +32,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: sh.lex.c,v 3.81 2009/06/25 21:15:37 christos Exp $")
+RCSID("$tcsh: sh.lex.c,v 3.87 2011/01/24 17:48:15 christos Exp $")
#include "ed.h"
@@ -460,7 +460,13 @@ getC1(int flag)
setexclp(exclnxt->word);
continue;
}
- c = readc(0);
+ c = readc(1);
+
+ /* Catch EOF in the middle of a line. (An EOF at the beginning of
+ * a line would have been processed by the readc(0) in lex().) */
+ if (c == CHAR_ERR)
+ c = '\n';
+
if (c == '$' && (flag & DODOL)) {
getdol();
continue;
@@ -672,11 +678,11 @@ getexcl(Char sc)
eChar c;
if (sc == 0) {
- sc = getC(0);
- if (sc != '{') {
- ungetC(sc);
- sc = 0;
- }
+ c = getC(0);
+ if (c == '{')
+ sc = (Char) c;
+ else
+ ungetC(c);
}
quesarg = -1;
@@ -693,7 +699,7 @@ getexcl(Char sc)
for (ip = hp->next->next; ip != hp->prev; ip = ip->next)
dol++;
left = 0, right = dol;
- if (sc == HISTSUB) {
+ if (sc == HISTSUB && HISTSUB != '\0') {
ungetC('s'), unreadc(HISTSUB), c = ':';
goto subst;
}
@@ -726,7 +732,7 @@ subst:
exclc = right - left + 1;
while (--left >= 0)
hp = hp->next;
- if (sc == HISTSUB || c == ':') {
+ if ((sc == HISTSUB && HISTSUB != '\0') || c == ':') {
do {
hp = getsub(hp);
c = getC(0);
@@ -928,7 +934,7 @@ dosub(Char sc, struct wordent *en, int global)
* ANSI mode HP/UX compiler chokes on
* return &enthist(HIST_PURGE, &lexi, 0)->Hlex;
*/
- hst = enthist(HIST_PURGE, &lexi, 0, 0);
+ hst = enthist(HIST_PURGE, &lexi, 0, 0, -1);
return &(hst->Hlex);
}
@@ -1147,7 +1153,7 @@ gethent(Char sc)
int event;
int back = 0;
- c = sc == HISTSUB ? (eChar)HIST : getC(0);
+ c = (sc == HISTSUB && HISTSUB != '\0') ? (eChar)HIST : getC(0);
if (c == (eChar)HIST) {
if (alhistp)
return (alhistp);
@@ -1258,7 +1264,7 @@ gethent(Char sc)
lastev = hp->Hnum;
return (&hp->Hlex);
}
- np = putn(event);
+ np = putn((tcsh_number_t)event);
seterror(ERR_NOEVENT, short2str(np));
xfree(np);
return (0);
diff --git a/sh.misc.c b/sh.misc.c
index 7c4094f19504..08ec30d92a7b 100644
--- a/sh.misc.c
+++ b/sh.misc.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/sh.misc.c,v 3.45 2006/10/14 17:57:21 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/sh.misc.c,v 3.46 2010/05/08 00:41:58 christos Exp $ */
/*
* sh.misc.c: Miscelaneous functions
*/
@@ -32,7 +32,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: sh.misc.c,v 3.45 2006/10/14 17:57:21 christos Exp $")
+RCSID("$tcsh: sh.misc.c,v 3.46 2010/05/08 00:41:58 christos Exp $")
static int renum (int, int);
static Char **blkend (Char **);
@@ -60,6 +60,7 @@ setzero(void *p, size_t size)
memset(p, 0, size);
}
+#ifndef SHORT_STRINGS
char *
strnsave(const char *s, size_t len)
{
@@ -70,6 +71,7 @@ strnsave(const char *s, size_t len)
r[len] = '\0';
return r;
}
+#endif
char *
strsave(const char *s)
diff --git a/sh.parse.c b/sh.parse.c
index 2ef20c457199..35ffe833f4d8 100644
--- a/sh.parse.c
+++ b/sh.parse.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/sh.parse.c,v 3.18 2006/03/02 18:46:44 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/sh.parse.c,v 3.19 2011/03/30 16:21:37 christos Exp $ */
/*
* sh.parse.c: Interpret a list of tokens
*/
@@ -32,7 +32,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: sh.parse.c,v 3.18 2006/03/02 18:46:44 christos Exp $")
+RCSID("$tcsh: sh.parse.c,v 3.19 2011/03/30 16:21:37 christos Exp $")
/*
* C shell
@@ -677,6 +677,9 @@ freesyn(struct command *t)
default:
break;
}
+#ifdef DEBUG
+ memset(t, 0, sizeof(*t));
+#endif
xfree(t);
}
diff --git a/sh.print.c b/sh.print.c
index 4fc79cf9c0b4..f32d42295660 100644
--- a/sh.print.c
+++ b/sh.print.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/sh.print.c,v 3.33 2006/08/23 15:03:14 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/sh.print.c,v 3.36 2011/05/25 20:17:20 christos Exp $ */
/*
* sh.print.c: Primitive Output routines.
*/
@@ -32,7 +32,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: sh.print.c,v 3.33 2006/08/23 15:03:14 christos Exp $")
+RCSID("$tcsh: sh.print.c,v 3.36 2011/05/25 20:17:20 christos Exp $")
#include "ed.h"
@@ -222,7 +222,7 @@ drainoline(void)
void
flush(void)
{
- int unit;
+ int unit, oldexitset = exitset;
static int interrupted = 0;
/* int lmode; */
@@ -231,10 +231,16 @@ flush(void)
return;
if (GettingInput && !Tty_raw_mode && linp < &linbuf[sizeof linbuf - 10])
return;
+ if (handle_intr)
+ exitset = 1;
+
if (interrupted) {
interrupted = 0;
linp = linbuf; /* avoid recursion as stderror calls flush */
- stderror(ERR_SILENT);
+ if (handle_intr)
+ fixerror();
+ else
+ stderror(ERR_SILENT);
}
interrupted = 1;
if (haderr)
@@ -279,6 +285,12 @@ flush(void)
*/
case ESTALE:
#endif
+#ifdef ENOENT
+ /*
+ * Deal with SoFS bogocity: returns ENOENT instead of ESTALE.
+ */
+ case ENOENT:
+#endif
/*
* Over our quota, writing the history file
*/
@@ -286,13 +298,18 @@ flush(void)
case EDQUOT:
#endif
/* Nothing to do, but die */
- xexit(1);
- break;
+ if (handle_intr == 0)
+ xexit(1);
+ /*FALLTHROUGH*/
default:
- stderror(ERR_SILENT);
+ if (handle_intr)
+ fixerror();
+ else
+ stderror(ERR_SILENT);
break;
}
+ exitset = oldexitset;
linp = linbuf;
interrupted = 0;
}
diff --git a/sh.proc.c b/sh.proc.c
index d57f324033d2..f2356d1b98e9 100644
--- a/sh.proc.c
+++ b/sh.proc.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/sh.proc.c,v 3.109 2009/06/25 21:15:37 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/sh.proc.c,v 3.121 2012/01/25 15:34:41 christos Exp $ */
/*
* sh.proc.c: Job manipulations
*/
@@ -32,7 +32,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: sh.proc.c,v 3.109 2009/06/25 21:15:37 christos Exp $")
+RCSID("$tcsh: sh.proc.c,v 3.121 2012/01/25 15:34:41 christos Exp $")
#include "ed.h"
#include "tc.h"
@@ -47,8 +47,10 @@ RCSID("$tcsh: sh.proc.c,v 3.109 2009/06/25 21:15:37 christos Exp $")
# define HZ 16
#endif /* aiws */
-#if defined(_BSD) || (defined(IRIS4D) && __STDC__) || defined(__lucid) || defined(linux) || defined(__GNU__) || defined(__GLIBC__)
-# define BSDWAIT
+#if defined(_BSD) || (defined(IRIS4D) && __STDC__) || defined(__lucid) || defined(__linux__) || defined(__GNU__) || defined(__GLIBC__)
+# if !defined(__ANDROID__)
+# define BSDWAIT
+# endif
#endif /* _BSD || (IRIS4D && __STDC__) || __lucid || glibc */
#ifndef WTERMSIG
# define WTERMSIG(w) (((union wait *) &(w))->w_termsig)
@@ -188,7 +190,7 @@ loop:
(setintr && (intty || insource) ? WNOHANG | WUNTRACED : WNOHANG), &ru);
# else
/* both a wait3 and rusage */
-# if !defined(BSDWAIT) || defined(NeXT) || defined(MACH) || defined(linux) || defined(__GNU__) || defined(__GLIBC__) || (defined(IRIS4D) && SYSVREL <= 3) || defined(__lucid) || defined(__osf__)
+# if !defined(BSDWAIT) || defined(NeXT) || defined(MACH) || defined(__linux__) || defined(__GNU__) || defined(__GLIBC__) || (defined(IRIS4D) && SYSVREL <= 3) || defined(__lucid) || defined(__osf__)
pid = wait3(&w,
(setintr && (intty || insource) ? WNOHANG | WUNTRACED : WNOHANG), &ru);
# else /* BSDWAIT */
@@ -221,7 +223,11 @@ loop:
# ifdef hpux
pid = wait3(&w.w_status, WNOHANG, 0);
# else /* !hpux */
+# ifndef BSDWAIT
+ pid = wait3(&w, WNOHANG, &ru);
+# else
pid = wait3(&w.w_status, WNOHANG, &ru);
+# endif /* BSDWAIT */
# endif /* !hpux */
# else /* !BSDTIMES */
# ifdef ODT /* For Sco Unix 3.2.0 or ODT 1.0 */
@@ -260,7 +266,7 @@ loop:
jobdebug_flush();
if ((pid == 0) || (pid == -1)) {
- handle_pending_signals();
+ (void)handle_pending_signals();
jobdebug_xprintf(("errno == %d\n", errno));
if (errno == EINTR)
goto loop;
@@ -367,6 +373,7 @@ found:
#ifdef notdef
jobflags & PAEXITED ||
#endif /* notdef */
+ fp->p_cwd == NULL ||
!eq(dcwd->di_name, fp->p_cwd->di_name))) {
/* PWP: print a newline after ^C */
if (jobflags & PINTERRUPTED) {
@@ -501,7 +508,7 @@ pjwait(struct process *pp)
pause_mask = oset;
sigdelset(&pause_mask, SIGCHLD);
for (;;) {
- handle_pending_signals();
+ (void)handle_pending_signals();
jobflags = 0;
do
jobflags |= fp->p_flags;
@@ -551,6 +558,11 @@ pjwait(struct process *pp)
reason = 0;
fp = pp;
do {
+ /* In case of pipelines only the result of the last
+ * command should be taken in account */
+ if (!anyerror && !(fp->p_flags & PBRACE)
+ && ((fp->p_flags & PPOU) || (fp->p_flags & PBACKQ)))
+ continue;
if (fp->p_reason)
reason = fp->p_flags & (PSIGNALED | PINTERRUPTED) ?
fp->p_reason | META : fp->p_reason;
@@ -562,7 +574,7 @@ pjwait(struct process *pp)
if ((reason != 0) && (adrof(STRprintexitvalue)) &&
(pp->p_flags & PBACKQ) == 0)
xprintf(CGETS(17, 2, "Exit %d\n"), reason);
- reason_str = putn(reason);
+ reason_str = putn((tcsh_number_t)reason);
cleanup_push(reason_str, xfree);
setv(STRstatus, reason_str, VAR_READWRITE);
cleanup_ignore(reason_str);
@@ -582,6 +594,7 @@ dowait(Char **v, struct command *c)
{
struct process *pp;
sigset_t pause_mask;
+ int opintr_disabled, gotsig;
USE(c);
USE(v);
@@ -594,9 +607,14 @@ loop:
for (pp = proclist.p_next; pp; pp = pp->p_next)
if (pp->p_procid && /* pp->p_procid == pp->p_jobid && */
pp->p_flags & PRUNNING) {
- handle_pending_signals();
+ (void)handle_pending_signals();
sigsuspend(&pause_mask);
- handle_pending_signals();
+ opintr_disabled = pintr_disabled;
+ pintr_disabled = 0;
+ gotsig = handle_pending_signals();
+ pintr_disabled = opintr_disabled;
+ if (gotsig)
+ break;
goto loop;
}
pjobs = 0;
@@ -719,6 +737,7 @@ palloc(pid_t pid, struct command *t)
pp = xcalloc(1, sizeof(struct process));
pp->p_procid = pid;
+ pp->p_parentid = shpgrp;
pp->p_flags = ((t->t_dflg & F_AMPERSAND) ? 0 : PFOREGND) | PRUNNING;
if (t->t_dflg & F_TIME)
pp->p_flags |= PPTIME;
@@ -726,6 +745,8 @@ palloc(pid_t pid, struct command *t)
pp->p_flags |= PBACKQ;
if (t->t_dflg & F_HUP)
pp->p_flags |= PHUP;
+ if (t->t_dcom && t->t_dcom[0] && (*t->t_dcom[0] == '{'))
+ pp->p_flags |= PBRACE;
if (cmdmax == 0)
morecommand(CMD_INIT);
cmdp = cmdstr;
@@ -910,6 +931,7 @@ pendjob(void)
if (pcurrjob && (pcurrjob->p_flags & (PFOREGND | PSTOPPED)) == 0) {
pp = pcurrjob;
+ pcurrjob = NULL;
while (pp->p_procid != pp->p_jobid)
pp = pp->p_friends;
xprintf("[%d]", pp->p_index);
@@ -1870,7 +1892,7 @@ pfork(struct command *t, int wanttty)
sigdelset(&pause_mask, SIGCHLD);
sigdelset(&pause_mask, SIGSYNCH);
sigsuspend(&pause_mask);
- handle_pending_signals();
+ (void)handle_pending_signals();
if (sigaction(SIGSYNCH, &osa, NULL))
stderror(ERR_SYSTEM, "pfork parent: sigaction restore",
strerror(errno));
diff --git a/sh.proc.h b/sh.proc.h
index 48a37715664b..bb59dd66e7f9 100644
--- a/sh.proc.h
+++ b/sh.proc.h
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/sh.proc.h,v 3.13 2009/06/19 16:35:33 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/sh.proc.h,v 3.15 2011/04/14 18:25:25 christos Exp $ */
/*
* sh.proc.h: Process data structures and variables
*/
@@ -51,6 +51,7 @@ struct process {
unsigned long p_flags; /* various job status flags */
unsigned char p_reason; /* reason for entering this state */
int p_index; /* shorthand job index */
+ pid_t p_parentid; /* parent pid */
pid_t p_procid;
pid_t p_jobid; /* pid of job leader */
/* if a job is stopped/background p_jobid gives its pgrp */
@@ -102,6 +103,7 @@ struct process {
#define PNEEDNOTE (1<<15) /* notify as soon as practical */
#define PBACKQ (1<<16) /* Process is `` evaluation */
#define PHUP (1<<17) /* Process is marked for SIGHUP on exit */
+#define PBRACE (1<<18) /* Process is {} evaluation */
/* defines for arguments to pprint */
#define NUMBER 01
diff --git a/sh.sem.c b/sh.sem.c
index c9e2581e0287..c88097466faf 100644
--- a/sh.sem.c
+++ b/sh.sem.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/sh.sem.c,v 3.80 2009/06/25 21:27:38 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/sh.sem.c,v 3.86 2011/02/25 23:24:19 christos Exp $ */
/*
* sh.sem.c: I/O redirections and job forking. A touchy issue!
* Most stuff with builtins is incorrect
@@ -33,7 +33,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: sh.sem.c,v 3.80 2009/06/25 21:27:38 christos Exp $")
+RCSID("$tcsh: sh.sem.c,v 3.86 2011/02/25 23:24:19 christos Exp $")
#include "tc.h"
#include "tw.h"
@@ -50,7 +50,7 @@ RCSID("$tcsh: sh.sem.c,v 3.80 2009/06/25 21:27:38 christos Exp $")
#endif /* CLOSE_ON_EXEC */
#if defined(__sparc__) || defined(sparc)
-# if !defined(MACH) && SYSVREL == 0 && !defined(Lynx) && !defined(BSD4_4) && !defined(linux) && !defined(__GNU__) && !defined(__GLIBC__)
+# if !defined(MACH) && SYSVREL == 0 && !defined(Lynx) && !defined(BSD4_4) && !defined(__linux__) && !defined(__GNU__) && !defined(__GLIBC__)
# include <vfork.h>
# endif /* !MACH && SYSVREL == 0 && !Lynx && !BSD4_4 && !glibc */
#endif /* __sparc__ || sparc */
@@ -232,8 +232,7 @@ execute(struct command *t, volatile int wanttty, int *pipein, int *pipeout,
if (strchr("+-", t->t_dcom[1][0])) {
if (t->t_dcom[2]) {
setname("nice");
- t->t_nice =
- getn(t->t_dcom[1]);
+ t->t_nice = (unsigned char)getn(t->t_dcom[1]);
lshift(t->t_dcom, 2);
t->t_dflg |= F_NICE;
}
@@ -629,10 +628,19 @@ execute(struct command *t, volatile int wanttty, int *pipein, int *pipeout,
* possible stopping
*/
if (bifunc) {
- func(t, bifunc);
- if (forked)
+ if (forked) {
+ func(t, bifunc);
exitstat();
- else {
+ } else {
+ jmp_buf_t oldexit;
+ int ohaderr = haderr;
+
+ getexit(oldexit);
+ if (setexit() == 0)
+ func(t, bifunc);
+ resexit(oldexit);
+ haderr = ohaderr;
+
if (adrof(STRprintexitvalue)) {
int rv = getn(varval(STRstatus));
if (rv != 0)
@@ -648,11 +656,16 @@ execute(struct command *t, volatile int wanttty, int *pipein, int *pipeout,
/*
* For () commands must put new 0,1,2 in FSH* and recurse
*/
- (void)close_on_exec(OLDSTD = dcopy(0, FOLDSTD), 1);
- (void)close_on_exec(SHOUT = dcopy(1, FSHOUT), 1);
- isoutatty = isatty(SHOUT);
- (void)close_on_exec(SHDIAG = dcopy(2, FSHDIAG), 1);
- isdiagatty = isatty(SHDIAG);
+ if ((OLDSTD = dcopy(0, FOLDSTD)) >= 0)
+ (void)close_on_exec(OLDSTD, 1);
+ if ((SHOUT = dcopy(1, FSHOUT)) >= 0) {
+ (void)close_on_exec(SHOUT, 1);
+ isoutatty = isatty(SHOUT);
+ }
+ if ((SHDIAG = dcopy(2, FSHDIAG)) >= 0) {
+ (void)close_on_exec(SHDIAG, 1);
+ isdiagatty = isatty(SHDIAG);
+ }
xclose(SHIN);
SHIN = -1;
#ifndef CLOSE_ON_EXEC
@@ -664,31 +677,31 @@ execute(struct command *t, volatile int wanttty, int *pipein, int *pipeout,
#endif /* !CLOSE_ON_EXEC */
didfds = 0;
wanttty = -1;
- t->t_dspr->t_dflg |= t->t_dflg & F_NOINTERRUPT;
+ t->t_dspr->t_dflg |= t->t_dflg & (F_NOINTERRUPT | F_BACKQ);
execute(t->t_dspr, wanttty, NULL, NULL, do_glob);
exitstat();
case NODE_PIPE:
#ifdef BACKPIPE
t->t_dcdr->t_dflg |= F_PIPEIN | (t->t_dflg &
- (F_PIPEOUT | F_AMPERSAND | F_NOFORK | F_NOINTERRUPT));
+ (F_PIPEOUT | F_AMPERSAND | F_NOFORK | F_NOINTERRUPT | F_BACKQ));
execute(t->t_dcdr, wanttty, pv, pipeout, do_glob);
- t->t_dcar->t_dflg |= F_PIPEOUT |
- (t->t_dflg & (F_PIPEIN | F_AMPERSAND | F_STDERR | F_NOINTERRUPT));
+ t->t_dcar->t_dflg |= F_PIPEOUT | (t->t_dflg &
+ (F_PIPEIN | F_AMPERSAND | F_STDERR | F_NOINTERRUPT | F_BACKQ));
execute(t->t_dcar, wanttty, pipein, pv, do_glob);
#else /* !BACKPIPE */
- t->t_dcar->t_dflg |= F_PIPEOUT |
- (t->t_dflg & (F_PIPEIN | F_AMPERSAND | F_STDERR | F_NOINTERRUPT));
+ t->t_dcar->t_dflg |= F_PIPEOUT | (t->t_dflg &
+ (F_PIPEIN | F_AMPERSAND | F_STDERR | F_NOINTERRUPT | F_BACKQ));
execute(t->t_dcar, wanttty, pipein, pv, do_glob);
t->t_dcdr->t_dflg |= F_PIPEIN | (t->t_dflg &
- (F_PIPEOUT | F_AMPERSAND | F_NOFORK | F_NOINTERRUPT));
+ (F_PIPEOUT | F_AMPERSAND | F_NOFORK | F_NOINTERRUPT | F_BACKQ));
execute(t->t_dcdr, wanttty, pv, pipeout, do_glob);
#endif /* BACKPIPE */
break;
case NODE_LIST:
if (t->t_dcar) {
- t->t_dcar->t_dflg |= t->t_dflg & F_NOINTERRUPT;
+ t->t_dcar->t_dflg |= t->t_dflg & (F_NOINTERRUPT | F_BACKQ);
execute(t->t_dcar, wanttty, NULL, NULL, do_glob);
/*
* In strange case of A&B make a new job after A
@@ -699,7 +712,7 @@ execute(struct command *t, volatile int wanttty, int *pipein, int *pipeout,
}
if (t->t_dcdr) {
t->t_dcdr->t_dflg |= t->t_dflg &
- (F_NOFORK | F_NOINTERRUPT);
+ (F_NOFORK | F_NOINTERRUPT | F_BACKQ);
execute(t->t_dcdr, wanttty, NULL, NULL, do_glob);
}
break;
@@ -707,7 +720,7 @@ execute(struct command *t, volatile int wanttty, int *pipein, int *pipeout,
case NODE_OR:
case NODE_AND:
if (t->t_dcar) {
- t->t_dcar->t_dflg |= t->t_dflg & F_NOINTERRUPT;
+ t->t_dcar->t_dflg |= t->t_dflg & (F_NOINTERRUPT | F_BACKQ);
execute(t->t_dcar, wanttty, NULL, NULL, do_glob);
if ((getn(varval(STRstatus)) == 0) !=
(t->t_dtyp == NODE_AND)) {
@@ -716,7 +729,7 @@ execute(struct command *t, volatile int wanttty, int *pipein, int *pipeout,
}
if (t->t_dcdr) {
t->t_dcdr->t_dflg |= t->t_dflg &
- (F_NOFORK | F_NOINTERRUPT);
+ (F_NOFORK | F_NOINTERRUPT | F_BACKQ);
execute(t->t_dcdr, wanttty, NULL, NULL, do_glob);
}
break;
@@ -840,7 +853,7 @@ doio(struct command *t, int *pipein, int *pipeout)
}
else if (flags & F_PIPEIN) {
xclose(0);
- IGNORE(dup(pipein[0]));
+ TCSH_IGNORE(dup(pipein[0]));
xclose(pipein[0]);
xclose(pipein[1]);
}
@@ -850,7 +863,7 @@ doio(struct command *t, int *pipein, int *pipeout)
}
else {
xclose(0);
- IGNORE(dup(OLDSTD));
+ TCSH_IGNORE(dup(OLDSTD));
#if defined(CLOSE_ON_EXEC) && defined(CLEX_DUPS)
/*
* PWP: Unlike Bezerkeley 4.3, FIONCLEX for Pyramid is preserved
@@ -903,12 +916,12 @@ doio(struct command *t, int *pipein, int *pipeout)
}
else if (flags & F_PIPEOUT) {
xclose(1);
- IGNORE(dup(pipeout[1]));
+ TCSH_IGNORE(dup(pipeout[1]));
is1atty = 0;
}
else {
xclose(1);
- IGNORE(dup(SHOUT));
+ TCSH_IGNORE(dup(SHOUT));
is1atty = isoutatty;
# if defined(CLOSE_ON_EXEC) && defined(CLEX_DUPS)
(void) close_on_exec(1, 0);
@@ -917,11 +930,11 @@ doio(struct command *t, int *pipein, int *pipeout)
xclose(2);
if (flags & F_STDERR) {
- IGNORE(dup(1));
+ TCSH_IGNORE(dup(1));
is2atty = is1atty;
}
else {
- IGNORE(dup(SHDIAG));
+ TCSH_IGNORE(dup(SHDIAG));
is2atty = isdiagatty;
# if defined(CLOSE_ON_EXEC) && defined(CLEX_DUPS)
(void) close_on_exec(2, 0);
diff --git a/sh.set.c b/sh.set.c
index 0047b7a795b8..0f98a2b0d314 100644
--- a/sh.set.c
+++ b/sh.set.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/sh.set.c,v 3.72 2007/09/28 21:02:03 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/sh.set.c,v 3.83 2012/01/15 17:15:28 christos Exp $ */
/*
* sh.set.c: Setting and Clearing of variables
*/
@@ -32,7 +32,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: sh.set.c,v 3.72 2007/09/28 21:02:03 christos Exp $")
+RCSID("$tcsh: sh.set.c,v 3.83 2012/01/15 17:15:28 christos Exp $")
#include "ed.h"
#include "tw.h"
@@ -50,7 +50,7 @@ static void asx (Char *, int, Char *);
static struct varent *getvx (Char *, int);
static Char *xset (Char *, Char ***);
static Char *operate (int, Char *, Char *);
-static void putn1 (unsigned);
+static void putn1 (tcsh_number_t);
static struct varent *madrof (Char *, struct varent *);
static void unsetv1 (struct varent *);
static void exportpath (Char **);
@@ -76,13 +76,19 @@ update_vars(Char *vp)
Char *pn = varval(vp);
HIST = *pn++;
- HISTSUB = *pn;
+ if (HIST)
+ HISTSUB = *pn;
+ else
+ HISTSUB = HIST;
}
else if (eq(vp, STRpromptchars)) {
Char *pn = varval(vp);
PRCH = *pn++;
- PRCHROOT = *pn;
+ if (PRCH)
+ PRCHROOT = *pn;
+ else
+ PRCHROOT = PRCH;
}
else if (eq(vp, STRhistlit)) {
HistLit = 1;
@@ -100,6 +106,9 @@ update_vars(Char *vp)
else if (eq(vp, STRloginsh)) {
loginsh = 1;
}
+ else if (eq(vp, STRanyerror)) {
+ anyerror = 1;
+ }
else if (eq(vp, STRsymlinks)) {
Char *pn = varval(vp);
@@ -184,7 +193,7 @@ update_vars(Char *vp)
tw_cmd_free();
}
else if (eq(vp, STRkillring)) {
- SetKillRing(getn(varval(vp)));
+ SetKillRing((int)getn(varval(vp)));
}
#ifndef HAVENOUTMP
else if (eq(vp, STRwatch)) {
@@ -222,7 +231,7 @@ void
doset(Char **v, struct command *c)
{
Char *p;
- Char *vp, op;
+ Char *vp;
Char **vecp;
int hadsub;
int subscr;
@@ -262,27 +271,26 @@ doset(Char **v, struct command *c)
do {
hadsub = 0;
vp = p;
- if (letter(*p))
- for (; alnum(*p); p++)
- continue;
- if (vp == p || !letter(*vp))
+ if (!letter(*p))
stderror(ERR_NAME | ERR_VARBEGIN);
+ do {
+ p++;
+ } while (alnum(*p));
if (*p == '[') {
hadsub++;
p = getinx(p, &subscr);
}
- if ((op = *p) != 0) {
- *p++ = 0;
- if (*p == 0 && *v && **v == '(')
+ if (*p != '\0' && *p != '=')
+ stderror(ERR_NAME | ERR_VARALNUM);
+ if (*p == '=') {
+ *p++ = '\0';
+ if (*p == '\0' && *v != NULL && **v == '(')
p = *v++;
}
else if (*v && eq(*v, STRequal)) {
- op = '=', v++;
- if (*v)
+ if (*++v != NULL)
p = *v++;
}
- if (op && op != '=')
- stderror(ERR_NAME | ERR_SYNTAX);
if (eq(p, STRLparen)) {
Char **e = v;
@@ -479,7 +487,7 @@ operate(int op, Char *vp, Char *p)
Char *vec[5];
Char **v = vec;
Char **vecp = v;
- int i;
+ tcsh_number_t i;
if (op != '=') {
if (*vp)
@@ -500,10 +508,10 @@ operate(int op, Char *vp, Char *p)
static Char *putp;
-Char *
-putn(int n)
+Char *
+putn(tcsh_number_t n)
{
- Char nbuf[(CHAR_BIT * sizeof (n) + 2) / 3 + 2]; /* Enough even for octal */
+ Char nbuf[1024]; /* Enough even for octal */
putp = nbuf;
if (n < 0) {
@@ -516,17 +524,17 @@ putn(int n)
}
static void
-putn1(unsigned n)
+putn1(tcsh_number_t n)
{
if (n > 9)
putn1(n / 10);
- *putp++ = n % 10 + '0';
+ *putp++ = (Char)(n % 10 + '0');
}
-int
-getn(Char *cp)
+tcsh_number_t
+getn(const Char *cp)
{
- int n;
+ tcsh_number_t n;
int sign;
int base;
@@ -543,7 +551,7 @@ getn(Char *cp)
stderror(ERR_NAME | ERR_BADNUM);
}
- if (cp[0] == '0' && cp[1])
+ if (cp[0] == '0' && cp[1] && is_set(STRparseoctal))
base = 8;
else
base = 10;
@@ -751,13 +759,15 @@ unset(Char **v, struct command *c)
if (adrof(STRignoreeof) == 0)
numeof = 0;
if (adrof(STRpromptchars) == 0) {
- PRCH = '>';
+ PRCH = tcsh ? '>' : '%';
PRCHROOT = '#';
}
if (adrof(STRhistlit) == 0)
HistLit = 0;
if (adrof(STRloginsh) == 0)
loginsh = 0;
+ if (adrof(STRanyerror) == 0)
+ anyerror = 0;
if (adrof(STRwordchars) == 0)
word_chars = STR_WORD_CHARS;
if (adrof(STRedit) == 0)
@@ -861,10 +871,11 @@ unsetv1(struct varent *p)
balance(pp, f, 1);
}
+/* Set variable name to NULL. */
void
-setNS(Char *cp)
+setNS(const Char *varName)
{
- setcopy(cp, STRNULL, VAR_READWRITE);
+ setcopy(varName, STRNULL, VAR_READWRITE);
}
/*ARGSUSED*/
@@ -1091,7 +1102,8 @@ x:
}
}
-#if defined(KANJI) && defined(SHORT_STRINGS) && defined(DSPMBYTE)
+#if defined(KANJI)
+# if defined(SHORT_STRINGS) && defined(DSPMBYTE)
extern int dspmbyte_ls;
void
@@ -1222,7 +1234,7 @@ autoset_dspmbyte(const Char *pcp)
{ STRLANGEUCJPB, STReuc },
{ STRLANGEUCKRB, STReuc },
{ STRLANGEUCZHB, STReuc },
-#ifdef linux
+#ifdef __linux__
{ STRLANGEUCJPC, STReuc },
#endif
{ STRLANGSJIS, STRsjis },
@@ -1266,4 +1278,26 @@ autoset_dspmbyte(const Char *pcp)
}
}
}
+# elif defined(AUTOSET_KANJI)
+void
+autoset_kanji(void)
+{
+ char *codeset = nl_langinfo(CODESET);
+
+ if (*codeset == '\0') {
+ if (adrof(STRnokanji) == NULL)
+ setNS(STRnokanji);
+ return;
+ }
+
+ if (strcasestr(codeset, "SHIFT_JIS") == (char*)0) {
+ if (adrof(STRnokanji) == NULL)
+ setNS(STRnokanji);
+ return;
+ }
+
+ if (adrof(STRnokanji) != NULL)
+ unsetv(STRnokanji);
+}
+#endif
#endif
diff --git a/sh.time.c b/sh.time.c
index f8ff370cb051..beed4c975b18 100644
--- a/sh.time.c
+++ b/sh.time.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/sh.time.c,v 3.33 2006/03/02 18:46:44 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/sh.time.c,v 3.35 2010/12/09 15:39:29 christos Exp $ */
/*
* sh.time.c: Shell time keeping and printing.
*/
@@ -32,7 +32,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: sh.time.c,v 3.33 2006/03/02 18:46:44 christos Exp $")
+RCSID("$tcsh: sh.time.c,v 3.35 2010/12/09 15:39:29 christos Exp $")
#ifdef SUNOS4
# include <machine/param.h>
@@ -366,11 +366,11 @@ prusage(struct tms *bs, struct tms *es, clock_t e, clock_t b)
#endif /* !BSDTIMES */
#ifdef TDEBUG
xprintf("es->tms_utime %lu bs->tms_utime %lu\n",
- es->tms_utime, bs->tms_utime);
+ (unsigned long)es->tms_utime, (unsigned long)bs->tms_utime);
xprintf("es->tms_stime %lu bs->tms_stime %lu\n",
- es->tms_stime, bs->tms_stime);
- xprintf("ms %lu e %lu b %lu\n", ms, e, b);
- xprintf("t %lu\n", t);
+ (unsigned long)es->tms_stime, (unsigned long)bs->tms_stime);
+ xprintf("ms %llu e %p b %p\n", (unsigned long long)ms, e, b);
+ xprintf("t %llu\n", (unsigned long long)t);
#endif /* TDEBUG */
if (vp && vp->vec && vp->vec[0] && vp->vec[1])
@@ -480,8 +480,8 @@ prusage(struct tms *bs, struct tms *es, clock_t e, clock_t b)
#ifdef _OSD_POSIX
xprintf("0",0);
#else
- xprintf("%ld", t == 0 ? 0L :
- IADJUST(r1->ru_ixrss - r0->ru_ixrss) / t);
+ xprintf("%lld", (long long)(t == 0 ? 0L :
+ IADJUST(r1->ru_ixrss - r0->ru_ixrss) / t));
#endif
break;
@@ -489,9 +489,9 @@ prusage(struct tms *bs, struct tms *es, clock_t e, clock_t b)
#ifdef _OSD_POSIX
xprintf("0",0);
#else
- xprintf("%ld", t == 0 ? 0L :
+ xprintf("%lld", (long long)(t == 0 ? 0L :
IADJUST(r1->ru_idrss + r1->ru_isrss -
- (r0->ru_idrss + r0->ru_isrss)) / t);
+ (r0->ru_idrss + r0->ru_isrss)) / t));
#endif
break;
@@ -499,23 +499,23 @@ prusage(struct tms *bs, struct tms *es, clock_t e, clock_t b)
#ifdef _OSD_POSIX
xprintf("0",0);
#else
- xprintf("%ld", t == 0 ? 0L :
+ xprintf("%lld", (long long)(t == 0 ? 0L :
IADJUST((r1->ru_ixrss + r1->ru_isrss + r1->ru_idrss) -
- (r0->ru_ixrss + r0->ru_idrss + r0->ru_isrss)) / t);
+ (r0->ru_ixrss + r0->ru_idrss + r0->ru_isrss)) / t));
#endif
break;
#endif /* convex */
case 'M': /* max. Resident Set Size */
#ifdef SUNOS4
- xprintf("%ld", pagetok(r1->ru_maxrss));
+ xprintf("%ld", (long)pagetok(r1->ru_maxrss));
#else
# ifdef convex
- xprintf("%ld", r1->ru_maxrss * 4L);
+ xprintf("%ld", (long)(r1->ru_maxrss * 4L));
# else /* !convex */
# ifdef _OSD_POSIX
xprintf("0",0);
# else
- xprintf("%ld", r1->ru_maxrss / 2L);
+ xprintf("%ld", (long)r1->ru_maxrss);
# endif
# endif /* convex */
#endif /* SUNOS4 */
@@ -525,7 +525,7 @@ prusage(struct tms *bs, struct tms *es, clock_t e, clock_t b)
#ifdef _OSD_POSIX
xprintf("0",0);
#else
- xprintf("%ld", r1->ru_majflt - r0->ru_majflt);
+ xprintf("%ld", (long)(r1->ru_majflt - r0->ru_majflt));
#endif
break;
@@ -533,7 +533,7 @@ prusage(struct tms *bs, struct tms *es, clock_t e, clock_t b)
#ifdef _OSD_POSIX
xprintf("0",0);
#else
- xprintf("%ld", r1->ru_minflt - r0->ru_minflt);
+ xprintf("%ld", (long)(r1->ru_minflt - r0->ru_minflt));
#endif
break;
@@ -541,7 +541,7 @@ prusage(struct tms *bs, struct tms *es, clock_t e, clock_t b)
#ifdef _OSD_POSIX
xprintf("0",0);
#else
- xprintf("%ld", r1->ru_inblock - r0->ru_inblock);
+ xprintf("%ld", (long)(r1->ru_inblock - r0->ru_inblock));
#endif
break;
@@ -549,7 +549,7 @@ prusage(struct tms *bs, struct tms *es, clock_t e, clock_t b)
#ifdef _OSD_POSIX
xprintf("0",0);
#else
- xprintf("%ld", r1->ru_oublock - r0->ru_oublock);
+ xprintf("%ld", (long)(r1->ru_oublock - r0->ru_oublock));
#endif
break;
@@ -567,7 +567,7 @@ prusage(struct tms *bs, struct tms *es, clock_t e, clock_t b)
#ifdef _OSD_POSIX
xprintf("0",0);
#else
- xprintf("%ld", r1->ru_msgrcv - r0->ru_msgrcv);
+ xprintf("%ld", (long)(r1->ru_msgrcv - r0->ru_msgrcv));
#endif
break;
@@ -575,7 +575,7 @@ prusage(struct tms *bs, struct tms *es, clock_t e, clock_t b)
#ifdef _OSD_POSIX
xprintf("0",0);
#else
- xprintf("%ld", r1->ru_msgsnd - r0->ru_msgsnd);
+ xprintf("%ld", (long)(r1->ru_msgsnd - r0->ru_msgsnd));
#endif
break;
@@ -583,7 +583,7 @@ prusage(struct tms *bs, struct tms *es, clock_t e, clock_t b)
#ifdef _OSD_POSIX
xprintf("0",0);
#else
- xprintf("%ld", r1->ru_nsignals - r0->ru_nsignals);
+ xprintf("%ld", (long)(r1->ru_nsignals - r0->ru_nsignals));
#endif
break;
@@ -591,7 +591,7 @@ prusage(struct tms *bs, struct tms *es, clock_t e, clock_t b)
#ifdef _OSD_POSIX
xprintf("0",0);
#else
- xprintf("%ld", r1->ru_nvcsw - r0->ru_nvcsw);
+ xprintf("%ld", (long)(r1->ru_nvcsw - r0->ru_nvcsw));
#endif
break;
@@ -599,42 +599,42 @@ prusage(struct tms *bs, struct tms *es, clock_t e, clock_t b)
#ifdef _OSD_POSIX
xprintf("0",0);
#else
- xprintf("%ld", r1->ru_nivcsw - r0->ru_nivcsw);
+ xprintf("%ld", (long)(r1->ru_nivcsw - r0->ru_nivcsw));
#endif
break;
#else /* BSDTIMES */
# ifdef _SEQUENT_
case 'W': /* number of swaps */
i = r1->ps_swap - r0->ps_swap;
- xprintf("%ld", i);
+ xprintf("%ld", (long)i);
break;
case 'M':
- xprintf("%ld", r1->ps_maxrss / 2);
+ xprintf("%ld", (long)r1->ps_maxrss);
break;
case 'F':
- xprintf("%ld", r1->ps_pagein - r0->ps_pagein);
+ xprintf("%ld", (long)(r1->ps_pagein - r0->ps_pagein));
break;
case 'R':
- xprintf("%ld", r1->ps_reclaim - r0->ps_reclaim);
+ xprintf("%ld", (long)(r1->ps_reclaim - r0->ps_reclaim));
break;
case 'I':
- xprintf("%ld", r1->ps_bread - r0->ps_bread);
+ xprintf("%ld", (long)(r1->ps_bread - r0->ps_bread));
break;
case 'O':
- xprintf("%ld", r1->ps_bwrite - r0->ps_bwrite);
+ xprintf("%ld", (long)(r1->ps_bwrite - r0->ps_bwrite));
break;
case 'k':
- xprintf("%ld", r1->ps_signal - r0->ps_signal);
+ xprintf("%ld", (long)(r1->ps_signal - r0->ps_signal));
break;
case 'w':
- xprintf("%ld", r1->ps_volcsw - r0->ps_volcsw);
+ xprintf("%ld", (long)(r1->ps_volcsw - r0->ps_volcsw));
break;
case 'c':
@@ -642,35 +642,35 @@ prusage(struct tms *bs, struct tms *es, clock_t e, clock_t b)
break;
case 'Z':
- xprintf("%ld", r1->ps_zerofill - r0->ps_zerofill);
+ xprintf("%ld", (long)(r1->ps_zerofill - r0->ps_zerofill));
break;
case 'i':
- xprintf("%ld", r1->ps_pffincr - r0->ps_pffincr);
+ xprintf("%ld", (long)(r1->ps_pffincr - r0->ps_pffincr));
break;
case 'd':
- xprintf("%ld", r1->ps_pffdecr - r0->ps_pffdecr);
+ xprintf("%ld", (long)(r1->ps_pffdecr - r0->ps_pffdecr));
break;
case 'Y':
- xprintf("%ld", r1->ps_syscall - r0->ps_syscall);
+ xprintf("%ld", (long)(r1->ps_syscall - r0->ps_syscall));
break;
case 'l':
- xprintf("%ld", r1->ps_lread - r0->ps_lread);
+ xprintf("%ld", (long)(r1->ps_lread - r0->ps_lread));
break;
case 'm':
- xprintf("%ld", r1->ps_lwrite - r0->ps_lwrite);
+ xprintf("%ld", (long)(r1->ps_lwrite - r0->ps_lwrite));
break;
case 'p':
- xprintf("%ld", r1->ps_phread - r0->ps_phread);
+ xprintf("%ld", (long)(r1->ps_phread - r0->ps_phread));
break;
case 'q':
- xprintf("%ld", r1->ps_phwrite - r0->ps_phwrite);
+ xprintf("%ld", (long)(r1->ps_phwrite - r0->ps_phwrite));
break;
# endif /* _SEQUENT_ */
#endif /* BSDTIMES */
@@ -687,7 +687,7 @@ pdeltat(timeval_t *t1, timeval_t *t0)
timeval_t td;
tvsub(&td, t1, t0);
- xprintf("%ld.%03ld", td.tv_sec, td.tv_usec / 1000L);
+ xprintf("%lld.%03ld", (long long)td.tv_sec, (long)td.tv_usec / 1000L);
}
static void
@@ -734,6 +734,7 @@ pdtimet(clock_t eval, clock_t bval)
val = (eval - bval) * 100 / clk_tck;
#endif /* POSIX */
- xprintf("%ld.%02ld", val / 100, val - (val / 100 * 100));
+ xprintf("%lld.%02ld", (long long)(val / 100),
+ (long long)(val - (val / 100 * 100)));
}
#endif /* BSDTIMES || _SEQUENT_ */
diff --git a/svn b/svn
new file mode 100644
index 000000000000..7bdceccfa05b
--- /dev/null
+++ b/svn
@@ -0,0 +1,32 @@
+#! /usr/bin/env python2.5
+
+import sys
+import os
+
+#for name in os.environ.keys():
+# print "key " + name + " = " + os.environ[name]
+
+def print_output(cmd, prefix):
+ pipeOut = os.popen3(cmd, mode = 'br')[1]
+ for line in pipeOut:
+ term = ""
+ if os.path.isdir(line.strip()):
+ term = "/"
+ print prefix + line.strip() + term
+ pipeOut.close()
+
+if not os.environ.has_key("COMMAND_LINE"):
+ print "Fancy completion is not supported by your version of tcsh."
+ sys.exit(1)
+
+cmdLine = os.environ["COMMAND_LINE"]
+URL = cmdLine.split()[2]
+dir = "/" + URL.split('/', 3)[3]
+prefix = "file:/"
+
+if dir[-1] != "/":
+ dir = dir.rpartition("/")[0] + "/"
+
+print_output("svn ls " + "file://" + dir, prefix + "/" + dir)
+print_output("ls -d /" + dir + "*", prefix)
+
diff --git a/tc.alloc.c b/tc.alloc.c
index 53546fea4c74..f38df2cf76b8 100644
--- a/tc.alloc.c
+++ b/tc.alloc.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/tc.alloc.c,v 3.46 2006/03/02 18:46:44 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/tc.alloc.c,v 3.50 2011/12/30 20:55:24 christos Exp $ */
/*
* tc.alloc.c (Caltech) 2/21/82
* Chris Kingsley, kingsley@cit-20.
@@ -39,8 +39,11 @@
* SUCH DAMAGE.
*/
#include "sh.h"
+#ifdef HAVE_MALLINFO
+#include <malloc.h>
+#endif
-RCSID("$tcsh: tc.alloc.c,v 3.46 2006/03/02 18:46:44 christos Exp $")
+RCSID("$tcsh: tc.alloc.c,v 3.50 2011/12/30 20:55:24 christos Exp $")
#define RCHECK
#define DEBUG
@@ -438,6 +441,28 @@ realloc(ptr_t cp, size_t nbytes)
#endif /* !lint */
}
+/*
+ * On linux, _nss_nis_setnetgrent() calls this function to determine
+ * the usable size of the pointer passed, but this is not a portable
+ * API, so we cannot use our malloc replacement without providing one.
+ * Thanks a lot glibc!
+ */
+#ifdef __linux__
+#define M_U_S_CONST
+#else
+#define M_U_S_CONST
+#endif
+size_t malloc_usable_size(M_U_S_CONST void *);
+size_t
+malloc_usable_size(M_U_S_CONST void *ptr)
+{
+ const union overhead *op = (const union overhead *)
+ (((const char *) ptr) - MEMALIGN(sizeof(*op)));
+ if (op->ov_magic == MAGIC)
+ return 1 << (op->ov_index + 2);
+ else
+ return 0;
+}
#ifndef lint
@@ -587,7 +612,7 @@ showall(Char **v, struct command *c)
xprintf(" %4zd", j);
totfree += j * (1 << (i + 3));
}
- xprintf(CGETS(19, 9, "\nused:\t"));
+ xprintf("\n%s:\t", CGETS(19, 9, "used"));
for (i = 0; i < NBUCKETS; i++) {
xprintf(" %4d", nmalloc[i]);
totused += nmalloc[i] * (1 << (i + 3));
@@ -598,13 +623,27 @@ showall(Char **v, struct command *c)
"\tAllocated memory from 0x%lx to 0x%lx. Real top at 0x%lx\n"),
(unsigned long) membot, (unsigned long) memtop,
(unsigned long) sbrk(0));
-#else
+#else /* SYSMALLOC */
+#ifndef HAVE_MALLINFO
#ifdef HAVE_SBRK
memtop = sbrk(0);
#endif /* HAVE_SBRK */
xprintf(CGETS(19, 12, "Allocated memory from 0x%lx to 0x%lx (%ld).\n"),
(unsigned long) membot, (unsigned long) memtop,
(unsigned long) (memtop - membot));
+#else /* HAVE_MALLINFO */
+ struct mallinfo mi;
+
+ mi = mallinfo();
+ xprintf(CGETS(19, 13, "%s current memory allocation:\n"), progname);
+ xprintf(CGETS(19, 14, "Total space allocated from system: %d\n"), mi.arena);
+ xprintf(CGETS(19, 15, "Number of non-inuse chunks: %d\n"), mi.ordblks);
+ xprintf(CGETS(19, 16, "Number of mmapped regions: %d\n"), mi.hblks);
+ xprintf(CGETS(19, 17, "Total space in mmapped regions: %d\n"), mi.hblkhd);
+ xprintf(CGETS(19, 18, "Total allocated space: %d\n"), mi.uordblks);
+ xprintf(CGETS(19, 19, "Total non-inuse space: %d\n"), mi.fordblks);
+ xprintf(CGETS(19, 20, "Top-most, releasable space: %d\n"), mi.keepcost);
+#endif /* HAVE_MALLINFO */
#endif /* SYSMALLOC */
USE(c);
USE(v);
diff --git a/tc.const.c b/tc.const.c
index ce2d18ba09e6..641e234c74ac 100644
--- a/tc.const.c
+++ b/tc.const.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/tc.const.c,v 3.91 2009/06/19 16:35:33 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/tc.const.c,v 3.98 2011/04/14 18:25:26 christos Exp $ */
/*
* sh.const.c: String constants for tcsh.
*/
@@ -32,7 +32,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: tc.const.c,v 3.91 2009/06/19 16:35:33 christos Exp $")
+RCSID("$tcsh: tc.const.c,v 3.98 2011/04/14 18:25:26 christos Exp $")
Char STRlogout[] = { 'l', 'o', 'g', 'o', 'u', 't', '\0' };
Char STRautologout[] = { 'a', 'u', 't', 'o', 'l', 'o', 'g', 'o', 'u', 't',
@@ -43,6 +43,7 @@ Char STRrootdefautologout[] = { '1', '5', '\0' };
#endif
Char STRautomatic[] = { 'a', 'u', 't', 'o', 'm', 'a', 't', 'i', 'c',
'\0' };
+Char STRanyerror[] = { 'a', 'n', 'y', 'e', 'r', 'r', 'o', 'r', '\0' };
Char STRhangup[] = { 'h', 'a', 'n', 'g', 'u', 'p', '\0' };
Char STRaout[] = { 'a', '.', 'o', 'u', 't', '\0' };
Char STRtty[] = { 't', 't', 'y', '\0' };
@@ -60,6 +61,7 @@ Char STR_[] = { '_', '\0' };
Char STRNULL[] = { '\0' };
Char STRtcsh[] = { 't', 'c', 's', 'h', '\0' };
Char STRhome[] = { 'h', 'o', 'm', 'e', '\0' };
+Char STReuser[] = { 'e', 'u', 's', 'e', 'r', '\0'};
Char STRuser[] = { 'u', 's', 'e', 'r', '\0' };
Char STRgroup[] = { 'g', 'r', 'o', 'u', 'p', '\0' };
#ifdef AFS
@@ -67,6 +69,7 @@ Char STRafsuser[] = { 'a', 'f', 's', 'u', 's', 'e', 'r', '\0' };
#endif /* AFS */
Char STRterm[] = { 't', 'e', 'r', 'm', '\0' };
Char STRversion[] = { 'v', 'e', 'r', 's', 'i', 'o', 'n', '\0' };
+Char STReuid[] = { 'e', 'u', 'i', 'd', '\0' };
Char STRuid[] = { 'u', 'i', 'd', '\0' };
Char STRgid[] = { 'g', 'i', 'd', '\0' };
Char STRunknown[] = { 'u', 'n', 'k', 'n', 'o', 'w', 'n', '\0' };
@@ -161,7 +164,7 @@ Char STRLANGBIG5[] = { 'z', 'h', '_', 'T', 'W', '.', 'B', 'i', 'g', '5',
'\0' };
Char STRLANGEUCZH[] = { '\0' };
Char STRLANGEUCZHB[] = { '\0' };
-# elif defined(linux) || defined(__GNU__) || defined(__GLIBC__)
+# elif defined(__linux__) || defined(__GNU__) || defined(__GLIBC__)
Char STRLANGEUCJP[] = { 'j', 'a', '_', 'J', 'P', '.', 'E', 'U', 'C', '-',
'J', 'P', '\0' };
Char STRLANGEUCKR[] = { 'k', 'o', '_', 'K', 'R', '.', 'E', 'U', 'C', '\0' };
@@ -249,8 +252,7 @@ Char STRsavehist[] = { 's', 'a', 'v', 'e', 'h', 'i', 's', 't', '\0' };
Char STRnormal[] = { 'n', 'o', 'r', 'm', 'a', 'l', '\0' };
Char STRsldtlogout[] = { '/', '.', 'l', 'o', 'g', 'o', 'u', 't', '\0' };
Char STRjobs[] = { 'j', 'o', 'b', 's', '\0' };
-Char STRdeftcshprompt[] = { '%', '#', ' ', '\0' };
-Char STRdefcshprompt[] = { '%', '\0' };
+Char STRdefprompt[] = { '%', '#', ' ', '\0' };
Char STRmquestion[] = { '%', 'R', '?' | QUOTE, ' ', '\0' };
Char STRKCORRECT[] = { 'C', 'O', 'R', 'R', 'E', 'C', 'T', '>', '%', 'R',
' ', '(', 'y', '|', 'n', '|', 'e', '|', 'a', ')',
@@ -305,6 +307,8 @@ Char STRmn[] = { '-', 'n', '\0' };
Char STRminus[] = { '-', '\0' };
Char STRnoglob[] = { 'n', 'o', 'g', 'l', 'o', 'b', '\0' };
Char STRnonomatch[] = { 'n', 'o', 'n', 'o', 'm', 'a', 't', 'c', 'h', '\0' };
+Char STRglobstar[] = { 'g', 'l', 'o', 'b', 's', 't', 'a', 'r', '\0' };
+Char STRglobdot[] = { 'g', 'l', 'o', 'b', 'd', 'o', 't', '\0' };
Char STRfakecom1[] = { '`', ' ', '.', '.', '.', ' ', '`', '\0' };
Char STRampm[] = { 'a', 'm', 'p', 'm', '\0' };
Char STRtime[] = { 't', 'i', 'm', 'e', '\0' };
@@ -378,9 +382,11 @@ Char STRQNULL[] = { '\0' | QUOTE, '\0' };
Char STRcorrect[] = { 'c', 'o', 'r', 'r', 'e', 'c', 't', '\0' };
Char STRcmd[] = { 'c', 'm', 'd', '\0' };
Char STRall[] = { 'a', 'l', 'l', '\0' };
+Char STRalways[] = { 'a', 'l', 'w', 'a', 'y', 's', '\0' };
Char STRerase[] = { 'e', 'r', 'a', 's', 'e', '\0' };
Char STRprev[] = { 'p', 'r', 'e', 'v', '\0' };
Char STRcomplete[] = { 'c', 'o', 'm', 'p', 'l', 'e', 't', 'e', '\0' };
+Char STREnhance[] = { 'E', 'n', 'h', 'a', 'n', 'c', 'e', '\0' };
Char STRenhance[] = { 'e', 'n', 'h', 'a', 'n', 'c', 'e', '\0' };
Char STRigncase[] = { 'i', 'g', 'n', 'c', 'a', 's', 'e', '\0' };
Char STRautoexpand[] = { 'a', 'u', 't', 'o', 'e', 'x', 'p', 'a', 'n', 'd',
@@ -388,6 +394,7 @@ Char STRautoexpand[] = { 'a', 'u', 't', 'o', 'e', 'x', 'p', 'a', 'n', 'd',
Char STRautocorrect[] = { 'a', 'u', 't', 'o', 'c', 'o', 'r', 'r', 'e', 'c',
't', '\0' };
Char STRautolist[] = { 'a', 'u', 't', 'o', 'l', 'i', 's', 't', '\0' };
+Char STRautorehash[] = { 'a', 'u', 't', 'o', 'r', 'e', 'h', 'a', 's', 'h', '\0' };
Char STRbeepcmd[] = { 'b', 'e', 'e', 'p', 'c', 'm', 'd', '\0' };
Char STRmatchbeep[] = { 'm', 'a', 't', 'c', 'h', 'b', 'e', 'e', 'p', '\0' };
Char STRnomatch[] = { 'n', 'o', 'm', 'a', 't', 'c', 'h', '\0' };
@@ -505,3 +512,7 @@ Char STRrepeat[] = { 'r', 'e', 'p', 'e', 'a', 't', '\0' };
Char STReof[] = { '^', 'D', '\b', '\b', '\0' };
Char STRonlyhistory[] = { 'o', 'n', 'l', 'y', 'h', 'i', 's', 't', 'o', 'r',
'y', '\0' };
+Char STRparseoctal[] = { 'p', 'a', 'r', 's', 'e', 'o', 'c', 't', 'a', 'l',
+ '\0' };
+Char STRli[] = { 'l', 'i', '#', '\0' };
+Char STRco[] = { 'c', 'o', '#', '\0' };
diff --git a/tc.decls.h b/tc.decls.h
index d6a9f9e1399b..de8ec551b03d 100644
--- a/tc.decls.h
+++ b/tc.decls.h
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/tc.decls.h,v 3.64 2008/05/14 20:10:30 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/tc.decls.h,v 3.65 2010/02/09 20:26:13 christos Exp $ */
/*
* tc.decls.h: Function declarations from all the tcsh modules
*/
@@ -259,9 +259,9 @@ extern void sched_run (void);
* tc.str.c:
*/
#ifdef WIDE_STRINGS
-extern size_t one_mbtowc (wchar_t *, const char *, size_t);
-extern size_t one_wctomb (char *, wchar_t);
-extern int rt_mbtowc (wchar_t *, const char *, size_t);
+extern size_t one_mbtowc (Char *, const char *, size_t);
+extern size_t one_wctomb (char *, Char);
+extern int rt_mbtowc (Char *, const char *, size_t);
#else
#define one_mbtowc(PWC, S, N) \
((void)(N), *(PWC) = (unsigned char)*(S), (size_t)1)
diff --git a/tc.disc.c b/tc.disc.c
index 30f46c4c7c9f..cca1290345ae 100644
--- a/tc.disc.c
+++ b/tc.disc.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/tc.disc.c,v 3.17 2006/03/02 18:46:45 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/tc.disc.c,v 3.18 2011/01/09 16:25:29 christos Exp $ */
/*
* tc.disc.c: Functions to set/clear line disciplines
*
@@ -33,7 +33,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: tc.disc.c,v 3.17 2006/03/02 18:46:45 christos Exp $")
+RCSID("$tcsh: tc.disc.c,v 3.18 2011/01/09 16:25:29 christos Exp $")
#ifdef OREO
#include <compat.h>
@@ -43,7 +43,7 @@ RCSID("$tcsh: tc.disc.c,v 3.17 2006/03/02 18:46:45 christos Exp $")
static int add_discipline = 0; /* Did we add a line discipline */
-#if defined(IRIS4D) || defined(OREO) || defined(sonyrisc)
+#if defined(IRIS4D) || defined(OREO) || defined(sonyrisc) || defined(__ANDROID__)
# define HAVE_DISC
# ifndef POSIX
static struct termio otermiob;
diff --git a/tc.func.c b/tc.func.c
index 23262b7ba5f2..b13fe04dd2d8 100644
--- a/tc.func.c
+++ b/tc.func.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/tc.func.c,v 3.139 2009/06/25 21:15:38 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/tc.func.c,v 3.148 2011/12/14 16:36:44 christos Exp $ */
/*
* tc.func.c: New tcsh builtins.
*/
@@ -32,7 +32,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: tc.func.c,v 3.139 2009/06/25 21:15:38 christos Exp $")
+RCSID("$tcsh: tc.func.c,v 3.148 2011/12/14 16:36:44 christos Exp $")
#include "ed.h"
#include "ed.defns.h" /* for the function names */
@@ -118,7 +118,7 @@ expand_lex(const struct wordent *sp0, int from, int to)
* elsewhere.
*/
if ((*s & QUOTE)
- && (((*s & TRIM) == HIST) ||
+ && (((*s & TRIM) == HIST && HIST != '\0') ||
(((*s & TRIM) == '\'') && (prev_c != '\\')) ||
(((*s & TRIM) == '\"') && (prev_c != '\\')) ||
(((*s & TRIM) == '\\') && (prev_c != '\\')))) {
@@ -174,7 +174,7 @@ Itoa(int n, size_t min_digits, Char attributes)
do {
*p++ = un % 10 + '0';
un /= 10;
- } while ((pad && --min_digits > 0) || un != 0);
+ } while ((pad && (ssize_t)--min_digits > 0) || un != 0);
res = xmalloc((p - buf + 2) * sizeof(*res));
s = res;
@@ -671,7 +671,7 @@ auto_lock(void)
struct authorization *apw;
extern char *crypt16 (const char *, const char *);
-# define XCRYPT(a, b) crypt16(a, b)
+# define XCRYPT(pw, a, b) crypt16(a, b)
if ((pw = xgetpwuid(euid)) != NULL && /* effective user passwd */
(apw = getauthuid(euid)) != NULL) /* enhanced ultrix passwd */
@@ -681,7 +681,7 @@ auto_lock(void)
struct spwd *spw;
-# define XCRYPT(a, b) crypt(a, b)
+# define XCRYPT(pw, a, b) crypt(a, b)
if ((pw = xgetpwuid(euid)) != NULL) { /* effective user passwd */
errno = 0;
@@ -695,7 +695,12 @@ auto_lock(void)
#else
-#define XCRYPT(a, b) crypt(a, b)
+
+#ifdef __CYGWIN__
+# define XCRYPT(pw, a, b) cygwin_xcrypt(pw, a, b)
+#else
+# define XCRYPT(pw, a, b) crypt(a, b)
+#endif
#if !defined(__MVS__)
if ((pw = xgetpwuid(euid)) != NULL) /* effective user passwd */
@@ -727,7 +732,7 @@ auto_lock(void)
#endif
pp = xgetpass("Password:");
- crpp = XCRYPT(pp, srpp);
+ crpp = XCRYPT(pw, pp, srpp);
if ((strcmp(crpp, srpp) == 0)
#ifdef AFS
|| (ka_UserAuthenticateGeneral(KA_USERAUTH_VERSION,
@@ -1035,7 +1040,7 @@ aliasrun(int cnt, Char *s1, Char *s2)
cleanup_until(&w);
pendjob();
/* Restore status */
- setv(STRstatus, putn(status), VAR_READWRITE);
+ setv(STRstatus, putn((tcsh_number_t)status), VAR_READWRITE);
}
void
@@ -1635,7 +1640,7 @@ fixio(int fd, int e)
# endif /* !EWOULDBLOCK || EWOULDBLOCK != EAGAIN */
#endif /* POSIX && EAGAIN */
- e = 0;
+ e = -1;
#ifdef FDRETRY
# ifdef F_SETFL
/*
@@ -1683,19 +1688,17 @@ fixio(int fd, int e)
if (fcntl(fd, F_SETFL, e) == -1)
return -1;
else
- e = 1;
+ e = 0;
# endif /* F_SETFL */
# ifdef FIONBIO
e = 0;
if (ioctl(fd, FIONBIO, (ioctl_t) &e) == -1)
return -1;
- else
- e = 1;
# endif /* FIONBIO */
#endif /* FDRETRY */
- return e ? 0 : -1;
+ return e;
case EINTR:
return 0;
@@ -1928,7 +1931,7 @@ getremotehost(int dest_fd)
(ptr = strstr(domain, s)) != NULL) {
char *cbuf;
- cbuf = strspl(name, ptr);
+ cbuf = strspl(name, ptr + strlen(s));
if (getaddrinfo(cbuf, NULL, &hints, &res) != 0)
res = NULL;
xfree(cbuf);
@@ -1939,6 +1942,7 @@ getremotehost(int dest_fd)
if (res != NULL) {
if (res->ai_canonname != NULL) {
strncpy(hbuf, res->ai_canonname, sizeof(hbuf));
+ hbuf[sizeof(hbuf) - 1] = '\0';
host = hbuf;
}
freeaddrinfo(res);
@@ -2025,12 +2029,13 @@ remotehost(void)
}
wait_options = 0;
done:
+ cleanup_push(&hostname, strbuf_cleanup);
xclose(fds[0]);
while ((wait_res = waitpid(pid, &status, wait_options)) == -1
&& errno == EINTR)
handle_pending_signals();
- cleanup_push(&hostname, strbuf_cleanup);
- if (wait_res == pid && WIFEXITED(status) && WEXITSTATUS(status) == 0) {
+ if (hostname.len > 0 && wait_res == pid && WIFEXITED(status)
+ && WEXITSTATUS(status) == 0) {
strbuf_terminate(&hostname);
tsetenv(STRREMOTEHOST, str2short(hostname.s));
}
diff --git a/tc.nls.c b/tc.nls.c
index 5a75f680becd..7cc6e42bf338 100644
--- a/tc.nls.c
+++ b/tc.nls.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/tc.nls.c,v 3.21 2006/09/26 16:45:30 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/tc.nls.c,v 3.23 2010/02/12 22:17:20 christos Exp $ */
/*
* tc.nls.c: NLS handling
*/
@@ -32,9 +32,33 @@
*/
#include "sh.h"
-RCSID("$tcsh: tc.nls.c,v 3.21 2006/09/26 16:45:30 christos Exp $")
+RCSID("$tcsh: tc.nls.c,v 3.23 2010/02/12 22:17:20 christos Exp $")
+
#ifdef WIDE_STRINGS
+# ifdef HAVE_WCWIDTH
+# ifdef UTF16_STRINGS
+int
+xwcwidth (wint_t wchar)
+{
+ wchar_t ws[2];
+
+ if (wchar <= 0xffff)
+ return wcwidth ((wchar_t) wchar);
+ /* UTF-16 systems can't handle these values directly in calls to wcwidth.
+ However, they can handle them as surrogate pairs in calls to wcswidth.
+ What we do here is to convert UTF-32 values >= 0x10000 into surrogate
+ pairs and compute the width by calling wcswidth. */
+ wchar -= 0x10000;
+ ws[0] = 0xd800 | (wchar >> 10);
+ ws[1] = 0xdc00 | (wchar & 0x3ff);
+ return wcswidth (ws, 2);
+}
+# else
+#define xwcwidth wcwidth
+# endif /* !UTF16_STRINGS */
+# endif /* HAVE_WCWIDTH */
+
int
NLSWidth(Char c)
{
@@ -42,7 +66,7 @@ NLSWidth(Char c)
int l;
if (c & INVALID_BYTE)
return 1;
- l = wcwidth(c);
+ l = xwcwidth((wchar_t) c);
return l >= 0 ? l : 0;
# else
return iswprint(c) != 0;
@@ -58,7 +82,7 @@ NLSStringWidth(const Char *s)
while (*s) {
c = *s++;
#ifdef HAVE_WCWIDTH
- if ((l = wcwidth(c)) < 0)
+ if ((l = xwcwidth((wchar_t) c)) < 0)
l = 2;
#else
l = iswprint(c) != 0;
diff --git a/tc.nls.h b/tc.nls.h
index d681a9e05a61..3de76c7b655e 100644
--- a/tc.nls.h
+++ b/tc.nls.h
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/tc.nls.h,v 3.13 2006/02/14 14:07:36 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/tc.nls.h,v 3.14 2011/02/25 23:57:21 christos Exp $ */
/*
* tc.nls.h: NLS support
*
@@ -34,8 +34,6 @@
#ifndef _h_tc_nls
#define _h_tc_nls
-#include "sh.h"
-
#ifdef WIDE_STRINGS
extern int NLSWidth(Char);
extern int NLSStringWidth (const Char *);
diff --git a/tc.os.c b/tc.os.c
index 7738321b4b6a..3377549ed712 100644
--- a/tc.os.c
+++ b/tc.os.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/tc.os.c,v 3.69 2006/08/24 20:56:31 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/tc.os.c,v 3.72 2011/01/25 13:58:19 christos Exp $ */
/*
* tc.os.c: OS Dependent builtin functions
*/
@@ -32,7 +32,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: tc.os.c,v 3.69 2006/08/24 20:56:31 christos Exp $")
+RCSID("$tcsh: tc.os.c,v 3.72 2011/01/25 13:58:19 christos Exp $")
#include "tw.h"
#include "ed.h"
@@ -1584,3 +1584,42 @@ isapad(void)
return(res);
}
#endif
+
+#ifdef __ANDROID__
+#include <stdio.h>
+/* Android (<= 2.1?) has an incomplete ttyname implementation. */
+char *
+ttyname(int fd)
+{
+ char path[64];
+ ssize_t siz;
+ static char ttyname[32];
+
+ if (!isatty(fd))
+ return NULL;
+
+ (void)snprintf(path, sizeof(path), "/proc/self/fd/%d", fd);
+ siz = readlink(path, ttyname, sizeof(ttyname));
+ if (siz < 0 || siz == sizeof(ttyname))
+ return NULL;
+ ttyname[siz] = '\0';
+ return ttyname;
+}
+#endif /* __ANDROID__ */
+
+#if defined(__CYGWIN__) && !defined(NO_CRYPT)
+#undef CHAR /* Collides with Win32 API */
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <sys/cygwin.h>
+char *
+cygwin_xcrypt(struct passwd *pw, const char *password, const char *expected_pwd)
+{
+ static char invalid_password[] = "\377";
+ HANDLE token = cygwin_logon_user(pw, password);
+ if (token == INVALID_HANDLE_VALUE)
+ return invalid_password;
+ CloseHandle(token);
+ return (char *) expected_pwd;
+}
+#endif /* __CYGWIN__ && !NO_CRYPT */
diff --git a/tc.os.h b/tc.os.h
index 74f0d6faaa62..6a46bafad465 100644
--- a/tc.os.h
+++ b/tc.os.h
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/tc.os.h,v 3.102 2007/07/05 14:13:06 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/tc.os.h,v 3.105 2011/02/04 18:00:26 christos Exp $ */
/*
* tc.os.h: Shell os dependent defines
*/
@@ -164,7 +164,7 @@ struct ucred {
* It would break on glibc, where all this is
* defined in <termios.h>. Wrapper added.
*/
-#if !defined(linux) && !defined(__GNU__) && !defined(__GLIBC__) && !defined(_VMS_POSIX)
+#if !defined(__linux__) && !defined(__GNU__) && !defined(__GLIBC__) && !defined(_VMS_POSIX)
# if defined(INTEL) || defined(u3b2) || defined (u3b5) || defined(ub15) || defined(u3b20d) || defined(ISC) || defined(SCO) || defined(tower32)
# ifdef TIOCGWINSZ
/*
@@ -361,6 +361,18 @@ struct ucred {
#ifndef O_RDWR
# define O_RDWR 2
#endif /* O_RDWR */
+#ifndef O_TEMPORARY
+# define O_TEMPORARY 0
+#endif /* O_TEMPORARY */
+#ifndef O_EXCL
+# define O_EXCL 0
+#endif /* O_EXCL */
+#ifndef O_LARGEFILE
+# define O_LARGEFILE 0
+#endif /* O_LARGEFILE */
+#ifndef O_CREAT
+# define O_CREAT 0
+#endif /* O_CREAT */
/*
* Lseek()
@@ -601,4 +613,8 @@ extern int killpg (pid_t, int);
# endif
#endif
+#if defined(__CYGWIN__) && !defined(NO_CRYPT)
+extern char *cygwin_xcrypt(struct passwd *, const char *, const char *);
+#endif /* __CYGWIN__ && !NO_CRYPT */
+
#endif /* _h_tc_os */
diff --git a/tc.prompt.c b/tc.prompt.c
index f63fdf0d3cbf..2ac23552238a 100644
--- a/tc.prompt.c
+++ b/tc.prompt.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/tc.prompt.c,v 3.67 2006/11/17 16:26:58 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/tc.prompt.c,v 3.70 2011/10/27 22:41:06 christos Exp $ */
/*
* tc.prompt.c: Prompt printing stuff
*/
@@ -32,7 +32,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: tc.prompt.c,v 3.67 2006/11/17 16:26:58 christos Exp $")
+RCSID("$tcsh: tc.prompt.c,v 3.70 2011/10/27 22:41:06 christos Exp $")
#include "ed.h"
#include "tw.h"
@@ -213,8 +213,9 @@ tprintf(int what, const Char *fmt, const char *str, time_t tim, ptr_t info)
}
break;
case '#':
- Strbuf_append1(&buf,
- attributes | ((uid == 0) ? PRCHROOT : PRCH));
+ Scp = (uid == 0 || euid == 0) ? PRCHROOT : PRCH;
+ if (Scp != '\0')
+ Strbuf_append1(&buf, attributes | Scp);
break;
case '!':
case 'h':
@@ -458,6 +459,11 @@ tprintf(int what, const Char *fmt, const char *str, time_t tim, ptr_t info)
Strbuf_append1(&buf, attributes | *z++);
}
break;
+ case 'N':
+ if ((z = varval(STReuser)) != STRNULL)
+ while (*z)
+ Strbuf_append1(&buf, attributes | *z++);
+ break;
case 'l':
#ifndef HAVENOUTMP
if (what == FMT_WHO) {
@@ -528,6 +534,8 @@ tprintf(int what, const Char *fmt, const char *str, time_t tim, ptr_t info)
for (pp = proclist.p_next; pp; pp = pp->p_next)
njobs++;
+ if (njobs == -1)
+ njobs++;
p = Itoa(njobs, 1, attributes);
Strbuf_append(&buf, p);
xfree(p);
diff --git a/tc.sig.c b/tc.sig.c
index 343754f29b22..92bc798b4fa8 100644
--- a/tc.sig.c
+++ b/tc.sig.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/tc.sig.c,v 3.36 2006/08/24 20:56:31 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/tc.sig.c,v 3.40 2012/01/25 15:34:41 christos Exp $ */
/*
* tc.sig.c: Signal routine emulations
*/
@@ -32,7 +32,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: tc.sig.c,v 3.36 2006/08/24 20:56:31 christos Exp $")
+RCSID("$tcsh: tc.sig.c,v 3.40 2012/01/25 15:34:41 christos Exp $")
#include "tc.wait.h"
@@ -60,26 +60,38 @@ int alrmcatch_disabled; /* = 0; */
int phup_disabled; /* = 0; */
int pchild_disabled; /* = 0; */
int pintr_disabled; /* = 0; */
+int handle_interrupt; /* = 0; */
-void
+int
handle_pending_signals(void)
{
+ int rv = 0;
if (!phup_disabled && phup_pending) {
phup_pending = 0;
+ handle_interrupt++;
phup();
+ handle_interrupt--;
}
if (!pintr_disabled && pintr_pending) {
pintr_pending = 0;
+ handle_interrupt++;
pintr();
+ handle_interrupt--;
+ rv = 1;
}
if (!pchild_disabled && pchild_pending) {
pchild_pending = 0;
+ handle_interrupt++;
pchild();
+ handle_interrupt--;
}
if (!alrmcatch_disabled && alrmcatch_pending) {
alrmcatch_pending = 0;
+ handle_interrupt++;
alrmcatch();
+ handle_interrupt--;
}
+ return rv;
}
void
diff --git a/tc.sig.h b/tc.sig.h
index cf9d61a4cb79..4e279981e360 100644
--- a/tc.sig.h
+++ b/tc.sig.h
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/tc.sig.h,v 3.33 2007/07/05 14:13:06 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/tc.sig.h,v 3.34 2010/11/29 15:28:58 christos Exp $ */
/*
* tc.sig.h: Signal handling
*
@@ -159,7 +159,7 @@ extern int phup_disabled;
extern int pintr_disabled;
extern void sigset_interrupting(int, void (*) (int));
-extern void handle_pending_signals(void);
+extern int handle_pending_signals(void);
extern void queue_alrmcatch(int);
extern void queue_pchild(int);
diff --git a/tc.str.c b/tc.str.c
index 568a1efffcef..ca00721f4bd2 100644
--- a/tc.str.c
+++ b/tc.str.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/tc.str.c,v 3.30 2009/06/25 21:27:38 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/tc.str.c,v 3.42 2012/01/10 21:34:31 christos Exp $ */
/*
* tc.str.c: Short string package
* This has been a lesson of how to write buggy code!
@@ -33,9 +33,10 @@
*/
#include "sh.h"
+#include <assert.h>
#include <limits.h>
-RCSID("$tcsh: tc.str.c,v 3.30 2009/06/25 21:27:38 christos Exp $")
+RCSID("$tcsh: tc.str.c,v 3.42 2012/01/10 21:34:31 christos Exp $")
#define MALLOC_INCR 128
#ifdef WIDE_STRINGS
@@ -46,7 +47,7 @@ RCSID("$tcsh: tc.str.c,v 3.30 2009/06/25 21:27:38 christos Exp $")
#ifdef WIDE_STRINGS
size_t
-one_mbtowc(wchar_t *pwc, const char *s, size_t n)
+one_mbtowc(Char *pwc, const char *s, size_t n)
{
int len;
@@ -61,7 +62,7 @@ one_mbtowc(wchar_t *pwc, const char *s, size_t n)
}
size_t
-one_wctomb(char *s, wchar_t wchar)
+one_wctomb(char *s, Char wchar)
{
int len;
@@ -69,7 +70,23 @@ one_wctomb(char *s, wchar_t wchar)
s[0] = wchar & 0xFF;
len = 1;
} else {
- len = wctomb(s, wchar);
+#ifdef UTF16_STRINGS
+ if (wchar >= 0x10000) {
+ /* UTF-16 systems can't handle these values directly in calls to
+ wctomb. Convert value to UTF-16 surrogate and call wcstombs to
+ convert the "string" to the correct multibyte representation,
+ if any. */
+ wchar_t ws[3];
+ wchar -= 0x10000;
+ ws[0] = 0xd800 | (wchar >> 10);
+ ws[1] = 0xdc00 | (wchar & 0x3ff);
+ ws[2] = 0;
+ /* The return value of wcstombs excludes the trailing 0, so len is
+ the correct number of multibytes for the Unicode char. */
+ len = wcstombs (s, ws, MB_CUR_MAX + 1);
+ } else
+#endif
+ len = wctomb(s, (wchar_t) wchar);
if (len == -1)
s[0] = wchar;
if (len <= 0)
@@ -79,14 +96,55 @@ one_wctomb(char *s, wchar_t wchar)
}
int
-rt_mbtowc(wchar_t *pwc, const char *s, size_t n)
+rt_mbtowc(Char *pwc, const char *s, size_t n)
{
int ret;
char back[MB_LEN_MAX];
+ wchar_t tmp;
+#if defined(UTF16_STRINGS) && defined(HAVE_MBRTOWC)
+# if defined(AUTOSET_KANJI)
+ static mbstate_t mb_zero, mb;
+ /*
+ * Workaround the Shift-JIS endcoding that translates unshifted 7 bit ASCII!
+ */
+ if (!adrof(STRnokanji) && n && pwc && s && (*s == '\\' || *s == '~') &&
+ !memcmp(&mb, &mb_zero, sizeof(mb)))
+ {
+ *pwc = *s;
+ return 1;
+ }
+# else
+ mbstate_t mb;
+# endif
+
+ memset (&mb, 0, sizeof mb);
+ ret = mbrtowc(&tmp, s, n, &mb);
+#else
+ ret = mbtowc(&tmp, s, n);
+#endif
+ if (ret > 0) {
+ *pwc = tmp;
+#if defined(UTF16_STRINGS) && defined(HAVE_MBRTOWC)
+ if (tmp >= 0xd800 && tmp <= 0xdbff) {
+ /* UTF-16 surrogate pair. Fetch second half and compute
+ UTF-32 value. Dispense with the inverse test in this case. */
+ size_t n2 = mbrtowc(&tmp, s + ret, n - ret, &mb);
+ if (n2 == 0 || n2 == (size_t)-1 || n2 == (size_t)-2)
+ ret = -1;
+ else {
+ *pwc = (((*pwc & 0x3ff) << 10) | (tmp & 0x3ff)) + 0x10000;
+ ret += n2;
+ }
+ } else
+#endif
+ if (wctomb(back, *pwc) != ret || memcmp(s, back, ret) != 0)
+ ret = -1;
- ret = mbtowc(pwc, s, n);
- if (ret > 0 && (wctomb(back, *pwc) != ret || memcmp(s, back, ret) != 0))
+ } else if (ret == -2)
ret = -1;
+ else if (ret == 0)
+ *pwc = '\0';
+
return ret;
}
#endif
@@ -186,7 +244,7 @@ short2str(const Char *src)
return (sdst);
}
-#ifndef WIDE_STRINGS
+#if !defined (WIDE_STRINGS) || defined (UTF16_STRINGS)
Char *
s_strcpy(Char *dst, const Char *src)
{
@@ -334,18 +392,20 @@ int
s_strcasecmp(const Char *str1, const Char *str2)
{
#ifdef WIDE_STRINGS
- wchar_t l1 = 0, l2 = 0;
- for (; *str1 && ((*str1 == *str2 && (l1 = l2 = 0) == 0) ||
- (l1 = towlower(*str1)) == (l2 = towlower(*str2))); str1++, str2++)
- continue;
-
+ wint_t l1 = 0, l2 = 0;
+ for (; *str1; str1++, str2++)
+ if (*str1 == *str2)
+ l1 = l2 = 0;
+ else if ((l1 = towlower(*str1)) != (l2 = towlower(*str2)))
+ break;
#else
- unsigned char c1, c2, l1 = 0, l2 = 0;
- for (; *str1 && ((*str1 == *str2 && (l1 = l2 = 0) == 0) ||
- ((c1 = (unsigned char)*str1) == *str1 &&
- (c2 = (unsigned char)*str2) == *str2 &&
- (l1 = tolower(c1)) == (l2 = tolower(c2)))); str1++, str2++)
- continue;
+ unsigned char l1 = 0, l2 = 0;
+ for (; *str1; str1++, str2++)
+ if (*str1 == *str2)
+ l1 = l2 = 0;
+ else if ((l1 = tolower((unsigned char)*str1)) !=
+ (l2 = tolower((unsigned char)*str2)))
+ break;
#endif
/*
* The following case analysis is necessary so that characters which look
@@ -568,6 +628,7 @@ STRBUF##_store1(struct STRBUF *buf, CHAR c) \
buf->size *= 2; \
buf->s = xrealloc(buf->s, buf->size * sizeof(*buf->s)); \
} \
+ assert(buf->s); \
buf->s[buf->len] = c; \
} \
\
diff --git a/tc.wait.h b/tc.wait.h
index 4bda506ef9a1..16f09b3a34f0 100644
--- a/tc.wait.h
+++ b/tc.wait.h
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/tc.wait.h,v 3.14 2004/12/25 21:15:08 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/tc.wait.h,v 3.15 2011/02/04 18:00:26 christos Exp $ */
/*
* tc.wait.h: <sys/wait.h> for machines that don't have it or have it and
* is incorrect.
@@ -39,7 +39,7 @@
* We try to use the system's wait.h when we can...
*/
-#if SYSVREL > 0 && !defined(linux) && !defined(__GNU__) && !defined(__GLIBC__)
+#if SYSVREL > 0 && !defined(__linux__) && !defined(__GNU__) && !defined(__GLIBC__)
# ifdef hpux
# ifndef __hpux
# define NEEDwait
diff --git a/tc.who.c b/tc.who.c
index 2aa0686b7f4f..675910915f42 100644
--- a/tc.who.c
+++ b/tc.who.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/tc.who.c,v 3.51 2006/03/03 22:08:45 amold Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/tc.who.c,v 3.57 2012/01/17 20:53:38 christos Exp $ */
/*
* tc.who.c: Watch logins and logouts...
*/
@@ -32,7 +32,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: tc.who.c,v 3.51 2006/03/03 22:08:45 amold Exp $")
+RCSID("$tcsh: tc.who.c,v 3.57 2012/01/17 20:53:38 christos Exp $")
#include "tc.h"
@@ -44,6 +44,11 @@ RCSID("$tcsh: tc.who.c,v 3.51 2006/03/03 22:08:45 amold Exp $")
#ifdef HAVE_UTMPX_H
# include <utmpx.h>
+# define UTNAMLEN sizeof(((struct utmpx *) 0)->ut_name)
+# define UTLINLEN sizeof(((struct utmpx *) 0)->ut_line)
+# ifdef HAVE_STRUCT_UTMPX_UT_HOST
+# define UTHOSTLEN sizeof(((struct utmpx *) 0)->ut_host)
+# endif
/* I just redefine a few words here. Changing every occurrence below
* seems like too much of work. All UTMP functions have equivalent
* UTMPX counterparts, so they can be added all here when needed.
@@ -55,68 +60,81 @@ RCSID("$tcsh: tc.who.c,v 3.51 2006/03/03 22:08:45 amold Exp $")
# define TCSH_PATH_UTMP _PATH_UTMPX
# elif defined(UTMPX_FILE)
# define TCSH_PATH_UTMP UTMPX_FILE
-# endif /* __UTMPX_FILE && !UTMPX_FILE */
-# ifdef TCSH_PATH_UTMP
+# elif __FreeBSD_version >= 900000
+# /* Why isn't this defined somewhere? */
+# define TCSH_PATH_UTMP "/var/run/utx.active"
+# elif defined(__hpux)
+# define TCSH_PATH_UTMP "/etc/utmpx"
+# endif
+# if defined(TCSH_PATH_UTMP) || !defined(HAVE_UTMP_H)
# define utmp utmpx
-# if defined(HAVE_STRUCT_UTMP_UT_TV)
+# define TCSH_USE_UTMPX
+# if defined(HAVE_GETUTENT) || defined(HAVE_GETUTXENT)
+# define getutent getutxent
+# define setutent setutxent
+# define endutent endutxent
+# endif /* HAVE_GETUTENT || HAVE_GETUTXENT */
+# if defined(HAVE_STRUCT_UTMPX_UT_TV)
# define ut_time ut_tv.tv_sec
-# elif defined(HAVE_STRUCT_UTMP_UT_XTIME)
+# elif defined(HAVE_STRUCT_UTMPX_UT_XTIME)
# define ut_time ut_xtime
# endif
-# ifdef HAVE_STRUCT_UTMP_UT_USER
+# if defined(HAVE_STRUCT_UTMPX_UT_USER)
# define ut_name ut_user
# endif
-# ifdef HAVE_GETUTENT
-# define getutent getutxent
-# define setutent setutxent
-# define endutent endutxent
-# endif /* HAVE_GETUTENT */
-# else
-# ifdef HAVE_UTMP_H
-# include <utmp.h>
-# endif /* WINNT_NATIVE */
-# endif /* TCSH_PATH_UTMP */
-#else /* !HAVE_UTMPX_H */
-# ifdef HAVE_UTMP_H
-# include <utmp.h>
-# endif /* WINNT_NATIVE */
+# endif /* TCSH_PATH_UTMP || !HAVE_UTMP_H */
#endif /* HAVE_UTMPX_H */
-#ifndef BROKEN_CC
-# define UTNAMLEN sizeof(((struct utmp *) 0)->ut_name)
-# define UTLINLEN sizeof(((struct utmp *) 0)->ut_line)
-# ifdef HAVE_STRUCT_UTMP_UT_HOST
-# ifdef _SEQUENT_
-# define UTHOSTLEN 100
-# else
-# define UTHOSTLEN sizeof(((struct utmp *) 0)->ut_host)
-# endif
-# endif /* HAVE_STRUCT_UTMP_UT_HOST */
-#else
+#if !defined(TCSH_USE_UTMPX) && defined(HAVE_UTMP_H)
+# include <utmp.h>
+# if defined(HAVE_STRUCT_UTMP_UT_TV)
+# define ut_time ut_tv.tv_sec
+# elif defined(HAVE_STRUCT_UTMP_UT_XTIME)
+# define ut_time ut_xtime
+# endif
+# if defined(HAVE_STRUCT_UTMP_UT_USER)
+# define ut_name ut_user
+# endif
+# ifndef BROKEN_CC
+# define UTNAMLEN sizeof(((struct utmp *) 0)->ut_name)
+# define UTLINLEN sizeof(((struct utmp *) 0)->ut_line)
+# ifdef HAVE_STRUCT_UTMP_UT_HOST
+# ifdef _SEQUENT_
+# define UTHOSTLEN 100
+# else
+# define UTHOSTLEN sizeof(((struct utmp *) 0)->ut_host)
+# endif
+# endif /* HAVE_STRUCT_UTMP_UT_HOST */
+# else
/* give poor cc a little help if it needs it */
struct utmp __ut;
-
-# define UTNAMLEN sizeof(__ut.ut_name)
-# define UTLINLEN sizeof(__ut.ut_line)
-# ifdef HAVE_STRUCT_UTMP_UT_HOST
-# ifdef _SEQUENT_
-# define UTHOSTLEN 100
+# define UTNAMLEN sizeof(__ut.ut_name)
+# define UTLINLEN sizeof(__ut.ut_line)
+# ifdef HAVE_STRUCT_UTMP_UT_HOST
+# ifdef _SEQUENT_
+# define UTHOSTLEN 100
+# else
+# define UTHOSTLEN sizeof(__ut.ut_host)
+# endif
+# endif /* HAVE_STRUCT_UTMP_UT_HOST */
+# endif /* BROKEN_CC */
+# ifndef TCSH_PATH_UTMP
+# ifdef UTMP_FILE
+# define TCSH_PATH_UTMP UTMP_FILE
+# elif defined(_PATH_UTMP)
+# define TCSH_PATH_UTMP _PATH_UTMP
# else
-# define UTHOSTLEN sizeof(__ut.ut_host)
-# endif
-# endif /* HAVE_STRUCT_UTMP_UT_HOST */
-#endif /* BROKEN_CC */
-
-#ifndef TCSH_PATH_UTMP
-# ifdef UTMP_FILE
-# define TCSH_PATH_UTMP UTMP_FILE
-# elif defined(_PATH_UTMP)
-# define TCSH_PATH_UTMP _PATH_UTMP
-# else
-# define TCSH_PATH_UTMP "/etc/utmp"
-# endif /* UTMP_FILE */
-#endif /* TCSH_PATH_UTMP */
+# define TCSH_PATH_UTMP "/etc/utmp"
+# endif /* UTMP_FILE */
+# endif /* TCSH_PATH_UTMP */
+#endif /* !TCSH_USE_UTMPX && HAVE_UTMP_H */
+#ifndef UTNAMLEN
+#define UTNAMLEN 64
+#endif
+#ifndef UTLINLEN
+#define UTLINLEN 64
+#endif
struct who {
struct who *who_next;
@@ -124,9 +142,9 @@ struct who {
char who_name[UTNAMLEN + 1];
char who_new[UTNAMLEN + 1];
char who_tty[UTLINLEN + 1];
-#ifdef HAVE_STRUCT_UTMP_UT_HOST
+#ifdef UTHOSTLEN
char who_host[UTHOSTLEN + 1];
-#endif /* HAVE_STRUCT_UTMP_UT_HOST */
+#endif /* UTHOSTLEN */
time_t who_time;
int who_status;
};
@@ -180,7 +198,7 @@ watch_login(int force)
{
int comp = -1, alldone;
int firsttime = stlast == 1;
-#ifdef HAVE_GETUTENT
+#if defined(HAVE_GETUTENT) || defined(HAVE_GETUTXENT)
struct utmp *uptr;
#else
int utmpfd;
@@ -259,7 +277,7 @@ watch_login(int force)
return;
}
stlast = sta.st_mtime;
-#ifdef HAVE_GETUTENT
+#if defined(HAVE_GETUTENT) || defined(HAVE_GETUTXENT)
setutent();
#else
if ((utmpfd = xopen(TCSH_PATH_UTMP, O_RDONLY|O_LARGEFILE)) < 0) {
@@ -284,7 +302,7 @@ watch_login(int force)
* Read in the utmp file, sort the entries, and update existing entries or
* add new entries to the status list.
*/
-#ifdef HAVE_GETUTENT
+#if defined(HAVE_GETUTENT) || defined(HAVE_GETUTXENT)
while ((uptr = getutent()) != NULL) {
memcpy(&utmp, uptr, sizeof (utmp));
#else
@@ -333,7 +351,7 @@ watch_login(int force)
}
else {
(void) strncpy(wp->who_new, utmp.ut_name, UTNAMLEN);
-# ifdef HAVE_STRUCT_UTMP_UT_HOST
+# ifdef UTHOSTLEN
# ifdef _SEQUENT_
host = ut_find_host(wp->who_tty);
if (host)
@@ -343,7 +361,7 @@ watch_login(int force)
# else
(void) strncpy(wp->who_host, utmp.ut_host, UTHOSTLEN);
# endif
-# endif /* HAVE_STRUCT_UTMP_UT_HOST */
+# endif /* UTHOSTLEN */
wp->who_time = utmp.ut_time;
if (wp->who_name[0] == '\0')
wp->who_status = ONLINE;
@@ -354,7 +372,7 @@ watch_login(int force)
else { /* new tty in utmp */
wpnew = xcalloc(1, sizeof *wpnew);
(void) strncpy(wpnew->who_tty, utmp.ut_line, UTLINLEN);
-# ifdef HAVE_STRUCT_UTMP_UT_HOST
+# ifdef UTHOSTLEN
# ifdef _SEQUENT_
host = ut_find_host(wpnew->who_tty);
if (host)
@@ -364,7 +382,7 @@ watch_login(int force)
# else
(void) strncpy(wpnew->who_host, utmp.ut_host, UTHOSTLEN);
# endif
-# endif /* HAVE_STRUCT_UTMP_UT_HOST */
+# endif /* UTHOSTLEN */
wpnew->who_time = utmp.ut_time;
# ifdef DEAD_PROCESS
if (utmp.ut_type == DEAD_PROCESS)
@@ -387,14 +405,11 @@ watch_login(int force)
wp->who_prev = wpnew; /* linked in now */
}
}
-#ifdef HAVE_GETUTENT
+#if defined(HAVE_GETUTENT) || defined(HAVE_GETUTXENT)
endutent();
#else
cleanup_until(&utmpfd);
#endif
-# if defined(HAVE_STRUCT_UTMP_UT_HOST) && defined(_SEQUENT_)
- endutent();
-# endif
#endif /* !WINNT_NATIVE */
if (force || vp == NULL) {
@@ -494,11 +509,11 @@ debugwholist(struct who *new, struct who *wp)
static void
print_who(struct who *wp)
{
-#ifdef HAVE_STRUCT_UTMP_UT_HOST
+#ifdef UTHOSTLEN
Char *cp = str2short(CGETS(26, 7, "%n has %a %l from %m."));
#else
Char *cp = str2short(CGETS(26, 8, "%n has %a %l."));
-#endif /* HAVE_STRUCT_UTMP_UT_HOST */
+#endif /* UTHOSTLEN */
struct varent *vp = adrof(STRwho);
Char *str;
@@ -519,11 +534,11 @@ who_info(ptr_t ptr, int c)
{
struct who *wp = ptr;
char *wbuf;
-#ifdef HAVE_STRUCT_UTMP_UT_HOST
+#ifdef UTHOSTLEN
char *wb;
int flg;
char *pb;
-#endif /* HAVE_STRUCT_UTMP_UT_HOST */
+#endif /* UTHOSTLEN */
switch (c) {
case 'n': /* user name */
@@ -551,7 +566,7 @@ who_info(ptr_t ptr, int c)
}
break;
-#ifdef HAVE_STRUCT_UTMP_UT_HOST
+#ifdef UTHOSTLEN
case 'm':
if (wp->who_host[0] == '\0')
return strsave(CGETS(26, 12, "local"));
@@ -585,7 +600,7 @@ who_info(ptr_t ptr, int c)
*wb = '\0';
return wbuf;
}
-#endif /* HAVE_STRUCT_UTMP_UT_HOST */
+#endif /* UTHOSTLEN */
case 'l':
return strsave(wp->who_tty);
@@ -620,7 +635,7 @@ dolog(Char **v, struct command *c)
}
}
-# ifdef HAVE_STRUCT_UTMP_UT_HOST
+# ifdef UTHOSTLEN
size_t
utmphostsize(void)
{
@@ -644,12 +659,11 @@ utmphost(void)
resetwatch();
return host;
}
-# endif /* HAVE_STRUCT_UTMP_UT_HOST */
+# endif /* UTHOSTLEN */
#ifdef WINNT_NATIVE
-void add_to_who_list(name, mach_nm)
- char *name;
- char *mach_nm;
+void
+add_to_who_list(char *name, char *mach_nm)
{
struct who *wp, *wpnew;
diff --git a/tcsh.man b/tcsh.man
index 5178d10b3ab4..cb0709e07d53 100644
--- a/tcsh.man
+++ b/tcsh.man
@@ -72,7 +72,7 @@
.\" used here if you can. In particular, please don't use nroff commands
.\" which aren't already used herein.
.\"
-.TH TCSH 1 "10 July 2009" "Astron 6.17.00"
+.TH TCSH 1 "14 February 2012" "Astron 6.18.01"
.SH NAME
tcsh \- C shell with file name completion and command line editing
.SH SYNOPSIS
@@ -444,6 +444,17 @@ would list all three files, because case is ignored and hyphens and
underscores are equivalent. Periods, however, are not equivalent to
hyphens or underscores.
.PP
+If the \fBcomplete\fR shell variable is set to `Enhance', completion
+ignores case and differences between a hyphen and an underscore word
+separator only when the user types a lowercase character or a hyphen.
+Entering an uppercase character or an underscore will not match the
+corresponding lowercase character or hyphen word separator.
+Typing `rm a\-\-file[^D]' in the directory of the previous example would
+still list all three files, but typing `rm A\-\-file' would match only
+`A_silly_file' and typing `rm a__file[^D]' would match just `A_silly_file'
+and `another_silly_file' because the user explicitly used an uppercase
+or an underscore character.
+.PP
Completion and listing are affected by several other shell variables:
\fBrecexact\fR can be set to complete on the shortest possible unique
match, even if more typing might result in a longer match:
@@ -609,7 +620,7 @@ See \fBFilename substitution\fR.
.TP 8
.B expand-line \fR(not bound)
Like \fIexpand-history\fR, but
-expands history substitutions in each word in the input buffer,
+expands history substitutions in each word in the input buffer.
.TP 8
.B expand-variables \fR(^X-$)
Expands the variable to the left of the cursor.
@@ -860,7 +871,7 @@ history use the literal form.
.PP
The \fIhistory\fR builtin command can print, store in a file, restore
and clear the history list at any time,
-and the \fBsavehist\fR and \fBhistfile\fR shell variables can be can be set to
+and the \fBsavehist\fR and \fBhistfile\fR shell variables can be set to
store the history list automatically on logout and restore it on login.
.PP
History substitutions introduce words from the history list into the input
@@ -1150,7 +1161,7 @@ The system maintains its own list of ``environment'' variables.
These can be displayed and changed with \fIprintenv\fR, \fIsetenv\fR and
\fIunsetenv\fR.
.PP
-(+) Variables may be made read-only with `set \-r' (q.v.)
+(+) Variables may be made read-only with `set \-r' (q.v.).
Read-only variables may not be modified or unset;
attempting to do so will cause an error.
Once made read-only, a variable cannot be made writable,
@@ -1328,9 +1339,14 @@ pattern.
.PP
In matching filenames, the character `.' at the beginning of a filename or
immediately following a `/', as well as the character `/' must be matched
-explicitly. The character `*' matches any string of characters, including the
-null string. The character `?' matches any single character. The sequence
-`[...]' matches any one of the characters enclosed. Within `[...]', a pair of
+explicitly (unless either
+.B globdot
+or
+.B globstar
+or both are set(+)). The character `*' matches any string of characters,
+including the null string. The character `?' matches any single character.
+The sequence `[...]' matches any one of the characters enclosed.
+Within `[...]', a pair of
characters separated by `\-' matches any character lexically between the two.
.PP
(+) Some glob-patterns can be negated:
@@ -1381,6 +1397,20 @@ only if there were no files in the current directory ending in `.a', `.c', or
of patterns) which matches nothing is left unchanged rather than causing
an error.
.PP
+The \fBglobstar\fR shell variable can be set to allow `**' or `***' as
+a file glob pattern that matches any string of characters including `/',
+recursively traversing any existing sub-directories. For example,
+`ls **.c' will list all the .c files in the current directory tree.
+If used by itself, it will match match zero or more sub-directories
+(e.g. `ls /usr/include/**/time.h' will list any file named `time.h'
+in the /usr/include directory tree; `ls /usr/include/**time.h' will match
+any file in the /usr/include directory tree ending in `time.h'; and
+`ls /usr/include/**time**.h' will match any .h file with `time' either
+in a subdirectory name or in the filename itself).
+To prevent problems with recursion, the `**' glob-pattern will not
+descend into a symbolic link containing a directory. To override this,
+use `***' (+)
+.PP
The \fBnoglob\fR shell variable can be set to prevent filename substitution,
and the \fIexpand-glob\fR editor command, normally bound to `^X-*', can be
used to interactively expand individual filename substitutions.
@@ -1501,7 +1531,7 @@ to specify an interpreter other than the shell itself.
.PP
On systems which do not understand the `#!' script interpreter convention
the shell may be compiled to emulate it; see the \fBversion\fR shell
-variable\fR. If so, the shell checks the first line of the file to
+variable. If so, the shell checks the first line of the file to
see if it is of the form `#!\fIinterpreter\fR \fIarg\fR ...'. If it is,
the shell starts \fIinterpreter\fR with the given \fIarg\fRs and feeds the
file to it on standard input.
@@ -1704,7 +1734,7 @@ Sticky bit is set (+)
for a terminal device (+)
.TP 4
.B R
-Has been migrated (convex only) (+)
+Has been migrated (Convex only) (+)
.TP 4
.B L
Applies subsequent operators in a multiple-operator test to a symbolic link
@@ -1730,7 +1760,7 @@ non-links. \fBL\fR has a different meaning when it is the last operator
in a multiple-operator test; see below.
.PP
It is possible but not useful, and sometimes misleading, to combine operators
-which expect \fIfile\fR to be a file with operators which do not,
+which expect \fIfile\fR to be a file with operators which do not
(e.g., \fBX\fR and \fBt\fR). Following \fBL\fR with a non-file operator
can lead to particularly strange results.
.PP
@@ -2261,7 +2291,7 @@ see the \fBversion\fR shell variable.
.B case \fIlabel\fB:
A label in a \fIswitch\fR statement as discussed below.
.TP 8
-.B cd \fR[\fB\-p\fR] [\fB\-l\fR] [\fB\-n\fR|\fB\-v\fR] [\fIname\fR]
+.B cd \fR[\fB\-p\fR] [\fB\-l\fR] [\fB\-n\fR|\fB\-v\fR] [\I--\fR] [\fIname\fR]
If a directory \fIname\fR is given, changes the shell's working directory
to \fIname\fR. If not, changes to \fBhome\fR.
If \fIname\fR is `\-' it is interpreted as the previous working directory
@@ -2276,6 +2306,8 @@ begins with `/', then this is tried to see if it is a directory.
With \fB\-p\fR, prints the final directory stack, just like \fIdirs\fR.
The \fB\-l\fR, \fB\-n\fR and \fB\-v\fR flags have the same effect on \fIcd\fR
as on \fIdirs\fR, and they imply \fB\-p\fR. (+)
+Using \fB\-\-\fR forces a break from option processing so the next word
+is taken as the directory \fIname\fR even if it begins with '\-'. (+)
.PP
See also the \fBimplicitcd\fR shell variable.
.RE
@@ -2559,7 +2591,7 @@ Finally, here's a complex example for inspiration:
.br
\&'n/\-name/f/' 'n/\-newer/f/' 'n/\-{,n}cpio/f/' \e
.br
-\'n/\-exec/c/' 'n/\-ok/c/' 'n/\-user/u/' \e
+\&\'n/\-exec/c/' 'n/\-ok/c/' 'n/\-user/u/' \e
.br
\&'n/\-group/g/' 'n/\-fstype/(nfs 4.2)/' \e
.br
@@ -2811,7 +2843,7 @@ With \fIcommand\fR, runs \fIcommand\fR such that it will exit on a hangup
signal and arranges for the shell to send it a hangup signal when the shell
exits.
Note that commands may set their own response to hangups, overriding \fIhup\fR.
-Without an argument (allowed in only a shell script), causes the shell to
+Without an argument, causes the non-interactive shell only to
exit on a hangup for the remainder of the script.
See also \fBSignal handling\fR and the \fInohup\fR builtin command.
.TP 8
@@ -2911,6 +2943,14 @@ the size of the largest core dump that will be created
the maximum amount of physical memory a process
may have allocated to it at a given time
.TP
+\fIvmemoryuse\fR
+the maximum amount of virtual memory a process
+may have allocated to it at a given time (address space)
+.TP
+\fIvmemoryuse\fR
+the maximum amount of virtual memory a process
+may have allocated to it at a given time
+.TP
\fIheapsize\fR
the maximum amount of memory a process
may allocate per \fIbrk()\fR system call
@@ -2929,18 +2969,40 @@ the maximum number of simultaneous processes for this user id
.TP
\fIsbsize\fR
the maximum size of socket buffer usage for this user
-.TP
-\fIswapsize\fR
-the maximum amount of swap space reserved or used for this user
+.TP
+\fIswapsize\fR
+the maximum amount of swap space reserved or used for this user
+.TP
+\fImaxlocks\fR
+the maximum number of locks for this user
+.TP
+\fImaxsignal\fR
+the maximum number of pending signals for this user
+.TP
+\fImaxmessage\fR
+the maximum number of bytes in POSIX mqueues for this user
+.TP
+\fImaxnice\fR
+the maximum nice priority the user is allowed to raise mapped from [19...-20]
+to [0...39] for this user
+.TP
+\fImaxrtprio\fR
+the maximum realtime priority for this user
+\fImaxrttime\fR
+the timeout for RT tasks in microseconds for this user.
.PP
\fImaximum-use\fR may be given as a (floating point or
integer) number followed by a scale factor. For all limits
other than \fIcputime\fR the default scale is `k' or `kilobytes'
-(1024 bytes); a scale factor of `m' or `megabytes' may also
-be used. For \fIcputime\fR the default scaling is `seconds',
+(1024 bytes); a scale factor of `m' or `megabytes' or `g' or `gigabytes'
+may also be used. For \fIcputime\fR the default scaling is `seconds',
while `m' for minutes or `h' for hours, or a time of the
form `mm:ss' giving minutes and seconds may be used.
.PP
+If \fImaximum-use\fR is `unlimited',
+then the limitation on the specified \fIresource\fR
+is removed (this is equivalent to the \fIunlimit\fR builtin command).
+.PP
For both \fIresource\fR names and scale factors, unambiguous
prefixes of the names suffice.
.RE
@@ -2952,7 +3014,7 @@ See also \fIwatchlog\fR.
.TP 8
.B login
Terminates a login shell, replacing it with an instance of
-\fI/bin/login.\fR This is one way to log off, included for
+\fI/bin/login\fR. This is one way to log off, included for
compatibility with \fIsh\fR(1).
.TP 8
.B logout
@@ -3021,7 +3083,7 @@ unless \fBlistflags\fR contains an `x', in which case it acts like `ls \-xF'.
so `alias ls ls\-F' generally does the right thing.
.PP
The \fBls\-F\fR builtin can list files using different colors depending on the
-filetype or extension. See the \fBcolor\fR \fItcsh\fR variable and the
+filetype or extension. See the \fBcolor\fR shell variable and the
\fBLS_COLORS\fR environment variable.
.RE
.PP
@@ -3037,7 +3099,7 @@ itself can cause unexpected behavior, because the shell
does not like to lose its tty. (TCF only)
.PD
.TP 8
-.B newgrp \fR[\fB\-\fR] \fIgroup\fR (+)
+.B newgrp \fR[\fB\-\fR] \fI[group]\fR (+)
Equivalent to `exec newgrp'; see \fInewgrp\fR(1).
Available only if the shell was so compiled;
see the \fBversion\fR shell variable.
@@ -3055,7 +3117,7 @@ commands in simple \fIif\fR statements apply.
.B nohup \fR[\fIcommand\fR]
With \fIcommand\fR, runs \fIcommand\fR such that it will ignore hangup signals.
Note that commands may set their own response to hangups, overriding \fInohup\fR.
-Without an argument (allowed in only a shell script), causes the shell to
+Without an argument, causes the non-interactive shell only to
ignore hangups for the remainder of the script.
See also \fBSignal handling\fR and the \fIhup\fR builtin command.
.TP 8
@@ -3118,11 +3180,12 @@ as on \fIdirs\fR. (+)
.B rehash
Causes the internal hash table of the contents of the
directories in the \fBpath\fR variable to be recomputed. This is
-needed if new commands are added to directories in \fBpath\fR
-while you are logged in. This should be necessary only if
-you add commands to one of your own directories, or if a
-systems programmer changes the contents of one of the
-system directories. Also flushes the cache of home directories
+needed if the \fBautorehash\fR shell variable is not set and new
+commands are added to directories in \fBpath\fR while you are logged
+in. With \fBautorehash\fR, a new command will be found
+automatically, except in the special case where another command of
+the same name which is located in a different directory already
+exists in the hash table. Also flushes the cache of home directories
built by tilde expansion.
.TP 8
.B repeat \fIcount command
@@ -3217,14 +3280,13 @@ The second form sets \fIname\fR to the null string.
The third form sets \fIname\fR to the single \fIword\fR.
The fourth form sets \fIname\fR to the list of words in
\fIwordlist\fR. In all cases the value is command and filename expanded.
-If \-r is specified, the value is set read-only. If \-f or \-l are
-specified, set only unique words keeping their order.
-\-f prefers the first occurrence of a word, and \-l the last.
-The fifth form sets the \fIindex\fR'th component of name to \fIword\fR;
+If \fB\-r\fR is specified, the value is set read-only. If \fB\-f\fR or
+\fB\-l\fR are specified, set only unique words keeping their order.
+\fB\-f\fR prefers the first occurrence of a word, and \fB\-l\fR the last.
+The fifth form sets the \fIindex\fR'th component of \fIname\fR to \fIword\fR;
this component must already exist.
The sixth form lists only the names of all shell variables that are read-only.
The seventh form makes \fIname\fR read-only, whether or not it has a value.
-The second form sets \fIname\fR to the null string.
The eighth form is the same as the third form, but
make \fIname\fR read-only at the same time.
.PD
@@ -3360,7 +3422,7 @@ Common values for the mask are
022, giving read and execute access to the group and others.
Without \fIvalue\fR, prints the current file creation mask.
.TP 8
-.B unalias \fIpattern
+.B unalias \fIpattern\fR
.br
Removes all aliases whose names match \fIpattern\fR.
`unalias *' thus removes all aliases.
@@ -3590,8 +3652,8 @@ characters are added by completion.
The first word is the number of minutes of inactivity before automatic
logout. The optional second word is the number of minutes of inactivity
before automatic locking.
-When the shell automatically logs out,
-it prints `auto-logout', sets the variable logout to `automatic' and exits.
+When the shell automatically logs out, it prints `auto-logout', sets the
+variable \fBlogout\fR to `automatic' and exits.
When the shell automatically locks, the user is required to enter his password
to continue working. Five incorrect attempts result in automatic logout.
Set to `60' (automatic logout after 60 minutes, and no locking) by default
@@ -3601,6 +3663,14 @@ the tty is a pseudo-tty (pty) or the shell was not so compiled (see the
\fBversion\fR shell variable).
See also the \fBafsuser\fR and \fBlogout\fR shell variables.
.TP 8
+.B autorehash \fR(+)
+If set, the internal hash table of the contents of the directories in the
+\fBpath\fR variable will be recomputed if a command is not found in the hash
+table. In addition, the list of available commands will be rebuilt for each
+command completion or spelling correction attempt if set to `complete' or
+`correct' respectively; if set to `always', this will be done for both
+cases.
+.TP 8
.B backslash_quote \fR(+)
If set, backslashes (`\\') always quote `\\', `'', and `"'. This may make
complex quoting tasks easier, but it can cause syntax errors in \fIcsh\fR(1)
@@ -3633,10 +3703,15 @@ If set, the shell will evaluate expressions right to left, like the original
\fIcsh\fR.
.TP 8
.B complete \fR(+)
-If set to `enhance', completion 1) ignores case and 2) considers
-periods, hyphens and underscores (`.', `\-' and `_') to be word
-separators and hyphens and underscores to be equivalent. If set to
-`igncase', the completion becomes case insensitive.
+If set to `igncase', the completion becomes case insensitive.
+If set to `enhance', completion ignores case and considers
+hyphens and underscores to be equivalent; it will also treat
+periods, hyphens and underscores (`.', `\-' and `_') as word
+separators.
+If set to `Enhance', completion matches uppercase and underscore
+characters explicitly and matches lowercase and hyphens in a
+case-insensivite manner; it will treat periods, hypens and underscores
+as word separators.
.TP 8
.B continue \fR(+)
If set to a list of commands, the shell will continue the listed
@@ -3683,7 +3758,7 @@ but the first element (the current working directory) is always correct.
See also the \fBcwd\fR and \fBowd\fR shell variables.
.TP 8
.B dspmbyte \fR(+)
-Has an affect iff 'dspm' is listed as part of the \fBversion\fR shell variable.
+Has an effect iff 'dspm' is listed as part of the \fBversion\fR shell variable.
If set to `euc', it enables display and editing EUC-kanji(Japanese) code.
If set to `sjis', it enables display and editing Shift-JIS(Japanese) code.
If set to `big5', it enables display and editing Big5(Chinese) code.
@@ -3709,12 +3784,12 @@ is set to number 0,1,2 and 3. Each number has the following meaning:
3 ... used for both the first byte and second byte of a multi-byte character.
.\" SHK: I tried my best to get the following to be grammatically correct.
.\" However, I still don't understand what's going on here. In the
- \" following example, there are three bytes, but the text seems to refer to
- \" each nybble as a character. What's going on here? It this 3-byte code
- \" in the table? The text above seems to imply that there are 256
- \" characters/bytes in the table. If I get some more info on this (perhaps
- \" a complete example), I could fix the text to be grammatically correct.
- \" (steve.kelem@xilinx.com 1999/09/13)
+.\" following example, there are three bytes, but the text seems to refer to
+.\" each nybble as a character. What's going on here? It this 3-byte code
+.\" in the table? The text above seems to imply that there are 256
+.\" characters/bytes in the table. If I get some more info on this (perhaps
+.\" a complete example), I could fix the text to be grammatically correct.
+.\" (steve.kelem@xilinx.com 1999/09/13)
.PP
Example:
.br
@@ -3782,6 +3857,12 @@ If set, the `%c'/`%.' and `%C' prompt sequences (see the \fBprompt\fR
shell variable) indicate skipped directories with an ellipsis (`...')
instead of `/<skipped>'.
.TP 8
+.B euid \fR(+)
+The user's effective user ID.
+.TP 8
+.B euser \fR(+)
+The first matching passwd entry name corresponding to the effective user ID.
+.TP 8
.B fignore \fR(+)
Lists file name suffixes to be ignored by completion.
.TP 8
@@ -3795,6 +3876,22 @@ If set in \fIcsh\fR, filename completion is used.
.B gid \fR(+)
The user's real group ID.
.TP 8
+.B globdot \fR(+)
+If set, wild-card glob patterns will match files and directories beginning
+with `.' except for `.' and `..'
+.TP 8
+.B globstar \fR(+)
+If set, the `**' and `***' file glob patterns will match any string of
+characters including `/' traversing any existing sub-directories. (e.g.
+`ls **.c' will list all the .c files in the current directory tree).
+If used by itself, it will match match zero or more sub-directories
+(e.g. `ls /usr/include/**/time.h' will list any file named `time.h'
+in the /usr/include directory tree; whereas `ls /usr/include/**time.h'
+will match any file in the /usr/include directory tree ending in `time.h').
+To prevent problems with recursion, the `**' glob-pattern will not
+descend into a symbolic link containing a directory. To override this,
+use `***'
+.TP 8
.B group \fR(+)
The user's group name.
.TP 8
@@ -3802,7 +3899,7 @@ The user's group name.
If set, the incremental search match (in \fIi-search-back\fR and
\fIi-search-fwd\fR) and the region between the mark and the cursor are
highlighted in reverse video.
-
+.IP "" 8
Highlighting requires more frequent terminal writes, which introduces extra
overhead. If you care about terminal performance, you may want to leave this
unset.
@@ -3926,13 +4023,12 @@ signal (see \fBSignal handling\fR). See also the \fBautologout\fR
shell variable.
.TP 8
.B mail
-The names of the files or directories to check for incoming mail,
-separated by whitespace, and optionally preceded by a numeric word.
-Before each prompt, if 10 minutes have passed since the last check, the
-shell checks each file and says `You have new mail.' (or, if \fBmail\fR
-contains multiple files, `You have new mail in \fIname\fR.') if the
-filesize is greater than zero in size and has a modification time
-greater than its access time.
+A list of files and directories to check for incoming mail, optionally
+preceded by a numeric word. Before each prompt, if 10 minutes have
+passed since the last check, the shell checks each file and says `You
+have new mail.' (or, if \fBmail\fR contains multiple files, `You have
+new mail in \fIname\fR.') if the filesize is greater than zero in size
+and has a modification time greater than its access time.
.PP
.RS +8
.PD
@@ -4011,7 +4107,12 @@ See also the \fBcwd\fR and \fBdirstack\fR shell variables.
.TP 8
.B padhour
If set, enable the printing of padding '0' for hours, in 24 and 12 hour
-formats. E.G.: 07:45:42 vs. 7:45:42
+formats. E.G.: 07:45:42 vs. 7:45:42.
+.TP 8
+.B parseoctal
+To retain compatibily with older versions numeric variables starting with
+0 are not interpreted as octal. Setting this variable enables proper octal
+parsing.
.TP 8
.B path
A list of directories in which to look for executable commands.
@@ -4105,6 +4206,9 @@ A single `%'.
%n
The user name.
.TP 4
+%N
+The effective user name.
+.TP 4
%j
The number of jobs.
.TP 4
@@ -4249,7 +4353,14 @@ Reset to 1 in login shells.
See also \fBloginsh\fR.
.TP 8
.B status
-The status returned by the last command. If it terminated
+The status returned by the last command, unless the variable
+.B anyerror
+is set, and any error in a pipeline or a backquote expansion will be
+propagated (this is the default
+.B csh
+behavior, and the current
+.B tcsh
+default). If it terminated
abnormally, then 0200 is added to the status. Builtin commands
which fail return exit status `1', all other builtin commands
return status `0'.
@@ -4991,7 +5102,7 @@ See the \fBgid\fR, \fBloginsh\fR, \fBoid\fR, \fBshlvl\fR, \fBtcsh\fR,
variables.
.PP
A new syntax for including useful information in the prompt string
-(see \fBprompt\fR).
+(see \fBprompt\fR),
and special prompts for loops and spelling correction
(see \fBprompt2\fR and \fBprompt3\fR).
.PP
@@ -5016,8 +5127,7 @@ done with output control.
Alias substitution is most often used to clumsily simulate shell procedures;
shell procedures should be provided rather than aliases.
.PP
-Commands within loops are not placed in the history
-list. Control structures should be parsed rather than being recognized as
+Control structures should be parsed rather than being recognized as
built-in commands. This would allow control commands to be placed anywhere,
to be combined with `|', and to be used with `&' and `;' metasyntax.
.PP
@@ -5091,7 +5201,7 @@ pipe(2), setrlimit(2), sigvec(2), stat(2), umask(2), vfork(2), wait(2),
malloc(3), setlocale(3), tty(4), a.out(5), termcap(5), environ(7),
termio(7), Introduction to the C Shell
.SH VERSION
-This manual documents tcsh 6.17.00 (Astron) 2009-07-10.
+This manual documents tcsh 6.18.01 (Astron) 2012-02-14.
.SH AUTHORS
.PD 0
.TP 2
diff --git a/tcsh.man2html b/tcsh.man2html
index 8a0cefd0e979..2dc2c7d71177 100644
--- a/tcsh.man2html
+++ b/tcsh.man2html
@@ -1,5 +1,5 @@
: # -*- perl -*-
-# $tcsh: tcsh.man2html,v 1.14 2006/03/02 18:46:45 christos Exp $
+# $tcsh: tcsh.man2html,v 1.15 2011/02/05 16:15:56 christos Exp $
# tcsh.man2html, Dave Schweisguth <dcs@proton.chem.yale.edu>
#
@@ -689,10 +689,9 @@ sub font {
$bold = $italic = 0;
foreach $i (0 .. $#begin) {
- $* = 1;
$part = join('', @para[$begin[$i] .. $end[$i]]);
- $part =~ s/^\.([BI])\s+(.*)$/\\f$1$2\\fR/g; # .B, .I
- @pieces = split(/(\\f[BIR])/, $part);
+ $part =~ s/^\.([BI])\s+(.*)$/\\f$1$2\\fR/gm; # .B, .I
+ @pieces = split(/(\\f[BIR])/m, $part);
$part = '';
foreach $j (@pieces) {
if ($j eq '\fB') {
@@ -725,7 +724,6 @@ sub font {
$part .= $j;
}
}
- $* = 0;
# Close bold/italic before break
diff --git a/tcsh.vcproj b/tcsh.vcproj
new file mode 100644
index 000000000000..6178823ee163
--- /dev/null
+++ b/tcsh.vcproj
@@ -0,0 +1,827 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="tcsh"
+ ProjectGUID="{0DF699BA-6A5E-4B74-AE29-19757D072F19}"
+ RootNamespace="tcsh"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ Description=""
+ CommandLine=""
+ AdditionalDependencies=""
+ Outputs=""
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ WholeProgramOptimization="false"
+ AdditionalIncludeDirectories="$(SolutionDir)\win32;$(SolutionDir)"
+ PreprocessorDefinitions="WINNT_NATIVE;NO_CRYPT;HAVE_DIRENT_H;NTDBG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="0"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ StackReserveSize="1048576"
+ StackCommitSize="524288"
+ EntryPointSymbol="silly_entry"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ Description=""
+ CommandLine=""
+ AdditionalDependencies=""
+ Outputs=""
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ WholeProgramOptimization="false"
+ AdditionalIncludeDirectories="$(SolutionDir)\win32;$(SolutionDir)"
+ PreprocessorDefinitions="WINNT_NATIVE;NO_CRYPT;HAVE_DIRENT_H"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ StackReserveSize="1048576"
+ StackCommitSize="524288"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ LinkTimeCodeGeneration="0"
+ EntryPointSymbol="silly_entry"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ Description=""
+ CommandLine=""
+ AdditionalDependencies=""
+ Outputs=""
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ WholeProgramOptimization="false"
+ AdditionalIncludeDirectories="$(SolutionDir)\win32;$(SolutionDir)"
+ PreprocessorDefinitions="WINNT_NATIVE;NO_CRYPT;HAVE_DIRENT_H;NTDBG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="0"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ DisableSpecificWarnings="4244;4267"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ StackReserveSize="1048576"
+ StackCommitSize="524288"
+ EntryPointSymbol="silly_entry"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine=""
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ Description=""
+ CommandLine=""
+ AdditionalDependencies=""
+ Outputs=""
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ WholeProgramOptimization="false"
+ AdditionalIncludeDirectories="$(SolutionDir)\win32;$(SolutionDir)"
+ PreprocessorDefinitions="WINNT_NATIVE;NO_CRYPT;HAVE_DIRENT_H"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ DisableSpecificWarnings="4244;4267"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ StackReserveSize="1048576"
+ StackCommitSize="524288"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ LinkTimeCodeGeneration="0"
+ EntryPointSymbol="silly_entry"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath=".\win32\bogus.c"
+ >
+ </File>
+ <File
+ RelativePath=".\win32\clip.c"
+ >
+ </File>
+ <File
+ RelativePath=".\win32\console.c"
+ >
+ </File>
+ <File
+ RelativePath=".\win32\customstep.cmd"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating headers"
+ CommandLine="$(SolutionDir)\win32\customstep.cmd $(SolutionDir)"
+ AdditionalDependencies="ed.defns.c;sh.err.c;tc.const.c;win32\nt.const.c"
+ Outputs="ed.defns.h;sh.err.h;tc.const.h;win32\nt.const.h"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating headers"
+ CommandLine="$(SolutionDir)\win32\customstep.cmd $(SolutionDir)"
+ AdditionalDependencies="ed.defns.c;sh.err.c;tc.const.c;win32\nt.const.c"
+ Outputs="ed.defns.h;sh.err.h;tc.const.h;win32\nt.const.h"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|x64"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating headers"
+ CommandLine="$(SolutionDir)\win32\customstep.cmd $(SolutionDir)"
+ AdditionalDependencies="ed.defns.c;sh.err.c;tc.const.c;win32\nt.const.c"
+ Outputs="ed.defns.h;sh.err.h;tc.const.h;win32\nt.const.h"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|x64"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating headers"
+ CommandLine="$(SolutionDir)\win32\customstep.cmd $(SolutionDir)"
+ AdditionalDependencies="ed.defns.c;sh.err.c;tc.const.c;win32\nt.const.c"
+ Outputs="ed.defns.h;sh.err.h;tc.const.h;win32\nt.const.h"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath=".\win32\dirent.c"
+ >
+ </File>
+ <File
+ RelativePath=".\ed.chared.c"
+ >
+ </File>
+ <File
+ RelativePath=".\ed.defns.c"
+ >
+ </File>
+ <File
+ RelativePath=".\ed.init.c"
+ >
+ </File>
+ <File
+ RelativePath=".\ed.inputl.c"
+ >
+ </File>
+ <File
+ RelativePath=".\ed.refresh.c"
+ >
+ </File>
+ <File
+ RelativePath=".\ed.term.c"
+ >
+ </File>
+ <File
+ RelativePath=".\ed.xmap.c"
+ >
+ </File>
+ <File
+ RelativePath=".\win32\fork.c"
+ >
+ </File>
+ <File
+ RelativePath=".\glob.c"
+ >
+ </File>
+ <File
+ RelativePath=".\win32\globals.c"
+ >
+ </File>
+ <File
+ RelativePath=".\win32\io.c"
+ >
+ </File>
+ <File
+ RelativePath=".\win32\nt.bind.c"
+ >
+ </File>
+ <File
+ RelativePath=".\win32\nt.char.c"
+ >
+ </File>
+ <File
+ RelativePath=".\win32\nt.const.c"
+ >
+ </File>
+ <File
+ RelativePath=".\win32\nt.screen.c"
+ >
+ </File>
+ <File
+ RelativePath=".\win32\nt.who.c"
+ >
+ </File>
+ <File
+ RelativePath=".\win32\ntb1.c"
+ >
+ </File>
+ <File
+ RelativePath=".\win32\ntb2.c"
+ >
+ </File>
+ <File
+ RelativePath=".\win32\ntfunc.c"
+ >
+ </File>
+ <File
+ RelativePath=".\win32\ps.c"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.c"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.char.c"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.char.h"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.dir.c"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.dol.c"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.err.c"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.exec.c"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.exp.c"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.file.c"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.func.c"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.glob.c"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.hist.c"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.init.c"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.lex.c"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.misc.c"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.parse.c"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.print.c"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.proc.c"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.sem.c"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.set.c"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.time.c"
+ >
+ </File>
+ <File
+ RelativePath=".\win32\signal.c"
+ >
+ </File>
+ <File
+ RelativePath=".\win32\stdio.c"
+ >
+ </File>
+ <File
+ RelativePath=".\win32\support.c"
+ >
+ </File>
+ <File
+ RelativePath=".\tc.alloc.c"
+ >
+ </File>
+ <File
+ RelativePath=".\tc.bind.c"
+ >
+ </File>
+ <File
+ RelativePath=".\tc.const.c"
+ >
+ </File>
+ <File
+ RelativePath=".\tc.disc.c"
+ >
+ </File>
+ <File
+ RelativePath=".\tc.func.c"
+ >
+ </File>
+ <File
+ RelativePath=".\tc.nls.c"
+ >
+ </File>
+ <File
+ RelativePath=".\tc.os.c"
+ >
+ </File>
+ <File
+ RelativePath=".\tc.printf.c"
+ >
+ </File>
+ <File
+ RelativePath=".\tc.prompt.c"
+ >
+ </File>
+ <File
+ RelativePath=".\tc.sched.c"
+ >
+ </File>
+ <File
+ RelativePath=".\tc.sig.c"
+ >
+ </File>
+ <File
+ RelativePath=".\tc.str.c"
+ >
+ </File>
+ <File
+ RelativePath=".\tc.vers.c"
+ >
+ </File>
+ <File
+ RelativePath=".\tc.who.c"
+ >
+ </File>
+ <File
+ RelativePath=".\tw.color.c"
+ >
+ </File>
+ <File
+ RelativePath=".\tw.comp.c"
+ >
+ </File>
+ <File
+ RelativePath=".\tw.help.c"
+ >
+ </File>
+ <File
+ RelativePath=".\tw.init.c"
+ >
+ </File>
+ <File
+ RelativePath=".\tw.parse.c"
+ >
+ </File>
+ <File
+ RelativePath=".\tw.spell.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ <File
+ RelativePath=".\config.h"
+ >
+ </File>
+ <File
+ RelativePath=".\config_f.h"
+ >
+ </File>
+ <File
+ RelativePath=".\config_p.h"
+ >
+ </File>
+ <File
+ RelativePath=".\win32\dirent.h"
+ >
+ </File>
+ <File
+ RelativePath=".\ed.decls.h"
+ >
+ </File>
+ <File
+ RelativePath=".\ed.h"
+ >
+ </File>
+ <File
+ RelativePath=".\ed.term.h"
+ >
+ </File>
+ <File
+ RelativePath=".\win32\forkdata.h"
+ >
+ </File>
+ <File
+ RelativePath=".\glob.h"
+ >
+ </File>
+ <File
+ RelativePath=".\win32\ntport.h"
+ >
+ </File>
+ <File
+ RelativePath=".\patchlevel.h"
+ >
+ </File>
+ <File
+ RelativePath=".\pathnames.h"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.decls.h"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.dir.h"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.h"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.proc.h"
+ >
+ </File>
+ <File
+ RelativePath=".\sh.types.h"
+ >
+ </File>
+ <File
+ RelativePath=".\win32\signal.h"
+ >
+ </File>
+ <File
+ RelativePath=".\snames.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tc.decls.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tc.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tc.nls.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tc.os.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tc.sig.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tc.wait.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tw.decls.h"
+ >
+ </File>
+ <File
+ RelativePath=".\tw.h"
+ >
+ </File>
+ <File
+ RelativePath=".\win32\version.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ <File
+ RelativePath=".\win32\tcshrc.rc"
+ >
+ </File>
+ <File
+ RelativePath=".\win32\WILDCAT.RC"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/tests/aliases.at b/tests/aliases.at
new file mode 100644
index 000000000000..019af85cb833
--- /dev/null
+++ b/tests/aliases.at
@@ -0,0 +1,56 @@
+# Special aliases
+
+TCSH_UNTESTED([beepcmd])
+
+
+AT_SETUP([cwdcmd])
+
+AT_DATA([cwdcmd.csh],
+[[alias cwdcmd 'echo ">>" $cwd'
+cd /
+]])
+AT_CHECK([tcsh -f cwdcmd.csh], ,
+[>> /
+])
+
+AT_CLEANUP
+
+
+TCSH_UNTESTED([jobcmd])
+TCSH_UNTESTED([helpcommand])
+TCSH_UNTESTED([periodic])
+TCSH_UNTESTED([precmd])
+
+
+AT_SETUP([postcmd])
+
+AT_DATA([postcmd.csh],
+[[alias postcmd 'echo ">>" "\!#"'
+echo foo
+echo foo | cat
+]])
+AT_CHECK([tcsh -f postcmd.csh], ,
+[>> echo foo
+foo
+>> echo foo | cat
+foo
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([shell])
+
+AT_DATA([script],
+[OK
+])
+chmod a+x script
+AT_DATA([shell.csh],
+[[alias shell `which cat`
+./script
+]])
+AT_CHECK([tcsh -f shell.csh], ,
+[OK
+])
+
+AT_CLEANUP
diff --git a/tests/arguments.at b/tests/arguments.at
new file mode 100644
index 000000000000..562fd831c9d2
--- /dev/null
+++ b/tests/arguments.at
@@ -0,0 +1,166 @@
+# Command-line argument handling
+
+AT_SETUP([-b])
+
+AT_DATA([-script.csh],
+[[echo $1
+]])
+AT_CHECK([tcsh -f -b -script.csh --version], , [--version
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([-c])
+
+AT_CHECK([tcsh -f -c 'echo $1' foo], , [foo
+])
+
+AT_CHECK([tcsh -f -c 'exit 99'], 99)
+
+AT_CHECK([tcsh -f -c 'echo \\\'], 1, ,
+[Argument for -c ends in backslash.
+])
+
+AT_CHECK([tcsh -f -c 'echo \\'], ,
+[\
+])
+
+AT_CHECK([tcsh -f -c])
+
+AT_CLEANUP
+
+
+TCSH_UNTESTED([-d])
+
+
+AT_SETUP([-e])
+
+# Note that exit is a builtin, won't work here without using a subshell
+AT_CHECK([tcsh -f -e -c 'echo 1; (exit 3); echo 2'], 3, [1
+])
+
+AT_CLEANUP
+
+
+TCSH_UNTESTED([-f])
+
+
+AT_SETUP([-i])
+
+AT_CHECK([echo 'echo $1' | tcsh -f -q -i foo], ,
+[[> foo
+> exit
+]])
+
+AT_CLEANUP
+
+
+# Warning message contains strerror(EBADF), libc-dependent; can't be turned
+# off using -q because -l works only when alone
+TCSH_UNTESTED([-l])
+
+
+
+TCSH_UNTESTED([-m])
+
+
+# -n tested in noexec.at
+
+
+TCSH_UNTESTED([-q])
+#AT_SETUP([-q])
+
+# Nested to make the SIGQUIT reporting predictable
+#AT_CHECK([tcsh -f -q -c 'kill -QUIT $$'], 131, ,)
+
+#AT_CLEANUP
+
+
+AT_SETUP([-s])
+
+AT_CHECK([echo 'echo $1' | tcsh -f -s foo], , [foo
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([-t])
+
+AT_DATA([input.csh],
+[[echo 1\
+2
+]])
+AT_CHECK([tcsh -f -t < input.csh], , [1 2
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([-v])
+
+AT_CHECK([echo 'repeat 2 echo OK' | tcsh -f -v], ,
+[OK
+OK
+],
+[repeat 2 echo OK
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([-x])
+
+AT_CHECK([echo 'repeat 2 echo OK' | tcsh -f -x], ,
+[OK
+OK
+],
+[repeat 2 echo OK
+echo OK
+echo OK
+])
+
+AT_CLEANUP
+
+
+TCSH_UNTESTED([-V])
+TCSH_UNTESTED([-X])
+
+
+TCSH_UNTESTED([--help])
+TCSH_UNTESTED([--version])
+
+
+AT_SETUP([invalid option])
+
+AT_CHECK([tcsh -f -Z], 1, ,
+[[Unknown option: `-Z'
+Usage: tcsh [ -bcdefilmnqstvVxX ] [ argument ... ].
+]])
+
+AT_CLEANUP
+
+
+
+AT_SETUP([non-option arguments])
+
+AT_DATA([options.csh],
+[[echo $0
+echo $1
+echo $#argv
+echo $argv
+]])
+AT_CHECK([tcsh -f ./././options.csh one two three], ,
+[./././options.csh
+one
+3
+one two three
+])
+
+AT_DATA([unreadable.csh],
+[[echo fail
+]])
+chmod 0 unreadable.csh
+AT_CHECK([tcsh -f unreadable.csh], 1, [], [ignore])
+
+AT_CLEANUP
diff --git a/tests/commands.at b/tests/commands.at
new file mode 100644
index 000000000000..b2f0955ded7f
--- /dev/null
+++ b/tests/commands.at
@@ -0,0 +1,1471 @@
+# Individual built-in commands
+
+TCSH_UNTESTED([%])
+
+
+AT_SETUP([:])
+
+AT_CHECK([tcsh -f -c ': foo'])
+
+AT_CLEANUP
+
+
+AT_SETUP([@])
+
+# Not testing much...
+AT_CHECK([tcsh -f -c 'set' > out1 && tcsh -f -c '@' > out2])
+AT_CHECK([diff out1 out2 | tail -n +2], ,
+[< command set
+---
+> command @
+])
+
+AT_CHECK([tcsh -f -c '@ var=2 * 3; echo $var'], ,
+[6
+])
+
+AT_CHECK([[tcsh -f -c 'set var=(1 2); @ var[2] = 5; echo $var']], ,
+[1 5
+])
+
+AT_CHECK([tcsh -f -c 'set var=1; @ var++; echo $var; @ var--; echo $var'], ,
+[2
+1
+])
+
+AT_CHECK([[tcsh -f -c \
+'set var=(0 1); @ var[2]++; echo $var; @ var[2]--; echo $var']], ,
+[0 2
+0 1
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([alias])
+
+AT_CHECK([tcsh -f -c 'alias'])
+
+AT_CHECK([tcsh -f -c 'alias foo echo bar; alias; alias foo'], ,
+[foo (echo bar)
+echo bar
+])
+
+AT_CHECK([tcsh -f -c 'alias foo "echo bar"; alias; alias foo'], ,
+[foo echo bar
+echo bar
+])
+
+AT_CHECK([tcsh -f -c 'alias alias alias'], 1, [],
+[alias: Too dangerous to alias that.
+])
+
+AT_CHECK([tcsh -f -c 'alias unalias unalias'], 1, [],
+[unalias: Too dangerous to alias that.
+])
+
+# Alias expansion happens only on the next input line
+AT_DATA([alias.csh],
+[[alias foo echo bar; foo
+foo
+]])
+AT_CHECK([tcsh -f alias.csh 2>&1], ,
+[foo: Command not found.
+bar
+])
+
+AT_CLEANUP
+
+
+TCSH_UNTESTED([alloc])
+TCSH_UNTESTED([bg])
+TCSH_UNTESTED([bindkey])
+#TCSH_UNTESTED([bs2cmd])
+
+
+AT_SETUP([break])
+
+# Evaluating the rest of the line is incredibly ugly
+AT_DATA([break.csh],
+[[while (1)
+ echo foo
+ break
+ echo bar
+end
+while (1)
+ echo Foo
+ break; echo Bar
+ echo Baz
+end
+foreach name (foo bar baz)
+ echo $name
+ while (1)
+ break; break
+ end
+end
+]])
+AT_CHECK([tcsh -f break.csh], ,
+[foo
+Foo
+Bar
+foo
+])
+
+# Ugly tends to imply buggy
+AT_DATA([break2.csh],
+[[while (1)
+ break; cat << EOF
+Line 1
+EOF
+ end
+ cat << EOF
+Line 2
+EOF
+]])
+AT_CHECK([tcsh -f break2.csh], ,
+[ cat << EOF
+Line 2
+])
+
+AT_CLEANUP
+
+
+TCSH_UNTESTED([builtins])
+TCSH_UNTESTED([bye])
+
+
+AT_SETUP([cd])
+
+AT_DATA([cd.csh],
+[[set current=`/bin/pwd`
+set home=$current
+mkdir -p a
+echo ---
+cd a
+/bin/pwd | sed "s,$current,,"
+echo ---
+cd
+/bin/pwd | sed "s,$current,,"
+echo ---
+cd "$current/a"
+/bin/pwd | sed "s,$current,,"
+echo ---
+cd -
+/bin/pwd | sed "s,$current,,"
+echo ---
+cd a
+set cdpath=($current)
+echo ---
+cd a
+/bin/pwd | sed "s,$current,,"
+echo ---
+cd current
+/bin/pwd | sed "s,$current,,"
+echo ---
+cd -p | sed "s,$current,,"
+echo ---
+cd -l | sed "s,$current,,"
+(cd -z)
+(cd - foo)
+:
+]])
+sed 's/^cd /chdir /; s/^(cd /(chdir /' < cd.csh > chdir.csh
+AT_DATA([expout],
+[[---
+/a
+---
+
+---
+/a
+---
+
+---
+---
+~/a @&t@
+/a
+---
+~ @&t@
+
+---
+~ @&t@
+---
+ @&t@
+]])
+AT_CHECK([tcsh -f cd.csh], , [expout],
+[[Usage: cd [-plvn][-|<dir>].
+Usage: cd [-plvn][-|<dir>].
+]])
+AT_CHECK([tcsh -f chdir.csh], , [expout],
+[[Usage: chdir [-plvn][-|<dir>].
+Usage: chdir [-plvn][-|<dir>].
+]])
+
+AT_CLEANUP
+
+
+AT_SETUP([complete])
+
+# We check only that the strings are preserved
+AT_DATA([complete.csh],
+[[complete
+complete foo 'n/A/t:*/_' 'n/[^A]/t:*/_'
+complete
+complete foo
+]])
+AT_CHECK([tcsh -f complete.csh], ,
+[[foo 'n/A/t:*/_' 'n/[^A]/t:*/_'
+'n/A/t:*/_' 'n/[^A]/t:*/_'
+]])
+
+AT_CLEANUP
+
+
+AT_SETUP([continue])
+
+# See comments in tests of 'break'
+AT_DATA([continue.csh],
+[[foreach var (1)
+ echo foo
+ break
+ echo bar
+end
+foreach var (1)
+ echo Foo
+ break; echo Bar
+ echo Baz
+end
+foreach name (foo bar baz)
+ echo $name
+ while (1)
+ continue; break
+ end
+end
+]])
+AT_CHECK([tcsh -f continue.csh], ,
+[foo
+Foo
+Bar
+foo
+])
+
+AT_DATA([continue2.csh],
+[[foreach var (1)
+ continue; cat << EOF
+Line 1
+EOF
+ end
+ cat << EOF
+Line 2
+EOF
+]])
+AT_CHECK([tcsh -f continue2.csh], ,
+[ cat << EOF
+Line 2
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([dirs])
+
+AT_DATA([dirs.csh],
+[[set current=`/bin/pwd`
+set home=$current
+mkdir a
+echo ---
+dirs
+echo ---
+pushd a
+dirs
+echo ---
+dirs -p
+echo ---
+dirs -l | sed "s,$current,CWD,g"
+echo ---
+dirs -v
+echo ---
+dirs -lv | sed "s,$current,CWD,g"
+dirs -S $current/saved
+echo ---
+pushd /
+dirs | sed "s,$current,CWD,g"
+echo ---
+dirs -L $current/saved
+dirs | sed "s,$current,CWD,g"
+echo ---
+dirs -c
+dirs | sed "s,$current,CWD,g"
+(dirs -z)
+(dirs - foo)
+:
+]])
+AT_CHECK([tcsh -f dirs.csh], ,
+[---
+~ @&t@
+---
+~/a ~ @&t@
+~/a ~ @&t@
+---
+~/a ~ @&t@
+---
+CWD/a CWD @&t@
+---
+0 ~/a
+1 ~
+---
+0 CWD/a
+1 CWD
+---
+/ ~/a ~ @&t@
+/ ~/a ~ @&t@
+---
+~/a ~ ~/a ~ @&t@
+---
+~/a @&t@
+],
+[[Usage: dirs [-plvnSLc].
+Usage: dirs [-plvnSLc].
+]])
+AT_CHECK([echo x"`/bin/pwd`"x > /tmp/x && sed "s,`/bin/pwd`,CWD,g" < saved], ,
+[cd CWD
+pushd CWD/a
+])
+
+AT_CLEANUP
+
+
+
+AT_SETUP([echo])
+
+# Other functionality tested with $echo_style
+AT_CHECK([tcsh -f -c 'echo OK'], ,
+[OK
+])
+
+AT_CLEANUP
+
+
+TCSH_UNTESTED([echotc])
+
+
+AT_SETUP([eval])
+
+AT_CHECK([tcsh -f -c 'set cmd="echo OK"; eval $cmd'], ,
+[OK
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([exec])
+
+AT_CHECK([tcsh -f -c 'exec echo OK'], ,
+[OK
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([exit])
+
+AT_CHECK([tcsh -f -c 'exit (50 * 4)'], 200)
+
+AT_CHECK([tcsh -f -c '(exit 50); exit'], 0)
+
+AT_CLEANUP
+
+
+TCSH_UNTESTED([fg])
+
+
+AT_SETUP([filetest])
+
+touch file1 file2
+chmod 6777 file1
+chmod 000 file2
+
+AT_CHECK([tcsh -f -c 'filetest -r file1 file2'], ,
+[1 0
+])
+
+AT_CHECK([tcsh -f -c 'filetest -w file1 file2'], ,
+[1 0
+])
+
+AT_CHECK([tcsh -f -c 'filetest -x file1 file2'], ,
+[1 0
+])
+
+AT_CHECK([tcsh -f -c 'filetest -X ls unknown_command'], ,
+[1 0
+])
+
+AT_CHECK([tcsh -f -c 'filetest -e file1 nonexistent'], ,
+[1 0
+])
+
+AT_CHECK([tcsh -f -c 'filetest -o file1'], ,
+[1
+])
+
+echo > nonempty
+AT_CHECK([tcsh -f -c 'filetest -z file1 nonempty'], ,
+[1 0
+])
+
+AT_CHECK([tcsh -f -c 'filetest -s file1 nonempty'], ,
+[0 1
+])
+
+mkdir dir
+chmod +t dir
+ln -s file2 link
+mkfifo pipe
+
+AT_CHECK([tcsh -f -c 'filetest -f file1 dir'], ,
+[1 0
+])
+
+AT_CHECK([tcsh -f -c 'filetest -d dir file1'], ,
+[1 0
+])
+
+AT_CHECK([tcsh -f -c 'filetest -l link file1'], ,
+[1 0
+])
+
+AT_CHECK([tcsh -f -c 'filetest -p pipe file1'], ,
+[1 0
+])
+
+AT_CHECK([tcsh -f -c 'filetest -u file1 file2'], ,
+[1 0
+])
+
+AT_CHECK([tcsh -f -c 'filetest -g file1 file2'], ,
+[1 0
+])
+
+AT_CHECK([tcsh -f -c 'filetest -k dir file2'], ,
+[1 0
+])
+
+AT_CHECK([tcsh -f -c 'filetest -t 0' < /dev/null], ,
+[0
+])
+
+AT_CHECK([tcsh -f -c 'filetest -f link'], ,
+[1
+])
+AT_CHECK([tcsh -f -c 'filetest -Lf link'], ,
+[0
+])
+
+AT_CHECK([tcsh -f -c 'filetest -rwx file1'], ,
+[1
+])
+
+# -A, -A:, -M, -M:, -C, -C:, -D, -I, -F, -U, -U:, -G, -G: not tested
+
+AT_CHECK([tcsh -f -c 'filetest -L link'], ,
+[file2
+])
+
+ln file2 file2link
+AT_CHECK([tcsh -f -c 'filetest -N file1 file2'], ,
+[1 2]
+)
+
+# S_ISVTX is masked out
+AT_CHECK([tcsh -f -c 'filetest -P file1'], ,
+[6777
+])
+AT_CHECK([tcsh -f -c 'filetest -P: file1'], ,
+[06777
+])
+AT_CHECK([tcsh -f -c 'filetest -P111 file1'], ,
+[111
+])
+AT_CHECK([tcsh -f -c 'filetest -P111: file1'], ,
+[0111
+])
+
+AT_CHECK([tcsh -f -c 'filetest -Z file1 nonempty'], ,
+[0 1
+])
+
+AT_CHECK([tcsh -f -c 'filetest -N unknown'], ,
+[-1
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([foreach])
+
+AT_DATA([foreach.csh],
+[[foreach var (a b c)
+ echo $var
+end
+]])
+AT_CHECK([tcsh -f foreach.csh], ,
+[a
+b
+c
+])
+
+AT_CLEANUP
+
+
+TCSH_UNTESTED([getspath])
+TCSH_UNTESTED([getxvers])
+
+
+AT_SETUP([glob])
+
+AT_CHECK([[tcsh -f -c 'glob a b c' | od -c] dnl
+ [| sed 's/[ ][ ]*/ /g; s/ $//']], ,
+[[0000000 a \0 b \0 c
+0000005
+]])
+
+AT_CLEANUP
+
+
+AT_SETUP([goto])
+
+AT_DATA([goto.csh],
+[[goto first
+echo fail
+ first:
+again:
+echo Here
+if $?again == 0 then
+ echo First
+ set again=1
+ goto again
+endif
+echo OK
+]])
+AT_CHECK([tcsh -f goto.csh], ,
+[Here
+First
+Here
+OK
+])
+
+AT_CLEANUP
+
+
+TCSH_UNTESTED([hashstat])
+
+
+AT_SETUP([history])
+
+AT_DATA([history.csh],
+[[: cmd 1
+: cmd 2
+echo ---
+history
+echo ---
+history 2
+echo ---
+history -h 2
+echo ---
+history -T 2
+echo ---
+history -r 2
+history -S hist1
+set savehist=(1)
+history -S hist2
+history -S hist3
+set savehist=(5 merge)
+history -S hist3
+history -M hist2
+echo ---
+history
+history -L hist2
+echo ---
+history 4
+history -c
+echo ---
+history
+]])
+AT_CHECK([[tcsh -f -q -i < history.csh] dnl
+ [| sed 's/ [^ ]* / TIME /']], ,
+[> ---
+ 1 TIME : cmd 1
+ 2 TIME : cmd 2
+ 3 TIME echo ---
+ 4 TIME history
+---
+ 5 TIME echo ---
+ 6 TIME history 2
+---
+echo ---
+history -h 2
+---
+ 9 TIME echo ---
+ 10 TIME history -T 2
+---
+ 12 TIME history -r 2
+ 11 TIME echo ---
+---
+ 1 TIME : cmd 1
+ 2 TIME : cmd 2
+ 3 TIME echo ---
+ 4 TIME history
+ 5 TIME echo ---
+ 6 TIME history 2
+ 7 TIME echo ---
+ 8 TIME history -h 2
+ 9 TIME echo ---
+ 10 TIME history -T 2
+ 11 TIME echo ---
+ 12 TIME history -r 2
+ 13 TIME history -S hist1
+ 14 TIME set savehist= ( 1 )
+ 15 TIME history -S hist2
+ 16 TIME history -S hist3
+ 17 TIME set savehist= ( 5 merge )
+ 18 TIME history -S hist3
+ 19 TIME history -M hist2
+ 20 TIME echo ---
+ 21 TIME history
+---
+ 22 TIME history -L hist2
+ 23 TIME history -S hist2
+ 24 TIME echo ---
+ 25 TIME history 4
+---
+ 27 TIME echo ---
+ 28 TIME history
+> exit
+])
+AT_CHECK([[sed 's/^#+[0123456789]*$/#+STAMP/' < hist1]], ,
+[#+STAMP
+: cmd 1
+#+STAMP
+: cmd 2
+#+STAMP
+echo ---
+#+STAMP
+history
+#+STAMP
+echo ---
+#+STAMP
+history 2
+#+STAMP
+echo ---
+#+STAMP
+history -h 2
+#+STAMP
+echo ---
+#+STAMP
+history -T 2
+#+STAMP
+echo ---
+#+STAMP
+history -r 2
+#+STAMP
+history -S hist1
+])
+AT_CHECK([[sed 's/^#+[0123456789]*$/#+STAMP/' < hist2]], ,
+[#+STAMP
+history -S hist2
+])
+AT_CHECK([[sed 's/^#+[0123456789]*$/#+STAMP/' < hist3]], ,
+[#+STAMP
+set savehist= ( 1 )
+#+STAMP
+history -S hist2
+#+STAMP
+history -S hist3
+#+STAMP
+set savehist= ( 5 merge )
+#+STAMP
+history -S hist3
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([hup])
+
+AT_DATA([hup.csh],
+[[kill -s HUP $$
+echo OK
+hup
+kill -s HUP $$
+echo fail
+]])
+# onintr - is necessary to keep setintr == 0; should dohup () be checking
+# something else?
+AT_CHECK([tcsh -f -c 'onintr -; nohup tcsh -f hup.csh' < /dev/null], ignore,
+[OK
+Hangup
+])
+
+# The prefix form requires job control and is not tested
+
+AT_CLEANUP
+
+
+AT_SETUP([if])
+
+AT_DATA([if.csh],
+[[if (0) echo fail
+if (1) echo OK
+if (0) then
+ echo fail
+else if (0) then
+ echo fail
+else
+ echo OK
+endif
+if (0) then
+ echo fail
+else if (1) then
+ echo OK
+else
+ echo fail
+endif
+if (0) then
+ echo fail
+else if (0) then
+ echo fail
+else if (1) then
+ echo OK
+else
+ echo fail
+endif
+if (0) then
+ echo fail
+else if (0) then
+ echo fail
+ else
+ echo OK
+endif
+if (1) then
+ echo OK
+else if (0) then
+ echo fail
+else
+ echo fail
+endif
+# skipping over an empty line
+if (0) then
+
+endif
+]])
+AT_CHECK([tcsh -f if.csh], ,
+[OK
+OK
+OK
+OK
+OK
+OK
+])
+
+AT_CLEANUP
+
+
+TCSH_UNTESTED([inlib])
+TCSH_UNTESTED([jobs])
+
+
+AT_SETUP([kill])
+
+# Nested to ensure consistent output
+AT_DATA([kill.csh],
+[[kill $$
+kill -USR1 $$
+]])
+AT_CHECK([tcsh -f -c 'tcsh -f -i -q < kill.csh'], ignore,
+[> User signal 1
+])
+
+# kill %job, kill -l untested untested
+
+AT_CLEANUP
+
+
+TCSH_UNTESTED([limit])
+
+
+AT_SETUP([log])
+
+AT_DATA([log.csh],
+[[set watch=(this_user_does_not_exist)
+log
+]])
+AT_CHECK([tcsh -f log.csh])
+
+AT_CLEANUP
+
+
+TCSH_UNTESTED([login])
+
+
+AT_SETUP([logout])
+
+AT_CHECK([tcsh -f -c 'logout'], 1, [],
+[Not a login shell.
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([ls-F])
+
+mkdir dir
+touch file exec .hidden
+chmod a+x exec
+mkfifo pipe
+ln -s file lfile
+ln -s dir ldir
+ln -s nowhere lnowhere
+unset LS_COLORS
+
+AT_CHECK([tcsh -f -c 'ls-F' | grep -vF testsuite.log], ,
+[dir/
+exec*
+file @&t@
+ldir@
+lfile@
+lnowhere@
+pipe|
+])
+
+AT_CHECK([tcsh -f -c 'set listlinks; ls-F' | grep -vF testsuite.log], ,
+[dir/
+exec*
+file @&t@
+ldir>
+lfile@
+lnowhere&
+pipe|
+])
+
+AT_CHECK([tcsh -f -c 'set listflags=x; ls-F' | grep -vF testsuite.log], ,
+[dir/
+exec*
+file @&t@
+ldir@
+lfile@
+lnowhere@
+pipe|
+])
+
+AT_CHECK([tcsh -f -c 'set listflags=A; ls-F' | grep -vF testsuite.log], ,
+[.hidden @&t@
+dir/
+exec*
+file @&t@
+ldir@
+lfile@
+lnowhere@
+pipe|
+])
+
+AT_CHECK([tcsh -f -c 'set listflags=xa; ls-F' | grep -vF testsuite.log], ,
+[../
+./
+.hidden @&t@
+dir/
+exec*
+file @&t@
+ldir@
+lfile@
+lnowhere@
+pipe|
+])
+
+AT_CLEANUP
+
+
+TCSH_UNTESTED([migrate])
+TCSH_UNTESTED([newgrp])
+
+
+AT_SETUP([nice])
+
+# Nothing really tested
+AT_CHECK([tcsh -f -c 'nice set var=1; echo $?var'], ,
+[0
+])
+
+
+AT_CLEANUP
+
+
+AT_SETUP([nohup])
+
+AT_DATA([nohup.csh],
+[[
+hup
+nohup
+kill -s HUP $$
+echo OK
+]])
+# See commends in [hup]
+AT_CHECK([tcsh -f -c 'onintr -; nohup tcsh -f nohup.csh' < /dev/null], ,
+[OK
+])
+
+AT_CLEANUP
+
+
+TCSH_UNTESTED([notify])
+
+
+AT_SETUP([onintr])
+
+AT_DATA([onintr.csh],
+[[onintr label
+kill -INT $$
+echo fail
+label:
+echo caught
+onintr -
+kill -INT $$
+echo OK
+onintr -
+kill -INT $$
+]])
+AT_CHECK([tcsh -f onintr.csh], ,
+[caught
+OK
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([popd])
+
+AT_DATA([popd.csh],
+[[set current=`/bin/pwd`
+set home=$current
+pushd /
+popd
+pushd /
+pushd $home
+popd +2
+echo ---
+dirs -c
+pushd /; popd -l
+pushd /; popd -v
+pushd /; popd -lv
+set pushdsilent
+pushd /; popd
+pushd /; echo ---; popd -p
+(popd -z)
+(popd - foo)
+:
+]])
+AT_CHECK([tcsh -f popd.csh | sed "s,`/bin/pwd`,CWD,"], ,
+[/ ~ @&t@
+~ @&t@
+/ ~ @&t@
+~ / ~ @&t@
+~ / @&t@
+---
+/ ~ @&t@
+CWD @&t@
+/ ~ @&t@
+0 ~
+/ ~ @&t@
+0 CWD
+---
+~ @&t@
+],
+[[Usage: popd [-plvn] [-|+<n>].
+Usage: popd [-plvn] [-|+<n>].
+]])
+
+AT_CLEANUP
+
+
+AT_SETUP([printenv])
+
+AT_CHECK([env_var=value tcsh -f -c 'printenv env_var'], ,
+[value
+])
+
+AT_CHECK([env_var=value tcsh -f -c 'printenv' | grep env_var], ,
+[env_var=value
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([pushd])
+
+AT_DATA([pushd.csh],
+[[set home=`/bin/pwd`
+mkdir a
+pushd /
+pushd /dev
+pushd
+set pushdtohome
+pushd
+pushd -
+dirs -c
+echo ---
+pushd
+pushd a
+pushd /dev
+pushd +2
+set dunique
+pushd /dev
+unset dunique
+set dextract
+pushd +2
+dirs -c
+echo ---
+pushd -l
+pushd -v
+pushd -lv
+set pushdsilent
+pushd
+echo ---
+pushd -p
+(pushd -z)
+(pushd - foo)
+:
+]])
+AT_CHECK([tcsh -f pushd.csh | sed "s,`/bin/pwd`,CWD,g"], ,
+[/ ~ @&t@
+/dev / ~ @&t@
+/ /dev ~ @&t@
+~ / /dev ~ @&t@
+/ ~ / /dev ~ @&t@
+---
+~ / @&t@
+~/a ~ / @&t@
+/dev ~/a ~ / @&t@
+~ / /dev ~/a @&t@
+/dev ~ / ~/a @&t@
+/ /dev ~ ~/a @&t@
+---
+CWD / @&t@
+0 ~
+1 ~
+2 /
+0 CWD
+1 CWD
+2 CWD
+3 /
+---
+~ ~ ~ ~ ~ / @&t@
+],
+[[Usage: pushd [-plvn] [-|<dir>|+<n>].
+Usage: pushd [-plvn] [-|<dir>|+<n>].
+]])
+
+AT_CLEANUP
+
+
+AT_SETUP([rehash])
+
+AT_CHECK([tcsh -f -c 'rehash'])
+
+AT_CLEANUP
+
+
+AT_SETUP([repeat])
+
+AT_CHECK([tcsh -f -c 'repeat 3 echo OK'], ,
+[OK
+OK
+OK
+])
+
+AT_CHECK([tcsh -f -c 'repeat 0 echo > file' && test -f file -a ! -s file])
+
+AT_CLEANUP
+
+
+TCSH_UNTESTED([rootnode])
+TCSH_UNTESTED([sched]) # We don't want to wait for minutes, so ...
+
+
+AT_SETUP([set])
+
+touch file1 file2
+
+AT_DATA([set.csh],
+[[set my_var1=val1
+set my_var2=(val2a val2b)
+set | grep my_var
+set my_var3
+echo $?my_var3 ">$my_var3<"
+set -r my_var4=(file* `echo foo bar`)
+echo $#my_var4 $my_var4
+(set my_var4=other)
+set -r
+set -f my_var5=(a b c 1 b 2)
+echo $my_var5
+set -l my_var5=(a b c 1 b 2)
+echo $my_var5
+set my_var2[2]=val2x
+echo $my_var2
+set var6=val6 var7 var8 = val8
+echo ">$var6<" ">$var7<" ">$var8<"
+]])
+AT_CHECK([tcsh -f set.csh], ,
+[my_var1 val1
+my_var2 (val2a val2b)
+1 ><
+4 file1 file2 foo bar
+my_var4 (file1 file2 foo bar)
+a b c 1 2
+a c 1 b 2
+val2a val2x
+>val6< >< >val8<
+],
+[set: $my_var4 is read-only.
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([setenv])
+
+AT_CHECK([env_var=value tcsh -f -c 'setenv' | grep env_var], ,
+[env_var=value
+])
+
+AT_DATA([output.sh],
+[[echo $env_var
+]])
+chmod a+x output.sh
+AT_CHECK([tcsh -f -c 'setenv env_var; ./output.sh'], ,
+[
+])
+
+AT_CHECK([tcsh -f -c 'setenv env_var value; ./output.sh'], ,
+[value
+])
+
+AT_CLEANUP
+
+
+TCSH_UNTESTED([setpath])
+TCSH_UNTESTED([setspath])
+TCSH_UNTESTED([settc])
+TCSH_UNTESTED([setty])
+TCSH_UNTESTED([setxvers])
+
+
+AT_SETUP([shift])
+
+AT_DATA([shift.csh],
+[[set var=(1 2)
+echo $var
+shift var
+echo $var
+shift var
+echo $var
+sh -c 'echo 1 >&2'
+(shift var)
+sh -c 'echo 2 >&2'
+echo $argv
+shift
+echo $argv
+shift
+echo $argv
+sh -c 'echo 3 >&2'
+(shift)
+sh -c 'echo 4 >&2'
+]])
+AT_CHECK([tcsh -f shift.csh A B], ,
+[1 2
+2
+
+A B
+B
+
+],
+[1
+shift: No more words.
+2
+3
+shift: No more words.
+4]
+)
+
+AT_CLEANUP
+
+
+AT_SETUP([source])
+
+AT_DATA([script.csh],
+[[set var=$1
+]])
+AT_CHECK([[tcsh -f -c 'source -h script.csh foo; history' \
+ | sed 's/ [^ ]* / TIME /']], ,
+[ 1 TIME source -h script.csh foo ; history
+ 2 TIME set var=$1
+])
+
+AT_CHECK([tcsh -f -c 'source -h script.csh foo; echo $var'], 1, [],
+[var: Undefined variable.
+])
+
+AT_DATA([script2.csh],
+[[echo OK
+echo $this_does_not_exist
+echo fail
+]])
+AT_DATA([script3.csh],
+[[source script2.csh
+echo fail
+]])
+AT_CHECK([tcsh -f -c 'source script3.csh'], 1,
+[OK
+],
+[this_does_not_exist: Undefined variable.
+])
+
+AT_DATA([unreadable.csh],
+[[echo fail
+]])
+chmod 000 unreadable.csh
+AT_CHECK([tcsh -f -c 'source unreadable.csh'], 1, [], [ignore])
+
+AT_CLEANUP
+
+
+TCSH_UNTESTED([stop])
+TCSH_UNTESTED([suspend])
+
+
+AT_SETUP([switch])
+
+touch file1
+AT_DATA([switch.csh],
+[[switch (file*)
+ case file1:
+ echo OK
+endsw
+switch (`echo foo`)
+ case *echo*:
+ echo fail
+ case foo:
+ echo OK
+endsw
+switch (string)
+ case ?string:
+ echo fail
+ case s*[i]?g:
+ echo OK
+ breaksw
+ default:
+ echo fail
+endsw
+switch (string)
+ case foo:
+ echo fail
+ default:
+ echo OK
+endsw
+switch (string)
+ case string:
+ echo OK1
+ case foo:
+ echo OK2
+ default:
+ echo OK3
+endsw
+switch (nothing)
+ case foo:
+ case bar:
+ echo fail
+endsw
+]])
+AT_CHECK([tcsh -f switch.csh], ,
+[OK
+OK
+OK
+OK
+OK1
+OK2
+OK3
+])
+
+AT_CLEANUP
+
+
+TCSH_UNTESTED([telltc])
+TCSH_UNTESTED([termname])
+TCSH_UNTESTED([time])
+
+
+AT_SETUP([umask])
+
+AT_DATA([umask.csh],
+[[umask 000
+umask
+umask 77
+umask
+umask 700
+umask
+umask 002
+umask
+]])
+AT_CHECK([tcsh -f umask.csh], ,
+[0
+77
+700
+2
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([unalias])
+
+AT_DATA([unalias.csh],
+[[unalias foo
+alias foo bar
+unalias fo?
+alias
+]])
+AT_CHECK([tcsh -f unalias.csh])
+
+AT_CLEANUP
+
+
+AT_SETUP([uncomplete])
+
+AT_DATA([uncomplete.csh],
+[[uncomplete foo
+complete foo 'n/A/t:*/_' 'n/[^A]/t:*/_'
+uncomplete f?*
+complete
+]])
+AT_CHECK([tcsh -f uncomplete.csh])
+
+AT_CLEANUP
+
+
+AT_SETUP([unhash])
+
+AT_CHECK([tcsh -f -c 'unhash'])
+
+AT_CLEANUP
+
+
+TCSH_UNTESTED([universe])
+TCSH_UNTESTED([unlimit])
+
+
+AT_SETUP([unset])
+
+AT_DATA([unset.csh],
+[[unset foo
+set foo=var
+unset f?o
+echo $?foo
+]])
+AT_CHECK([tcsh -f unset.csh], ,
+[0
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([unsetenv])
+
+AT_DATA([unsetenv.csh],
+[[unsetenv env_foo
+unsetenv env_*
+sh -c 'echo ${env_bar+set}'
+]])
+AT_CHECK([env_bar=value tcsh -f unsetenv.csh], ,
+[
+])
+
+AT_CLEANUP
+
+
+TCSH_UNTESTED([ver])
+
+
+AT_SETUP([wait])
+
+# Not really...
+AT_CHECK([tcsh -f -c 'wait'])
+
+AT_CLEANUP
+
+
+TCSH_UNTESTED([warp])
+TCSH_UNTESTED([watchlog])
+
+
+AT_SETUP([where])
+
+touch ls-F
+chmod a+x ls-F
+AT_DATA([where.csh],
+[[alias ls-F foo bar
+set path=(`/bin/pwd`)
+where ls-F
+where this_does_not_exist
+]])
+AT_CHECK([tcsh -f where.csh | sed "s,`/bin/pwd`,CWD,"], ,
+[ls-F is aliased to foo bar
+ls-F is a shell built-in
+CWD/ls-F
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([which])
+
+touch my_command
+chmod a+x my_command
+AT_DATA([which.csh],
+[[alias my_alias my alias
+set path=(`/bin/pwd`)
+which my_command
+which my_alias
+which echo
+which this_does_not_exist
+alias echo echo_alias
+which echo
+]])
+AT_CHECK([tcsh -f which.csh | sed "s,`/bin/pwd`,CWD,"], ,
+[CWD/my_command
+my_alias: aliased to my alias
+echo: shell built-in command.
+this_does_not_exist: Command not found.
+echo: aliased to echo_alias
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([while])
+
+AT_DATA([while.csh],
+[[set i=0
+while ($i < 3)
+ echo $i
+ @ i++
+end
+echo OK
+]])
+AT_CHECK([tcsh -f while.csh], ,
+[0
+1
+2
+OK
+])
+
+AT_CLEANUP
+
+
diff --git a/tests/expr.at b/tests/expr.at
new file mode 100644
index 000000000000..fa373c8fcb4d
--- /dev/null
+++ b/tests/expr.at
@@ -0,0 +1,167 @@
+# Expression evaluation
+
+AT_SETUP([Arithmetic operators])
+
+AT_CHECK([tcsh -f -c 'exit (2 || 3)'], 1)
+AT_CHECK([tcsh -f -c 'exit (2 || 0)'], 1)
+AT_CHECK([tcsh -f -c 'exit (0 || 3)'], 1)
+AT_CHECK([tcsh -f -c 'exit (0 || 0)'], 0)
+
+AT_CHECK([tcsh -f -c 'exit (2 && 3)'], 1)
+AT_CHECK([tcsh -f -c 'exit (2 && 0)'], 0)
+AT_CHECK([tcsh -f -c 'exit (0 && 3)'], 0)
+AT_CHECK([tcsh -f -c 'exit (0 && 0)'], 0)
+
+AT_CHECK([tcsh -f -c 'exit (1 | 2)'], 3)
+
+AT_CHECK([tcsh -f -c 'exit (2 ^ 3)'], 1)
+
+AT_CHECK([tcsh -f -c 'exit (2 & 3)'], 2)
+
+AT_CHECK([tcsh -f -c 'exit (2 == 3)'], 0)
+AT_CHECK([tcsh -f -c 'exit (2 == 2)'], 1)
+AT_CHECK([tcsh -f -c 'exit (02 == 2)'], 0)
+
+AT_CHECK([tcsh -f -c 'exit (2 != 3)'], 1)
+AT_CHECK([tcsh -f -c 'exit (2 != 2)'], 0)
+AT_CHECK([tcsh -f -c 'exit (02 != 2)'], 1)
+
+AT_CHECK([tcsh -f -c 'exit (foo =~ f*o)'], 1)
+AT_CHECK([tcsh -f -c 'exit (foo =~ b*o)'], 0)
+
+AT_CHECK([tcsh -f -c 'exit (foo !~ f*o)'], 0)
+AT_CHECK([tcsh -f -c 'exit (foo !~ b*o)'], 1)
+
+AT_CHECK([tcsh -f -c 'exit (2 >= 3)'], 0)
+AT_CHECK([tcsh -f -c 'exit (2 >= 2)'], 1)
+AT_CHECK([tcsh -f -c 'exit (3 >= 2)'], 1)
+
+AT_CHECK([tcsh -f -c 'exit (2 <= 3)'], 1)
+AT_CHECK([tcsh -f -c 'exit (2 <= 2)'], 1)
+AT_CHECK([tcsh -f -c 'exit (3 <= 2)'], 0)
+
+AT_CHECK([tcsh -f -c 'exit (2 > 3)'], 0)
+AT_CHECK([tcsh -f -c 'exit (2 > 2)'], 0)
+AT_CHECK([tcsh -f -c 'exit (3 > 2)'], 1)
+
+AT_CHECK([tcsh -f -c 'exit (2 < 3)'], 1)
+AT_CHECK([tcsh -f -c 'exit (2 < 2)'], 0)
+AT_CHECK([tcsh -f -c 'exit (3 < 2)'], 0)
+
+AT_CHECK([tcsh -f -c 'exit (2 << 3)'], 16)
+
+AT_CHECK([tcsh -f -c 'exit (3 >> 1)'], 1)
+
+AT_CHECK([tcsh -f -c 'exit (2 + 3)'], 5)
+
+AT_CHECK([tcsh -f -c 'exit (2 - 3)'], 255)
+
+AT_CHECK([tcsh -f -c 'exit (2 * 3)'], 6)
+
+AT_CHECK([tcsh -f -c 'exit (10 / 2)'], 5)
+
+AT_CHECK([tcsh -f -c 'exit (5 % 3)'], 2)
+
+AT_CHECK([tcsh -f -c 'exit (! 0)'], 1)
+AT_CHECK([tcsh -f -c 'exit (! 3)'], 0)
+
+AT_CHECK([tcsh -f -c 'exit (~ 0)'], 255)
+AT_CHECK([tcsh -f -c 'exit (~ 254)'], 1)
+
+AT_CHECK([tcsh -f -c 'exit ((3))'], 3)
+
+AT_CLEANUP
+
+
+AT_SETUP([Primary expressions])
+
+AT_CHECK([tcsh -f -c 'set parseoctal; exit (010)'], 8)
+AT_CHECK([tcsh -f -c 'exit (010)'], 10)
+
+AT_CHECK([tcsh -f -c 'exit ( "" )'], 0)
+
+AT_CHECK([tcsh -f -c 'exit { true }'], 1)
+AT_CHECK([tcsh -f -c 'exit { false }'], 0)
+
+touch file1 file2
+chmod 6777 file1
+chmod 000 file2
+
+AT_CHECK([tcsh -f -c 'exit ( -r file1 )'], 1)
+AT_CHECK([tcsh -f -c 'exit ( -r file2 )'], 0)
+
+AT_CHECK([tcsh -f -c 'exit ( -w file1 )'], 1)
+AT_CHECK([tcsh -f -c 'exit ( -w file2 )'], 0)
+
+AT_CHECK([tcsh -f -c 'exit ( -x file1 )'], 1)
+AT_CHECK([tcsh -f -c 'exit ( -x file2 )'], 0)
+
+AT_CHECK([tcsh -f -c 'exit ( -X ls )'], 1)
+AT_CHECK([tcsh -f -c 'exit ( -X unknown_command )'], 0)
+
+AT_CHECK([tcsh -f -c 'exit ( -e file1 )'], 1)
+AT_CHECK([tcsh -f -c 'exit ( -e nonexistent )'], 0)
+
+AT_CHECK([tcsh -f -c 'exit ( -o file1 )'], 1)
+
+echo > nonempty
+AT_CHECK([tcsh -f -c 'exit ( -z file1 )'], 1)
+AT_CHECK([tcsh -f -c 'exit ( -z nonempty )'], 0)
+
+AT_CHECK([tcsh -f -c 'exit ( -s file1 )'], 0)
+AT_CHECK([tcsh -f -c 'exit ( -r nonempty )'], 1)
+
+mkdir dir
+chmod +t dir
+ln -s file2 link
+mkfifo pipe
+
+AT_CHECK([tcsh -f -c 'exit ( -f file1 )'], 1)
+AT_CHECK([tcsh -f -c 'exit ( -f dir )'], 0)
+
+AT_CHECK([tcsh -f -c 'exit ( -d dir )'], 1)
+AT_CHECK([tcsh -f -c 'exit ( -d file1 )'], 0)
+
+AT_CHECK([tcsh -f -c 'exit ( -l link )'], 1)
+AT_CHECK([tcsh -f -c 'exit ( -l file1 )'], 0)
+
+AT_CHECK([tcsh -f -c 'exit ( -p pipe )'], 1)
+AT_CHECK([tcsh -f -c 'exit ( -p file1 )'], 0)
+
+AT_CHECK([tcsh -f -c 'exit ( -u file1 )'], 1)
+AT_CHECK([tcsh -f -c 'exit ( -u file2 )'], 0)
+
+AT_CHECK([tcsh -f -c 'exit ( -g file1 )'], 1)
+AT_CHECK([tcsh -f -c 'exit ( -g file2 )'], 0)
+
+AT_CHECK([tcsh -f -c 'exit ( -k dir )'], 1)
+AT_CHECK([tcsh -f -c 'exit ( -k file2 )'], 0)
+
+AT_CHECK([tcsh -f -c 'exit ( -t 0 )' < /dev/null], 0)
+
+AT_CHECK([tcsh -f -c 'exit ( -f link )'], 1)
+AT_CHECK([tcsh -f -c 'exit ( -Lf link )'], 0)
+
+AT_CHECK([tcsh -f -c 'exit ( -rwx file1 )'], 1)
+
+# -A, -A:, -M, -M:, -C, -C:, -D, -I, -F, -U, -U:, -G, -G: not tested
+
+AT_CHECK([tcsh -f -c 'exit ( -L link == file2 )'], 1)
+
+ln file2 file2link
+AT_CHECK([tcsh -f -c 'exit ( -N file1 )'], 1)
+AT_CHECK([tcsh -f -c 'exit ( -N file2 )'], 2)
+
+# S_ISVTX is masked out
+AT_CHECK([tcsh -f -c 'exit ( -P file1 == 6777 )'], 1)
+AT_CHECK([tcsh -f -c 'exit ( -P: file1 == 06777 )'], 1)
+AT_CHECK([tcsh -f -c 'exit ( -P111 file1 == 111 )'], 1)
+AT_CHECK([tcsh -f -c 'exit ( -P111: file1 == 0111 )'], 1)
+
+AT_CHECK([tcsh -f -c 'exit ( -Z file1 )'], 0)
+AT_CHECK([tcsh -f -c 'exit ( -Z nonempty )'], 1)
+
+AT_CHECK([tcsh -f -c 'exit ( -N unknown )'], 255)
+
+AT_CLEANUP
+
diff --git a/tests/history.at b/tests/history.at
new file mode 100644
index 000000000000..2eb8e318b49d
--- /dev/null
+++ b/tests/history.at
@@ -0,0 +1,444 @@
+# Test of the history functions. Some of these are already tested in
+# variables and commands.
+
+AT_SETUP([history])
+
+# Check history duplicate erase
+AT_DATA([hist-base.csh],
+[[set histdup=erase history=( 5 "%h TIME %R\n")
+echo $histdup $history
+: 1
+: 2
+: 3
+: 2
+: 4
+]])
+AT_CHECK([{ cat hist-base.csh; echo "!4"; } > hist.csh; \
+ tcsh -f -q -i < hist.csh], 1,
+[> erase 5 %h TIME %R
+
+> exit
+],
+[4: Event not found.
+])
+
+# Try all four variants with different values of histdup.
+AT_CHECK([{ cat hist-base.csh; echo : 4; echo history 9; } > hist.csh; ] dnl
+ [tcsh -f -q -i < hist.csh], ,
+[> erase 5 %h TIME %R
+
+ 3 TIME : 1
+ 5 TIME : 3
+ 6 TIME : 2
+ 8 TIME : 4
+ 9 TIME history 9
+> exit
+],)
+AT_CHECK([{ sed 's/erase/all/' hist-base.csh; echo : 4; echo history 9;}] dnl
+ [> hist.csh; tcsh -f -q -i < hist.csh], ,
+[> all 5 %h TIME %R
+
+ 3 TIME : 1
+ 4 TIME : 2
+ 5 TIME : 3
+ 6 TIME : 4
+ 7 TIME history 9
+> exit
+],)
+AT_CHECK([{ sed 's/erase/prev/' hist-base.csh; echo : 4; echo history 9; }] dnl
+ [> hist.csh; tcsh -f -q -i < hist.csh], ,
+[> prev 5 %h TIME %R
+
+ 4 TIME : 2
+ 5 TIME : 3
+ 6 TIME : 2
+ 7 TIME : 4
+ 8 TIME history 9
+> exit
+],)
+AT_CHECK([{ sed 's/erase//' hist-base.csh; echo : 4; echo history 9;}] dnl
+ [> hist.csh; tcsh -f -q -i < hist.csh], ,
+[> 5 %h TIME %R
+
+ 5 TIME : 3
+ 6 TIME : 2
+ 7 TIME : 4
+ 8 TIME : 4
+ 9 TIME history 9
+> exit
+],)
+
+# Illustrating reference credit scheme (Hist.Href) that preserves
+# recently used items in the history list, instead of using a strictly
+# FIFO discipline.
+AT_DATA([hist-ev.csh],
+[[: !3
+: : !6
+: : !3
+: x !6
+history 9
+]])
+AT_CHECK([[cat hist-base.csh hist-ev.csh > hist.csh; ] dnl
+ [ tcsh -f -q -i < hist.csh ]], ,
+[> erase 5 %h TIME %R
+
+ 3 TIME : 1
+ 6 TIME : 2
+ 8 TIME : : 1
+ 9 TIME : : : 2
+ 10 TIME : : : 1
+ 11 TIME : x : 2
+ 12 TIME history 9
+> exit
+],
+[: : 1
+: : : 2
+: : : 1
+: x : 2
+])
+
+# Repeat with a duplicate command. This demonstrates a problem in the
+# old code that renumbers Href counters following a successful match in
+# erase mode.
+AT_CHECK([[{ cat hist-base.csh; sed 's/x !6/: !6/' hist-ev.csh;}] dnl
+ [> hist.csh; tcsh -f -q -i < hist.csh ]], ,
+[> erase 5 %h TIME %R
+
+ 3 TIME : 1
+ 6 TIME : 2
+ 8 TIME : : 1
+ 10 TIME : : : 1
+ 11 TIME : : : 2
+ 12 TIME history 9
+> exit
+],
+[: : 1
+: : : 2
+: : : 1
+: : : 2
+])
+# The old code discards events 3 & 6 and instead retains 7:
+# - 3 TIME : 1
+# - 6 TIME : 2
+# + 7 TIME : 4
+# 8 TIME : : 1
+
+AT_CLEANUP
+
+AT_SETUP([history performance])
+
+# Now some scaling tests with large history. Unfortunately the
+# reasonable settings here will depend on test hardware.
+
+# First a "test" that just generates a large history file.
+AT_DATA([hist-generate.awk],
+[[BEGIN {
+ if (ARGC != 2) {
+ print "Usage is: " ARGV[0] " <n-history-lines>"
+ exit 13
+ }
+ lines = ARGV[1];
+ tBase = 1234567890;
+ for (i = 1; i<= lines; i++) {
+ print "#+" tBase+i "\n: " i;
+ }
+}
+]])
+AT_CHECK([awk -f hist-generate.awk 5000 > test.history])
+
+AT_DATA([hist-load-save.csh],
+[[: echo Testing performance of history features of tcsh.
+if ( $#argv < 3 ) then
+ echo Usage is: tcsh -f -i "[hist size (15000)]" "[use dup (erase)]"
+ echo " [use merge (1)]" "< $0"
+ exit 1
+endif
+set histSize=$1
+set usedup=$2
+set usemerge=$3
+
+: echo in tcshrc with history size $histSize at `date +%F\ %T.%N`
+set histfile=test.history
+echo Generating
+@ len = `wc -l < $histfile` / 2
+if ( $len != $histSize ) then
+ awk -f hist-generate.awk $histSize > $histfile
+endif
+
+set history=$histSize
+set histdup=$usedup
+if ( $usemerge ) then
+ set savehist=( $histSize merge )
+else
+ set savehist=$histSize
+endif
+: echo "savehist=$savehist" "history=$history"
+: # Cannot use the time built-in because history is a shell function
+echo Loading at `date +%F\ %T.%N`
+history -L
+: 'wc -l $histfile; history | wc -l; history | head -2; history | tail -2'
+echo Saving at `date +%F\ %T.%N`
+history -S
+echo Done at `date +%F\ %T.%N`
+]])
+AT_CHECK([[ tcsh -f -q -i 5000 erase 1 < hist-load-save.csh] dnl
+ [ | sed 's/ at [-: 0-9.]*/ at TIME/' ]], 0,
+[> Generating
+Loading at TIME
+Saving at TIME
+Done at TIME
+> exit
+], [])
+
+AT_CHECK([[ tcsh -f -q -i 4096 erase 1 < hist-load-save.csh] dnl
+ [ | sed 's/ at [-: 0-9.]*/ at TIME/' ]], 0,
+[> Generating
+Loading at TIME
+Saving at TIME
+Done at TIME
+> exit
+], [])
+
+# Could repeat test with different sizes (on a faster machine), with
+# different histdup settings ("all", "prev", or "") and with merge (for
+# savehist) set to 0 instead of 1.
+
+AT_CLEANUP
+
+AT_SETUP([history faults])
+
+# Try some things that have caused failures before
+AT_DATA([hist-err.csh],
+[[set histfile=test.history histdup=erase history=0
+set savehist = (4096 merge)
+echo next
+set history="(5 %h TIME %R\n)"
+]])
+
+AT_CHECK([[ tcsh -f -q -i < hist-err.csh]], 0,
+[> next
+> exit
+], [])
+
+AT_CHECK([[ ( cat hist-err.csh; echo history; echo echo done ) | ] dnl
+ [ tcsh -f -q -i ]], 1,
+[> next
+> exit
+],
+[history: Badly formed number.
+])
+
+AT_CLEANUP
+
+AT_SETUP([history hup])
+
+# Test for problem introduced in 6.15 where the history file gets
+# truncated if a tcsh is run from a pty that is closed unexpectedly.
+# Test this three ways, depending on availability of local programs to
+# create pseudo-ttys (pty).
+
+AT_DATA([hist-kill.sh],
+[[#!/bin/sh
+
+program=script
+[ $# -eq 0 ] || program=$1
+progpath=`which $program`
+[ -n "$progpath" -a -x "$progpath" ] || {
+ echo $program was not found; exit 0
+}
+echo Using $program "($progpath)" to run tcsh inside a pty
+
+set -e
+
+saveHistfile=
+histfile=$PWD/test.history
+# Initialize the history file to something small but non-zero.
+{ echo "#+1234567890"; echo echo dummy history; } > $histfile
+
+setHistSize() {
+ histsize=`stat -c %s $histfile`
+ [ $histsize -gt 0 ] || exit 3 # should never happen
+ histdate=`stat -c %Y $histfile`
+ ls -l --full-time $histfile
+ echo size is $histsize date is $histdate at `date`
+}
+
+checkHistSize () {
+ local oldS=$1
+ local oldD=$2
+ local newHistsize=`stat -c %s $histfile`
+ local newHistdate=`stat -c %Y $histfile`
+ ls -l --full-time $histfile
+ echo size is now $newHistsize date is now $newHistdate at `date`
+ # if the size not zero while the date and size are not both unchanged then
+ # the test is successful
+ [ $newHistsize -eq 0 ] && \
+ { echo FAILED: history file truncated; return 66; }
+ [ $newHistsize -gt 0 -a \
+ \( $oldS -ne $newHistsize -o $oldD -ne $newHistdate \) ] || \
+ { echo check hist size/date failed, try rerunning test; return 66; }
+}
+
+tcshPath=`which tcsh`
+[ -x $tcshPath ] || exit 1
+tcshInput=hist-kill.csh
+[ -e $tcshInput ] || exit 2
+
+# To avoid the problem of large history files that may take more than 1 second
+# to read, replace the user's history file with the small one created above.
+saveHistfile=$PWD/save.history.$$
+origHistfile=$HOME/.history
+mv $origHistfile $saveHistfile
+cp $histfile $origHistfile # initialize contents created above
+
+if [ $program = script ]; then
+ # use script to create the pty
+ ( echo 'set histfile='$histfile; cat $tcshInput ; sleep 2; echo exit ) | \
+ script -c "exec $tcshPath" /dev/null & scriptPid=$!
+ sleep 1
+ setHistSize
+ # Not sure if there is a more standard way to do this.
+ childScript=`ps --ppid $scriptPid --no-headers --format pid`
+ [ -n $childScript -a $childScript -gt 1 ] && kill $childScript
+elif [ $program = xterm ]; then
+ # use xterm to create the pty
+ # Can't override the default history file, so this test trashes user's real
+ # history file. We try to preserve it, above.
+ histfile=$origHistfile
+ xterm -iconic -geom -1+1 -e "$tcshPath" & xtermPid=$!
+ sleep 1
+ setHistSize
+ kill $xtermPid
+elif [ $program = ./hist-kill ]; then
+ # use custom C program to create the pty
+ ( echo 'set histfile='$histfile; cat $tcshInput ) | \
+ ./hist-kill $tcshPath & histkillPid=$!
+ sleep 1
+ setHistSize
+ kill $histkillPid
+else
+ echo unsupported program $program
+fi
+sleep 1
+checkHistSize $histsize $histdate || rc=$?
+# Restore original history file, if necessary
+[ -n "$saveHistfile" ] && mv $saveHistfile $origHistfile
+[ -z "$rc" ] || exit $rc
+echo Done testing tcsh with $program successfully
+]])
+
+AT_DATA([hist-kill.csh],
+[[set history = ( 20 "%h %D-%w-%y %P %R\n" )
+set savehist=(20 merge)
+history -S
+echo $version pid=$$
+/bin/ls -l --full-time ~/.hi* ./*history*
+]])
+
+# Try both variants of this script, then the C version.
+AT_CHECK([sh hist-kill.sh script], 0, stdout, stderr)
+AT_CHECK([[if [ -n "$DISPLAY" ]; then sh hist-kill.sh xterm; ] dnl
+ [ else echo Skip xterm test: no display; fi]], 0, stdout, stderr)
+
+AT_DATA([hist-kill.c],
+[[/* Test tcsh response to loss of pseudo-terminal (pty) master. Creates a pty
+ * and attaches it to a child process, the pty slave. Sends the contents to
+ * stdin to the pty and echos output from the pty onto stdout. Takes one
+ * optional argument, which is the pathname to the program to run attached to
+ * the pty. The main process is the pty master and does not exit, but must be
+ * killed by the invoker. When the master dies, the slave process should
+ * receive a SIGHUP courtesy of the kernel. */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <pty.h> /* for openpty and forkpty */
+#include <unistd.h>
+#include <errno.h>
+#include <signal.h>
+
+int main(int argc, char *argv[])
+{
+ const char *binFile = "/bin/tcsh";
+ if (argc > 1)
+ binFile = argv[1];
+ int masterFd;
+ int pid = forkpty(&masterFd, NULL, NULL, NULL);
+ if (pid == 0) { /* child */
+ printf("pty slave is %d\n", getpid());
+ char *bin = strdup(binFile);
+ char *argv[] = { bin, NULL };
+ execvp(bin, argv);
+ perror("execvp");
+ exit(99);
+ }
+ if (pid < 0) {
+ perror("forkpty");
+ exit(66);
+ }
+ { /* parent */
+ int nbytes;
+ int input = dup(masterFd);
+ int output = dup(masterFd);
+ close(masterFd);
+
+ printf("pty master is %d\n", getpid());
+
+ if (fork() == 0) {
+ /* subparent, sends data from our stdin to child pty, then exits */
+ unsigned nSent = 0;
+ char buf[128];
+ printf("sub parent is %d\n", getpid());
+ while ((nbytes = read(0, buf, sizeof(buf))) > 0) {
+ int sent = write(output, buf, nbytes);
+ if (sent > 0)
+ nSent += sent;
+ if (sent != nbytes)
+ break;
+ }
+ printf("Sent %d bytes to child.\n", nSent);
+ exit(0);
+ }
+
+ /* Main process reads data from the child pty and displays it. Unless
+ * killed or some unexpected error occurs, this process runs until the
+ * child pty exits. */
+ unsigned count = 0;
+ while (1) {
+ char buf[72];
+ nbytes = read(input, buf, sizeof(buf)-1);
+ if (nbytes < 0)
+ break;
+ count += nbytes;
+ unsigned i;
+ for (i = 0; i<nbytes; i++) { /* filter control characters */
+ if (buf[i] < 32 &&
+ buf[i] != '\n' && buf[i] != '\r' && buf[i] != '\t') {
+ printf("Bytes: ");
+ for (i = 0; i<nbytes; i++)
+ printf(" %02x", buf[i] & 0xff);
+ printf("\n");
+ break;
+ }
+ }
+ if (i == nbytes) { /* no funny business seen */
+ buf[nbytes] = 0;
+ printf("Got _%s_\n", buf);
+ }
+ fflush(stdout);
+ }
+ if (nbytes < 0)
+ perror("read");
+ usleep(100000);
+ printf("exiting, got EOF after %d bytes\n", count);
+ exit(0);
+ }
+}
+]])
+
+AT_CHECK([if cc -o hist-kill hist-kill.c -lutil; ] dnl
+ [ then sh hist-kill.sh ./hist-kill; ] dnl
+ [ else echo C compiler failed, skipping this approach; fi],
+ 0, stdout, stderr)
+
+AT_CLEANUP
diff --git a/tests/lexical.at b/tests/lexical.at
new file mode 100644
index 000000000000..f5b1b0fc8e82
--- /dev/null
+++ b/tests/lexical.at
@@ -0,0 +1,546 @@
+# Lexical analysis and substitutions
+
+AT_SETUP([Word splitting])
+
+AT_CHECK([tcsh -f -v -c '&|;<>()&||<<>>space tab end'], 1, ,
+[& | ; < > ( ) & || << >> space tab end
+Invalid null command.
+])
+
+# Note that the tab becomes a space!
+AT_DATA([oneword.csh],
+[[set var=('&|;<>()&||<<>>space tab end')
+echo $var[1]
+]])
+AT_CHECK([tcsh -f oneword.csh], ,
+[&|;<>()&||<<>>space tab end
+])
+
+# Note that the tab becomes a space!
+AT_DATA([oneword.csh],
+[[set var=("&|;<>()&||<<>>space tab end")
+echo $var[1]
+]])
+AT_CHECK([tcsh -f oneword.csh], ,
+[&|;<>()&||<<>>space tab end
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([Comments])
+
+AT_CHECK([echo 'echo OK@%:@comment' | tcsh -f], , [OK
+])
+
+AT_CHECK([tcsh -f -c 'echo @%:@no comment'], ,
+[@%:@no comment
+])
+
+AT_DATA([comment2.csh],
+[[echo testing...@%:@\
+OK
+]])
+AT_CHECK([tcsh -f comment2.csh], ,
+[testing... OK
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([Escaping special characters])
+
+AT_DATA([nosplit.csh],
+[[echo \&\|\;\<\>\(\)\&\|\|\<\<\>\>\space\ tab\ end
+echo '&|;<>()&||<<>>space tab end'
+echo "&|;<>()&||<<>>space tab end"
+set verbose
+echo `&|;<>()&||<<>>space tab end`
+]])
+AT_CHECK([tcsh -f nosplit.csh], 1,
+[&|;<>()&||<<>>space tab end
+&|;<>()&||<<>>space tab end
+&|;<>()&||<<>>space tab end
+
+],
+[echo `&|;<>()&||<<>>space tab end`
+Invalid null command.
+])
+
+# backslash handling tested with $backslash_quote
+
+AT_CHECK([tcsh -f -c 'echo "foo\"bar"'], 1, , [Unmatched ".
+])
+dnl " Pacify emacs
+
+AT_CHECK([tcsh -f -c "echo 'foo\'bar'"], 1, , [Unmatched '.
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([Preventing substitution])
+
+AT_CHECK([tcsh -f -c 'echo \$OK'], , [$OK
+])
+
+AT_CHECK([tcsh -f -c 'echo \`OK\`'], , [`OK`
+])
+
+AT_DATA([noalias.csh],
+[[alias true='echo error'
+\true
+tru\e
+]])
+AT_CHECK([tcsh -f noalias.csh])
+
+AT_CHECK([tcsh -f -c 'echo g\?\*b'], , [g?*b
+])
+
+AT_DATA([novar.csh],
+[[echo '$OK'
+]])
+AT_CHECK([tcsh -f novar.csh], , [$OK
+])
+
+AT_DATA([nocmd.csh],
+[[echo '`OK`'
+]])
+AT_CHECK([tcsh -f nocmd.csh], , [`OK`
+])
+
+AT_DATA([noalias.csh],
+[[alias true='echo error'
+'t'rue
+tru'e'
+]])
+AT_CHECK([tcsh -f noalias.csh])
+
+AT_DATA([noglob.csh],
+[[echo 'g?*b'
+]])
+AT_CHECK([tcsh -f noglob.csh], , [g?*b
+])
+
+AT_CHECK([tcsh -f -c 'echo \!OK'], , [!OK
+])
+
+AT_CHECK([tcsh -f -c "echo !OK"], 1, ,
+[OK: Event not found.
+])
+
+AT_CHECK([tcsh -f -c 'echo "$OK"'], 1, , [OK: Undefined variable.
+])
+
+AT_CHECK([tcsh -f -c 'echo "`OK`"'], 1, [
+],
+[OK: Command not found.
+])
+
+AT_DATA([noalias.csh],
+[[alias true='echo error'
+"t"rue
+tru"e"
+]])
+AT_CHECK([tcsh -f noalias.csh])
+
+AT_CHECK([tcsh -f -c 'echo "g?*b"'], , [g?*b
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([History basics])
+
+# Printing prompt only when at end of input is rather nondeterministic...
+AT_DATA([basic.csh],
+[[echo 1
+echo 2
+!1
+]])
+AT_CHECK([tcsh -f -q -i < basic.csh], ,
+[> 1
+2
+1
+> exit
+],
+[echo 1
+])
+
+AT_DATA([histlit.csh],
+[[echo foo
+!!
+history | cut -d ' ' -f 1,3-
+set histlit
+history | cut -d ' ' -f 1,3-
+]])
+AT_CHECK([tcsh -f -q -i < histlit.csh], ,
+[> foo
+foo
+ 1 echo foo
+ 2 echo foo
+ 3 history | cut -d ' ' -f 1,3-
+ 1 echo foo
+ 2 !!
+ 3 history | cut -d ' ' -f 1,3-
+ 4 set histlit
+ 5 history | cut -d ' ' -f 1,3-
+> exit
+],
+[echo foo
+])
+
+AT_DATA([nohist.csh],
+[echo ! space ! tab != "!(" newline !
+])
+AT_CHECK([tcsh -f nohist.csh], ,
+[[! space ! tab != !( newline !
+]])
+
+AT_CLEANUP
+
+
+AT_SETUP([Event specification])
+
+AT_DATA([positive.csh],
+[[echo 1
+echo 2
+!1
+]])
+AT_CHECK([tcsh -f -q -i < positive.csh], ,
+[> 1
+2
+1
+> exit
+],
+[echo 1
+])
+
+AT_DATA([negative.csh],
+[[echo 1
+echo 2
+!-2
+]])
+AT_CHECK([tcsh -f -q -i < negative.csh], ,
+[> 1
+2
+1
+> exit
+],
+[echo 1
+])
+
+AT_CHECK([echo 'echo !@%:@:0' | tcsh -f -q -i], ,
+[> echo
+> exit
+],
+[echo echo
+])
+
+AT_CHECK([echo 'echo !@%:@:1' | tcsh -f -q -i], 1,
+[> > exit
+],
+[Bad ! arg selector.
+])
+
+AT_DATA([bang.csh],
+[[echo 1
+echo 2
+!!
+]])
+AT_CHECK([tcsh -f -q -i < bang.csh], ,
+[> 1
+2
+2
+> exit
+],
+[echo 2
+])
+
+AT_DATA([startsearch.csh],
+[[echo 1
+echo 2
+true
+!e
+]])
+AT_CHECK([tcsh -f -q -i < startsearch.csh], ,
+[> 1
+2
+2
+> exit
+],
+[echo 2
+])
+
+AT_DATA([subsearch.csh],
+[[echo 1
+echo 12
+true
+!?2
+!?1?
+]])
+AT_CHECK([tcsh -f -q -i < subsearch.csh], ,
+[> 1
+12
+12
+12
+> exit
+],
+[echo 12
+echo 12
+])
+
+AT_DATA([braces.csh],
+[[echo 1
+!{!}
+!{1}
+!{-1}
+!{e}
+!{?e?}
+]])
+AT_CHECK([tcsh -f -q -i < braces.csh], ,
+[> 1
+1
+1
+1
+1
+1
+> exit
+],
+[echo 1
+echo 1
+echo 1
+echo 1
+echo 1
+])
+
+AT_DATA([1x],
+[[#! /bin/sh
+echo string
+]])
+AT_DATA([number.csh],
+[[echo number
+set path=(. $path)
+1x
+!1x
+!{1x}
+!{1}x
+]])
+AT_CHECK([chmod a+x 1x && tcsh -f -q -i < number.csh], ,
+[> number
+string
+string
+string
+numberx
+> exit
+],
+[1x
+1x
+echo numberx
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([Word selection])
+
+AT_DATA([words.csh],
+[[echo 1 2 3 4 5
+:
+echo !1:0
+echo !1:2
+echo !1:^
+echo !1:$
+echo !?4?%
+echo !1:2-4
+echo !1:*
+set foo=(!2:*)
+echo ${#foo}
+echo !1:4*
+echo !1:2-
+echo !1*
+]])
+AT_CHECK([tcsh -f -q -i < words.csh], ,
+[> 1 2 3 4 5
+echo
+2
+1
+5
+4
+2 3 4
+1 2 3 4 5
+0
+4 5
+2 3 4
+1 2 3 4 5
+> exit
+],
+[echo echo
+echo 2
+echo 1
+echo 5
+echo 4
+echo 2 3 4
+echo 1 2 3 4 5
+set foo= ( )
+echo 4 5
+echo 2 3 4
+echo 1 2 3 4 5
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([History modifiers])
+
+AT_DATA([modifiers.csh],
+[[echo foo bar baz quux /usr/src/sys/sys/malloc.c
+^baz^bash
+^bar^kPa^:p
+echo !1:$:h
+echo !1:$:t
+echo !1:$:r
+echo !1:$:e
+echo !1:1-:u
+echo !!:1-:l
+echo !1:1-:s,ba,ab
+echo '!1:$:s/src\/sys/&\&more/'
+echo !echo:0:s//OK/
+echo !?ux?:*:s//uux/
+echo !!:*:&
+echo !1:*:gu:gr
+echo !1:*:gas/o/O/
+echo !1:*:gas/o/\[oo\]/
+echo !1:1-:p:au
+set var=(!1:1-:gs/a/ /)
+echo ${#var}
+set var=(!1:1-:gs/a/ /:q)
+echo ${#var}
+set var=(!1:1-:gs/a/ /:x)
+echo ${#var}
+]])
+AT_CHECK([tcsh -f -q -i < modifiers.csh], ,
+[[> foo bar baz quux /usr/src/sys/sys/malloc.c
+foo bar bash quux /usr/src/sys/sys/malloc.c
+/usr/src/sys/sys
+malloc.c
+/usr/src/sys/sys/malloc
+c
+Foo bar baz quux
+foo bar baz
+foo abr baz quux
+/usr/src/sys&more/sys/malloc.c
+OK
+foo abr baz quuux
+foo abr baz quuuux
+Foo Bar Baz Quux /Usr/src/sys/sys/malloc
+fOO bar baz quux /usr/src/sys/sys/mallOc.c
+f[oo][oo] bar baz quux /usr/src/sys/sys/mall[oo]c.c
+6
+4
+6
+> exit
+]],
+[[echo foo bar bash quux /usr/src/sys/sys/malloc.c
+echo foo kPa bash quux /usr/src/sys/sys/malloc.c
+echo /usr/src/sys/sys
+echo malloc.c
+echo /usr/src/sys/sys/malloc
+echo c
+echo Foo bar baz quux
+echo foo bar baz
+echo foo abr baz quux
+echo '/usr/src/sys&more/sys/malloc.c'
+echo OK
+echo foo abr baz quuux
+echo foo abr baz quuuux
+echo Foo Bar Baz Quux /Usr/src/sys/sys/malloc
+echo fOO bar baz quux /usr/src/sys/sys/mallOc.c
+echo f\[oo\]\[oo\] bar baz quux /usr/src/sys/sys/mall\[oo\]c.c
+echo FOO bar baz quux
+set var= ( foo b r b z quux )
+set var= ( foo b r b z quux )
+set var= ( foo b r b z quux )
+]])
+
+AT_CLEANUP
+
+
+AT_SETUP([Alias substitution])
+
+AT_DATA([alias.csh],
+[[alias simple 'echo OK'
+simple
+simple ; simple
+alias compile 'echo cc -o \!^ \!^.c'
+compile hw
+alias echo 'echo no'
+echo bug
+unalias echo
+alias l1 'l2 a'
+alias l2 'l1 b'
+l1
+]])
+AT_CHECK([tcsh -f alias.csh], 1,
+[OK
+OK
+OK
+cc -o hw hw.c
+no bug
+],
+[Alias loop.
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([Variable substitution])
+
+AT_DATA([var.csh],
+[[set v=foo
+set a=(foo bar baz 1 2 3)
+set echo_style=none
+echo $v "$v" '$v' \$v "\$v" '\$v' $ space $ tab $
+touch zzzabc
+set filename='zzz*'
+echo $filename $filename:q "$filename"
+set a2=($a:q)
+echo ${#a2}
+set a2=("$a")
+echo ${#a2}
+echo ${v}tail
+echo $env_var:l
+echo $a[2] ${a[-2]} $a[5-] $a[*] ${a[-0]}
+#echo ${a[7-]}
+#a: Subscript out of range.
+echo $a[$a[5]]
+echo $0 $1 $2
+echo $*
+echo $?v $?a $?this_is_unknown
+echo $?0
+echo $#v $#a $#
+echo $%v
+echo $?
+# untested: $$, $!, $_
+echo $<:q
+]])
+AT_CHECK([echo '`"{}$@'"'" | env_var=ENV_VAL tcsh -f var.csh arg1 arg2], ,
+[foo foo $v $v \foo \$v $ space $ tab $
+zzzabc zzz* zzz*
+6
+1
+footail
+eNV_VAL
+bar foo bar 2 3 foo bar baz 1 2 3
+bar
+var.csh arg1 arg2
+arg1 arg2
+1 1 0
+1
+1 6 2
+3
+0
+`"{}$@'
+])
+
+AT_CLEANUP
diff --git a/tests/mb-eucjp.at b/tests/mb-eucjp.at
new file mode 100644
index 000000000000..473437b7e069
--- /dev/null
+++ b/tests/mb-eucjp.at
@@ -0,0 +1,97 @@
+# EUC-JP multibyte handling test case. This file uses the EUC-JP encoding.
+
+AT_SETUP([EUC-JP multibyte test])
+
+AT_DATA([input.csh],
+[[#!/bin/csh
+
+set CNT=1
+
+while(${CNT} < 10)
+
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+ #¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢
+
+ @ CNT ++
+end
+
+echo "AAA"
+]])
+# Test both seekable and unseekable input
+AT_CHECK([LC_ALL=ja_JP.eucjp tcsh -f input.csh], ,
+[AAA
+])
+AT_CHECK([cat input.csh | LC_ALL=ja_JP.eucjp tcsh -f], ,
+[AAA
+])
+# Test also LC_TYPE mismatch when the input is seekable
+AT_CHECK([LC_ALL=C tcsh -f input.csh], ,
+[AAA
+])
+AT_CHECK([LC_ALL=en_US.UTF-8 tcsh -f input.csh], ,
+[AAA
+])
+
+AT_CLEANUP
diff --git a/tests/mb-utf8.at b/tests/mb-utf8.at
new file mode 100644
index 000000000000..0433e4647108
--- /dev/null
+++ b/tests/mb-utf8.at
@@ -0,0 +1,97 @@
+# UTF-8 multibyte handling test case. This file uses the UTF-8 encoding.
+
+AT_SETUP([UTF-8 multibyte test])
+
+AT_DATA([input.csh],
+[[#!/bin/csh
+
+set CNT=1
+
+while(${CNT} < 10)
+
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+ #ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚
+
+ @ CNT ++
+end
+
+echo "AAA"
+]])
+# Test both seekable and unseekable input
+AT_CHECK([LC_ALL=en_US.UTF-8 tcsh -f input.csh], ,
+[AAA
+])
+AT_CHECK([cat input.csh | LC_ALL=en_US.UTF-8 tcsh -f], ,
+[AAA
+])
+# Test also LC_TYPE mismatch when the input is seekable
+AT_CHECK([LC_ALL=C tcsh -f input.csh], ,
+[AAA
+])
+AT_CHECK([LC_ALL=ja_JP.eucjp tcsh -f input.csh], ,
+[AAA
+])
+
+AT_CLEANUP
diff --git a/tests/noexec.at b/tests/noexec.at
new file mode 100644
index 000000000000..02a92d92ba54
--- /dev/null
+++ b/tests/noexec.at
@@ -0,0 +1,141 @@
+# '-n' handling
+
+AT_SETUP([-n])
+
+AT_DATA([correct.csh],
+[[echo $nonexistent
+
+if ( `ls` ) ls
+
+if ( $?nonexistent ) then
+ echo foo
+else if ( something ) then
+ /bin/echo foo
+else
+ ls
+endif
+
+while ( 1 )
+ continue
+ break
+end
+
+foreach name ( nonexistent* )
+ echo $name
+end
+
+switch ( $something )
+case foo*:
+ foo
+case foo2:
+ bar
+ breaksw
+case baz
+ ls
+default:
+ quuz
+endsw
+
+repeat 1000000 sleep 1
+]])
+AT_CHECK([tcsh -f -n correct.csh])
+
+AT_DATA([ifnoskip.csh],
+[[if ( 0 ) then
+ <
+endif
+]])
+AT_CHECK([tcsh -f -n ifnoskip.csh], 1, [], [Missing name for redirect.
+])
+
+AT_DATA([elsenoskip.csh],
+[[if ( 1 ) then
+ true
+else
+ <
+endif
+]])
+AT_CHECK([tcsh -f -n elsenoskip.csh], 1, [], [Missing name for redirect.
+])
+
+AT_DATA([gotonoskip.csh],
+[[goto label
+ <
+label:
+]])
+AT_CHECK([tcsh -f -n gotonoskip.csh], 1, [], [Missing name for redirect.
+])
+
+AT_DATA([switchnoskip.csh],
+[[switch ( value )
+case foo:
+ <
+case value:
+ breaksw
+endsw
+]])
+AT_CHECK([tcsh -f -n switchnoskip.csh], 1, [], [Missing name for redirect.
+])
+
+AT_DATA([switchsyntax.csh],
+[[switch value
+endsw
+]])
+AT_CHECK([tcsh -f -n switchsyntax.csh], 1, [], [Syntax Error.
+])
+
+AT_DATA([breaknowhile.csh],
+[[break
+]])
+AT_CHECK([tcsh -f -n breaknowhile.csh], 1, [], [break: Not in while/foreach.
+])
+
+AT_DATA([breaknoskip.csh],
+[[while ( 1 )
+ break
+ <
+end
+]])
+AT_CHECK([tcsh -f -n breaknoskip.csh], 1, [], [Missing name for redirect.
+])
+
+AT_DATA([foreachsyntax.csh],
+[[foreach name val1 val2
+ echo $name
+end
+]])
+AT_CHECK([tcsh -f -n foreachsyntax.csh], 1, [],
+[foreach: Words not parenthesized.
+])
+
+AT_DATA([whilenoskip.csh],
+[[while ( 0 )
+ <
+end
+]])
+AT_CHECK([tcsh -f -n whilenoskip.csh], 1, [], [Missing name for redirect.
+])
+
+AT_DATA([endnowhile.csh],
+[[end
+]])
+AT_CHECK([tcsh -f -n endnowhile.csh], 1, [], [end: Not in while/foreach.
+])
+
+AT_DATA([continuenowhile.csh],
+[[continue
+]])
+AT_CHECK([tcsh -f -n continuenowhile.csh], 1, [],
+[continue: Not in while/foreach.
+])
+
+AT_DATA([continuenoskip.csh],
+[[while ( 1 )
+ continue
+ <
+end
+]])
+AT_CHECK([tcsh -f -n continuenoskip.csh], 1, [], [Missing name for redirect.
+])
+
+AT_CLEANUP
diff --git a/tests/sh.dol.at b/tests/sh.dol.at
new file mode 100644
index 000000000000..46e8ad714d8d
--- /dev/null
+++ b/tests/sh.dol.at
@@ -0,0 +1,20 @@
+# $... substitution handling
+
+AT_SETUP([$<])
+
+AT_DATA([cat.csh],
+[[while (1)
+ set line=$<:q
+ if ("$line" == "") goto END;
+ echo "$line"
+end
+END:
+ exit 0
+]])
+AT_DATA([input],
+[[foo
+!@#$%^&*()_+-=[]{};':"\|,./<>?`~
+]])
+AT_CHECK([tcsh -f cat.csh < input | cmp -s input -])
+
+AT_CLEANUP
diff --git a/tests/subst.at b/tests/subst.at
new file mode 100644
index 000000000000..71feb978e6a6
--- /dev/null
+++ b/tests/subst.at
@@ -0,0 +1,96 @@
+# Optional substitutions
+
+AT_SETUP([Command substitution])
+
+AT_DATA([backq.csh],
+[[set a=(a`echo 1 2; echo 3 4`b)
+echo $#a
+set a=(a"`echo 1 2; echo 3 4`b")
+echo $#a
+unset csubstnonl
+echo `echo 1; \\
+echo 2`
+set csubstnonl
+echo `echo 1; \\
+ echo 2`
+]])
+AT_CHECK([tcsh -f backq.csh], 1,
+[4
+2
+1 2
+1
+],
+[ : Command not found.
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([Filename substitution])
+
+AT_DATA([files.csh],
+[[mkdir d
+cd d
+touch foo baz bar .quux '*'
+echo *a* *[ox] [f.]* .q* ./*[ox] ./[f.]* ./.q* \*
+echo [a-g]* [^b]* ^b?r
+echo { ba{z,r} } {}
+echo nothing* fo*
+set nonomatch
+echo nothing*
+set noglob
+echo foo* ab{c,d} ^fo*
+]])
+AT_CHECK([tcsh -f files.csh], ,
+[bar baz foo foo .quux ./foo ./foo ./.quux *
+bar baz foo * foo * baz foo
+{ baz bar } {}
+foo
+nothing*
+foo* ab{c,d} ^fo*
+])
+
+AT_CHECK([echo 'echo ~; echo "$HOME"' | tcsh -f | uniq | wc -l | tr -d ' \t'],
+, [1
+])
+
+AT_CHECK([echo "echo ~$(id -un)/foo; echo \"$HOME/foo\"" | tcsh -f | uniq dnl
+ | wc -l | tr -d ' \t'], , [1
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([Directory stack substitution])
+
+AT_DATA([dirstack.csh],
+[[set home=$cwd
+pushd /
+pushd /dev
+echo =0/:foo
+echo =1/:foo
+echo =-
+set noglob
+echo =1
+unset noglob
+sh -c 'echo 1 >&2'
+(echo =5)
+sh -c 'echo 2 >&2'
+set nonomatch
+echo =5
+]])
+AT_CHECK([tcsh -f dirstack.csh | sed "s,$PWD,CWD,"], ,
+[/ ~ @&t@
+/dev / ~ @&t@
+/dev/:foo
+//:foo
+CWD
+=1
+=5
+],
+[1
+Directory stack not that deep.
+2
+])
+
+AT_CLEANUP
diff --git a/tests/syntax.at b/tests/syntax.at
new file mode 100644
index 000000000000..2a2abd05b898
--- /dev/null
+++ b/tests/syntax.at
@@ -0,0 +1,163 @@
+# Command syntax
+
+AT_SETUP([Command combinations])
+
+AT_CHECK([tcsh -f -c 'echo ok|tr ok OK'], ,
+[OK
+])
+
+AT_CHECK([tcsh -f -c 'echo 1;echo 2'], ,
+[1
+2
+])
+
+AT_CHECK([tcsh -f -c 'true || echo fail'])
+
+AT_CHECK([tcsh -f -c 'false || echo OK'], ,
+[OK
+])
+
+AT_CHECK([tcsh -f -c 'true && echo OK'], ,
+[OK
+])
+
+AT_CHECK([tcsh -f -c 'false && echo fail'], 1)
+
+AT_CHECK([[tcsh -f -c '(sleep 1; echo async) & echo sync; wait' \
+| sed 's/ [0123456789]*$/ /']], ,
+[[[1] @&t@
+sync
+async
+[1] Done ( sleep 1; echo async )
+]])
+
+AT_CLEANUP
+
+
+AT_SETUP([Command execution])
+
+AT_CHECK([tcsh -f -c '((true | cd ..; pwd); cd ..; pwd)' | uniq | wc -l dnl
+ | tr -d ' \t'], ,
+[1
+])
+
+AT_DATA([other_script.csh],
+[[echo OK
+]])
+chmod u+x other_script.csh
+AT_CHECK([tcsh -f -c 'set path=(. $path); other_script.csh'], ,
+[OK
+])
+
+AT_DATA([input],
+[[OK
+]])
+AT_CHECK([tcsh -f -c 'cat < input'], ,
+[OK
+])
+
+AT_DATA([heredoc.csh],
+[[set var=-
+cat << EOF
+\$\\\`
+a`echo b`c
+foo${var}bar
+EOF
+cat << E\OF
+$var
+E\OF
+cat << "E"OF
+$var
+"E"OF
+cat << EO'F'
+$var
+EO'F'
+cat << `EOF`
+$var
+`EOF`
+]])
+AT_CHECK([tcsh -f heredoc.csh], ,
+[[$\`
+abc
+foo-bar
+$var
+$var
+$var
+$var
+]])
+
+AT_CHECK([tcsh -f -c 'echo OK > output'])
+AT_CHECK([cat output], ,
+[OK
+])
+
+touch output
+AT_CHECK([tcsh -f -c 'set noclobber; echo OK > output'], 1, [],
+[output: File exists.
+])
+
+touch output
+AT_CHECK([tcsh -f -c 'set noclobber; echo OK >! output'])
+AT_CHECK([cat output], ,
+[OK
+])
+
+AT_CHECK([tcsh -f -c '(echo OK; $this_does_not_exist) >& output'], 1)
+AT_CHECK([cat output], ,
+[OK
+this_does_not_exist: Undefined variable.
+])
+
+touch output
+AT_CHECK([tcsh -f -c 'set noclobber; echo OK >& output'], 1, [],
+[output: File exists.
+])
+
+touch output
+AT_CHECK([tcsh -f -c 'set noclobber; echo OK >&! output'])
+AT_CHECK([cat output], ,
+[OK
+])
+
+echo > output
+AT_CHECK([tcsh -f -c 'echo OK >> output'])
+AT_CHECK([cat output], ,
+[
+OK
+])
+
+echo > output
+AT_CHECK([tcsh -f -c '(echo OK; echo $this_does_not_exist) >>& output'], 1)
+AT_CHECK([cat output], ,
+[
+OK
+this_does_not_exist: Undefined variable.
+])
+
+rm -f output
+AT_CHECK([tcsh -f -c 'set noclobber; echo OK >> output'], 1, [],
+[output: No such file or directory.
+])
+
+rm -f output
+AT_CHECK([tcsh -f -c 'set noclobber; echo OK >>! output'])
+AT_CHECK([cat output], ,
+[OK
+])
+
+rm -f output
+AT_CHECK([tcsh -f -c 'set noclobber; echo OK >>& output'], 1, [],
+[output: No such file or directory.
+])
+
+rm -f output
+AT_CHECK([tcsh -f -c 'set noclobber; echo OK >>&! output'])
+AT_CHECK([cat output], ,
+[OK
+])
+
+AT_CHECK([tcsh -f -c '(echo $this_does_not_exist) |& cat'], 1,
+[this_does_not_exist: Undefined variable.
+])
+
+AT_CLEANUP
diff --git a/tests/testsuite.at b/tests/testsuite.at
new file mode 100644
index 000000000000..fd1d7b9d1add
--- /dev/null
+++ b/tests/testsuite.at
@@ -0,0 +1,26 @@
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
+
+AT_INIT
+AT_TESTED([tcsh])
+
+m4_define([TCSH_UNTESTED],
+[AT_SETUP([$1])
+AT_CHECK([exit 77])
+AT_CLEANUP
+])
+
+m4_include([aliases.at])
+m4_include([arguments.at])
+m4_include([commands.at])
+m4_include([expr.at])
+# Disabled because of non-portable use of stat
+#m4_include([history.at])
+m4_include([lexical.at])
+m4_include([mb-eucjp.at])
+m4_include([mb-utf8.at])
+m4_include([subst.at])
+m4_include([syntax.at])
+m4_include([variables.at])
+
+m4_include([noexec.at])
+m4_include([sh.dol.at])
diff --git a/tests/variables.at b/tests/variables.at
new file mode 100644
index 000000000000..424e4da3396b
--- /dev/null
+++ b/tests/variables.at
@@ -0,0 +1,1055 @@
+# Special shell variables
+
+# The space after $ is to avoid expanding the variables in testsuite output,
+# to work-around a bug in autotest
+
+# Not testing any functionality
+m4_define([VAR_UNSET],
+[AT_SETUP([$ $1])
+AT_CHECK([tcsh -f -c 'echo $?$1'], ,
+[0
+])
+AT_CLEANUP
+])
+m4_define([ENV_SET],
+[AT_SETUP([$ $1])
+AT_CHECK([tcsh -f -c 'printenv $1'], 0, [ignore])
+AT_CLEANUP
+])
+m4_define([ENV_UNSET],
+[AT_SETUP([$ $1])
+AT_CHECK([tcsh -f -c 'printenv $1'], 1,
+[0
+])
+AT_CLEANUP
+])
+
+
+AT_SETUP([$ addsuffix])
+
+AT_CHECK([tcsh -f -c 'echo $?addsuffix'], ,
+[1
+])
+# Nothing more
+
+AT_CLEANUP
+
+
+VAR_UNSET([afsuser])
+VAR_UNSET([ampm])
+
+
+AT_SETUP([$ argv])
+
+AT_CHECK([tcsh -f -c 'echo $argv; echo $2' foo bar baz], ,
+[foo bar baz
+bar
+])
+
+AT_CLEANUP
+
+
+VAR_UNSET([autocorrect])
+VAR_UNSET([autoexpand])
+VAR_UNSET([autolist])
+TCSH_UNTESTED([$ autologout])
+
+
+AT_SETUP([$ backslash_quote])
+
+AT_DATA([backslash.csh],
+[[echo $?backslash_quote
+set echo_style=none
+echo 'foo\\bar'
+echo "foo\\bar"
+echo 'foo\bar'
+echo "foo\bar"
+set backslash_quote
+echo 'foo\\bar'
+echo "foo\\bar"
+echo 'foo\'bar'
+echo 'foo\"bar'
+echo "foo\"bar"
+echo "foo\'bar"
+echo 'foo\bar'
+echo "foo\bar"
+]])
+AT_CHECK([tcsh -f backslash.csh], ,
+[0
+foo\\bar
+foo\\bar
+foo\bar
+foo\bar
+foo\bar
+foo\bar
+foo'bar
+foo"bar
+foo"bar
+foo'bar
+foo\bar
+foo\bar
+])
+
+AT_CLEANUP
+
+
+VAR_UNSET([catalog])
+
+
+AT_SETUP([$ cdpath])
+
+AT_DATA([cdpath.csh],
+[[echo $?cdpath
+set cdpath=($cwd /)
+set home=$cwd
+mkdir tcsh_test_dir
+cd dev
+cd tcsh_test_dir
+]])
+AT_CHECK([tcsh -f cdpath.csh], ,
+[0
+/dev @&t@
+~/tcsh_test_dir @&t@
+])
+
+AT_CLEANUP
+
+
+VAR_UNSET([color])
+VAR_UNSET([colorcat])
+
+
+AT_SETUP([$ command])
+
+AT_CHECK([tcsh -f -c 'echo $command'], ,
+[echo $command
+])
+
+AT_DATA([command.csh],
+[[echo $?command
+]])
+AT_CHECK([tcsh -f command.csh], ,
+[0
+])
+
+AT_CLEANUP
+
+
+VAR_UNSET([complete])
+VAR_UNSET([continue])
+VAR_UNSET([continue_args])
+VAR_UNSET([correct])
+
+
+AT_SETUP([$ csubstnonl])
+
+touch test_file
+
+AT_DATA([csubstnonl.csh],
+[[echo $?csubstnonl
+echo `echo fail \
+| sed 's/fail/OK/'`
+sh -c 'echo 1 >&2'
+(echo `echo fail | \\
+sed 's/fail/OK/'`)
+sh -c 'echo 2 >&2'
+echo `echo a\
+b`
+unset csubstnonl
+sh -c 'echo 3 >&2'
+(echo `echo fail \
+| sed 's/fail/OK/'`)
+sh -c 'echo 4 >&2'
+echo `echo fail | \\
+sed 's/fail/OK/'`
+echo `echo \\
+?est_file`
+echo `cat << END\
+OK\
+END`
+]])
+AT_CHECK([tcsh -f csubstnonl.csh], ,
+[1
+OK
+
+a b
+fail
+OK
+test_file
+OK
+],
+[1
+ sed: Command not found.
+2
+3
+Invalid null command.
+4
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([$ cwd])
+
+AT_DATA([cwd.csh],
+[[echo $?cwd
+printenv PWD
+cd /
+echo $cwd
+pushd /dev
+echo $cwd
+popd
+echo $cwd
+printenv PWD
+setenv PWD foo
+echo $cwd
+set cwd=bar
+printenv PWD
+]])
+AT_CHECK([tcsh -f cwd.csh | sed "s,$PWD,CWD,"], ,
+[1
+CWD
+/
+/dev / @&t@
+/dev
+/ @&t@
+/
+/
+/
+foo
+])
+
+AT_CLEANUP
+
+
+VAR_UNSET([dextract]) # Behavior tested with pushd
+VAR_UNSET([dirsfile])
+
+
+AT_SETUP([$ dirstack])
+
+AT_DATA([dirstack.csh],
+[[echo $dirstack
+set home=$cwd
+pushd /
+echo $dirstack
+set dirstack=(/ /dev $home)
+# The first popd does nothing, looks like a bug
+popd
+popd
+echo $dirstack
+]])
+AT_CHECK([tcsh -f dirstack.csh | sed "s,$PWD,CWD,g"], ,
+[CWD
+/ ~ @&t@
+/ CWD
+/ /dev ~ @&t@
+/dev ~ @&t@
+/dev CWD
+])
+
+AT_CLEANUP
+
+
+TCSH_UNTESTED([$ dspmbyte])
+VAR_UNSET([dunique]) # Behavior tested with pushd
+
+
+AT_SETUP([$ echo])
+
+touch some_file;
+
+AT_CHECK([tcsh -f -c 'echo $?echo'], ,
+[0
+])
+
+AT_CHECK([tcsh -f -x -c 'echo $?echo'], ,
+[1
+],
+[echo 1
+])
+
+AT_DATA([echo.csh],
+[[ls some_*
+set echo
+ls some_* $echo
+echo some_* $echo
+]])
+AT_CHECK([tcsh -f echo.csh], ,
+[some_file
+some_file
+some_file
+],
+[ls some_file
+echo some_*
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([$ echo_style])
+
+AT_DATA([echo_style.csh],
+[[echo $?echo_style
+set echo_style=bsd
+echo -n foo
+echo 'b\tr'
+set echo_style=sysv
+echo -n foo
+echo 'b\tr'
+set echo_style=both
+echo -n foo
+echo 'b\tr'
+set echo_style=none
+echo -n foo
+echo 'b\tr'
+]])
+AT_CHECK([tcsh -f echo_style.csh], ,
+[1
+foob\tr
+-n foo
+b r
+foob r
+-n foo
+b\tr
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([$ edit])
+
+AT_CHECK([TERM=something tcsh -f -c 'echo $?edit'], ,
+[1
+])
+
+AT_CHECK([TERM=dumb tcsh -f -c 'echo $?edit'], ,
+[0
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([$ ellipsis])
+
+AT_DATA([ellipsis0.csh],
+[[echo $?ellipsis
+set home=$cwd
+mkdir -p a/b
+cd a/b
+set prompt='%c01 '
+]])
+AT_CHECK([tcsh -f -i -q < ellipsis0.csh], ,
+[> 0
+~/<1>b exit
+])
+
+AT_DATA([ellipsis0.csh],
+[[set ellipsis
+set home=$cwd
+mkdir -p a/b
+cd a/b
+set prompt='%c01 '
+]])
+AT_CHECK([tcsh -f -i -q < ellipsis0.csh], ,
+[> ~...b exit
+])
+
+AT_CLEANUP
+
+
+VAR_UNSET([fignore])
+VAR_UNSET([filec])
+
+
+AT_SETUP([$ gid])
+
+AT_CHECK([(tcsh -f -c 'echo $gid'; id -gr) | uniq | wc -l | tr -d ' \t'], ,
+[1
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([$ group])
+
+AT_DATA([group.csh],
+[[echo $?group
+set group=foo
+printenv GROUP
+setenv GROUP bar
+echo $group
+]])
+AT_CHECK([tcsh -f group.csh], ,
+[1
+foo
+bar
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([$ histchars])
+
+AT_DATA([histchars.csh],
+[[echo $?histchars
+set histchars='/+'
+echo OK
+/3
++K+k
+]])
+AT_CHECK([tcsh -f -q -i < histchars.csh], ,
+[> 0
+OK
+OK
+Ok
+> exit
+],
+[echo OK
+echo Ok
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([$ histdup])
+
+AT_DATA([histdup.csh],
+[[echo $?histdup
+history -c
+: 1
+: 2
+: 1
+history
+set histdup=all
+history -c
+: 1
+: 2
+: 1
+history
+set histdup=prev
+history -c
+: 1
+: 2
+: 1
+: 3
+: 3
+history
+set histdup=erase
+history -c
+: 1
+: 2
+: 1
+history
+]])
+AT_CHECK([[tcsh -f -q -i < histdup.csh] dnl
+ [| sed 's/ [^ ]* / TIME /']], ,
+[> 0
+ 3 TIME : 1
+ 4 TIME : 2
+ 5 TIME : 1
+ 6 TIME history
+ 9 TIME : 1
+ 10 TIME : 2
+ 11 TIME history
+ 14 TIME : 1
+ 15 TIME : 2
+ 16 TIME : 1
+ 17 TIME : 3
+ 18 TIME history
+ 22 TIME : 2
+ 23 TIME : 1
+ 24 TIME history
+> exit
+])
+
+AT_CLEANUP
+
+
+VAR_UNSET([histfile])
+
+
+AT_SETUP([$ histlit])
+
+AT_DATA([histlit.csh],
+[[echo $?histlit
+echo OK
+!!
+history
+history -S hist1
+set histlit
+history
+history -S hist2
+]])
+AT_CHECK([[tcsh -f -q -i < histlit.csh] dnl
+ [| sed 's/ [^ ]* / TIME /']], ,
+[> 0
+OK
+OK
+ 1 TIME echo $?histlit
+ 2 TIME echo OK
+ 3 TIME echo OK
+ 4 TIME history
+ 1 TIME echo $?histlit
+ 2 TIME echo OK
+ 3 TIME !!
+ 4 TIME history
+ 5 TIME history -S hist1
+ 6 TIME set histlit
+ 7 TIME history
+> exit
+],
+[echo OK
+])
+AT_CHECK([[sed 's/^#+[0123456789]*$/#+STAMP/' < hist1]], ,
+[#+STAMP
+echo $?histlit
+#+STAMP
+echo OK
+#+STAMP
+echo OK
+#+STAMP
+history
+#+STAMP
+history -S hist1
+])
+AT_CHECK([[sed 's/^#+[0123456789]*$/#+STAMP/' < hist2]], ,
+[#+STAMP
+echo $?histlit
+#+STAMP
+echo OK
+#+STAMP
+!!
+#+STAMP
+history
+#+STAMP
+history -S hist1
+#+STAMP
+set histlit
+#+STAMP
+history
+#+STAMP
+history -S hist2
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([$ history])
+
+AT_DATA([history.csh],
+[[echo $#history $history
+set home=$cwd
+set var=value
+set history=(1 '%/,%~,%h,%\!,\!,%%,%j,%$var,%#,%R\n')
+: OK
+history
+]])
+AT_CHECK([tcsh -f -i -q < history.csh | sed "s,$PWD,CWD,"], ,
+[> 1 100
+CWD,~, 6, 6, 6,%,0,value,>,history
+> exit
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([$ home])
+
+AT_DATA([home.csh],
+[[echo $?home
+(echo $home; echo ~) | uniq | wc -l | tr -d ' \t'
+set home=/foo
+printenv HOME
+setenv HOME /bar
+echo $home
+]])
+AT_CHECK([tcsh -f home.csh], ,
+[1
+1
+/foo
+/bar
+])
+
+AT_CHECK([(unset HOME; tcsh -f -c 'echo $?home; printenv HOME')], 1,
+[0
+])
+
+AT_CLEANUP
+
+
+VAR_UNSET([ignoreeof])
+
+
+AT_SETUP([$ implicitcd])
+
+AT_DATA([implicitcd.csh],
+[[echo $?implicitcd
+mkdir subdir
+set home=$cwd
+sh -c 'echo 1 >&2'
+(subdir)
+sh -c 'echo 2 >&2'
+(~/subdir)
+sh -c 'echo 3 >&2'
+set implicitcd
+subdir
+/bin/pwd
+..
+~/subdir
+/bin/pwd
+cd
+set implicitcd=verbose
+subdir
+..
+~/subdir
+]])
+(echo 1; echo 'subdir: Command not found.';
+ echo 2; echo "$PWD/subdir: Permission denied."; echo 3) > experr
+AT_CHECK([tcsh -f -i -q < implicitcd.csh | sed "s,`/bin/pwd`,CWD,"], ,
+[> 0
+CWD/subdir
+CWD/subdir
+cd subdir
+cd ..
+cd ~/subdir
+> exit
+], [experr])
+
+AT_CLEANUP
+
+
+VAR_UNSET([inputmode])
+VAR_UNSET([killdup])
+
+
+AT_SETUP([$ killring])
+
+AT_CHECK([tcsh -f -c 'echo $killring'], ,
+[30
+])
+# Nothing more
+
+AT_CLEANUP
+
+
+AT_SETUP([$ listflags])
+
+# First word checked with ls-F
+AT_DATA([listflags.csh],
+[[echo $?listflags
+set listflags=(-xA $cwd/args.sh)
+ls-F -something .
+]])
+AT_DATA([args.sh],
+[[echo "$@"
+]])
+chmod a+x args.sh
+AT_CHECK([tcsh -f listflags.csh], ,
+[0
+-xFA -something .
+])
+
+AT_CLEANUP
+
+
+VAR_UNSET([listjobs])
+VAR_UNSET([listlinks]) # Functionality tested with ls-F
+VAR_UNSET([listmax])
+VAR_UNSET([listmaxrows])
+VAR_UNSET([loginsh]) # Can't test the other case
+VAR_UNSET([logout])
+
+
+AT_SETUP([$ mail])
+
+AT_DATA([mail.csh],
+[[echo $?mail
+mkdir maildir
+touch spool
+set mail=(0 spool maildir)
+echo > maildir/1
+echo > maildir/2
+echo >> spool
+echo >> spool
+]])
+AT_CHECK([tcsh -f mail.csh], ,
+[0
+])
+
+AT_CLEANUP
+
+
+VAR_UNSET([matchbeep])
+VAR_UNSET([nobeep])
+VAR_UNSET([noclobber]) # Functionality tested with "Command execution"
+VAR_UNSET([noding])
+# Functionality tested with "Filename substitution" and
+# "Directory stack substitution"
+VAR_UNSET([noglob])
+VAR_UNSET([nostat])
+VAR_UNSET([notify])
+TCSH_UNTESTED([$ oid])
+
+
+AT_SETUP([$ owd])
+
+AT_DATA([owd.csh],
+[[echo $owd
+cd /
+echo $owd
+pushd /bin
+echo $owd
+popd
+echo $owd
+]])
+AT_CHECK([tcsh -f owd.csh | sed "s,$PWD,CWD,"], ,
+[
+CWD
+/bin / @&t@
+/
+/ @&t@
+/bin
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([$ path])
+
+mkdir subdir
+AT_DATA([script.sh],
+[[echo home
+]])
+AT_DATA([subdir/script.sh],
+[[echo subdir
+]])
+chmod a+x script.sh subdir/script.sh
+AT_DATA([path.csh],
+[[echo $?path
+set path=(. subdir)
+script.sh
+set path=(subdir .)
+script.sh
+printenv PATH
+setenv PATH :foo::bar:
+echo $path
+]])
+AT_CHECK([tcsh -f path.csh], ,
+[1
+home
+subdir
+subdir:.
+. foo . bar .
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([$ printexitvalue])
+
+AT_DATA([printexitvalue.csh],
+[[echo $?printexitvalue
+set printexitvalue
+false
+(exit 3 >/dev/null)
+:
+]])
+AT_CHECK([tcsh -f printexitvalue.csh], ,
+[0
+Exit 1
+Exit 3
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([$ prompt])
+
+AT_DATA([prompt.csh],
+[[echo "$prompt"
+set home=$cwd
+mkdir -p a/b
+cd a/b
+set var=value
+set prompt='%/,%~,%c,%.,%c2,%.2,%c01,%.01,%C,%h,%\!,\!,%%,%j,%$var,%#,%? '
+(exit 50)
+]])
+AT_CHECK([tcsh -f -i -q < prompt.csh | sed "s,$PWD,CWD,"], ,
+[> %# @&t@
+CWD/a/b,~/a/b,b,b,~/a/b,~/a/b,~/<1>b,~/<1>b,b,8,8,8,%,0,value,>,50 exit
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([$ prompt2])
+
+AT_CHECK([echo 'echo "$prompt2"' | tcsh -f], ,
+[%R? @&t@
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([$ prompt3])
+
+AT_CHECK([echo 'echo "$prompt3"' | tcsh -f], ,
+[CORRECT>%R (y|n|e|a)? @&t@
+])
+
+AT_CLEANUP
+
+AT_SETUP([$ promptchars])
+
+AT_DATA([promptchars.csh],
+[[echo $?promptchars
+set promptchars=_x
+]])
+AT_CHECK([tcsh -f -i -q < promptchars.csh], ,
+[> 0
+_ exit
+])
+
+AT_CLEANUP
+
+
+VAR_UNSET([pushdtohome]) # Functionality tested with pushd
+VAR_UNSET([pushdsilent]) # Functionality tested with pushd
+VAR_UNSET([recexact])
+VAR_UNSET([recognize_only_executablers])
+VAR_UNSET([rmstar])
+
+
+AT_SETUP([$ rprompt])
+
+AT_DATA([rprompt.csh],
+[[echo $?rprompt
+set home=$cwd
+mkdir -p a/b
+cd a/b
+set var=value
+set rprompt='%/,%~,%c,%.,%c2,%.2,%c01,%.01,%C,%h,%\!,\!,%%,%j,%$var,%#,%?'
+(exit 50)
+]])
+AT_CHECK([tcsh -f -i -q < rprompt.csh | sed "s,$PWD,CWD,"], ,
+[> 0
+> CWD/a/b,~/a/b,b,b,~/a/b,~/a/b,~/<1>b,~/<1>b,b,8,8,8,%,0,value,>,50 exit
+])
+
+AT_CLEANUP
+
+
+VAR_UNSET([savedirs])
+VAR_UNSET([savehist])
+VAR_UNSET([sched])
+
+
+AT_SETUP([$ shell])
+
+AT_CHECK([tcsh -f -c 'echo $?shell'], ,
+[1
+])
+
+AT_CHECK([SHELL=foo/tcsh tcsh -f -c 'echo $shell'], ,
+[foo/tcsh
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([$ shlvl])
+
+AT_DATA([shlvl.csh],
+[[echo $shlvl
+set shlvl=8
+printenv SHLVL
+setenv SHLVL 2
+echo $shlvl
+tcsh -f -c 'echo $shlvl'
+]])
+AT_CHECK([SHLVL=5 tcsh -f shlvl.csh], ,
+[6
+8
+2
+3
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([$ status])
+
+AT_DATA([status.csh],
+[[echo $status
+sh -c 'kill -ABRT $$'
+if ( $status > 128 ) echo OK
+true
+echo $status
+]])
+AT_CHECK([tcsh -f status.csh | sed 's/Abort (core dumped)/Abort/'], ,
+[0
+Abort
+OK
+0
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([$ symlinks])
+
+AT_DATA([symlinks.csh],
+[[echo $?symlinks
+set home=$cwd
+mkdir -p a/b
+ln -s a/b link
+set symlinks=chase
+cd link
+echo $cwd
+cd
+set symlinks=ignore
+cd link
+echo $cwd
+cd ..
+echo $cwd
+set symlinks=expand
+cd a
+(echo ../a; echo $cwd) | uniq | wc -l | tr -d ' \t'
+]])
+AT_CHECK([tcsh -f symlinks.csh | sed "s,`tcsh -f -c echo\\ \\$PWD`,CWD,"], ,
+[0
+CWD/a/b
+CWD/link
+CWD
+1
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([$ tcsh])
+
+AT_CHECK([tcsh -f -c 'echo $?tcsh'], ,
+[1
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([$ term])
+
+AT_DATA([term.csh],
+[[echo $term
+set term=foo
+printenv TERM
+setenv TERM bar
+echo $term
+]])
+AT_CHECK([TERM=something tcsh -f term.csh], ,
+[something
+foo
+bar
+])
+
+AT_CHECK([(unset TERM; tcsh -f -c 'echo $?term; printenv TERM')], 1,
+[0
+])
+
+AT_CLEANUP
+
+
+VAR_UNSET([time])
+VAR_UNSET([tperiod])
+
+
+AT_SETUP([$ tty])
+
+AT_CHECK([tcsh -f -c 'echo ">$tty<"' < /dev/null], ,
+[><
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([$ uid])
+
+AT_CHECK([(tcsh -f -c 'echo $uid'; id -ru) | uniq | wc -l | tr -d ' \t'], ,
+[1
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([$ user])
+
+AT_DATA([user.csh],
+[[echo $?user
+set user=foo
+printenv USER
+setenv USER bar
+echo $user
+]])
+AT_CHECK([tcsh -f user.csh], ,
+[1
+foo
+bar
+])
+
+AT_CHECK([(unset USER; LOGNAME=foo tcsh -f -c 'echo $user; printenv USER')], ,
+[foo
+foo
+])
+
+AT_CHECK([(unset LOGNAME; USER=foo tcsh -f -c 'echo $user; printenv LOGNAME')],
+ ,
+[foo
+foo
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([$ verbose])
+
+AT_CHECK([tcsh -f -v -c 'echo $verbose'], , [
+],
+[echo $verbose
+])
+
+AT_DATA([verbose.csh],
+[[echo $?verbose
+set verbose
+echo $verbose
+!!
+]])
+AT_CHECK([tcsh -f -i -q < verbose.csh], ,
+[> 0
+
+
+> exit
+],
+[echo $verbose
+echo $verbose
+])
+
+AT_CLEANUP
+
+
+AT_SETUP([$ version])
+
+AT_CHECK([tcsh -f -c 'echo $?version'], ,
+[1
+])
+
+AT_CLEANUP
+
+
+VAR_UNSET([visiblebell])
+VAR_UNSET([watch])
+VAR_UNSET([who])
+VAR_UNSET([wordchars])
+
+
+# Nothing to test for environment variables, except for the synchronization
+# above
diff --git a/tw.color.c b/tw.color.c
index 2e935fcc57f7..31a1d2dca3fd 100644
--- a/tw.color.c
+++ b/tw.color.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/tw.color.c,v 1.25 2008/10/17 19:57:33 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/tw.color.c,v 1.27 2010/08/19 05:52:19 christos Exp $ */
/*
* tw.color.c: builtin color ls-F
*/
@@ -32,7 +32,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: tw.color.c,v 1.25 2008/10/17 19:57:33 christos Exp $")
+RCSID("$tcsh: tw.color.c,v 1.27 2010/08/19 05:52:19 christos Exp $")
#include "tw.h"
#include "ed.h"
@@ -86,6 +86,9 @@ static Variable variables[] = {
VAR(NOS, "ow", ""), /* Other writable dir (o+w) but not sticky */
VAR(NOS, "st", ""), /* Sticky dir (+t) but not other writable */
VAR(NOS, "rs", "0"), /* Reset to normal color */
+ VAR(NOS, "hl", "44;37"), /* Reg file extra hard links, obsolete? */
+ VAR(NOS, "mh", "44;37"), /* Reg file extra hard links */
+ VAR(NOS, "ca", "30;41"), /* File with capability */
};
enum FileType {
diff --git a/tw.init.c b/tw.init.c
index 29f5586b86d4..68adbb941761 100644
--- a/tw.init.c
+++ b/tw.init.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/tw.init.c,v 3.39 2006/03/02 18:46:45 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/tw.init.c,v 3.42 2011/04/17 14:49:30 christos Exp $ */
/*
* tw.init.c: Handle lists of things to complete
*/
@@ -32,7 +32,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: tw.init.c,v 3.39 2006/03/02 18:46:45 christos Exp $")
+RCSID("$tcsh: tw.init.c,v 3.42 2011/04/17 14:49:30 christos Exp $")
#include "tw.h"
#include "ed.h"
@@ -234,10 +234,14 @@ tw_cmd_cmd(void)
#if defined(_UWIN) || defined(__CYGWIN__)
/* Turn foo.{exe,com,bat} into foo since UWIN's readdir returns
* the file with the .exe, .com, .bat extension
+ *
+ * Same for Cygwin, but only for .exe and .com extension.
*/
len = strlen(dp->d_name);
if (len > 4 && (strcmp(&dp->d_name[len - 4], ".exe") == 0 ||
+#ifndef __CYGWIN__
strcmp(&dp->d_name[len - 4], ".bat") == 0 ||
+#endif /* !__CYGWIN__ */
strcmp(&dp->d_name[len - 4], ".com") == 0))
dp->d_name[len - 4] = '\0';
#endif /* _UWIN || __CYGWIN__ */
@@ -400,7 +404,7 @@ tw_cmd_next(struct Strbuf *res, struct Strbuf *dir, int *flags)
* We need to process relatives in the path.
*/
while ((tw_cmd_state.dfd == NULL ||
- (ret = tw_dir_next(res, tw_cmd_state.dfd)) == 0) &&
+ (res->len = 0, ret = tw_dir_next(res, tw_cmd_state.dfd)) == 0) &&
*tw_cmd_state.pathv != NULL) {
CLRDIR(tw_cmd_state.dfd)
@@ -408,6 +412,7 @@ tw_cmd_next(struct Strbuf *res, struct Strbuf *dir, int *flags)
while (*tw_cmd_state.pathv && tw_cmd_state.pathv[0][0] == '/')
tw_cmd_state.pathv++;
if ((ptr = *tw_cmd_state.pathv) != 0) {
+ res->len = 0;
Strbuf_append(res, ptr);
ret = 1;
/*
@@ -660,7 +665,7 @@ tw_grpname_start(DIR *dfd, const Char *pat)
{
USE(pat);
SETDIR(dfd)
-#if !defined(_VMS_POSIX) && !defined(_OSD_POSIX) && !defined(WINNT_NATIVE)
+#if !defined(_VMS_POSIX) && !defined(_OSD_POSIX) && !defined(WINNT_NATIVE) && !defined (__ANDROID__)
(void) setgrent(); /* Open group file */
#endif /* !_VMS_POSIX && !_OSD_POSIX && !WINNT_NATIVE */
} /* end tw_grpname_start */
@@ -684,7 +689,7 @@ tw_grpname_next(struct Strbuf *res, struct Strbuf *dir, int *flags)
USE(flags);
USE(dir);
pintr_disabled++;
-#if !defined(_VMS_POSIX) && !defined(_OSD_POSIX) && !defined(WINNT_NATIVE)
+#if !defined(_VMS_POSIX) && !defined(_OSD_POSIX) && !defined(WINNT_NATIVE) && !defined(__ANDROID__)
errno = 0;
while ((gr = getgrent()) == NULL && errno == EINTR) {
handle_pending_signals();
@@ -715,7 +720,7 @@ tw_grpname_end(void)
#ifdef YPBUGS
fix_yp_bugs();
#endif
-#if !defined(_VMS_POSIX) && !defined(_OSD_POSIX) && !defined(WINNT_NATIVE)
+#if !defined(_VMS_POSIX) && !defined(_OSD_POSIX) && !defined(WINNT_NATIVE) && !defined (__ANDROID__)
(void) endgrent();
#endif /* !_VMS_POSIX && !_OSD_POSIX && !WINNT_NATIVE */
} /* end tw_grpname_end */
diff --git a/tw.parse.c b/tw.parse.c
index d17225f8b352..dc32dbaaaf6a 100644
--- a/tw.parse.c
+++ b/tw.parse.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/tw.parse.c,v 3.124 2007/07/02 15:48:48 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/tw.parse.c,v 3.133 2011/04/14 14:33:05 christos Exp $ */
/*
* tw.parse.c: Everyone has taken a shot in this futile effort to
* lexically analyze a csh line... Well we cannot good
@@ -35,7 +35,7 @@
*/
#include "sh.h"
-RCSID("$tcsh: tw.parse.c,v 3.124 2007/07/02 15:48:48 christos Exp $")
+RCSID("$tcsh: tw.parse.c,v 3.133 2011/04/14 14:33:05 christos Exp $")
#include "tw.h"
#include "ed.h"
@@ -124,7 +124,8 @@ static int tw_collect_items (COMMAND, int, struct Strbuf *,
static int tw_collect (COMMAND, int, struct Strbuf *,
struct Strbuf *, Char *, Char *, int,
DIR *);
-static Char tw_suffix (int, const Char *, Char *);
+static Char tw_suffix (int, struct Strbuf *,const Char *,
+ Char *);
static void tw_fixword (int, struct Strbuf *, Char *, Char *);
static void tw_list_items (int, int, int);
static void add_scroll_tab (Char *);
@@ -205,9 +206,11 @@ tenematch(Char *inputline, int num_read, COMMAND command)
/* Don't quote '/' to make the recognize stuff work easily */
/* Don't quote '$' in double quotes */
- if (cmap(*cp, _ESC) && cp < str_end - 1 && cp[1] == HIST)
+ if (cmap(*cp, _ESC) && cp < str_end - 1 && cp[1] == HIST &&
+ HIST != '\0')
Strbuf_append1(&qline, *++cp | QUOTE);
- else if (qu && (tricky(*cp) || *cp == '~') && !(qu == '\"' && tricky_dq(*cp)))
+ else if (qu && (tricky(*cp) || *cp == '~') &&
+ !(qu == '\"' && tricky_dq(*cp)))
Strbuf_append1(&qline, *cp | QUOTE);
else
Strbuf_append1(&qline, *cp);
@@ -350,6 +353,20 @@ tenematch(Char *inputline, int num_read, COMMAND command)
Strbuf_append(&wordbuf, qline.s + wordp);
Strbuf_terminate(&wordbuf);
cleanup_push(&wordbuf, Strbuf_cleanup);
+
+ /*
+ * Don't try to spell things that we know they are correct.
+ * Trying to spell can hang when we have NFS mounted hung
+ * volumes.
+ */
+ if ((looking == TW_COMMAND) && Strchr(wordbuf.s, '/') != NULL) {
+ if (executable(NULL, wordbuf.s, 0)) {
+ cleanup_until(&wordbuf);
+ search_ret = 0;
+ goto end;
+ }
+ }
+
search_ret = spell_me(&wordbuf, looking, pat, suf);
qline.len = wordp;
Strbuf_append(&qline, wordbuf.s);
@@ -640,8 +657,9 @@ insert_meta(const Char *cp, const Char *cpend, const Char *word,
Strbuf_append1(&buffer, w);
Strbuf_append1(&buffer, qu);
} else if (wq &&
- ((!qu && (tricky(w) || (w == HISTSUB && buffer.len == 0))) ||
- (!cmap(qu, _ESC) && w == HIST))) {
+ ((!qu && (tricky(w) || (w == HISTSUB && HISTSUB != '\0'
+ && buffer.len == 0))) ||
+ (!cmap(qu, _ESC) && w == HIST && HIST != '\0'))) {
in_sync = 0;
Strbuf_append1(&buffer, '\\');
Strbuf_append1(&buffer, w);
@@ -688,37 +706,40 @@ is_prefix(Char *check, Char *template)
* and matches on shortening of commands
*/
static int
-is_prefixmatch(Char *check, Char *template, int igncase)
+is_prefixmatch(Char *check, Char *template, int enhanced)
{
- Char MCH1, MCH2;
+ Char MCH1, MCH2, LCH1, LCH2;
for (; *check; check++, template++) {
if ((*check & TRIM) != (*template & TRIM)) {
- MCH1 = (*check & TRIM);
- MCH2 = (*template & TRIM);
- MCH1 = Isupper(MCH1) ? Tolower(MCH1) : MCH1;
- MCH2 = Isupper(MCH2) ? Tolower(MCH2) : MCH2;
- if (MCH1 != MCH2) {
- if (!igncase && ((*check & TRIM) == '-' ||
+ MCH1 = (*check & TRIM);
+ MCH2 = (*template & TRIM);
+ LCH1 = Isupper(MCH1) ? Tolower(MCH1) :
+ enhanced == 2 && MCH1 == '_' ? '-' : MCH1;
+ LCH2 = Isupper(MCH2) ? Tolower(MCH2) :
+ enhanced == 2 && MCH2 == '_' ? '-' : MCH2;
+ if (MCH1 != MCH2 && MCH1 != LCH2 &&
+ (LCH1 != MCH2 || enhanced == 2)) {
+ if (enhanced && ((*check & TRIM) == '-' ||
(*check & TRIM) == '.' ||
(*check & TRIM) == '_')) {
- MCH1 = MCH2 = (*check & TRIM);
- if (MCH1 == '_') {
- MCH2 = '-';
- } else if (MCH1 == '-') {
- MCH2 = '_';
- }
- for (;*template && (*template & TRIM) != MCH1 &&
- (*template & TRIM) != MCH2; template++)
+ MCH1 = MCH2 = (*check & TRIM);
+ if (MCH1 == '_' && enhanced != 2) {
+ MCH2 = '-';
+ } else if (MCH1 == '-') {
+ MCH2 = '_';
+ }
+ for (; *template && (*template & TRIM) != MCH1 &&
+ (*template & TRIM) != MCH2; template++)
continue;
- if (!*template) {
+ if (!*template) {
return (FALSE);
- }
- } else {
- return (FALSE);
- }
- }
- }
+ }
+ } else {
+ return (FALSE);
+ }
+ }
+ }
}
return (TRUE);
} /* end is_prefixmatch */
@@ -853,7 +874,7 @@ static int
recognize(struct Strbuf *exp_name, const Char *item, size_t name_length,
int numitems, int enhanced, int igncase)
{
- Char MCH1, MCH2;
+ Char MCH1, MCH2, LCH1, LCH2;
Char *x;
const Char *ent;
size_t len = 0;
@@ -872,18 +893,21 @@ recognize(struct Strbuf *exp_name, const Char *item, size_t name_length,
for (x = exp_name->s, ent = item; *x; x++, ent++) {
MCH1 = *x & TRIM;
MCH2 = *ent & TRIM;
- MCH1 = Isupper(MCH1) ? Tolower(MCH1) : MCH1;
- MCH2 = Isupper(MCH2) ? Tolower(MCH2) : MCH2;
- if (MCH1 != MCH2)
- break;
+ LCH1 = Isupper(MCH1) ? Tolower(MCH1) : MCH1;
+ LCH2 = Isupper(MCH2) ? Tolower(MCH2) : MCH2;
+ if (MCH1 != MCH2) {
+ if (LCH1 == MCH2 || (MCH1 == '_' && MCH2 == '-'))
+ *x = *ent;
+ else if (LCH1 != LCH2)
+ break;
+ }
len++;
}
- if (*x || !*ent) /* Shorter or exact match */
- memcpy(exp_name->s, item, len * sizeof(*exp_name->s));
}
*x = '\0'; /* Shorten at 1st char diff */
exp_name->len = x - exp_name->s;
- if (!(match_unique_match || is_set(STRrecexact) || (enhanced && *ent)) && len == name_length) /* Ambiguous to prefix? */
+ if (!(match_unique_match || is_set(STRrecexact) || (enhanced && *ent)) &&
+ len == name_length) /* Ambiguous to prefix? */
return (-1); /* So stop now and save time */
return (0);
} /* end recognize */
@@ -915,6 +939,7 @@ tw_collect_items(COMMAND command, int looking, struct Strbuf *exp_dir,
int gpat = flags & TW_PAT_OK; /* Match against a pattern */
int ignoring = flags & TW_IGN_OK; /* Use fignore? */
int d = 4, nd; /* Spelling distance */
+ Char **cp;
Char *ptr;
struct varent *vp;
struct Strbuf buf = Strbuf_INIT, item = Strbuf_INIT;
@@ -939,6 +964,17 @@ tw_collect_items(COMMAND command, int looking, struct Strbuf *exp_dir,
break;
}
+ if (looking == TW_COMMAND
+ && (vp = adrof(STRautorehash)) != NULL && vp->vec != NULL)
+ for (cp = vp->vec; *cp; cp++)
+ if (Strcmp(*cp, STRalways) == 0
+ || (Strcmp(*cp, STRcorrect) == 0 && command == SPELL)
+ || (Strcmp(*cp, STRcomplete) == 0 && command != SPELL)) {
+ tw_cmd_free();
+ tw_cmd_start(NULL, NULL);
+ break;
+ }
+
cleanup_push(&item, Strbuf_cleanup);
cleanup_push(&buf, Strbuf_cleanup);
while (!done &&
@@ -966,9 +1002,15 @@ tw_collect_items(COMMAND command, int looking, struct Strbuf *exp_dir,
/*
* Turn foo.{exe,com,bat,cmd} into foo since UWIN's readdir returns
* the file with the .exe, .com, .bat, .cmd extension
+ *
+ * Same for Cygwin, but only for .exe and .com extension.
*/
{
+#ifdef __CYGWIN__
+ static const char *rext[] = { ".exe", ".com" };
+#else
static const char *rext[] = { ".exe", ".bat", ".com", ".cmd" };
+#endif
size_t exti = Strlen(item.s);
if (exti > 4) {
@@ -1047,18 +1089,18 @@ tw_collect_items(COMMAND command, int looking, struct Strbuf *exp_dir,
case RECOGNIZE_ALL:
case RECOGNIZE_SCROLL:
- if ((vp = adrof(STRcomplete)) != NULL && vp->vec != NULL) {
- Char **cp;
+ if ((vp = adrof(STRcomplete)) != NULL && vp->vec != NULL)
for (cp = vp->vec; *cp; cp++) {
- if (Strcmp(*cp, STRigncase) == 0)
+ if (Strcmp(*cp, STREnhance) == 0)
+ enhanced = 2;
+ else if (Strcmp(*cp, STRigncase) == 0)
igncase = 1;
- if (Strcmp(*cp, STRenhance) == 0)
+ else if (Strcmp(*cp, STRenhance) == 0)
enhanced = 1;
}
- }
if (enhanced || igncase) {
- if (!is_prefixmatch(target, item.s, igncase))
+ if (!is_prefixmatch(target, item.s, enhanced))
break;
} else {
if (!is_prefix(target, item.s))
@@ -1191,9 +1233,10 @@ tw_collect_items(COMMAND command, int looking, struct Strbuf *exp_dir,
*/
/*ARGSUSED*/
static Char
-tw_suffix(int looking, const Char *exp_dir, Char *exp_name)
+tw_suffix(int looking, struct Strbuf *word, const Char *exp_dir, Char *exp_name)
{
Char *ptr;
+ Char *dollar;
struct varent *vp;
(void) strip(exp_name);
@@ -1215,6 +1258,10 @@ tw_suffix(int looking, const Char *exp_dir, Char *exp_name)
else if ((ptr = tgetenv(exp_name)) == NULL || *ptr == '\0')
return ' ';
+ if ((dollar = Strrchr(word->s, '$')) != 0 &&
+ dollar[1] == '{' && Strchr(dollar, '}') == NULL)
+ return '}';
+
return isadirectory(exp_dir, ptr) ? '/' : ' ';
@@ -1262,6 +1309,7 @@ tw_fixword(int looking, struct Strbuf *word, Char *dir, Char *exp_name)
case TW_VARIABLE:
if ((ptr = Strrchr(word->s, '$')) != NULL) {
+ if (ptr[1] == '{') ptr++;
word->len = ptr + 1 - word->s; /* Delete after the dollar */
} else
word->len = 0;
@@ -1497,8 +1545,10 @@ t_search(struct Strbuf *word, COMMAND command, int looking, int list_max,
gpat = 0; /* Override pattern mechanism */
}
else if ((target = Strrchr(name, '$')) != 0 &&
+ (target[1] != '{' || Strchr(target, '}') == NULL) &&
(Strchr(name, '/') == NULL)) {
target++;
+ if (target[0] == '{') target++;
looking = TW_VARIABLE;
gpat = 0; /* Override pattern mechanism */
}
@@ -1741,7 +1791,7 @@ t_search(struct Strbuf *word, COMMAND command, int looking, int list_max,
switch (suf) {
case 0: /* Automatic suffix */
Strbuf_append1(word,
- tw_suffix(looking, exp_dir.s, exp_name.s));
+ tw_suffix(looking, word, exp_dir.s, exp_name.s));
break;
case CHAR_ERR: /* No suffix */
diff --git a/vms.termcap.c b/vms.termcap.c
index 58ce7e8afa95..ffae26c8bb8f 100644
--- a/vms.termcap.c
+++ b/vms.termcap.c
@@ -1,4 +1,4 @@
-/* $Header: /p/tcsh/cvsroot/tcsh/vms.termcap.c,v 1.11 2006/03/02 18:46:45 christos Exp $ */
+/* $Header: /p/tcsh/cvsroot/tcsh/vms.termcap.c,v 1.12 2011/01/09 16:25:29 christos Exp $ */
/*
* termcap.c 1.1 20/7/87 agc Joypace Ltd
*
@@ -9,8 +9,8 @@
* A public domain implementation of the termcap(3) routines.
*/
#include "sh.h"
-RCSID("$tcsh: vms.termcap.c,v 1.11 2006/03/02 18:46:45 christos Exp $")
-#if defined(_VMS_POSIX) || defined(_OSD_POSIX)
+RCSID("$tcsh: vms.termcap.c,v 1.12 2011/01/09 16:25:29 christos Exp $")
+#if defined(_VMS_POSIX) || defined(_OSD_POSIX) || defined(__ANDROID__)
/* efth 1988-Apr-29
- Correct when TERM != name and TERMCAP is defined [tgetent]
@@ -43,10 +43,30 @@ extern FILE *fopen(); /* old fopen */
* in bp (which must be an array of 1024 chars). Returns 1 if
* termcap entry found, 0 if not found, and -1 if file not found.
*/
-
int
tgetent(char *bp, char *name)
{
+#ifdef __ANDROID__
+ /* Use static termcap entry since termcap file usually doesn't exist. */
+ capab = bp;
+ strcpy(bp,
+ "linux|linux console:"
+ ":am:eo:mi:ms:xn:xo:"
+ ":it#8:"
+ ":AL=\\E[%dL:DC=\\E[%dP:DL=\\E[%dM:IC=\\E[%d@:K2=\\E[G:al=\\E[L:"
+ ":bl=^G:cd=\\E[J:ce=\\E[K:cl=\\E[H\\E[J:cm=\\E[%i%d;%dH:cr=^M:"
+ ":cs=\\E[%i%d;%dr:ct=\\E[3g:dc=\\E[P:dl=\\E[M:do=^J:ec=\\E[%dX:"
+ ":ei=\\E[4l:ho=\\E[H:ic=\\E[@:im=\\E[4h:k1=\\E[[A:k2=\\E[[B:"
+ ":k3=\\E[[C:k4=\\E[[D:k5=\\E[[E:k6=\\E[17~:k7=\\E[18~:k8=\\E[19~:"
+ ":k9=\\E[20~:kD=\\E[3~:kI=\\E[2~:kN=\\E[6~:kP=\\E[5~:kb=\\177:"
+ ":kd=\\E[B:kh=\\E[1~:kl=\\E[D:kr=\\E[C:ku=\\E[A:le=^H:mb=\\E[5m:"
+ ":md=\\E[1m:me=\\E[0m:mh=\\E[2m:mr=\\E[7m:nd=\\E[C:nw=^M^J:"
+ ":rc=\\E8:sc=\\E7:se=\\E[27m:sf=^J:so=\\E[7m:sr=\\EM:st=\\EH:ta=^I:"
+ ":ue=\\E[24m:up=\\E[A:us=\\E[4m:vb=200\\E[?5h\\E[?5l:"
+ ":ve=\\E[?25h\\E[?0c:vi=\\E[?25l\\E[?1c:vs=\\E[?25h\\E[?0c:"
+ );
+ return(1);
+#else
FILE *fp;
char *termfile;
char *cp,
@@ -118,6 +138,7 @@ sscanf to look at aliases. These are delimited by '|'. */
sleep(1);
#endif /* DEBUG */
return(0);
+#endif /* ANDROID */
}
/*
diff --git a/win32/BSDLOGO.BMP b/win32/BSDLOGO.BMP
new file mode 100644
index 000000000000..f45c05863153
--- /dev/null
+++ b/win32/BSDLOGO.BMP
Binary files differ
diff --git a/win32/BSDLOGO.ICO b/win32/BSDLOGO.ICO
new file mode 100644
index 000000000000..914714f5128b
--- /dev/null
+++ b/win32/BSDLOGO.ICO
Binary files differ
diff --git a/win32/BSDLOGO.RC b/win32/BSDLOGO.RC
new file mode 100644
index 000000000000..2973a877b203
--- /dev/null
+++ b/win32/BSDLOGO.RC
@@ -0,0 +1,2 @@
+/*$Header: /p/tcsh/cvsroot/tcsh/win32/BSDLOGO.RC,v 1.3 2004/05/19 18:22:27 christos Exp $*/
+IDI_ICON1 ICON DISCARDABLE "win32/BSDLOGO.ICO"
diff --git a/win32/CODING b/win32/CODING
new file mode 100644
index 000000000000..212a22b67d7f
--- /dev/null
+++ b/win32/CODING
@@ -0,0 +1,20 @@
+/*$Header: /p/tcsh/cvsroot/tcsh/win32/CODING,v 1.3 2004/05/19 18:22:27 christos Exp $*/
+Read this if you plan to contribute changes to the source:
+
+Please do not use any heap allocation routine other than:
+
+1. heap_alloc()/heap_free(), if the memory will never be acessed in a child
+process (i.e, is not expected to be inherited). this is a macro defined
+in ntport.h
+
+2. xmalloc()/xfree(), if the memory is to be inherited by a child process.
+this is allocated from a seperate heap and is copied to the child during fork().
+
+Avoid using C-runtime functions that store static variables
+(like strtok, for example).
+
+It is preferrable to avoid any c-runtime function other than strlen,strcat
+etc.
+
+Thanks.
+-amol
diff --git a/win32/ChangeLog b/win32/ChangeLog
new file mode 100644
index 000000000000..d878ef5d8bb7
--- /dev/null
+++ b/win32/ChangeLog
@@ -0,0 +1,686 @@
+Rev 7.00
+Sun Aug 11 00:39:38 2002 <amol@AMOLDWHISPHOME>
+ * various files: Remove GPL'ed termcap code. Partial fix for
+ horizontal scroll. Fix visiblebell.
+Sat May 04 22:38:36 2002 <amol@AMOLDWHISPHOME>
+ * ntfunc.c: fixed leak in nt_texec ?? (fast exec path).
+ Removed sourcerc and printrc.
+Rev 6.07
+Mon Mar 18 17:54:44 2002 <amol@AMOLDWHISPHOME>
+ * support.c,fork.c: wow64 (32-bit on ia64) seems to work now.
+Rev 6.06
+Sun Mar 17 21:25:28 2002 <amol@AMOLDWHISPHOME>
+ * support.c,fork.c: attempt wow64 support.
+Rev 6.05
+Sat Mar 16 10:53:21 2002 <amol@AMOLDWHISPHOME>
+
+ * console.c: Fix refreshing problems with searching history.
+
+Rev 6.04
+Fri Mar 01 18:52:30 2002 <amol@AMOLDWHISPHOME>
+
+ * ntfunc.c: Fix another bug. Some associated files were launched twice.
+
+Rev 6.03
+Mon Feb 18 19:24:47 2002 <amol@AMOLDWHISPHOME>
+
+ * ntfunc.c,support.c: Of course, fix bug introduced by previous fix.
+ (#! emulation was broken)
+
+Rev 6.02
+Sun Feb 17 15:10:50 2002 <amol@AMOLDWHISPHOME>
+ * various files, many fixes,
+ 1. SetFileApisToOEM: Fix display problems with Euro filenames.
+ 2. Try explorer associations in fast exec path as well.
+ 3. Fix bug with TCSHONLYSTARTEXES not working for extensions less
+ than 3 chars
+ 4. Fix bug with e_page_up/down that always made them beep.
+ 5. Fix bug related to backward-search refreshing problem
+Wed Oct 10 21:58:50 2001 <amold@AMOLDHOME>
+ * win32\clip.c: Fix bug in redirection to /dev/clipboard. it should work
+ now.
+Rev 6.00
+Thu Aug 16 18:55:54 2001 <amold@AMOLDHOME>
+ * win32\clip.c: Integrate with 6.10.02, put e_copy_from_clipboad and
+ e_paste_from_clipboard back. Document N-S binding in README.NT.
+Rev 5.56,5.57
+Tue Jun 19 22:13:52 2001 <amold@AMOLDHOME>
+ * various files: Remove stacksize builtin. Shift keymap. Sync with
+ tcsh-6.10.01. e_undosify etc.
+Rev 5.55
+Wed Mar 28 17:19:06 2001 <amold@AMOLDHOME>
+ * misc files: add sourcerc and printrc builtins
+Rev 5.54
+Sat Jan 27 18:45:20 2001 <amold@AMOLDHOME>
+ * win32\ps.c: Fixed bug that made ps crash on NT 4.0
+Rev 5.53
+Thu Nov 30 14:30:03 2000 <amold@SKYNYRD>
+ * win32\ntfunc.c: 6.10, fix bug in 'start' and TCSHONLYSTARTEXES
+Rev 5.52
+Wed Nov 15 03:54:03 2000 <Administrator@AMOLDHOME>
+ * misc files: integrate 6.09.04
+Rev 5.51
+Thu Jul 20 19:25:41 2000 <amold@AMOLDHOME>
+ * win32\ps.c: Fix bug in ps.c
+Rev 5.50
+Fri Jul 14 20:33:33 2000 <amold@AMOLDHOME>
+ * various: Fix TCSHONLYSTARTEXES and completion. add e_page_up
+ and e_page_down editor functions. Some 64-bit work.
+Rev 5.49
+Mon Jun 05 17:42:55 2000 <amold@SKYNYRD>
+ * win32\ntfunc.c: move executable() to NT source.
+Rev 5.48
+Mon May 29 14:22:03 2000 <amold@SKYNYRD>
+ * various files: Finally integrate patches for "start <directory>".
+ Also, completions will recognize extensions from TCSHONLYSTARTEXES
+Rev 5.46
+Wed Mar 01 10:32:22 2000 <amold@SKYNYRD>
+ * win32\ntfunc.c,win32\support.c: Make NTlamepathfix consistent
+ across fast exec, launched associations as well as normal
+ command execution.
+Rev 5.45
+Fri Jan 07 11:50:03 2000 <amold@SKYNYRD>
+ * win32\support.c, ntfunc.c, Makefile.win32: Remove stack probing
+ in fork() by commiting 1/2MB of the thread stack instead of the
+ default page size. To reduce the footprint of spawned threads
+ (for clipboard or SIGCHILD), a new builtin stacksize has been
+ added.
+Rev 5.44
+Thu Jan 06 12:28:55 2000 <amold@SKYNYRD>
+ * win32\stdio.c: Fixed serious bug that would cause backticked
+ expressions in shell scripts to not run. Should also fix hangs
+ with piped builtins like "bindkey | wc -l"
+Rev 5.43
+Fri Oct 29 11:10:58 1999 <amold@SKYNYRD>
+ * win32\support.c: added NTnoquoteprotect variable.
+Rev 5.42
+Sun Oct 24 11:52:06 1999 <amold@SKYNYRD>
+ * win32\ntfunc.c: Fix $? on fast exec path.
+Rev 5.41
+Fri Oct 08 11:08:41 1999 <amold@SKYNYRD>
+ * win32\support.c: Support for NTcaseifypwd
+Rev 5.37
+Fri Apr 02 11:51:54 1999 <amold@SKYNYRD>
+ * tc.func.c: Fixed bug that showed files in ls //server/share
+ as directories.
+Rev 5.36
+Wed Mar 24 14:36:50 1999 <amold@SKYNYRD>
+ * tc.func.c, win32\stdio.c: Cleaned up code. fixed bug
+ that would prevent ls //unc (introduced in 5.35, of course).
+Rev 5.34,5.35
+Tue Mar 23 12:07:52 1999 <amold@SKYNYRD>
+ * various files: Fix for ls c:/bin/* and paths with spaces
+Rev 5.33
+Wed Mar 17 12:37:50 1999 <amold@SKYNYRD>
+ * win32\support.c: Fix bug to resume converting $HOME to
+ '/'-delimited.
+Mon Mar 15 11:15:51 1999 <amold@SKYNYRD>
+ * sh.func.c: Make setting environment variables case-insensitve
+Rev 5.321
+Mon Mar 15 09:46:34 1999 <amold@SKYNYRD>
+ * win32\ntfunc.c: remove stupid hardcoded breakpoint. Hit when
+ executing scripts, batch files, etc.
+Rev 5.32
+Sat Mar 13 12:58:34 1999 <amold@SKYNYRD>
+ * various files: Use hashtable to check command spelling. Will
+ eliminate bogus corrections on NT. Code re-org in support.c.
+ Also backed out agressive correction introduced in 5.29.
+Rev 5.29
+Tue Feb 09 16:23:39 1999 <amold@SKYNYRD>
+ * tw.parse.c,tw.spell.c: Aggressive spelling correction. Apppend
+ ".exe" to a command while doing spellcheck.
+Rev 5.28
+Wed Feb 03 16:58:46 1999 <amold@SKYNYRD>
+ * various files: speed up argument parsing in exec. should
+ make commands with long argument strings run considerably faster.
+ Speed up argument parsing for the start builtin as above. remove
+ shell limit on command length.
+ Code cleanups, move heap_init() to executable entry point instead
+ of fork_init() to prevent heap conflicts in child processes.
+Rev 5.27
+Fri Jan 08 10:36:24 1999 <amold@SKYNYRD>
+ * win32\io.c: ignore ctrl-space and ctrl-@ if NOREBIND
+ is not set. This should fix the bug which caused altgr-q
+ to not work, for example.
+Rev 5.261
+Fri Nov 20 15:34:32 1998 <amold@SKYNYRD>
+ * sh.sem.c: fixed stupid bug that neutralized the fast exec
+ path. set NTslowexec if you get funky behaviour from the shell.
+Rev 5.26
+Fri Nov 20 15:13:51 1998 <amold@SKYNYRD>
+ * ed.refresh.c: Patch from taga nayuta for fixing problems
+ with rprompt and prompt both having ANSI escapes.
+Rev 5.25
+Tue Nov 03 12:23:20 1998 <amold@SKYNYRD>
+ * win32\support.c: Win9x-specific fix for apps which may
+ have been started from a directory with a '.' in the name, but
+ without specifying the extension. e.g., c:/foo.bar/baz
+Rev 5.24
+Sat Oct 31 16:12:20 1998 <amold@SALEMS_LOT>
+ * tc.bind.c,win32\nt.bind.c: Bindkey extensions for N-C
+ N-M. See README.NT for details. Fixed bug in clipboard
+ pasting on win95
+Rev 5.23
+Fri Oct 16 12:51:25 1998 <amold@SKYNYRD>
+ * win32\support.c: improve support for win32 GUI app
+ detection on Win9x (for TCSH_NOASYNCGUI).
+Rev 5.21
+Tue Oct 06 12:15:30 1998 <amold@SKYNYRD>
+ * sh.dir.c,sh.exec.c: Synced with tcsh-6.08 and applied
+ patches to that same. (setenv HOME foo crash, and
+ compilation problem with sh.exec.c)
+Rev 5.202
+Thu Oct 01 11:55:53 1998 <amold@SKYNYRD>
+ * win32\io.c, sh.exec.c: KANJI+multibyte fixes from
+ taga nayuta.
+ Fix for "where" failing with directories that had '.' in
+ their name.
+Rev 5.18
+Fri Sep 11 08:21:18 1998 <amold@SKYNYRD>
+ * win32\clip.c: Fixed bug that caused crashes when pasting
+ international characters from clipboard using e_paste...
+Rev 5.17
+Tue Sep 08 11:04:35 1998 <amold@SKYNYRD>
+ * tc.func.c: Bugfix for hang when rmstar is set.
+Rev 5.16
+Wed Aug 26 10:18:42 1998 <amold@SKYNYRD>
+ * win32\ntfunc.c,sh.dir.c: Fixed bug in interaction between
+ TCSHONLYSTARTEXES and "start". Fixed bug that caused a crash
+ if you tried set home=C:\\ (which is WRONG anyway).
+Rev 5.15
+Tue Aug 04 14:48:32 1998 <amold@SKYNYRD>
+ * ed.chared.c,ed.defns.c,ed.decls.h: Added e_dosify_prev. See
+ README.NT for details.
+Rev 5.14
+Tue Jul 28 10:17:53 1998 <amold@SKYNYRD>
+ * win32\ntfunc.c: change in behaviour of TCSHONLYSTARTEXES. Please
+ check README.NT for details.
+Rev 5.12
+Sat Jul 18 13:12:39 1998 <amold@SKYNYRD>
+ * win32\ntfunc.c: Patch from taga nayuta for start <URL>
+Rev 5.11
+Tue Jul 14 15:55:32 1998 <amold@SKYNYRD>
+ * ed.screen.c: Changed literal spec. in prompt to use ANSI
+ sequences instead of old hack. This is made necessary by the
+ color-ls patch. It does not make any sense to have two methods
+ of parsing these strings.
+Rev 5.10
+Tue Jul 14 12:40:41 1998 <amold@SKYNYRD>
+ * sh.sem.c: Check for NTslowexec before mangling the syntax
+ tree.
+Rev 5.09
+Sun Jul 12 17:13:09 1998 <amold@SALEMS_LOT>
+ * win32\io.c,console.c: patches from TAGA nayuta. Includes fix for
+ clear-screen, color-ls and ctrl-space, ctrl-@
+Rev 5.04-5.08
+Sat Jul 11 21:19:47 1998 <amold@SALEMS_LOT>
+ * win32\signal.c: Hacked signal mechanism to deliver signal in
+ the main thread. May cause crashes/hangs. Can be compiled out.
+Rev 5.03
+Wed Jul 08 17:06:41 1998 <amold@SKYNYRD>
+ * ed.refresh.c: Fixed bug in edit-time refresh of lines > 1 line.
+Rev 5.02
+Mon Jul 06 11:08:12 1998 <amold@SKYNYRD>
+ * various: separated nt-specific builtins from the rest of the
+ shell. Makes maintainence easier.
+Rev 5.00
+Tue Jun 30 14:46:26 1998 <amold@SKYNYRD>
+ * various: synced with tcsh-6.07.08. Fixed bug in alias
+ interactions with fast exec. make settc work with li and
+ co.
+Rev 4.09
+Mon Jun 01 13:54:05 1998 <amold@SKYNYRD>
+ * win32\ntfunc.c: Fixed fast exec path to use the hash
+Rev 4.07
+Sat May 30 13:37:26 1998 <amold@SKYNYRD>
+ * sh.sem.c: Fixed bug in dollar expansion in the fast exec
+ path.
+ * win32\clip.c: Removed 4Kb clipboard limitation.
+
+ Misc. code cleanup.
+Rev 4.05
+Thu May 28 14:17:57 1998 <amold@SKYNYRD>
+ * win32\support.c,win32\ntfunc.c,sh.sem.c: Fixed bug that
+ prevented execution of programs whose path had spaces in them.
+ Added optimization for simple commands to avoid fork(). Please
+ read about NTslowexec in README.NT if you see any weird
+ behaviour from the shell.
+Rev 4.03
+Fri May 22 08:19:32 1998 <amold@SKYNYRD>
+ * win32\support.c: Fixed parsing of quoted args to child processes.
+ hopefully.
+Rev 4.02
+Thu May 14 18:52:22 1998 <amold@SKYNYRD>
+ * win32\support.c: Fixed bug that caused UNC-path-exes to be
+ spawned in a new window. Also fixed wildcard expansion bug
+ (ls *.c ) caused by merge with standard distribution.
+Rev 4.0
+Thu Apr 23 09:49:28 1998 <amold@SKYNYRD>
+
+ * tcsh-6.07.06 pre-release. Please try it out and see if
+ anything got broken in integration.
+
+rev 3.661
+Fri Apr 10 16:48:04 1998 <amold@SKYNYRD>
+ * tc.const.c: Changed NTONLYSTARTEXES to TCSHONLYSTARTEXES. really.
+rev 3.66
+Sat Apr 04 15:22:02 1998 <amold@SKYNYRD>
+ * win32\support.c: fixed bug that was restricting command line
+ lengths.
+Rev 3.652
+Fri Mar 27 11:26:24 1998 <amold@SKYNYRD>
+ * tc.prompt.c: Keep server names in prompt when %C is specified.
+ * win32\ntfunc.c: Fixed crash in the start builtin when options
+ were specified but no command.
+Rev 3.651
+Tue Mar 24 17:53:32 1998 <amold@SKYNYRD>
+ * win32\ntfunc.c: Took out 512-char limit in setenv.
+Rev 3.65
+Wed Mar 11 09:26:43 1998 <amold@SKYNYRD>
+ * sh.h: Fixed bug that caused problem with 'which' or
+ crashed the shell when a path component did not have
+ the drive letter. e.g., '/bin' or set home=/foo
+Rev 3.643
+Sun Mar 08 12:55:04 1998 <amold@SKYNYRD>
+ * sh.dir.c: Fixed crash in echo `dirs`
+Rev 3.641
+Sat Feb 21 12:06:18 1998 <amold@SALEMS_LOT>
+ * win32\support.c: NTONLYSTARTEXES changed to TCSHONLYSTARTEXES
+ NTlameargfix done by default. The variable has no effect now.
+ Both changes due to major restructuring of execve(). It's faster,
+ but probably not appreciable to the human eye.
+
+Rev 3.64
+Fri Feb 20 17:08:27 1998 <amold@SKYNYRD>
+ * win32\support.c: cleaned up execve(), fixed crash in win95 when
+ trying file associations.
+ (cleanup may have introduced bugs, be careful)
+Rev 3.63
+Thu Feb 12 10:07:10 1998 <amold@SKYNYRD>
+ * win32\ps.c: psapi.dll no longer needed, but will be used if
+ it exists (of course, Windows NT only).
+Rev 3.62
+Thu Feb 05 11:31:56 1998 <amold@SKYNYRD>
+ * win32\ps.c: Added -3 argument for the kill builtin. This will
+ send a WM_CLOSE message to the app's window. May be a useful
+ way to shut down GUI apps. tcsh itself can also be killed
+ with this "signal" (maps to a SIGHUP or CTRL_CLOSE_EVENT).
+
+Rev 3.612
+Fri Jan 30 14:29:44 1998 <amold@SKYNYRD>
+ * sh.proc.c: Changed kill to take hex pid (0xff...) as well
+ Probably helps on win95 if you use the builtin ps
+ to list processes.
+Rev 3.611
+Tue Jan 27 17:48:02 1998 <amold@SKYNYRD>
+ * win32\support.c: of course, the /dev/clipboard stuff had
+ a bug.
+Rev 3.61
+Tue Jan 27 14:04:21 1998 <amold@SKYNYRD>
+ * win32\clip.c,win32\stdio.c: Hack to treat /dev/clipboard
+ as a special case for i/o redirection. Limit of 4K, not fully
+ tested. Use at your own risk. Idea by David Sinck.
+Rev 3.60
+Tue Jan 27 09:06:41 1998 <amold@SKYNYRD>
+ * ed.chared.c,ed.defns.c: added e_dosify_next editor function
+ to enable converting '/'-delimited paths to '\'-delimited.
+ For those times when you just have to use xcopy.
+Rev 3.59
+Thu Jan 22 11:16:00 1998 <amold@SKYNYRD>
+ * win32\globals.c,support.c: Added support for starting
+ GUI apps asynchronously (don't wait for them to terminate).
+ Can be overridden by setting TCSH_NOASYNCGUI to a non-zero
+ length. Also put in logic to try appending ".exe" as well
+ as ".EXE" to a command. This is for some case-sensitive
+ filesystem drivers out there.
+Rev 3.581
+Fri Jan 02 10:26:16 1998 <amold@SKYNYRD>
+
+ * win32\clip.c: Fixed minor bugs and removed shared kill buffer
+ code. Only the clipboard can be used to share data now. See
+ README.NT for details on how to use the clipboard.
+
+Rev 3.58
+Wed Dec 31 13:26:40 1997 <amold@SKYNYRD>
+ * ed.defns.c,win32\clip.c: Added support for the clipboard
+ functions. Disabled shared kill buffers
+Rev 3.57
+Tue Dec 30 17:42:27 1997 <amold@SKYNYRD>
+ * ed.chared.c,win32\support.c: Experimental sharing of
+ kill buffers among all active instances of tcsh.
+ I'm not sure how well this works yet.
+Rev 3.563
+Tue Dec 30 10:32:34 1997 <amold@SKYNYRD>
+ * sh.func.c: Fixed bug in unsetenv (it wasn't working at all).
+Rev 3.561
+Mon Dec 29 11:57:16 1997 <amold@SKYNYRD>
+ * win32\ps.c: Fixed bug in ps. Also added manadatory
+ "now" argument to shutdown.
+Rev 3.56
+Tue Dec 23 14:05:16 1997 <amold@SKYNYRD>
+ * win32\ps.c: Added shutdown builtin.
+Rev 3.55
+Fri Dec 19 13:28:25 1997 <amold@SKYNYRD>
+ * win32\ps.c: Added ps builtin.
+Rev 3.544
+Fri Dec 12 13:41:52 1997 <amold@SKYNYRD>
+ * tw.parse.c: Fixed bug in complete=igncase
+Rev 3.543
+Wed Dec 10 14:01:12 1997 <amold@SKYNYRD>
+ * win32\io.c: Fix for redirecting to /dev/null.
+Rev 3.542
+Wed Dec 03 10:15:45 1997 <amold@SKYNYRD>
+ * win32\io.c: Fix for spurious CR's on win95 when
+ running commands that read from stdin.
+Rev 3.541
+Tue Nov 25 11:22:05 1997 <amold@SKYNYRD>
+ * win32\ntfunc.c: Fix for some bugs with NTONLYSTARTEXES
+Rev 3.54
+Mon Nov 24 15:32:45 1997 <amold@SKYNYRD>
+ * tc.const.c,sh.func.c: Added environment variable
+ NTONLYSTARTEXES, which can be set on the fly, to
+ control whether associations (e.g., notepad with .txt)
+ should be recognized.
+Recv 3.53
+Mon Nov 24 13:17:04 1997 <amold@SKYNYRD>
+ * misc files: Changed copyright to Berkeley. Fixed minor
+ bugs.
+Rev 3.52
+Fri Nov 21 09:41:03 1997 <amold@SKYNYRD>
+ * win32\fork.c: Fixed bug in environment inheritance.
+Rev 3.51
+Mon Nov 17 14:51:57 1997 <amold@SKYNYRD>
+ * tc.func.c: Fix for ls //server
+Rev 3.4,3.5
+Fri Nov 14 09:34:13 1997 <amold@SKYNYRD>
+ * misc: Integrated into standard distribution.
+ Feeping creaturism: Added support for file associations.
+ e.g, start foo.txt will start notepad with foo.txt etc.
+Rev 3.325
+Tue Oct 28 16:38:03 1997 <amold@SKYNYRD>
+ * sh.h: Fix to make $$ inherited by child process. The bug
+ showed up in tcsh <infile>out.$$, for example
+Rev. 3.323,3.324
+Wed Oct 22 13:06:59 1997 <amold@SKYNYRD>
+ * ntport\support.c: Made hack below a little smarter. Add '.'
+ only if the command is not found by the usual search.
+ * ntport\ntfunc.c: Fix to pass arguments on to batch files
+Rev. 3.322
+Wed Oct 15 14:37:22 1997 <amold@SKYNYRD>
+ * ntport\support.c: Win95-only hack to add '.' to the end
+ of a command that does not have any '.'-s.
+Rev. 3.321
+Mon Oct 13 09:47:35 1997 <amold@SKYNYRD>
+
+ * sh.func.c: Fix for TCSHSUBSTHB when the #! command contains only
+ one word.
+ * ntport\support.c: Fix for paths with "./" instead of "." on
+ win95.
+
+Rev 3.32
+Thu Oct 09 17:01:30 1997 <amold@SKYNYRD>
+
+ * ntport\ntfunc.c,sh.func.c: Hacks for TCSHSUBSTHB. See README.NT
+ for details. Allegedly makes it easier to run scripts directly
+ from Unix.
+
+Rev 3.31
+Mon Oct 06 18:22:10 1997 <amold@SKYNYRD>
+
+ * tc.const.c: Fixed bug in NTlamepathfix. Added variable
+ NTlameargfix. This will make it possible to run cmd or print
+ etc. without aliasing them.
+
+Rev 3.30
+Mon Sep 22 14:52:50 1997 <amold@SKYNYRD>
+
+ * ntport\support.c: Added wrapper for chdir, to convert
+ '/'s to '\'s on Win95.
+
+Rev 3.29
+Mon Sep 15 08:52:11 1997 <amold@SKYNYRD>
+
+ * ntport\bogus.c: Fixed bug in ~-expansion. ~foo was being expanded
+ to $home for the current user.
+ * sh.func.c: Changed isbfunc to use StrQcmp instead of my own
+ hacked unqoute_Strcmp.
+
+Rev 3.281
+Fri Sep 05 15:13:18 1997 <amold@SKYNYRD>
+
+ * ntport\ntfunc.c: Fixed stupid bug in unsetenv. Instead of
+ unsetting, a garbage value was being filled in.
+
+Rev 3.27
+Wed Aug 27 19:23:49 1997 <amold@SALEMS_LOT>
+
+ * sh.func.c: Fix for quoting aliased builtins. Thanks to
+ Vincent Fatica for pointing this bug out. It exists with
+ the unix version of tcsh 6.07.02 as well.
+
+Rev 3.262,Rev 3.263
+Tue Aug 26 17:33:38 1997 <amold@SKYNYRD>
+
+ * support.c: Fixed HOSTTYPE string to show NT service packs.
+ * sh.c: Fix for win95's lameness in parsing c://.tcshrc
+ If you really want to set a silly home directory like
+ C:/, it should work now.
+
+Rev 3.26, 3.261
+Mon Aug 18 17:53:25 1997 <amold@SKYNYRD>
+
+ * sh.dol.c: Fix for echoing input when using $< interactively
+ * sh.exec.c: Fix for completing directory names properly. For
+ example, c:/b<tab> will list directories as well as executables.
+
+Rev 3.25
+Thu Aug 07 07:47:07 1997 <amold@SKYNYRD>
+
+ * sh.exec.c,ntport\ntfunc.c: Added hack to run .cmd or
+ .bat files. If they are hashed, they shall be run.
+
+Rev 3.24
+Wed Aug 06 17:36:50 1997 <amold@SKYNYRD>
+
+ * sh.exec.c: Fix for which/where on Win95
+
+Rev 3.232
+Wed Aug 06 14:21:01 1997 <amold@SKYNYRD>
+
+ * ntport\support.c: Fix for fix for dirs with spaces in path.
+
+Rev 3.23
+Thu Jul 31 11:43:56 1997 <amold@SKYNYRD>
+
+ * sh.lex.c,tc.func.c,ntport\io.c: Major code change. CRLF
+ translation was messing up loops in scripts. The shell would
+ seek to the wrong offset. Thanks to Rickard Westman for
+ isolating the problem. The file i/o routines now do no translation.
+ Everything is done in the shell code itself. This may lead to
+ unforseen bugs, so beware.
+
+Rev 3.22
+Mon Jul 28 07:58:24 1997 <amold@SKYNYRD>
+
+ * ed.chared.c: Fix for ^C aborting current input
+ * ntport\ntfunc.c: Make 'start' print error message if
+ command is not found.
+
+Rev 3.21
+Thu Jul 24 08:50:52 1997 <amold@SKYNYRD>
+
+ * ntport\support.c: fix for directories with space in $path
+
+Rev 3.20
+Thu Jul 17 09:59:32 1997 <amold@SKYNYRD>
+
+ * ntport\console.c: Fix for scroll messing up dislay
+
+Rev 3.19
+Wed Jul 09 14:20:30 1997 <amold@SKYNYRD>
+
+ * ntport\ntfunc.c: changed 'start' to only use '-' for switches
+ * ntport\ntfunc.c: added 'cls' builtin. The normal clear-screen function
+ has been fixed to clear only the visible window. Use cls if you need
+ to clear the entire buffer.
+
+Rev 3.18
+Fri Jun 27 14:08:40 1997 <amold@SKYNYRD>
+
+ * ntport\support.c,tc.const.c : Added variable NTlamepathfix, which
+ when set will replace '/' in the PATH with '\' for child processes. Also
+ works with the start builtin.
+
+Rev 3.17
+Tue Jun 24 17:51:17 1997 <amold@SKYNYRD>
+
+ * ntport\nt.who.c: Fix for crashes on exit in win95.
+
+Rev 3.16
+Fri Jun 20 08:28:58 1997 <amold@SKYNYRD>
+
+ * ntport\ntfunc.c: Fix for env variable fix. Also other misc memory
+ cleanup things. Env variables greater than 1024 now CANNOT be set.
+
+Rev 3.15
+Mon Jun 16 19:55:00 1997 <amold@SALEMS_LOT>
+
+ * ntport\ntfunc.c: Fixed buffer overrun problems in nt_set_env.
+ Environment variables will now be truncated at 1024 bytes.
+ * sh.proc.,ntport\support.c: nohup foo & now creates a detached process.
+ This child has no access to the parent's console, and will continue to run
+ if the parent shell exits and the console goes away.
+
+Rev 3.14
+Fri Jun 13 08:54:53 1997 <amold@SKYNYRD>
+
+ * dirent.c, signal.c, io.c: minor bugfixes for dirent. Major
+ fixes for sigint handling.
+
+Rev 3.12
+Sun Jun 08 13:57:16 1997 <amold@SKYNYRD>
+
+ * ntport\nt.who.c, tc.who.c: Added support for watch(). Needs
+ more testing.
+
+Rev 3.11
+Thu Jun 05 16:33:01 1997 <amold@SKYNYRD>
+
+ * ntport\ntfunc.c: added new variable 'oldtitle'. stores the
+ previous value of title, every time the title builtin is used.
+
+Rev 3.10
+Wed May 28 13:47:44 1997 <amold@SKYNYRD>
+
+ * ntport\dirent.c: Enhancements for cd //server/<tab> or
+ ls //server. Basically, enumerate shares as if they were files.
+ May not work if the server is win95, but I don't give a damn
+ about that.
+
+Rev 3.09
+Thu May 22 08:31:19 1997 <amold@SKYNYRD>
+
+ * tw.parse.c: Support for complete=igncase. Like enhance, but
+ restricted to case-insensitive completion.
+
+Rev 3.08
+Mon May 19 11:54:22 1997 <amold@SKYNYRD>
+
+ * ntport\io.c: Fix for file descriptor confusion in non-interactive
+ shell.(Manifested as hangs in emacs compilation, for example)
+
+Rev 3.07
+Sat May 17 15:12:24 1997 <amold@SKYNYRD>
+
+ * tc.func.c: Fixes to hashbang for #!c:/bin/tcsh.exe<space>
+
+Rev 3.06
+Thu May 15 08:37:47 1997 <amold@SKYNYRD>
+
+ * ntport\io.c: Fix for heinous append(or lack thereof) redirection
+ bug.
+
+Rev 3.06
+Mon May 12 16:19:42 1997 <amold@SKYNYRD>
+
+ * tc.prompt.c: Fix to print drive letter with %c prompt format
+
+Rev 3.05
+Thu May 08 17:54:12 1997 <amold@SKYNYRD>
+
+ * ntport\ntfunc.c: Restored 'title' builtin
+
+Rev 3.04
+Wed May 07 14:02:32 1997 <amold@SKYNYRD>
+
+ * sh.c: Fixed comparison with argv[0] for %c prompt format
+
+Rev 3.03
+Tue Apr 29 15:48:15 1997 <amold@SKYNYRD>
+
+ * sh.sem.c: Really fixed cd this time.
+
+Rev 3.02
+Fri Apr 25 07:51:26 1997 <amold@SKYNYRD>
+
+ * sh.sem.c: Fix for C: changing drives when implicitcd is set
+
+Rev 3.01
+Sat Apr 19 16:00:23 1997 amold <amold@SALEMS_LOT>
+
+ * ntport\io.c: Fixed heredoc temp files to be deleted on close.
+
+Rev 3.0
+Thu Apr 17 09:24:46 1997 <amold@SKYNYRD>
+
+ * ntport\io.c, ntport\fork.c: Fixes for compiling with optimization
+ turned on. This is a release version. I've named it 3.0 to
+ differentiate it from the 6.06.02 nt-rev-2.10 junk.
+
+Rev 1.9-beta
+Mon Apr 14 19:26:01 1997 amold <amold@SALEMS_LOT>
+
+ * sh.dol.c: Hacks to fix here documents. (cat <<EOF)
+
+Rev 1.8-beta
+Mon Apr 14 15:27:24 1997 <amold@SKYNYRD>
+
+ * ntport\signal.c: Put in a hack to avoid bad longjmps when ^C is hit.
+ (showed up as a 0xC00000029 exception)
+
+Rev 1.7-beta
+Fri Apr 11 07:43:39 1997 <amold@SKYNYRD>
+
+ * sh.proc.c: Fix for shell hanging on win95, after running command.
+
+Rev 1.6-Beta
+Thu Apr 10 19:56:57 1997 amold <amold@SALEMS_LOT>
+
+ * tw.parse.c: Fix to recognize C: when doing ls-F
+
+Rev 1.5-Beta
+Wed Apr 09 22:05:51 1997 amold <amold@SALEMS_LOT>
+
+ * ntport\signal.c: fixes for sched builtin. rearchitectured alarm()
+
+Rev 1.4 Beta
+Wed Apr 09 09:24:58 1997 <amold@SKYNYRD>
+
+ * ed.refresh.c: Edit-time refreshing fix from prev. tcsh
+
+Rev 1.3-Beta
+Tue Apr 08 21:02:14 1997 amold <amold@SALEMS_LOT>
+
+ * sh.exec.c, ntport\support.c: Fixed exec builtin.
+
+Rev 1.2-Beta
+Tue Apr 08 19:54:29 1997 amold <amold@SALEMS_LOT>
+
+ * sh.c: Fixed importpath to convert '\' to '/'. This fixes the where
+ builtin
+
+Rev 1.1-Beta
+Tue Apr 08 08:42:11 1997 <amold@SKYNYRD>
+
+ * sh.func.c: Fixed inheritance of environment variables.
+
diff --git a/win32/Contributors b/win32/Contributors
new file mode 100644
index 000000000000..8ccc71bad284
--- /dev/null
+++ b/win32/Contributors
@@ -0,0 +1,15 @@
+People who have contributed to tcsh for win32 with bugfixes, functionality,
+and other useful pieces of code. If I've left you out, please let me know !
+
+(In alphabetical order)
+
+Tom Kludy (tom.kludy@citrix.com)
+Yarek Kowalik (Yarek.Kowalik@Sitraka.com)
+Edward Lam
+Matt Landau
+Avner Lottem (avner.lottem@intel.com)
+blucas (?) (blucas@broadcom.com)
+Chun-Pong Yu (bol.pacific.net.sg)
+TAGA nayuta (nayuta@is.s.u-tokyo.ac.jp)
+Mike Thomas (miketh@brisbane.paradigmgeo.com)
+Mark Tucker (mtucker@fiji.sidefx.com)
diff --git a/win32/Makefile.win32 b/win32/Makefile.win32
new file mode 100644
index 000000000000..cddec24f185f
--- /dev/null
+++ b/win32/Makefile.win32
@@ -0,0 +1,285 @@
+# $Id: Makefile.win32,v 1.15 2010/05/24 22:19:26 amold Exp $
+# Makefile.std 4.3 6/11/83
+#
+# C Shell with process control; VM/UNIX VAX Makefile
+# Bill Joy UC Berkeley; Jim Kulp IIASA, Austria
+#
+# With an input editor, command completion, etc. and ported to all sorts of
+# things; Paul Placeway, CIS Dept., Ohio State University
+#
+#
+# Windows NT version: Amol Deshpande, Microsoft Corp.
+#
+
+################################################################
+## CFLAGS. For various -D things, see config.h
+################################################################
+#
+# These are the default suffixes from .c to .o and -c to get there
+# but to use the global optimizer on the mips boxes, see below
+#
+SUF=obj
+CF=-c -nologo
+
+INCLUDES=-I. -I.. -Iwin32
+
+DEBUG_CRTLIBS= libcmtd.lib oldnames.lib libcpmtd.lib
+CRTLIBS= libcmt.lib oldnames.lib libcpmt.lib
+
+EXTRAFLAGS = -DWINNT_NATIVE -DNO_CRYPT -DHAVE_DIRENT_H $(EFL)
+WINDOWS_WARNING_LEVEL=-W4 -WX
+REST_WARNING_LEVEL=-WX -W3
+ANALYZE_FLAGS = -analyze
+
+
+!if "$(PROCESSOR_ARCHITECTURE)" == "AMD64"
+#main code is broken for 64-bit. ignore warnings and pray it works
+
+REST_WARNING_LEVEL= -W3
+ANALYZE_FLAGS=
+IGNORE_64= -wd4244 -wd4267
+
+!if "$(WIN64)" == ""
+!Message
+!Message Assuming x64 compile. pass WIN64=0 in command line if compiling 32-bit
+!Message
+WIN64=1
+!endif
+
+!endif
+
+
+!if "$(WIN64)" == ""
+WIN64=0
+ARCH=x86
+!else
+ARCH=x64
+WIN64=1
+!endif
+
+BUILD=tcsh-$(ARCH).exe
+
+!if "$(BLDTYPE)" == ""
+BLDTYPE=retail
+!endif
+
+!if "$(BLDTYPE)" == "debug"
+
+
+NTLDFLAGS= -entry:silly_entry -debug
+NTCFLAGS = -Zi -DNTDBG -Od
+LIBES= user32.lib advapi32.lib kernel32.lib $(DEBUG_CRTLIBS) strsafe.lib
+
+!else if "$(BLDTYPE)" == "retail"
+
+NTLDFLAGS= -entry:silly_entry -debug
+NTCFLAGS = -Zi -O2
+LIBES= user32.lib advapi32.lib kernel32.lib $(CRTLIBS) strsafe.lib
+
+!else
+
+!ERROR Unknown compilation mode $(BLDTYPE). Set debug or retail
+!endif
+
+!if "$(WIN64)" == "1"
+NTCFLAGS = $(NTCFLAGS) -Zp8
+!endif
+
+CFLAGS= -MT $(NTCFLAGS) $(INCLUDES)
+LDFLAGS= -nodefaultlib $(NTLDFLAGS) -stack:1048576,524288
+
+
+CC= cl
+
+ED= ed
+RM= -del
+#
+# Resources. which icon you want to use.
+NTRES = BSDLOGO
+
+ASSRCS= sh.c sh.dir.c sh.dol.c sh.err.c sh.exec.c sh.char.c \
+ sh.exp.c sh.file.c sh.func.c sh.glob.c sh.hist.c sh.init.c \
+ sh.lex.c sh.misc.c sh.parse.c sh.print.c sh.proc.c sh.sem.c \
+ sh.set.c sh.time.c sh.char.h sh.dir.h sh.proc.h sh.h
+PSSRCS= sh.decls.h glob.c glob.h mi.termios.c mi.wait.h mi.varargs.h ma.setp.c \
+ vms.termcap.c
+SHSRCS= $(ASSRCS) $(PSSRCS)
+SHOBJS= sh.$(SUF) sh.dir.$(SUF) sh.dol.$(SUF) sh.err.$(SUF) sh.exec.$(SUF) \
+ sh.char.$(SUF) sh.exp.$(SUF) sh.func.$(SUF) sh.glob.$(SUF) \
+ sh.hist.$(SUF) sh.init.$(SUF) sh.lex.$(SUF) sh.misc.$(SUF) \
+ sh.parse.$(SUF) sh.print.$(SUF) sh.proc.$(SUF) sh.sem.$(SUF) \
+ sh.set.$(SUF) sh.time.$(SUF) glob.$(SUF) mi.termios.$(SUF) \
+ ma.setp.$(SUF)
+
+TWSRCS= tw.decls.h tw.h tw.help.c tw.init.c tw.parse.c tw.spell.c \
+ tw.comp.c tw.color.c
+TWOBJS= tw.help.$(SUF) tw.init.$(SUF) tw.parse.$(SUF) tw.spell.$(SUF) \
+ tw.comp.$(SUF) tw.color.$(SUF)
+
+EDSRCS= ed.chared.c ed.decls.h ed.defns.c ed.h ed.init.c ed.inputl.c \
+ ed.refresh.c ed.xmap.c ed.term.c ed.term.h
+EDOBJS= ed.chared.$(SUF) ed.refresh.$(SUF) ed.init.$(SUF) \
+ ed.inputl.$(SUF) ed.defns.$(SUF) ed.xmap.$(SUF) ed.term.$(SUF)
+
+TCSRCS= tc.alloc.c tc.bind.c tc.const.c tc.decls.h tc.disc.c \
+ tc.func.c tc.os.c tc.os.h tc.printf.c tc.prompt.c tc.nsl.c \
+ tc.sched.c tc.sig.c tc.sig.h tc.str.c sh.types.h tc.vers.c tc.wait.h \
+ tc.who.c tc.h
+TCOBJS= tc.alloc.$(SUF) tc.bind.$(SUF) tc.const.$(SUF) \
+ tc.disc.$(SUF) tc.func.$(SUF) tc.os.$(SUF) tc.printf.$(SUF) tc.nls.$(SUF) \
+ tc.prompt.$(SUF) tc.sched.$(SUF) tc.sig.$(SUF) tc.str.$(SUF) \
+ tc.vers.$(SUF) tc.who.$(SUF)
+
+NTSRCS = win32\io.c win32\stdio.c win32\dirent.c win32\signal.c\
+ win32\support.c \
+ win32\nt.char.c win32\bogus.c win32\console.c win32\fork.c \
+ win32\ntfunc.c win32\ntb1.c win32\ntb2.c win32\globals.c \
+ win32\nt.who.c win32\ps.c win32\clip.c win32\nt.const.c \
+ win32\nt.bind.c win32\nt.screen.c
+NTOBJS = io.$(SUF) stdio.$(SUF) dirent.$(SUF) signal.$(SUF) support.$(SUF) \
+ nt.char.$(SUF) bogus.$(SUF) console.$(SUF) fork.$(SUF) ntfunc.$(SUF) \
+ globals.$(SUF) nt.who.$(SUF) ps.$(SUF) \
+ clip.$(SUF) nt.const.$(SUF) nt.bind.$(SUF) nt.screen.$(SUF)
+
+VHSRCS=$(PVSRCS) $(AVSRCS)
+
+
+ALLSRCS= $(SHSRCS) $(TWSRCS) $(EDSRCS) $(TCSRCS) $(VHSRCS) $(NTSRCS)
+DISTSRCS= $(PSSRCS) $(TWSRCS) $(EDSRCS) $(TCSRCS) $(AVSRCS)
+
+
+OBJS= $(SHOBJS) $(TWOBJS) $(EDOBJS) $(TCOBJS) $(NTOBJS)
+
+
+all: $(BUILD)
+
+$(BUILD): $(OBJS) ntb1.$(SUF) ntb2.$(SUF) win32/$(NTRES).res
+ link $(LDFLAGS) ntb1.$(SUF) $(OBJS) $(LIBES) ntb2.$(SUF) $(EXTRALIBS) \
+ win32/$(NTRES).res $(LOADABLE_RES) -map:tcsh.map -out:$(BUILD)
+
+gcompress:$(BUILD)
+ gzip -v9 $(BUILD)
+
+bintar: gcompress
+ tar -cvf tcsh-$(ARCH)-bin.tar $(BUILD) win32/README.NT \
+ win32/example.tcshrc win32/tcsh-html.tgz win32/bin
+ gzip -v9 tcsh-$(ARCH)-bin.tar
+ move tcsh-$(ARCH)-bin.tar.gz ..
+
+win32srctar: $(NTSRCS)
+ tar -cvf tcshwin32src.tar win32 --exclude win32/bin
+ gzip -v9 tcshwin32src.tar
+ move tcshwin32src.tar.gz ..
+
+
+chlog:
+ tcsh -fc "echo \<XMP\> > win32\\Changelog.html"
+ type win32\Changelog >> win32\ChangeLog.html
+ tcsh -fc "echo \</XMP\> >> win32\\ChangeLog.html"
+
+
+
+.c.$(SUF):
+ $(CC) $(CF) $(CFLAGS) $(REST_WARNING_LEVEL) $(DFLAGS) $(EXTRAFLAGS) $<
+
+
+ed.defns.h: ed.defns.c
+ -@del $@
+ @echo /* Do not edit this file, make creates it. */ > $@
+ @echo #ifndef _h_ed_defns >> $@
+ @echo #define _h_ed_defns >> $@
+ findstr /R [FV]_ ed.defns.c | findstr /B #define >> $@
+ @echo #endif /* _h_ed_defns */ >> $@
+
+sh.err.h: sh.err.c
+ -@del $@
+ @echo /* Do not edit this file, make creates it. */ > $@
+ @echo #ifndef _h_sh_err >> $@
+ @echo #define _h_sh_err >> $@
+ findstr ERR_ sh.err.c | findstr /B #define >> $@
+ @echo #endif /* _h_sh_err */ >> $@
+
+tc.const.h: tc.const.c sh.char.h config.h config_f.h sh.types.h sh.err.h
+ -@del $@
+ @echo /* Do not edit this file, make creates it. */ > $@
+ @echo #ifndef _h_tc_const >> $@
+ @echo #define _h_tc_const >> $@
+ @for /f "tokens=1 delims==" %i in ('$(CC) -E $(INCLUDES) $(DFLAGS) $(EXTRAFLAGS) -D_h_tc_const -nologo \
+ tc.const.c ^| findstr /c:"Char STR" ^| sort') do @echo extern %i; >> $@
+ @echo #endif /* _h_tc_const */ >> $@
+
+win32\nt.const.h: win32\nt.const.c sh.char.h config.h config_f.h sh.types.h sh.err.h tc.const.h
+ -@del $@
+ @echo /* Do not edit this file, make creates it. */ > $@
+ @echo #ifndef _h_nt_const >> $@
+ @echo #define _h_nt_const >> $@
+ @for /f "tokens=1 delims==" %i in ('$(CC) -E $(INCLUDES) $(DFLAGS) $(EXTRAFLAGS) -D_h_nt_const -nologo \
+ win32\nt.const.c ^| findstr /c:"Char STR" ^| sort') do @echo extern %i; >> $@
+ @echo #endif /* _h_nt_const */ >> $@
+
+clean:
+ $(RM) *.$(SUF) sh.prof.c ed.defns.h tc.const.h sh.err.h tc.defs.c
+ $(RM) *.pdb *.pch *.ilk *.map *.dbg *.res
+ cd win32
+ $(RM) *.res nt.const.h
+ cd ..
+
+cleanall: clean
+ -del $(BUILD)
+
+
+config.h: config_f.h
+
+TCH=tc.h tc.const.h tc.decls.h tc.os.h tc.sig.h
+SHH=sh.h sh.types.h sh.char.h sh.err.h sh.dir.h sh.proc.h pathnames.h \
+ sh.decls.h $(TCH)
+TWH=tw.h tw.decls.h
+EDH=ed.h ed.decls.h
+
+# EDH
+EDINC=sh.$(SUF) sh.func.$(SUF) sh.lex.$(SUF) sh.print.$(SUF) sh.proc.$(SUF) \
+ sh.set.$(SUF) tc.bind.$(SUF) tc.os.$(SUF) tc.prompt.$(SUF) \
+ tc.sched.$(SUF) tw.parse.$(SUF)
+$(EDOBJS) $(EDINC) : $(EDH)
+
+# SHH
+$(OBJS): win32\nt.const.h win32\ntport.h win32\version.h config.h $(SHH)
+
+# TWH
+TWINC=ed.chared.$(SUF) ed.inputl.$(SUF) sh.exec.$(SUF) sh.func.$(SUF) \
+ sh.set.$(SUF) tc.func.$(SUF)
+$(TWOBJS) $(TWINC): $(TWH)
+
+# glob.h
+glob.$(SUF) sh.glob.$(SUF): glob.h
+
+# ed.defns.h
+EDDINC=tc.bind.$(SUF) tc.func.$(SUF) tc.os.$(SUF)
+$(EDOBJS) $(EDDINC): ed.defns.h
+
+# tc.defs.o
+tc.defs.$(SUF): tc.defs.c sh.h
+
+# too many 64-bit warnings in these files. for now, turn the warning off.
+ed.chared.$(SUF): ed.chared.c
+ $(CC) $(CF) $(CFLAGS) $(DFLAGS) $(EXTRAFLAGS) $(IGNORE_64) ed.chared.c
+ed.inputl.$(SUF): ed.inputl.c
+ $(CC) $(CF) $(CFLAGS) $(DFLAGS) $(EXTRAFLAGS) $(IGNORE_64) ed.inputl.c
+
+#
+# NT dependencies and rules
+#
+CFLAGS_WX = $(CFLAGS) $(WINDOWS_WARNING_LEVEL) -DWINDOWS_ONLY $(ANALYZE_FLAGS)
+
+{win32}.c.$(SUF):
+ $(CC) $(CF) $(CFLAGS_WX) $(DFLAGS) $(EXTRAFLAGS) $<
+
+fork.$(SUF):win32\fork.c
+ $(CC) $(CF) $(CFLAGS_WX) $(DFLAGS) $(EXTRAFLAGS) -GS- win32\fork.c
+
+nt.bind.$(SUF):win32\nt.bind.c ed.defns.h
+
+nt.screen.$(SUF):win32\nt.screen.c ed.defns.h
+
+win32/$(NTRES).res: win32/$(NTRES).rc win32/tcshrc.rc
+ rc -v $(RCFLAGS_WX) -r win32/$(NTRES).rc
diff --git a/win32/README.NT b/win32/README.NT
new file mode 100644
index 000000000000..ab48e2548adc
--- /dev/null
+++ b/win32/README.NT
@@ -0,0 +1,605 @@
+tcsh Windows NT version
+-----------------------
+
+You can get current binaries for this version of tcsh from
+ftp.blarg.net:users/amol/tcsh.
+
+--------------------------------------------------------------------------
+NT sources for tcsh can be now found in the same place as
+the unix tcsh sources, via anonymous ftp from ftp.astron.com.
+The location is /pub/tcsh.
+
+Files to get:
+
+tcsh-6.xx.tar.gz - Basic Unix source
+tcsh-6.xxwin32src.tar.gz - Extracts into "win32" subdirectory of basic source.
+
+Pre-compiled binaries and html docs for Alpha and x86 can also be
+found in the same location.
+--------------------------------------------------------------------------
+
+Send comments/bug-fixes/questions to amol@blarg.net
+
+(Any requests to make tcsh more like DOS shells will be ignored. If you
+like DOS shells, use them. tcsh provides unix shell behaviour on windows,
+not the other way around.)
+
+Please do not ask me general shell questions either. If you've never
+used a unix shell, read the man pages and docs. Read the comp.unix.shell
+FAQ.
+
+Bug reports that do not contain your operating system type will
+also be ignored.
+
+Bug reports that can be solved by reading the docs or README.NT will be
+ignored as well.
+
+Microsoft Corporation has nothing to do with this code. It is not supported in
+any fashion by Microsoft.
+
+-----------------------------------------------------------------------------
+This is NOT a Cygwin gcc version. It will not compile with Cygwin gcc or
+work seamlessly with Cygwin apps. Do NOT ask me to hack support for Cygwin
+'mount points' unless you are willing to provide the translation code.
+
+To prevent Cygwin applications from expanding wildcards, set the environment
+variable CYGWIN to "noglob". i.e., in your .tcshrc, put a line like this:
+
+setenv CYGWIN noglob
+
+(Cygwin applications assume that if they are not started from a shell
+using the Cygwin runtime, the parent shell does not have the ability to glob.
+This is visible as tcsh apparently expanding wildcards for quoted arguments.)
+
+-----------------------------------------------------------------------------
+
+All paths MUST be '/'-delimited. Do not expect the shell to work with
+DOS-style paths.
+
+
+Compiling:
+---------
+You will need sed to generate some headers.
+
+You must extract the win32src.tar.gz into a subdirectory of the basic
+unix source.
+
+tcsh currently only compiles with Microsoft Visual C++ (2.0 and greater) on
+x86 or Alpha platforms. Simply copy config/win32 to config.h and
+win32/makefile.win32 to the base directory.
+
+run nmake -f makefile.win32
+
+If you plan to contribute changes, PLEASE read the file CODING
+
+(Note: This distribution does not have a VC project. To compile the shell,
+you will need to open a cmd.exe/command.com window, run vcvars32.bat from
+your VC bin subdirectory and then run nmake as above).
+
+
+
+Known Bugs:
+----------
+* Horizontal scrolling is completely busted.
+* The 'time' builtin does not work.
+
+* There is a hard limit of 64Kb on the size of the command line. This is
+ an os-specific limit and cannot be changed.
+
+* Launching applications via explorer associations is slow if the argument
+ list is large.
+
+-----------------------------------------------------------------------------
+* This section only documents features specific to Windows NT/95 or
+* behaviour that is different from the Unix version. For complete tcsh
+* documentation, please read the man pages or html docs.
+-----------------------------------------------------------------------------
+
+Version numbers below refer to the tail end of the $version variable,
+containing the NT-specific version. For example,
+
+tcsh 6.09.00 (Astron) 1999-08-16 (i586-Microsoft-Windows2000) options 8b,nls,dl,hb,color,nt-rev-5.40
+
+In this case, the NT-specific version is 5.40
+
+
+Environment Variables:
+---------------------
+Environment variables are case-insensitive on NT. tcsh as of 5.33 has
+also been changed to reflect this behaviour. Thus,
+
+setenv FOO bar
+
+and,
+
+setenv foo bar
+
+are equivalent.
+
+Note that the *value* is, of course, not case-insensitive.
+
+
+Features
+--------
+
+* No backgrounding/job control. Use 'start' instead
+
+ You can also use
+ <foo> &
+ or,
+ nohup <foo> &
+
+ where <foo> is some arbitrary command.
+
+DO NOT start console apps with & unless u want them to read/write to your
+console. (A "console app" is any 32-bit application that is not GUI based.)
+
+(nohup foo & will say "foo Done" pretty quickly, but ignore that. There is no
+way for the shell to know when the nohupped process dies. Your job may still
+be running in the background.)
+
+* Filenames in the directories under WINNT (or WINDOWS or whatever you call
+ your windows directory) are hashed only if they are .EXE.
+ Names which are uppercase (For example, CALC.EXE) will also be hashed as
+ lowercase,without extension. Thus, "where calc" as well as
+ "where CALC.EXE" will work.
+
+(Explanation: tcsh uses a hashtable to track the location of executables. By
+default on Unix, all the files in every path element are hashed. Since the
+SystemRoot on NT has hundreds of junk files, tcsh will only hash .EXE files.
+This hashing is, of course, case-sensitive. Thus CALC.EXE hashes to a
+different value than calc.exe would. To enable the shell to work in a Windows
+environment, tcsh will hash CALC.EXE as CALC.EXE as well as "calc").
+
+
+Special Variables
+-----------------
+* The tcsh "complete" variable can be set to igncase and will cause the shell
+ to ignore case in completion. This is slightly different from
+ the behaviour of complete=enhance, which should still work as before.
+
+* oldtitle:
+
+ Stores the previous value of the console title, when you use
+ the title builtin below. Use it like so:
+
+ title "$oldtitle"
+
+ to restore the previous title.
+
+* NTlamepathfix:
+
+ When set, '/'-s in the PATH environment variable will be
+ changed to '\'. This helps applications started within tcsh that may
+ not handle Unix-style PATHs.
+
+* NTslowexec:
+
+ When set, this variable disables attempts to save a fork() by
+ directly executing simple commands. "Simple" command means one which is
+ interactive and not piped, niced, nohupped etc. redirecting output of
+ a command also disables this optimization.
+
+ Since this shortcut feature is new, the variable provides a way to retain
+ backward compatibility. It may be taken out at some time in the future, if
+ the shell is found to be stable enough.
+
+ If you see problems like the shell seeming to expand wildcards when it
+ shouldn't, or other substitutions which should be quoted, set this
+ variable and see if that fixes the problem.
+
+* NTnoquoteprotect:
+
+ Ordinarily , if you pass a double quote to a command string, tcsh
+ will protect the quotes by adding backslashes. For example,
+
+ find . -name '"*.c"'
+ would get executed as
+
+ find . -name \"*.c\"
+
+ Some applications (MKS find, for example) do not like the '\'. To
+ prevent tcsh from quoting such arguments, set this variable.
+
+ Of course, it may cause other applications to break, so use at
+ your own risk.
+
+* NTcaseifypwd:
+
+ If set, corrects case of current directory when cd'ing into it. Apparently,
+ some "filesystems" can't handle the default behaviour. Only works on
+ Windows NT.
+
+* TCSHSUBSTHB (Environment, NOT shell variable):
+
+ Specifies mappings for hashbang emulation. Should be ';'-separated pairs
+ of blank-separated mappings.
+
+ For example,
+
+ setenv TCSHSUBSTHB "/usr/local/bin/perl c:/bin/perl.exe;"
+
+ will substitute #!c:/bin/perl.exe for scripts which have
+ #!/usr/local/bin/perl at the top.
+
+ The final ';' MUST be included. I don't check for errors too
+ carefully, so it's up to you to supply the exact sequence.
+ There is a hardcoded limit of 20 such pairs.
+
+
+* TCSHONLYSTARTEXES (Environment variable):
+
+ Can be set on the fly and controls whether associations will be tried
+ for non-executables.
+
+ ("Associations" here means Explorer file-type associations, that cause,
+ for example, Microsoft Word to be launched when you type "foo.doc" at
+ a command prompt. That can have unexpected side-effects like batch files
+ and perl scripts launching in another window when run from tcsh. )
+
+ Any changes to this variable will NOT affect the the "start" builtin.
+ This builtin ALWAYS launches associations, since the whole point of
+ using "start" is to not block the current shell.
+
+ You can also supply a semi-colon-separated list of extensions for
+ which to NOT try associations. For example, if the variable is set to
+
+ "cmd;bat",
+
+ .cmd/.bat files will be executed in the same window because the default
+ association is not used, instead an internal hack feeds them to the
+ DOS command processor.
+
+ If the file extension does not match the list, the shell will try to
+ launch an association.
+
+ o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-
+
+ To achieve the old behaviour of this setting, you must set the
+ variable to a 1-character value.i.e.,
+
+ setenv TCSHONLYSTARTEXES
+
+ should be replaced by
+
+ setenv TCSHONLYSTARTEXES 1
+
+ This setting, as before, will prevent tcsh from trying associations
+ for ANY non-executable.
+
+ (a zero-length setting will not work. A length greater than 1 will
+ be assumed to be a list of extensions as above.)
+
+ o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-
+
+
+
+* TCSH_NOASYNCGUI (Enviroment variable):
+
+ Makes tcsh wait for win32 GUI apps to terminate, instead of returning
+ immediately. This affects child processes, so it can be set/unset in
+ the parent shell at any point.
+
+
+NT-specific Builtins
+--------------------
+* start: like cmd.exe's start
+* title: change the shell title
+* cls: Clear the entire console buffer instead of just the visible window.
+* ps: list processes running currently. With -w, list window titles as well.
+
+* shutdown: (works on Windows NT only)
+
+ shutdown -[r|l|f] now
+
+(Even though no time argument is supported, "now" must be specified, EXCEPT
+with -l .This is to prevent you from accidentally shutting the machine down.)
+ -r reboots, -l logs you off and -f forces apps to terminate.
+
+The default action is to shut the machine down.
+
+
+* sourcerc: tcsh can be compiled with a stringtable resource that can be
+ sourced using this command. This feature is designed as a way to avoid
+ having to copy the .tcshrc to every computer you run tcsh on. The default
+ resource is a simple version of my .tcshrc. More complicated settings can
+ then be copied when needed.
+
+* printrc: print the compiled-in resource that will be sourced by sourcerc.
+
+
+Notes:
+-----
+* You should probably get the Cygwin utilities from http://cygwin.com
+
+ Things like 'ls' and 'cat' are useful, since we don't have a 'type' or 'dir'
+ anymore. 'ls' is pretty much a requirement unless you never do 'ls -l'.
+
+
+* tcsh was compiled with Visual C++ >= 4.2. I don't guarantee it will compile
+ with any other compilers, but it should. It will *not* compile with the
+ Cygwin gcc port, so don't even tell me about it.
+
+* It should be pointed out that there is also a Cygwin version of tcsh that
+ will compile with gcc and provide all the other features emulated by the
+ Cygwin runtime (like job control, signals, etc.). So, if you are looking for
+ a way to pretend that you are on Unix, you should use that version.
+ The same holds true for UWIN as well.
+
+
+Startup Files:
+--------------
+
+For Windows 95:
+ <windows_directory>/.tcshrc
+ For Example, C:\WINDOWS\.tcshrc
+
+For Windows NT:
+ version 3.51: <getenv(HOMEDRIVE)/getenv(HOMEPATH)/.tcshrc>
+ Usually something like C:\USERS\DEFAULT\.tcshrc
+
+ version 4.00: <getenv(USERPROFILE)/.tcshrc)
+ Usually something like C:\WINNT\USERS\amold\profile\.tcshrc
+
+These can all be overridden by setting HOME in the user's environment
+
+
+
+* TCSHLANG: NLS support
+
+You can get messages in a specific language by doing:
+
+ setenv TCSHLANG <dll>, where <dll> is the name of the NLS dll.
+
+tcsh comes with:
+
+ tcshde.dll -> German
+ tcshfr.dll -> French
+ tcshsp.dll -> Spanish
+ tcsh-it.dll -> Italian
+
+ tcshc.dll => Default "C" locale
+
+You can change the dll at runtime by setting/unsetting this variable.
+
+You can specify the DLL name, or the complete path, if it is not in your
+standard search path.
+
+(Using tcshc.dll is useless and adds unnecessary overhead. If you are
+using English versions, do not install the dlls)
+
+
+Virtual key code bindings:
+-------------------------
+To use keys like function keys, arrows, insert, etc., the following
+form of bindkey must be used:
+
+bindkey -b N-xxx <command>
+
+where xxx is either:
+ a) A number from 1 through 24, representing the fucntion keys.
+ For example, bindkey -b N-1 run-help
+
+ b) The strings "pgup","pgdown","end","home", "left","up","right","down",
+ "ins","del"
+ For example, bindkey -b N-del delete-char
+
+Here are the bindings I use in my .tcshrc:
+
+# NT specific bindkey extensions
+ bindkey -b N-up up-history
+ bindkey -b N-down down-history
+ bindkey -b N-right forward-char
+ bindkey -b N-left backward-char
+ bindkey -b N-del delete-char
+ bindkey -b N-ins overwrite-mode
+ bindkey -b N-1 which-command
+ bindkey -b N-2 expand-history
+ bindkey -b N-3 complete-word-raw
+ bindkey -b N-home beginning-of-line
+ bindkey -b N-end end-of-line
+
+ bindkey -b N-pgup e_page_up
+ bindkey -b N-pgdown e_page_down
+
+(Note that on Win9x, you must set your console window to NOT be Auto
+sized, and you must use the "settc" builtin to increase and then reduce
+back the number of lines, in order to get a scrollbar. pgup and
+pgdown will not work without a scroll bar)
+
+
+To bind ctrl or alt combinations, use the following as examples.
+
+ bindkey -b N-C-left backward-word
+ bindkey -b N-M-right forward-word
+
+For Shift combinations:
+ bindkey -b N-S-1 backward-word
+
+Clipboard support
+-----------------
+Since version 3.58, you can cut and paste to and from the clipboard
+directly from the shell. To do this, use bindings like the following:
+
+ bindkey -b M-x e_copy_to_clipboard
+ bindkey -b M-y e_paste_from_clipboard
+
+Then, to paste text from the clipboard into the current input line, you
+can type:
+ M-y
+And to copy the current shell's kill buffer to the clipboard,
+ M-x
+
+(The kill buffer contains the last deletion from an editing command. Sort
+of like an 'undo' buffer).
+
+You can also use the clipboard to redirect I/O, with /dev/clipboard as
+the destination/source file.
+
+
+NOTE: From version 6.00 onwards, the e_paste operation does NOT copy the
+clipboard contents to the shell kill buffer.
+
+
+
+e_dosify_next
+-------------
+A key bound to this editor function can be used to convert unix-style
+paths to DOS-style paths.
+For example,
+ bindkey -b M-/ e_dosify_next
+Then, if I had line like so:
+ xcopy /e /u c:/nt40/system32
+I would move the cursor to the C: and hit alt-/. magically, the command
+line changes to
+ xcopy /e /u c:\\nt40\\system32
+
+This function converts every '/' to '\\' until the first space. If the
+space is escaped by a '\', the function looks for the next space.
+
+e_dosify_prev
+-------------
+Works like above, but on the previous word. Matt Landau pointed out that
+this was much more convenient.
+
+e_page_up
+---------
+Editor function to move console window up one page. Can be bound to
+PageUp key.
+
+e_page_down
+----------
+Ditto for page down.
+
+
+Literal Prompt Characters
+-------------------------
+tcsh uses a special syntax for embedding literal character sequences in the
+prompt. For example, ANSI escapes.
+Thus, if you did
+set prompt='%{<ESC>[44mfoo%}\>',
+this will print the prompt in the appropriate colors.
+
+The color-ls patch in 6.07.09 implements parsing for ANSI escapes. To keep
+the prompt specification consistent with the availablity of this feature,
+the literal string will now accept ANSI escapes like color-ls would.
+
+The shell can be compiled for the old behaviour, but I don't recommend it.
+
+I'm aware this is a major incompatibility, but I think the change is
+worthwhile.
+
+As an example, here is my new prompt, with the old one as a reference.
+
+#old specification
+# set prompt='%{f9%}%c03%{gg%}\>'
+# set prompt3 = '%{fc%}Correct to %R ?(y|n|e)%{gg%} '
+
+# new spec.
+ set prompt='%{^[[1;34m%}%c03%{^[[0m%}\>'
+ set prompt3='%{^[[1;31m%}Correct to %R ?(y|n|e)%{^[[0m%} '
+#
+#
+
+ls-F is noticeably slow if color is set. This is especially true on slower
+machines (P100, for example). You may not want to set it for those kinds
+of systems. More so if you already have an external color-ls.
+
+watch:
+-----
+Since rev 3.12, support (ha ha) for the watch variable has been added. This
+will work only on a Microsoft Windows Network, i.e, where computers
+participate in an NT domain. Here is how tcsh will work if your network
+configuration is to its taste:
+
+ set watch=(2 AMOLD SKYNYRD any LYNYRD)
+
+sets a watch for AMOLD on machine SKYNYRD, and any user on machine LYNYRD. The
+watch interval is 2 minutes.
+
+Note that these are NETBIOS names, and hence the results may be flaky. There
+is no good way to distinguish computer names from user names in a netbios name
+table (even a good guess is very expensive), so be prepared for unexpected
+results.
+
+There may be problems depending on what protocol is on lana number 0.
+(This will usually be shown (and/or set) on NT in the properties for the
+NETBIOS interface in the control panel/networks applet. Win95 is screwed up,
+and if you have more than one protocol, watch may not work. Don't bug me
+about it)
+
+Also note that names must all be uppercase.
+
+The default time interval of 10 minutes is probably good, since you don't want
+to generate too much network traffic.
+
+Nice:
+-----
+//
+// nice(niceness)
+//
+// where niceness is an integer in the range -6 to +7
+//
+// A usual foreground process starts at level 9 in the chart below
+//
+// the range -6 to +7 takes it from Base priority 15 down to 2.
+//
+// Note that level 1 or > 15 are not allowed.
+//
+// Priority Level 11 (niceness -2) or greater affects system performance,
+// so use with care.
+//
+// niceness defaults to +4, which is lowest for background normal class.
+// As in unix, +ve niceness indicates lower priorities.
+
+/***************************************************************************
+Niceness Base Priority class/thread priority
+
+ 1 Idle, normal, or high class, THREAD_PRIORITY_IDLE
+
++7 2 Idle class, THREAD_PRIORITY_LOWEST
++6 3 Idle class, THREAD_PRIORITY_BELOW_NORMAL
++5 4 Idle class, THREAD_PRIORITY_NORMAL
++4 5 Background normal class, THREAD_PRIORITY_LOWEST
+ Idle class, THREAD_PRIORITY_ABOVE_NORMAL
++3 6 Background normal class, THREAD_PRIORITY_BELOW_NORMAL
+ Idle class, THREAD_PRIORITY_HIGHEST
++2 7 Foreground normal class, THREAD_PRIORITY_LOWEST
+ Background normal class, THREAD_PRIORITY_NORMAL
++1 8 Foreground normal class, THREAD_PRIORITY_BELOW_NORMAL
+ Background normal class, THREAD_PRIORITY_ABOVE_NORMAL
+ 0 9 Foreground normal class, THREAD_PRIORITY_NORMAL
+ Background normal class, THREAD_PRIORITY_HIGHEST
+-1 10 Foreground normal class, THREAD_PRIORITY_ABOVE_NORMAL
+-2 11 High class, THREAD_PRIORITY_LOWEST
+ Foreground normal class, THREAD_PRIORITY_HIGHEST
+-3 12 High class, THREAD_PRIORITY_BELOW_NORMAL
+-4 13 High class, THREAD_PRIORITY_NORMAL
+-5 14 High class, THREAD_PRIORITY_ABOVE_NORMAL
+-6 15 Idle, normal, or high class, THREAD_PRIORITY_TIME_CRITICAL
+ High class, THREAD_PRIORITY_HIGHEST
+
+
+ 16 Real-time class, THREAD_PRIORITY_IDLE
+ 22 Real-time class, THREAD_PRIORITY_LOWEST
+ 23 Real-time class, THREAD_PRIORITY_BELOW_NORMAL
+ 24 Real-time class, THREAD_PRIORITY_NORMAL
+ 25 Real-time class, THREAD_PRIORITY_ABOVE_NORMAL
+ 26 Real-time class, THREAD_PRIORITY_HIGHEST
+ 31 Real-time class, THREAD_PRIORITY_TIME_CRITICAL
+****************************************************************************/
+
+kill:
+----
+
+You can try to kill a process 4 ways:
+
+kill -1 <pid> (which will send a sigint)
+kill -2 <pid> (which will send a sigbreak)
+
+1 and 2 are only good for processes started in the same console. The
+signals cannot be sent to other process groups (other consoles/GUI apps).
+
+kill -3 <pid> (which will send a quit message to each window of the child>
+
+kill -7 <pid> , which will call TerminateProcess()
diff --git a/win32/WindowsReadme.1st b/win32/WindowsReadme.1st
new file mode 100644
index 000000000000..91ff88fddb23
--- /dev/null
+++ b/win32/WindowsReadme.1st
@@ -0,0 +1,556 @@
+This document applies to the Windows NT (including Windows 2000, XP, Server
+ 2003 etc.) native versions of tcsh.
+
+Note that the shell probably does work on Windows NT 4.0 or Windows 95, 98, and
+Me. However, making fixes solely for those operating systems is lowest on my
+priority list.
+
+"Windows NT" from here on refers to Windows 2000, XP etc. "Win 9x" means
+Windows 95,98 etc.
+
+
+I will attempt to describe the various differences between the Unix and the
+native Windows versions of tcsh. I assume at least a passing familiarity with
+Unix, Windows and tcsh.
+
+
+How to tell if you're running the native version (versus cygwin)
+----------------------------------------------------------------
+If,
+ - You built the binary from the tcsh distribution, using Visual C++.
+
+ Or, you downloaded it from www.blarg.net/~amol/~tcsh.exe.gz.
+
+ Or, you downloaded it from ftp.blarg.net:users/amol/tcsh.
+
+ Or, you type echo $version and see something like:
+
+ tcsh 6.12.01 (Astron) 2003-02-08 (i686-Microsoft-WindowsXP) options 8b,nls,dl,hb,color,nt-rev-7.03
+
+ (The string "nt-rev-N.NN" only exists on native binaries of
+ tcsh. The actual revision may be different, as it is a minor
+ revision of the tcsh major version (6.12.01 in this case).)
+
+ If none of the above is true, this document is not for you.
+
+
+Who do I bug about bugs ?
+-------------------------
+
+ If the bug is on the lines of "cmd.exe does this, but tcsh doesn't", you
+ have a very slim chance of having me look at it. If you feel strongly
+ enough, grab the source and hack away. Isn't that the joy of Open Source
+ (TM) ?
+
+
+ Also, try running the latest version if you can. Your bug may already be
+ fixed.
+
+ If you still want to report a bug:
+
+ First, verify if applicable/possible on a Unix system that the behaviour is
+ actually different.
+
+ Secondly, setenv CYGWIN noglob if it's not already set. If that still
+ doesn't work, then
+
+ Third,
+
+ set NTslowexec
+ setenv TCSHONLYSTARTEXES 1
+
+ and try to reproduce the problem.
+
+
+ Even if the 3rd step seems to fix the behaviour, you should still report the
+ bug to amol@blarg.net with the following information:
+
+ - The output of echo $version
+ - The version of the operating system ("Windows" is not good enough.)
+ - The output from "set" and "setenv"
+ - The exact steps to reproduce the problem.
+
+
+ Be prepared to be quizzed on the contents of this file.
+
+How do I compile the source ?
+-----------------------------
+ - Download and extract the source from ftp.astron.com. Say it creates a
+ directory called tcsh-6.12.01
+
+ - Open a cmd.exe prompt and cd into this directory. Run "vcvars32.bat" from
+ your Visual C++ installation.
+
+ - type "copy config\win32 config.h"
+
+ - type "nmake -f win32\makefile.win32"
+
+
+ You will need sed to generate some headers.
+
+
+
+Known bugs
+----------
+ The "time" builtin does not work.
+
+
+Startup Files:
+--------------
+
+tcsh will create a HOME variable, if none is set, based on the OS.
+
+For Win 9x:
+ <windows_directory>/.tcshrc
+ For Example, C:\WINDOWS\.tcshrc
+
+For Windows NT:
+ version 3.51: <getenv(HOMEDRIVE)/getenv(HOMEPATH)/.tcshrc>
+ Usually something like C:\USERS\DEFAULT\.tcshrc
+
+ version 4.00 and above: <getenv(USERPROFILE)/.tcshrc)
+
+ This can vary from something like C:\WINNT\USERS\amol\profile\.tcshrc
+ on NT 4.0 to C:\Documents And Settings\amol\.tcshrc on Windows 2000 and
+ higher.
+
+These can all be overridden by setting HOME in the user's environment before
+the shell is launched.
+
+To create a .tcshrc on Windows, you just need a real editor like Vim.
+
+
+
+o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o
+
+ Various differences from Unix, FAQs, etc.
+
+o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o
+
+
+This document is correct as of 6.12.01
+
+ New Builtins
+ ------------
+ * start : Works like cmd.exe's "start". Use to launch an application or
+ launch a filetype association.
+
+ Can also be used to launch Windows Explorer on a directory by
+ typing "start c:/foo", for example.
+
+ Also "start http://www.tcsh.org" will launch Internet explorer
+ with that URL.
+
+ ("Associations" here means Explorer file-type associations, that cause,
+ for example, Microsoft Word to be launched when you type "foo.doc" at
+ a cmd.exe prompt. That can have unexpected side-effects like batch files
+ and perl scripts launching in another window when run from tcsh. )
+
+ * title: Sets the title of the shell. Stores the current title in
+ $oldtitle before changing it.
+
+
+ * cls: Clear the entire console screen buffer instead of the visible
+ window.
+
+ * ps : List processes. With -w, list titles as well.
+
+
+ * shutdown [-r | -l | -f] now : Windows NT only. Reboot or log off. -f
+ forces open applications to close. "now" must be specified for reboots.
+
+
+ Builtins that behave differently
+ ------------------------------------
+This section documents the builtins that present on Unix as well as windows,
+but function slightly differently on Windows. Also mentioned is behaviour that
+is different from what you are used to on Windows.
+
+ * Backgrounding (launching commands with '&').
+
+ While this is possible, be aware that Windows does not have any job
+ control. Thus you cannot attempt to bring a backgrounded job into the
+ foreground with '%<job number>' as on Unix.
+
+ Also note that a background job will most likely be killed if you exit
+ the command prompt that launched it. To prevent this from happening,
+ use the "nohup" builtin. For example:
+
+ nohup foo &
+
+ This will print "foo Done" quickly, as if the job actually completed.
+ However, if you type "ps", you will see that foo is still running. The
+ shell does not know after nohup whether the child process is
+ running or not.
+
+ * Case insenstivity of environment variable names.
+
+ To maintain consistency with Windows, and avoid conflicts, the
+ following are equivalent on Windows:
+
+ setenv FOO bar
+
+ setenv foo bar
+
+ Note that setenv foo BAR and setenv foo bar ARE NOT the same. Thus if
+ some application is sensitive to the case of an environment variable's
+ VALUE, you should set it exactly as required.
+
+ * No termcap set/unset with settc/echotc/telltc.
+
+ The only capabilities controllable are lines and columns. For example,
+
+ settc co 80
+ settc li 50
+
+ similarly,
+
+ echotc cols
+ or
+ echotc lines
+
+ will echo the number of columns and lines respectively.
+
+ echotc buffer
+
+ will echo the size of the console screen buffer.
+
+
+ Note that settc has an interesting side effect, which was left in
+ because it can be useful. Consider the following:
+
+ If your original line size was 50, with a console screen buffer of 50
+ as well (no scrollback), then typing
+
+ settc li 300
+
+ followed by
+
+ settc li 50
+
+
+ has the effect of setting your console screen buffer to 300, so you
+ now have a scrollback, without having to set the properties of the
+ tcsh.exe window.
+
+
+ This is particularly useful on Win9x, where getting a console
+ scrollback buffer seems to be practically impossible in a reasonable
+ fashion otherwise.
+
+
+ * No execution of .bat or .cmd files by name alone.
+
+ That is, you have to type foo.bat or foo.cmd to execute a batch file,
+ even if it is in your path.
+
+ This is by design. No file types other than 32-bit executables are
+ recognized by the shell. Unless you type the full name, the shell
+ attempt to execute either the name as typed ("foo" for example) or the
+ name with .exe appended to it ("foo.exe").
+
+ * The "watch" variable and the "log" builtin.
+
+ To attempt to duplicate the functionality of the log/watch combination
+ on Unix, the Windows version of shell uses NETBIOS and the semantics
+ are slightly different.
+
+ Whereas in Unix you might type
+
+ set watch=(amol tty0 root any)
+
+ in Windows you would type
+
+ set watch=(AMOL AMOLSCOMPUTER THEBOSS any)
+
+ Thus, instead of tty, the computer name of the user may be specified.
+ In this case, you will be notified if the user AMOL is logged on
+ AMOLSCOMPUTER or THEBOSS is logged on any computer.
+
+ Note that the names must be uppercase.
+
+ * The "nice" builtin.
+
+ Functionally, pretty much the same as Unix, with the range being from
+ -6 to +7, and +4 by default.
+
+ These niceness numbers map to absolutes priorities based on the
+ assumption that the process started at the typical Foreground Normal
+ Priority Class.
+
+ That means, if your shell is somehow started at a higher than normal
+ priority, even a nice +1 will lower the priority to below normal, much
+ more than just a relative lowering by one level.
+
+ * The "kill" builtin.
+
+ You can try to kill a process 4 ways:
+
+ kill -1 <pid> (which will send a sigint)
+ kill -2 <pid> (which will send a sigbreak)
+
+ 1 and 2 are only good for processes started in the same console. The
+ signals cannot be sent to other process groups (other consoles/GUI apps).
+
+ kill -3 <pid> (sends a WM_QUIT message to each window of the child>
+ Useful for closing GUI apps.
+
+ kill -7 <pid> , which will call TerminateProcess() on the process.
+ This is dangerous and should be a last resort.
+
+
+
+ Special Variables
+ -----------------
+
+ o Environment Variables:
+ *-*-*-*-*-*-*-*-*-*-*-*-*
+
+ This version of tcsh uses the following environment variables
+
+
+ - TCSHSUBSTHB (Short for "tcsh substitute hashbang"):
+
+ Supplies mappings for the shell's hashbang emulation. For example,
+
+ setenv TCSHSUBSTHB "/usr/local/bin/perl c:/bin/perl.exe;"
+
+ If the variable is thus set, any script that has
+ "#!/usr/local/bin/perl" on the first line will be run as
+ if "#!c:/bin/perl.exe" was the first line.
+
+ The terminating ";" is a must.There is a limit of 20 such pairs.
+
+ - TCSHONLYSTARTEXES
+
+ Controls whether Explorer Associations will be tried for
+ non-executables.
+
+
+ For example, "setenv TCSHONLYSTARTEXES 1" , tells tcsh to not try to
+ execute a non-exe or non-script.
+
+ The value must be EXACTLY one character long.
+
+ (a zero-length setting will not work. A length greater than 1 will
+ be assumed to be a list of extensions as below.)
+
+
+ You can also supply a semi-colon-separated list of extensions for
+ which to NOT try associations. For example, if the variable is set to
+
+ "cmd;bat",
+
+ .cmd/.bat files will be executed in the same window because the
+ default association is not used, instead an internal hack feeds them
+ to the DOS command processor.
+
+ If the file extension does not match the list, the shell will try to
+ launch an association.
+
+
+ Any changes to this variable will NOT affect the the "start" builtin.
+ That builtin ALWAYS launches associations, since the whole point of
+ using "start" is to launch an application.
+
+
+ - TCSH_NOASYNCGUI:
+
+ By default, a Windows GUI application is launched asynchronously.
+ That is, the shell does not wait for the application to terminate
+ but immediately returns you to the prompt. If this variable is set,
+ the shell will wait for the GUI application to exit before going on.
+
+ - TCSHLANG: NLS support
+
+ You can get messages in a specific language by doing:
+
+ setenv TCSHLANG <dll>, where <dll> is the name of the NLS dll.
+
+ tcsh comes with:
+
+ tcshde.dll -> German
+ tcshfr.dll -> French
+ tcshsp.dll -> Spanish
+ tcsh-it.dll -> Italian
+
+ tcshc.dll => Default "C" locale
+
+ You can change the dll at runtime by setting/unsetting this
+ variable.
+ You can specify the DLL name, or the complete path, if it is not
+ in your standard search path.
+
+ (Using tcshc.dll is useless and adds unnecessary overhead. If you
+ are using English versions, do not install the dlls)
+
+ o Shell Variables:
+ *-*-*-*-*-*-*-*
+
+ This version of tcsh recognizes the following shell variables:
+
+ - oldtitle : Stores the previous value of the title, when the "title"
+ builtin is used to change it. So, "title $oldtitle", will
+ restore the previous title.
+
+
+ - NTlamepathfix:
+
+ Normally, tcsh sets the PATH variable to be delimited by
+ "/". However, some applications may have trouble with this, so you can
+ force the shell to convert "/" to "\" before executing an external (not
+ builtin) command.
+
+ - NTslowexec:
+
+ The shell will usually try to avoid forking if a command can be executed
+ directly (using the CreateProcess() API instead of fork()). This only
+ applies to "simple" commands. These are commands that do not have their
+ output piped, redirected or are not niced or nohupped.
+
+ If you see any strange behaviour from the shell in terms of wildcard
+ expansion or quote substitution, try setting this variable (AFTER
+ setting CYGWIN noglob!!!).
+
+ - NTnoquoteprotect:
+
+
+ Ordinarily , if you pass a double quote to a command string, tcsh
+ will protect the quotes by adding backslashes. For example,
+
+ find . -name '"*.c"'
+ would get executed as
+
+ find . -name \"*.c\"
+
+ Some applications (MKS find, for example) do not like the '\'. To
+ prevent tcsh from quoting such arguments, set this variable.
+
+ Of course, it may cause other applications to break, so use at
+ your own risk.
+
+ - NTcaseifypwd:
+
+ If set, corrects case of current directory when cd'ing into it.
+ Some "filesystems" can't handle the default behaviour. Only works on
+ Windows NT.
+
+
+
+ Key bindings, clipboard support and edit functions
+ --------------------------------------------------
+
+ To use keys like function keys, arrows, insert, etc., the following
+ form of bindkey must be used:
+
+ bindkey -b N-xxx <command>
+
+ where xxx is either:
+ a) A number from 1 through 24, representing the fucntion keys.
+ For example, bindkey -b N-1 run-help
+
+ b) The strings "pgup","pgdown","end","home", "left","up","right","down",
+ "ins","del"
+ For example, bindkey -b N-del delete-char
+
+ Here are the bindings I use in my .tcshrc:
+
+ # NT specific bindkey extensions
+ bindkey -b N-up up-history
+ bindkey -b N-down down-history
+ bindkey -b N-right forward-char
+ bindkey -b N-left backward-char
+ bindkey -b N-del delete-char
+ bindkey -b N-ins overwrite-mode
+ bindkey -b N-1 which-command
+ bindkey -b N-2 expand-history
+ bindkey -b N-3 complete-word-raw
+ bindkey -b N-home beginning-of-line
+ bindkey -b N-end end-of-line
+
+ bindkey -b N-pgup e_page_up
+ bindkey -b N-pgdown e_page_down
+
+ (Note that on Win9x, you must set your console window to NOT be Auto
+ sized, and you must use the "settc" builtin to increase and then reduce
+ back the number of lines, in order to get a scrollbar. pgup and
+ pgdown will not work without a scroll bar)
+
+
+ To bind ctrl or alt combinations, use the following as examples.
+ (Alt on PC keyboards is treated as the Meta on Unix keyboards )
+
+ bindkey -b N-C-left backward-word
+ bindkey -b N-M-right forward-word
+
+ For Shift combinations:
+ bindkey -b N-S-1 backward-word
+
+ Clipboard support
+ o-o-o-o-o-o-o-o-o
+
+ You can also cut and paste to and from the clipboard directly from
+ the shell. To do this, use bindings like the following:
+
+ bindkey -b M-x e_copy_to_clipboard
+ bindkey -b M-y e_paste_from_clipboard
+
+ Then, to paste text from the clipboard into the current input
+ line, you can type:
+ M-y
+ And to copy the current shell's kill buffer to the clipboard,
+ M-x
+
+ (The kill buffer contains the last deletion from an editing
+ command. Sort of like an 'undo' buffer).
+
+ You can also use the clipboard to redirect I/O, with /dev/clipboard as
+ the destination/source file.
+
+
+
+ Editor Functions
+ o-o-o-o-o-o-o-o-o
+
+ e_dosify_next
+ -------------
+ A key bound to this editor function can be used to convert
+ unix-style paths to DOS-style paths.
+
+ For example,
+
+ bindkey -b M-/ e_dosify_next
+
+ Then, if I had line like so:
+
+ xcopy /e /u c:/nt40/system32
+
+ I would move the cursor to the C: and hit alt-/. magically, the
+ command line changes to
+
+ xcopy /e /u c:\\nt40\\system32
+
+ This function converts every '/' to '\\' until the first space.
+ If the space is escaped by a '\', the function looks for the
+ next space.
+
+ e_dosify_prev
+ -------------
+ Works like above, but on the previous word.
+
+ e_page_up
+ ---------
+ Editor function to move console window up one page. Can be bound to
+ PageUp key, for example.
+
+ e_page_down
+ ----------
+ Ditto for page down.
+
+ e_copy_to_clipboard
+ -------------------
+ See Clipboard Support above.
+
+ e_paste_from_clipboard
+ -----------------------
+ See Clipboard Support above.
diff --git a/win32/bogus.c b/win32/bogus.c
new file mode 100644
index 000000000000..5e34c4d8ee8c
--- /dev/null
+++ b/win32/bogus.c
@@ -0,0 +1,168 @@
+/*$Header: /p/tcsh/cvsroot/tcsh/win32/bogus.c,v 1.9 2008/10/11 12:47:39 christos Exp $*/
+/*-
+ * Copyright (c) 1980, 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * bogus.c: various routines that are really silly
+ * -amol
+ *
+ */
+#include "ntport.h"
+#include "sh.h"
+
+static struct passwd pass_bogus;
+static char username[20];
+static char homedir[MAX_PATH + 1];/*FIXBUF*/
+static char *this_shell="tcsh";
+
+static char dummy[2]={0,0};
+
+gid_t getuid(void) {
+ return 0;
+}
+gid_t getgid(void) {
+ return 0;
+}
+gid_t geteuid(void) {
+ return 0;
+}
+gid_t getegid(void) {
+ return 0;
+}
+#undef free
+struct passwd * getpwnam(const char *name) {
+
+ char *ptr;
+ DWORD size =20;
+ size_t esize = 0;
+
+ if (pass_bogus.pw_name == NULL) {
+ GetUserName(username,&size);
+ if (_dupenv_s(&ptr,&esize,"HOME") == 0){
+ StringCbCopy(homedir,sizeof(homedir),ptr);
+ pass_bogus.pw_dir = &homedir[0];
+ free(ptr);
+ }
+ pass_bogus.pw_name = &username[0];
+ pass_bogus.pw_shell = this_shell;
+
+
+ pass_bogus.pw_passwd= &dummy[0];
+ pass_bogus.pw_gecos=&dummy[0];
+ pass_bogus.pw_passwd= &dummy[0];
+
+ }
+ if (_stricmp(username,name) )
+ return NULL;
+ return &pass_bogus;
+}
+struct passwd * getpwuid(uid_t myuid) {
+
+ char *ptr;
+ DWORD size =20;
+ size_t esize = 0;
+
+ UNREFERENCED_PARAMETER(myuid);
+ if (pass_bogus.pw_name == NULL) {
+ GetUserName(username,&size);
+ if (_dupenv_s(&ptr,&esize,"HOME") == 0){
+ StringCbCopy(homedir,sizeof(homedir),ptr);
+ pass_bogus.pw_dir = &homedir[0];
+ free(ptr);
+ }
+ pass_bogus.pw_name = &username[0];
+ pass_bogus.pw_shell = this_shell;
+
+
+ pass_bogus.pw_passwd= &dummy[0];
+ pass_bogus.pw_gecos=&dummy[0];
+ pass_bogus.pw_passwd= &dummy[0];
+
+ }
+ return &pass_bogus;
+}
+struct group * getgrnam(char *name) {
+ UNREFERENCED_PARAMETER(name);
+ return NULL;
+}
+struct group * getgrgid(gid_t mygid) {
+ UNREFERENCED_PARAMETER(mygid);
+ return NULL;
+}
+char * ttyname(int fd) {
+
+ if (isatty(fd)) return "/dev/tty";
+ return NULL;
+}
+int times(struct tms * ignore) {
+ FILETIME c,e,kernel,user;
+
+ ignore->tms_utime=0;
+ ignore->tms_stime=0;
+ ignore->tms_cutime=0;
+ ignore->tms_cstime=0;
+ if (!GetProcessTimes(GetCurrentProcess(),
+ &c,
+ &e,
+ &kernel,
+ &user) )
+ return -1;
+
+ if (kernel.dwHighDateTime){
+ return GetTickCount();
+ }
+ //
+ // Units of 10ms. I *think* this is right. -amol 6/2/97
+ ignore->tms_stime = kernel.dwLowDateTime / 1000 /100;
+ ignore->tms_utime = user.dwLowDateTime / 1000 /100;
+
+ return GetTickCount();
+}
+int tty_getty(int fd, void*ignore) {
+ UNREFERENCED_PARAMETER(fd);
+ UNREFERENCED_PARAMETER(ignore);
+ return 0;
+}
+int tty_setty(int fd, void*ignore) {
+ UNREFERENCED_PARAMETER(fd);
+ UNREFERENCED_PARAMETER(ignore);
+ return 0;
+}
+int tty_geteightbit(void *ignore) {
+ UNREFERENCED_PARAMETER(ignore);
+ return 1;
+}
+ void
+dosetty(Char **v, struct command *t)
+{
+ UNREFERENCED_PARAMETER(v);
+ UNREFERENCED_PARAMETER(t);
+ xprintf("setty not supported in NT\n");
+}
+
diff --git a/win32/clip.c b/win32/clip.c
new file mode 100644
index 000000000000..bc057d8b4e92
--- /dev/null
+++ b/win32/clip.c
@@ -0,0 +1,570 @@
+/*$Header: /p/tcsh/cvsroot/tcsh/win32/clip.c,v 1.9 2006/03/05 08:59:36 amold Exp $*/
+/*-
+ * Copyright (c) 1980, 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * clip.c : support for clipboard functions.
+ * -amol
+ *
+ */
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <stdio.h>
+#include "sh.h"
+#include "ed.h"
+
+BOOL InitApplication(HINSTANCE);
+BOOL InitInstance(HINSTANCE, int);
+LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
+
+
+HWND ghwndmain;
+
+extern int ctrl_handler(DWORD);
+extern void c_insert(int);
+
+/*
+ * Creating a hidden window may not be strictly necessary on
+ * NT, but why tempt fate ?
+ * -amol
+ */
+
+void clipper_thread(void) {
+
+ MSG msg;
+ HINSTANCE hInstance = GetModuleHandle(NULL);
+
+
+ if (!InitApplication(hInstance)) {
+ return ;
+ }
+
+ if (!InitInstance(hInstance, 0)) {
+ return ;
+ }
+ // Main message loop:
+ while (GetMessage(&msg, NULL, 0, 0)) {
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
+ }
+ if ( !ctrl_handler(CTRL_CLOSE_EVENT))
+ init_clipboard();
+ return;
+}
+void init_clipboard(void) {
+ HANDLE ht;
+ DWORD tid;
+
+ ht = CreateThread(NULL,gdwStackSize,
+ (LPTHREAD_START_ROUTINE)clipper_thread, NULL,0,&tid);
+
+ if (!ht)
+ abort();
+ CloseHandle(ht);
+}
+
+BOOL InitApplication(HINSTANCE hInstance)
+{
+ WNDCLASS wc;
+
+
+ // Fill in window class structure with parameters that describe
+ // the main window.
+ wc.style = CS_HREDRAW | CS_VREDRAW;
+ wc.lpfnWndProc = (WNDPROC)WndProc;
+ wc.cbClsExtra = 0;
+ wc.cbWndExtra = 0;
+ wc.hInstance = hInstance;
+ wc.hIcon = NULL;//LoadIcon (hInstance, szAppName);
+ wc.hCursor = NULL;//LoadCursor(NULL, IDC_ARROW);
+ wc.hbrBackground = (HBRUSH)IntToPtr(COLOR_WINDOW+1);
+
+ wc.lpszMenuName = NULL;
+ wc.lpszClassName = "tcshclipboard";
+
+ return RegisterClass(&wc);
+}
+
+//
+// FUNCTION: InitInstance(HANDLE, int)
+//
+// PURPOSE: Saves instance handle and creates main window
+//
+// COMMENTS:
+//
+// In this function, we save the instance handle in a global variable and
+// create and display the main program window.
+//
+BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) {
+ HWND hWnd;
+
+
+ UNREFERENCED_PARAMETER(nCmdShow);
+
+ hWnd = CreateWindow("tcshclipboard", "tcshclipboard",
+ WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,
+ NULL, NULL, hInstance, NULL);
+
+ if (!hWnd) {
+ return (FALSE);
+ }
+
+ UpdateWindow(hWnd);
+ ghwndmain = hWnd;
+
+ return (TRUE);
+}
+
+LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
+{
+
+ switch (message) {
+
+ case WM_DESTROYCLIPBOARD:
+ break;
+ case WM_DESTROY:
+ PostQuitMessage(0);
+ break;
+
+ default:
+ return (DefWindowProc(hWnd, message, wParam, lParam));
+ }
+ return (0);
+}
+
+CCRETVAL e_copy_to_clipboard(Char c) {
+ unsigned char *cbp;
+ Char *kp;
+ int err;
+ size_t len;
+ unsigned char *clipbuf;
+ HANDLE hclipbuf;
+
+ UNREFERENCED_PARAMETER(c);
+
+ if (!ghwndmain)
+ return (CC_ERROR);
+
+ if (KillRingLen == 0)
+ return (CC_ERROR);
+
+ len = Strlen(KillRing[YankPos].buf);
+
+ hclipbuf = GlobalAlloc(GMEM_MOVEABLE|GMEM_DDESHARE, len+2);
+ if (!hclipbuf)
+ return (CC_ERROR);
+ clipbuf = (unsigned char*)GlobalLock(hclipbuf);
+
+ if (!clipbuf){
+ err = GetLastError();
+ GlobalFree(hclipbuf);
+ return (CC_ERROR);
+ }
+
+ kp = KillRing[YankPos].buf;
+ cbp = clipbuf;
+
+ while(*kp != '\0') {
+ *cbp = (u_char)(*kp & CHAR);
+ cbp++;kp++;
+ }
+ *cbp = 0;
+
+ GlobalUnlock(clipbuf);
+
+ if (!OpenClipboard(ghwndmain))
+ goto error;
+
+ if (!EmptyClipboard())
+ goto error;
+
+ if (SetClipboardData(CF_TEXT,hclipbuf) != hclipbuf){
+ err = GetLastError();
+ goto error;
+
+ }
+
+ CloseClipboard();
+ return (CC_NORM);
+error:
+ GlobalFree(hclipbuf);
+ CloseClipboard();
+ return (CC_ERROR);
+}
+CCRETVAL e_paste_from_clipboard(Char c) {
+ HANDLE hclip;
+ unsigned char *cbp;
+ Char *cp;
+ int len;
+ unsigned char *clipbuf;
+
+
+
+ UNREFERENCED_PARAMETER(c);
+
+ if (!ghwndmain)
+ return (CC_ERROR);
+ if (!IsClipboardFormatAvailable(CF_TEXT))
+ return CC_ERROR;
+
+ if (!OpenClipboard(ghwndmain))
+ return CC_ERROR;
+
+
+ hclip = GetClipboardData(CF_TEXT);
+ if (hclip) {
+ clipbuf = (unsigned char*)GlobalLock(hclip);
+
+ cbp = clipbuf;
+ len = 0;
+
+ while(*cbp && *cbp != '\r') {
+ len++;
+ cbp++;
+ }
+ cbp = clipbuf;
+
+ cp = Cursor;
+
+ c_insert(len);
+
+ if (LastChar + len >= InputLim)
+ goto error;
+
+ while(*cbp && *cbp !='\r' && (cp <LastChar) ) {
+ *cp = *cbp ;
+ cp++;cbp++;
+ }
+ Cursor = cp;
+ GlobalUnlock(hclip);
+ }
+ CloseClipboard();
+
+ return (CC_REFRESH);
+error:
+ return (CC_ERROR);
+}
+
+int is_dev_clipboard_active=0;
+HANDLE ghdevclipthread;
+
+/* Reads from pipe and write to clipboard */
+void clip_writer_proc(HANDLE hinpipe) {
+ unsigned char *realbuf;
+ unsigned char *clipbuf;
+ unsigned char *ptr;
+ DWORD bread=0,spleft,err,i,rbsize;
+ DWORD ptrloc;
+ HANDLE hclipbuf;
+
+
+ rbsize = 4096;
+ realbuf = heap_alloc(rbsize);
+ ptr = realbuf;
+ ptrloc = 0;
+ spleft = rbsize;
+
+ while(spleft) {
+ if (!ReadFile(hinpipe,ptr,spleft,&bread,NULL)) {
+ spleft = GetLastError();
+ dprintf("hinpipe returend %d\n",spleft);
+ if (spleft == ERROR_BROKEN_PIPE)
+ break;
+ }
+ if (bread == 0)
+ break;
+ ptr += bread;
+ ptrloc += bread;
+ spleft -=bread;
+
+ if (spleft <=0){
+ u_char *tmp;
+
+ rbsize <<=1;
+
+ tmp = realbuf;
+ realbuf = heap_realloc(realbuf,rbsize);
+ if (!realbuf) {
+ realbuf = tmp;
+ break;
+ }
+ spleft += rbsize >> 1;
+
+ ptr = realbuf+ptrloc;
+
+ dprintf("updated size now %d, splef %d, ptrloc %d, ptr 0x%08x, realbuf 0x%08x\n",rbsize,spleft,ptrloc,ptr,realbuf);
+ }
+ }
+ CloseHandle(hinpipe);
+
+ bread = rbsize-spleft;
+
+ hclipbuf = GlobalAlloc(GMEM_MOVEABLE|GMEM_DDESHARE, bread+256);
+ if (!hclipbuf) {
+ is_dev_clipboard_active=0;
+ return;
+ }
+ clipbuf = (u_char*)GlobalLock(hclipbuf);
+
+ if (!clipbuf){
+ err = GetLastError();
+ GlobalFree(hclipbuf);
+ is_dev_clipboard_active=0;
+ return ;
+ }
+ ptr = clipbuf;
+ for (i=0;i <bread;i++) {
+
+ if (realbuf[i] == '\n' && (i >0 && realbuf[i-1] != '\r') )
+ *ptr++ = '\r';
+
+ *ptr++ =realbuf[i];
+
+ if ((ptr - clipbuf) >= rbsize)
+ break;
+ }
+ *ptr=0;
+
+ heap_free(realbuf);
+
+ GlobalUnlock(clipbuf);
+
+ if (!OpenClipboard(ghwndmain))
+ goto error;
+
+ if (!EmptyClipboard())
+ goto error;
+
+ if (SetClipboardData(CF_TEXT,hclipbuf) != hclipbuf){
+ err = GetLastError();
+ goto error;
+
+ }
+ CloseClipboard();
+ is_dev_clipboard_active=0;
+ return ;
+error:
+ is_dev_clipboard_active=0;
+ GlobalFree(hclipbuf);
+ CloseClipboard();
+}
+HANDLE create_clip_writer_thread(void) {
+ HANDLE hread,hwrite;
+ DWORD tid;
+ SECURITY_ATTRIBUTES secd;
+
+ if (is_dev_clipboard_active)
+ return INVALID_HANDLE_VALUE;
+ secd.nLength=sizeof(secd);
+ secd.lpSecurityDescriptor=NULL;
+ secd.bInheritHandle=FALSE;
+
+ if (!CreatePipe(&hread,&hwrite,&secd,0)) {
+ abort();
+ }
+ is_dev_clipboard_active = 1;
+ ghdevclipthread = CreateThread(NULL,gdwStackSize,
+ (LPTHREAD_START_ROUTINE)clip_writer_proc, hread,0,&tid);
+// CloseHandle(ht);
+ return hwrite;
+}
+
+/* Read from clipboard and write to pipe */
+void clip_reader_proc(HANDLE houtpipe) {
+
+ HANDLE hclip;
+ unsigned char *cbp;
+ unsigned char *clipbuf;
+ unsigned char * outbuf,*ptr;
+ DWORD bwrote, len;
+ DWORD obsize;
+
+ obsize = 4096;
+ outbuf = heap_alloc(obsize);
+ ptr = outbuf;
+
+
+ if (!IsClipboardFormatAvailable(CF_TEXT))
+ goto done ;
+
+ if (!OpenClipboard(ghwndmain))
+ goto done ;
+
+
+ len = 0;
+ hclip = GetClipboardData(CF_TEXT);
+ if (hclip) {
+ clipbuf = (unsigned char*)GlobalLock(hclip);
+
+ cbp = clipbuf;
+
+ while(*cbp ) {
+ *ptr++ = *cbp++;
+ len++;
+ if (len == obsize) {
+ obsize <<= 1;
+ outbuf = heap_realloc(outbuf,obsize);
+ if (!outbuf)
+ break;
+ ptr = outbuf+len;
+ }
+ }
+ GlobalUnlock(hclip);
+ }
+ CloseClipboard();
+
+ if (!WriteFile(houtpipe,outbuf,len,&bwrote,NULL)) {
+ ;
+ }
+ CloseHandle(houtpipe);
+ heap_free(outbuf);
+
+done:
+ is_dev_clipboard_active=0;
+ return;
+}
+HANDLE create_clip_reader_thread(void) {
+ HANDLE hread,hwrite;
+ DWORD tid;
+ SECURITY_ATTRIBUTES secd;
+
+ if (is_dev_clipboard_active)
+ return INVALID_HANDLE_VALUE;
+
+ secd.nLength=sizeof(secd);
+ secd.lpSecurityDescriptor=NULL;
+ secd.bInheritHandle=FALSE;
+
+ if (!CreatePipe(&hread,&hwrite,&secd,0)) {
+ abort();
+ }
+ is_dev_clipboard_active = 1;
+ ghdevclipthread = CreateThread(NULL,gdwStackSize,
+ (LPTHREAD_START_ROUTINE)clip_reader_proc, hwrite,0,&tid);
+ return hread;
+}
+
+CCRETVAL
+e_dosify_next(Char c)
+{
+ register Char *cp, *buf, *bp;
+ int len;
+ BOOL bDone = FALSE;
+
+
+ USE(c);
+ if (Cursor == LastChar)
+ return(CC_ERROR);
+
+ // worst case assumption
+ buf = heap_alloc(( LastChar - Cursor + 1)*2*sizeof(Char));
+
+ cp = Cursor;
+ bp = buf;
+ len = 0;
+
+ while( cp < LastChar) {
+ if ( ((*cp & CHAR) == ' ') && ((cp[-1] & CHAR) != '\\') )
+ bDone = TRUE;
+ if (!bDone && (*cp & CHAR) == '/') {
+ *bp++ = '\\' | (Char)(*cp & ~(*cp & CHAR) );
+ *bp++ = '\\' | (Char)(*cp & ~(*cp & CHAR) );
+
+ len++;
+
+ cp++;
+ }
+ else
+ *bp++ = *cp++;
+
+ len++;
+ }
+ if (Cursor+ len >= InputLim) {
+ heap_free(buf);
+ return CC_ERROR;
+ }
+ cp = Cursor;
+ bp = buf;
+ while(len > 0) {
+ *cp++ = *bp++;
+ len--;
+ }
+
+ heap_free(buf);
+
+ Cursor = cp;
+
+ if(LastChar < Cursor + len)
+ LastChar = Cursor + len;
+
+ return (CC_REFRESH);
+}
+/*ARGSUSED*/
+CCRETVAL
+e_dosify_prev(Char c)
+{
+ register Char *cp;
+
+ USE(c);
+ if (Cursor == InputBuf)
+ return(CC_ERROR);
+ /* else */
+
+ cp = Cursor-1;
+ /* Skip trailing spaces */
+ while ((cp > InputBuf) && ( (*cp & CHAR) == ' '))
+ cp--;
+
+ while (cp > InputBuf) {
+ if ( ((*cp & CHAR) == ' ') && ((cp[-1] & CHAR) != '\\') )
+ break;
+ cp--;
+ }
+ if(cp != InputBuf)
+ Cursor = cp + 1;
+ else
+ Cursor = cp;
+
+ return e_dosify_next(0);
+}
+extern BOOL ConsolePageUpOrDown(BOOL);
+CCRETVAL
+e_page_up(Char c) //blukas@broadcom.com
+{
+ USE(c);
+ ConsolePageUpOrDown(TRUE);
+ return (CC_REFRESH);
+}
+CCRETVAL
+e_page_down(Char c)
+{
+ USE(c);
+ ConsolePageUpOrDown(FALSE);
+ return (CC_REFRESH);
+}
diff --git a/win32/console.c b/win32/console.c
new file mode 100644
index 000000000000..220d56eaea94
--- /dev/null
+++ b/win32/console.c
@@ -0,0 +1,636 @@
+/*$Header: /p/tcsh/cvsroot/tcsh/win32/console.c,v 1.9 2006/08/27 01:13:28 amold Exp $*/
+/*-
+ * Copyright (c) 1980, 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * console.c: hacks to do various cursor movement/attribute things
+ * -amol
+ */
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <wincon.h>
+#include <stdio.h>
+#include "ntport.h"
+
+
+// int to SHORT. caused by all the stupid functions that take WORDs
+#pragma warning(disable:4244)
+
+void ScrollBuf(HANDLE,CONSOLE_SCREEN_BUFFER_INFO*,int);
+void NT_MoveToLineOrChar(int ,int ) ;
+WORD get_attributes();
+
+
+#define FSHIN 16 /* Preferred desc for shell input */
+#define FSHOUT 17 /* Preferred desc for shell input */
+
+#define FOREGROUND_BLACK (FOREGROUND_RED |FOREGROUND_GREEN | FOREGROUND_BLUE)
+#define FOREGROUND_WHITE 0
+#define BACKGROUND_BLACK (BACKGROUND_RED |BACKGROUND_GREEN | BACKGROUND_BLUE)
+#define BACKGROUND_WHITE 0
+
+static WORD wNormalAttributes;
+
+
+static int nt_is_raw;
+//
+// The following are used to optimize some console routines. It avoids having
+// to call GetConsoleScreenBufferInfo.
+// Seems to have helped the speed a bit. -amol
+//
+HANDLE ghstdout;
+HANDLE ghReverse;
+
+//
+// This function is called to set the values for above variables.
+//
+void redo_console(void) {
+
+ CONSOLE_SCREEN_BUFFER_INFO scrbuf;
+ HANDLE hTemp= GetStdHandle(STD_OUTPUT_HANDLE);
+ WORD dbga;
+ DWORD wrote;
+ COORD origin = {0,0};
+
+ if (!DuplicateHandle(GetCurrentProcess(),hTemp,GetCurrentProcess(),
+ &ghstdout,0,TRUE,DUPLICATE_SAME_ACCESS) ) {
+ ;
+ }
+
+ if(!GetConsoleScreenBufferInfo(ghstdout, &scrbuf) ) {
+ wNormalAttributes = FOREGROUND_BLACK | BACKGROUND_WHITE;
+ }
+ else
+ wNormalAttributes = scrbuf.wAttributes;
+
+ ghReverse = CreateConsoleScreenBuffer(GENERIC_READ|GENERIC_WRITE,
+ FILE_SHARE_READ | FILE_SHARE_WRITE,
+ NULL,
+ CONSOLE_TEXTMODE_BUFFER,
+ NULL);
+
+ dbga = ((wNormalAttributes & 0x00f0) >> 4) |
+ ((wNormalAttributes & 0x000f) << 4) ;
+
+ FillConsoleOutputAttribute(ghReverse,dbga,
+ scrbuf.dwSize.X*scrbuf.dwSize.Y,
+ origin,
+ &wrote);
+}
+void nt_term_cleanup(void) {
+ CloseHandle(ghstdout);
+}
+void nt_term_init() {
+
+ DWORD dwmode;
+ HANDLE hinput =GetStdHandle(STD_INPUT_HANDLE);
+
+ if (!GetConsoleMode(hinput,&dwmode) ){
+ ;
+ }
+ if(!SetConsoleMode(hinput,dwmode | ENABLE_WINDOW_INPUT) ){
+ return;
+ }
+
+ redo_console();
+
+ return;
+}
+int do_nt_check_cooked_mode(void) {
+
+ return !nt_is_raw;
+}
+void do_nt_raw_mode() {
+
+ DWORD dwmode;
+ HANDLE hinput =(HANDLE)_get_osfhandle(FSHIN);
+
+ if (hinput == INVALID_HANDLE_VALUE)
+ return;
+ if (!GetConsoleMode(hinput,&dwmode) ){
+ ;
+ }
+ if(!SetConsoleMode(hinput,dwmode & (~(
+ ENABLE_LINE_INPUT |ENABLE_ECHO_INPUT
+ | ENABLE_PROCESSED_INPUT)| ENABLE_WINDOW_INPUT )
+ ) ){
+ return;
+ }
+ nt_is_raw = 1;
+ return;
+}
+void do_nt_cooked_mode() {
+
+ DWORD dwmode;
+ HANDLE hinput =(HANDLE)_get_osfhandle(FSHIN);
+
+ if (hinput == INVALID_HANDLE_VALUE)
+ return;
+ if (!GetConsoleMode(hinput,&dwmode) ){
+ ;
+ }
+ if(!SetConsoleMode(hinput,dwmode | ( (
+ ENABLE_LINE_INPUT|ENABLE_ECHO_INPUT |
+ ENABLE_PROCESSED_INPUT) )
+ ) ){
+ }
+ nt_is_raw = 0;
+ return;
+}
+//
+// this function is a bit ugly, but I don't know how to do it better
+// -amol
+//
+int nt_ClearEOL( void) {
+
+ CONSOLE_SCREEN_BUFFER_INFO scrbuf;
+ HANDLE hStdout =ghstdout ;
+ DWORD numwrote;
+ char errbuf[128];/*FIXME: uninitialized*/
+ int num=0;
+ COORD savepos;
+
+
+ if (hStdout == INVALID_HANDLE_VALUE){
+ ExitProcess(0xFFFF);
+ }
+ if(!GetConsoleScreenBufferInfo(hStdout, &scrbuf) ) {
+ return 0 ;
+ }
+ num =2048;
+
+ savepos = scrbuf.dwCursorPosition;
+ if (!FillConsoleOutputCharacter(hStdout,' ',num,scrbuf.dwCursorPosition,
+ &numwrote) ){
+ dprintf("error from FillCons %s",errbuf);
+ }
+ else if (!FillConsoleOutputAttribute(hStdout,scrbuf.wAttributes, num,
+ scrbuf.dwCursorPosition,&numwrote)) {
+ dprintf("error from FillConsAttr %s",errbuf);
+ }
+ return 0;
+}
+void nt_move_next_tab(void) {
+
+ CONSOLE_SCREEN_BUFFER_INFO scrbuf;
+ HANDLE hStdout = ghstdout;
+ int where;
+
+ if(!GetConsoleScreenBufferInfo(hStdout, &scrbuf) ) {
+ ;
+ }
+ where = 8 - (scrbuf.dwCursorPosition.X+1)%8;
+ scrbuf.dwCursorPosition.X += where;
+ if (!SetConsoleCursorPosition(hStdout, scrbuf.dwCursorPosition) ) {
+ ;
+ }
+
+}
+void NT_VisibleBell(void) {
+
+ if(ghReverse != INVALID_HANDLE_VALUE) {
+ SetConsoleActiveScreenBuffer(ghReverse);
+ Sleep(100);
+ SetConsoleActiveScreenBuffer(ghstdout);
+
+ }
+
+}
+void NT_WrapHorizontal(void) {
+ SMALL_RECT wnd;
+ CONSOLE_SCREEN_BUFFER_INFO scrbuf;
+
+
+ if (ghstdout == INVALID_HANDLE_VALUE){
+ return;
+ }
+ if(!GetConsoleScreenBufferInfo(ghstdout, &scrbuf) ) {
+ return;
+ }
+ //absolute movement
+ wnd.Left = 0;//scrbuf.srWindow.Left ;
+ wnd.Right = scrbuf.srWindow.Right- scrbuf.srWindow.Left + 1;
+ wnd.Top = scrbuf.srWindow.Top;
+ wnd.Bottom = scrbuf.srWindow.Bottom;
+
+ SetConsoleWindowInfo(ghstdout,TRUE,&wnd);
+}
+void ScrollBufHorizontal(HANDLE hOut, CONSOLE_SCREEN_BUFFER_INFO *scrbuf,
+ int where) {
+ SMALL_RECT wnd;
+ int diff;
+ CHAR_INFO chr;
+
+
+ //absolute movement
+ wnd.Left = (where - scrbuf->srWindow.Right) + scrbuf->srWindow.Left ;
+ wnd.Right = where;
+ wnd.Top = scrbuf->srWindow.Top;
+ wnd.Bottom = scrbuf->srWindow.Bottom;
+
+ //diff = scrbuf->srWindow.Right - where;
+ //dprintf("\tdiff1 %d\n",diff);
+
+ diff = scrbuf->dwSize.X - where -1;
+
+ if (diff < 0) { //would scroll past console buffer
+
+ chr.Char.AsciiChar = ' ';
+ chr.Attributes = scrbuf->wAttributes;
+
+ scrbuf->dwCursorPosition.Y = scrbuf->srWindow.Top ;
+ scrbuf->dwCursorPosition.X = scrbuf->srWindow.Right+ diff;
+
+ dprintf("scroll diff %d\n",diff);
+ if (!ScrollConsoleScreenBuffer(hOut,&(scrbuf->srWindow),
+ NULL,
+ scrbuf->dwCursorPosition,&chr))
+ ;
+
+ return;
+ }
+
+ SetConsoleWindowInfo(hOut,TRUE,&wnd);
+}
+// relative movement of "where". line is 1 if we want to move to a line,
+// or 0 if the movement is horizontal
+void NT_MoveToLineOrChar(int where,int line) {
+
+ CONSOLE_SCREEN_BUFFER_INFO scrbuf;
+ HANDLE hStdout = ghstdout;
+
+
+ if (hStdout == INVALID_HANDLE_VALUE){
+ return;
+ }
+ if(!GetConsoleScreenBufferInfo(hStdout, &scrbuf) ) {
+ return;
+ }
+
+ if (line){
+ if ( ((scrbuf.dwCursorPosition.Y+where)> (scrbuf.srWindow.Bottom-1))
+ &&( where >0)){
+ ScrollBuf(hStdout,&scrbuf,where);
+ scrbuf.dwCursorPosition.Y += where;
+ }
+ else
+ scrbuf.dwCursorPosition.Y += where;
+ }
+ else{
+ if ( (where> (scrbuf.srWindow.Right)) &&( where >0)){
+ ScrollBufHorizontal(hStdout,&scrbuf,where);
+ }
+ scrbuf.dwCursorPosition.X = where;
+ }
+ if (scrbuf.dwCursorPosition.X < 0 || scrbuf.dwCursorPosition.Y <0)
+ return;
+ if (!SetConsoleCursorPosition(hStdout, scrbuf.dwCursorPosition) ) {
+ return;
+ }
+
+}
+void ScrollBuf(HANDLE hOut, CONSOLE_SCREEN_BUFFER_INFO *scrbuf,int where) {
+ SMALL_RECT wnd;
+ int diff;
+ CHAR_INFO chr;
+ COORD newpos;
+
+
+ wnd.Left = 0;
+ wnd.Right = 0;
+ wnd.Top = where;
+ wnd.Bottom = where;
+
+ //dwSize is not 0-based, so add 1 to proposed location
+ diff = scrbuf->srWindow.Bottom + where + 1;
+
+ diff = scrbuf->dwSize.Y - diff;
+
+ if (diff < 0) { //would scroll past console buffer
+
+ chr.Char.AsciiChar = ' ';
+ chr.Attributes = scrbuf->wAttributes;
+
+ newpos.Y = scrbuf->srWindow.Top + diff;
+ newpos.X = scrbuf->srWindow.Left;
+
+ dprintf("scroll diff %d\n",diff);
+ if (!ScrollConsoleScreenBuffer(hOut,&(scrbuf->srWindow),
+ NULL,
+ newpos,&chr))
+ ;
+
+ // need this to be in sync with tcsh
+ scrbuf->dwCursorPosition.Y += diff;
+ return;
+ }
+
+ SetConsoleWindowInfo(hOut,FALSE,&wnd);
+}
+BOOL ConsolePageUpOrDown(BOOL Up) {
+
+ HANDLE hStdout = ghstdout;
+ CONSOLE_SCREEN_BUFFER_INFO scrbuf;
+ SMALL_RECT srect;
+ short diff;
+
+ if(!GetConsoleScreenBufferInfo(hStdout, &scrbuf) ) {
+ return FALSE;
+ }
+ diff = scrbuf.srWindow.Bottom -scrbuf.srWindow.Top+1 ;
+
+
+ if (Up)
+ diff = -diff;
+
+ if ((scrbuf.srWindow.Top + diff > 0) &&
+ (scrbuf.srWindow.Bottom + diff < scrbuf.dwSize.Y)) {
+ srect.Top = diff;
+ srect.Bottom = diff;
+ srect.Left = 0;
+ srect.Right = 0;
+
+ if (! SetConsoleWindowInfo( hStdout, FALSE, &srect)) {
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+int nt_getsize(int * lins, int * cols, int *visiblecols) {
+ CONSOLE_SCREEN_BUFFER_INFO scrbuf;
+ HANDLE hStdout = ghstdout;
+
+ if(!GetConsoleScreenBufferInfo(hStdout, &scrbuf) ) {
+ ;
+ }
+ *lins = scrbuf.srWindow.Bottom -scrbuf.srWindow.Top+1 ;
+
+ if(visiblecols)
+ *visiblecols = scrbuf.srWindow.Right -scrbuf.srWindow.Left +1;
+
+ *cols = scrbuf.dwSize.X;
+ return 1;
+}
+void nt_set_size(int lins, int cols) {
+ SMALL_RECT srect;
+ CONSOLE_SCREEN_BUFFER_INFO scrbuf;
+ int expand;
+
+ /* The screen buffer visible window is specified as co-ordinates
+ * not size. Therefore, it must be zero-based
+ */
+ cols--;
+ lins--;
+
+ srect.Left = srect.Top = 0;
+ srect.Right = cols;
+ srect.Bottom = lins;
+
+ if(!GetConsoleScreenBufferInfo(ghstdout, &scrbuf) )
+ return;
+
+ expand = 0;
+ if (scrbuf.dwSize.X < cols){
+ expand = 1;
+ scrbuf.dwSize.X = cols+1;
+ }
+ if (scrbuf.dwSize.Y < lins){
+ expand = 1;
+ scrbuf.dwSize.Y = lins+1;
+ }
+
+ if (expand && !SetConsoleScreenBufferSize(ghstdout,scrbuf.dwSize))
+ return;
+
+ if(!SetConsoleWindowInfo(ghstdout,TRUE,&srect)){
+ int err;
+ err=GetLastError();
+ dprintf("error %d\n",err);
+ }
+}
+void NT_ClearEOD(void) {
+ CONSOLE_SCREEN_BUFFER_INFO scrbuf;
+ DWORD numwrote;
+ COORD origin;
+ int ht,wt;
+ HANDLE hStdout = ghstdout;//GetStdHandle(STD_OUTPUT_HANDLE);
+
+ if (hStdout == INVALID_HANDLE_VALUE){
+ return ;
+ }
+ if(!GetConsoleScreenBufferInfo(hStdout, &scrbuf) ) {
+ return ;
+ }
+ origin = scrbuf.dwCursorPosition;
+ ht = scrbuf.dwSize.Y - origin.Y;
+ wt = scrbuf.dwSize.X - origin.X;
+ if(!FillConsoleOutputCharacter(hStdout,' ',ht*wt,origin,&numwrote) ) {
+ return ;
+ }
+ if (!FillConsoleOutputAttribute(hStdout,scrbuf.wAttributes, ht*wt,
+ scrbuf.dwCursorPosition,&numwrote)) {
+ return;
+ }
+ return;
+}
+void NT_ClearScreen(void) {
+ CONSOLE_SCREEN_BUFFER_INFO scrbuf;
+ DWORD numwrote;
+ COORD origin={0,0};
+ HANDLE hStdout = ghstdout;//GetStdHandle(STD_OUTPUT_HANDLE);
+
+ if (hStdout == INVALID_HANDLE_VALUE){
+ ;
+ }
+ if(!GetConsoleScreenBufferInfo(hStdout, &scrbuf) ) {
+ ;
+ }
+ origin.X = scrbuf.srWindow.Left;
+ origin.Y = scrbuf.srWindow.Top;
+ if(!FillConsoleOutputCharacter(hStdout,' ',scrbuf.dwSize.X*scrbuf.dwSize.Y,
+ origin,&numwrote) ) {
+ ;
+ }
+ if (!FillConsoleOutputAttribute(hStdout,scrbuf.wAttributes,
+ scrbuf.dwSize.X*scrbuf.dwSize.Y,origin,&numwrote)) {
+ ;
+ }
+ if (!SetConsoleCursorPosition(hStdout, origin) ) { // home cursor
+ ;
+ }
+ return;
+}
+void NT_ClearScreen_WholeBuffer(void) {
+ CONSOLE_SCREEN_BUFFER_INFO scrbuf;
+ DWORD numwrote;
+ COORD origin={0,0};
+ HANDLE hStdout = ghstdout;
+
+ if (hStdout == INVALID_HANDLE_VALUE){
+ ;
+ }
+ if(!GetConsoleScreenBufferInfo(hStdout, &scrbuf) ) {
+ ;
+ }
+ if(!FillConsoleOutputCharacter(hStdout,' ',scrbuf.dwSize.X*scrbuf.dwSize.Y,
+ origin,&numwrote) ) {
+ ;
+ }
+ if (!FillConsoleOutputAttribute(hStdout,scrbuf.wAttributes,
+ scrbuf.dwSize.X*scrbuf.dwSize.Y,origin,&numwrote)) {
+ ;
+ }
+ if (!SetConsoleCursorPosition(hStdout, origin) ) { // home cursor
+ ;
+ }
+ return;
+}
+
+#ifndef COLOR_LS_F
+void set_cons_attr(char *attr2) {
+ char cp[3];
+ USHORT attr;
+ HANDLE outhandle = (HANDLE)_get_osfhandle(FSHOUT);
+ static WORD old_attribs;
+ CONSOLE_SCREEN_BUFFER_INFO scrbuf;
+
+ if (!old_attribs) {
+ if(!GetConsoleScreenBufferInfo(outhandle, &scrbuf) ) {
+ return;
+ }
+ old_attribs = scrbuf.wAttributes;
+ }
+ cp[0] = (unsigned char)(attr2[0]);
+ cp[1] = (unsigned char)(attr2[1]);
+ cp[2] = 0;
+ if (cp[0] != 'g' || cp[1] != 'g')
+ attr = (USHORT)strtol(cp,NULL,16);
+ else{
+ attr = old_attribs;
+ old_attribs=0;
+ }
+
+ SetConsoleTextAttribute(outhandle, attr );
+}
+#endif /* !COLOR_LS_F */
+
+
+/*
+ color escape sequences (ISO 6429, aixterm)
+ - nayuta
+ */
+
+
+WORD get_attributes() {
+ CONSOLE_SCREEN_BUFFER_INFO scrbuf;
+ if (!GetConsoleScreenBufferInfo(ghstdout, &scrbuf))
+ return 0x70; // ERROR: return white background, black text
+ return scrbuf.wAttributes;
+}
+
+
+#ifndef COMMON_LVB_REVERSE_VIDEO
+#define COMMON_LVB_REVERSE_VIDEO 0x4000
+#define COMMON_LVB_UNDERSCORE 0x8000
+#endif
+
+
+void set_attributes(const unsigned char *color) {
+
+ static const int colors[8] = { 0, 4, 2, 6, 1, 5, 3, 7 };
+ WORD wAttributes;
+ const char *t;
+
+ if (color[0] == '\x1b' && color[1] == '[')
+ color += 2;
+
+ if (!('0' <= color[0] && color[0] <= '9')) {
+ SetConsoleTextAttribute(ghstdout, wNormalAttributes);
+ return;
+ }
+
+ wAttributes = get_attributes();
+ t = (char*)color;
+
+ while (t) {
+ int n = atoi(t);
+
+ if ((t = strchr(t, ';')) != NULL)
+ t++;
+
+ if (n == 0) // Normal (default)
+ wAttributes = wNormalAttributes;
+ else if (n == 1) // Bold
+ wAttributes |= FOREGROUND_INTENSITY;
+ else if (n == 4) // Underlined
+ wAttributes |= COMMON_LVB_UNDERSCORE;
+ else if (n == 5) // Blink (appears as BACKGROUND_INTENSITY)
+ wAttributes |= BACKGROUND_INTENSITY;
+ else if (n == 7) // Inverse
+ wAttributes |= COMMON_LVB_REVERSE_VIDEO;
+ else if (n == 21) // Not bold
+ wAttributes &= ~FOREGROUND_INTENSITY;
+ else if (n == 24) // Not underlined
+ wAttributes &= ~COMMON_LVB_UNDERSCORE;
+ else if (n == 25) // Steady (not blinking)
+ wAttributes &= ~BACKGROUND_INTENSITY;
+ else if (n == 27) // Positive (not inverse)
+ wAttributes &= ~COMMON_LVB_REVERSE_VIDEO;
+ else if (30 <= n && n <= 37) // Set foreground color
+ wAttributes = (wAttributes & ~0x0007) | colors[n - 30];
+ else if (n == 39) // Set foreground color to default
+ wAttributes = (wAttributes & ~0x0007) | (wNormalAttributes & 0x0007);
+ else if (40 <= n && n <= 47) // Set background color
+ wAttributes = (wAttributes & ~0x0070) | (colors[n - 40] << 4);
+ else if (n == 49) // Set background color to default
+ wAttributes = (wAttributes & ~0x0070) | (wNormalAttributes & 0x0070);
+ else if (90 <= n && n <= 97) // Set foreground color (bright)
+ wAttributes = (wAttributes & ~0x0007) | colors[n - 90]
+ | FOREGROUND_INTENSITY;
+ else if (100 <= n && n <= 107) // Set background color (bright)
+ wAttributes = (wAttributes & ~0x0070) | (colors[n - 100] << 4)
+ | BACKGROUND_INTENSITY;
+ else // (default)
+ wAttributes = wNormalAttributes;
+ }
+
+ // Though Windows' console supports COMMON_LVB_REVERSE_VIDEO,
+ // it seems to be buggy. So we must simulate it.
+ if (wAttributes & COMMON_LVB_REVERSE_VIDEO)
+ wAttributes = (wAttributes & COMMON_LVB_UNDERSCORE)
+ | ((wAttributes & 0x00f0) >> 4) | ((wAttributes & 0x000f) << 4);
+ SetConsoleTextAttribute(ghstdout, wAttributes);
+}
+void StartHighlight(void)
+{
+}
+void StopHighlight(void)
+{
+}
diff --git a/win32/customstep.cmd b/win32/customstep.cmd
new file mode 100644
index 000000000000..85e6b0f6f2f8
--- /dev/null
+++ b/win32/customstep.cmd
@@ -0,0 +1,7 @@
+@echo off
+setlocal
+call "%VS90COMNTOOLS%"\vsvars32.bat
+pushd "%1"
+copy config\win32 config.h
+nmake -f win32\makefile.win32 prebuild
+popd
diff --git a/win32/dirent.c b/win32/dirent.c
new file mode 100644
index 000000000000..bfe7d075c4b1
--- /dev/null
+++ b/win32/dirent.c
@@ -0,0 +1,364 @@
+/*$Header: /p/tcsh/cvsroot/tcsh/win32/dirent.c,v 1.9 2006/04/07 00:57:59 amold Exp $*/
+/*-
+ * Copyright (c) 1980, 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/* dirent.c
+ * directory interface functions. Sort of like dirent functions on unix.
+ * Also allow browsing network shares as if they were directories
+ *
+ * -amol
+ *
+ */
+#define WIN32_LEAN_AND_MEAN
+#include <stdio.h>
+#include <errno.h>
+#include <assert.h>
+#include <direct.h>
+#include "dirent.h"
+#include <winnetwk.h>
+
+#ifndef WINDOWS_ONLY
+#define STRSAFE_NO_DEPRECATE
+#endif /* WINDOWS_ONLY*/
+#define STRSAFE_LIB
+#define STRSAFE_NO_CCH_FUNCTIONS
+#include <strsafe.h>
+
+#pragma intrinsic("memset")
+
+static HANDLE open_enum(char *,WIN32_FIND_DATA*);
+static void close_enum(DIR*) ;
+static int enum_next_share(DIR*);
+
+typedef struct _enum_h {
+ unsigned char *netres;
+ HANDLE henum;
+} nethandle_t;
+
+static int inode= 1; // useless piece that some unix programs need
+DIR * opendir(const char *inbuf) {
+
+ DIR *dptr;
+ WIN32_FIND_DATA fdata = {0};
+ char *tmp = NULL;
+ char *buf = NULL;
+ int is_net=0;
+ int had_error = 0;
+ size_t buflen;
+
+ buflen = lstrlen(inbuf) + 1;
+ buf= (char *)heap_alloc(buflen);
+ (void)StringCbCopy(buf,buflen,inbuf);
+
+ if (!buf)
+ buf = "." ;
+ tmp = buf;
+ while(*tmp) {
+#ifdef DSPMBYTE
+ if (Ismbyte1(*tmp) && *(tmp + 1))
+ tmp ++;
+ else
+#endif DSPMBYTE
+ if (*tmp == '\\')
+ *tmp = '/';
+ tmp++;
+ }
+ /*
+ * paths like / confuse NT because it looks like a UNC name
+ * when we append "\*" -amol
+ */
+ if (*(tmp -1) == '/')
+ *(tmp -1) = 0;
+
+ buflen = lstrlen(buf) + 4;
+ tmp= (char *)heap_alloc(buflen);
+
+ if ( (buf[0] == '/') && (buf[1] != '/') ) {
+ (void)StringCbPrintf(tmp,buflen, "%c:%s*",
+ 'A' + (_getdrive()-1),buf);
+ }
+ else if ( (buf[0] == '/') && (buf[1] == '/') ){
+ is_net = 1;
+ (void)StringCbPrintf(tmp,buflen,"%s",buf);
+ }
+ else {
+ (void)StringCbPrintf(tmp,buflen,"%s/*",buf);
+ }
+
+ dptr = (DIR *)heap_alloc(sizeof(DIR));
+ dptr->dd_fd = INVALID_HANDLE_VALUE;
+ if (!dptr){
+ errno = ENOMEM;
+ had_error =1;
+ goto done;
+ }
+
+ if (is_net){
+ dptr->dd_fd = open_enum(tmp,&fdata);
+ dptr->flags = IS_NET;
+ }
+ if (dptr->dd_fd == INVALID_HANDLE_VALUE){
+ (void)StringCbPrintf(tmp,buflen,"%s/*",buf);
+ dptr->flags = 0;
+ dptr->dd_fd = FindFirstFile(tmp,&fdata);
+ }
+ if (dptr->dd_fd == INVALID_HANDLE_VALUE){
+ if (GetLastError() == ERROR_DIRECTORY)
+ errno = ENOTDIR;
+ else
+ errno = ENOENT;
+
+ had_error =1;
+ goto done;
+ }
+ memset(dptr->orig_dir_name,0,sizeof(dptr->orig_dir_name));
+ memcpy(dptr->orig_dir_name,tmp,lstrlen(tmp));
+
+ dptr->dd_loc = 0;
+ dptr->dd_size = fdata.nFileSizeLow;
+ dptr->dd_buf = (struct dirent *)heap_alloc(sizeof(struct dirent));
+ if (!dptr->dd_buf){
+ errno = ENOMEM;
+ had_error=1;
+ goto done;
+ }
+ (dptr->dd_buf)->d_ino = inode++;
+ (dptr->dd_buf)->d_off = 0;
+ (dptr->dd_buf)->d_reclen = 0;
+ if (lstrcmpi(fdata.cFileName,".") ){
+ //dptr->dd_buf->d_name[0] = '.';
+ memcpy((dptr->dd_buf)->d_name,".",2);
+ dptr->flags |= IS_ROOT;
+ }
+ else
+ memcpy((dptr->dd_buf)->d_name,fdata.cFileName,MAX_PATH);
+
+done:
+ if(tmp)
+ heap_free(tmp);
+ if(had_error) {
+ heap_free(dptr);
+ dptr = NULL;
+ }
+
+ return dptr;
+}
+int closedir(DIR *dptr){
+
+ if (!dptr)
+ return 0;
+ if (dptr->flags & IS_NET) {
+ close_enum(dptr);
+ }
+ else
+ FindClose(dptr->dd_fd);
+ heap_free(dptr->dd_buf);
+ heap_free(dptr);
+ return 0;
+}
+void rewinddir(DIR *dptr) {
+
+ HANDLE hfind;
+ WIN32_FIND_DATA fdata;
+ char *tmp = dptr->orig_dir_name;
+
+ if (!dptr) return;
+
+ if (dptr->flags & IS_NET) {
+ hfind = open_enum(tmp,&fdata);
+ close_enum(dptr);
+ dptr->dd_fd = hfind;
+ }
+ else {
+ hfind = FindFirstFile(tmp,&fdata);
+ assert(hfind != INVALID_HANDLE_VALUE);
+ FindClose(dptr->dd_fd);
+ dptr->dd_fd = hfind;
+ }
+ dptr->dd_size = fdata.nFileSizeLow;
+ (dptr->dd_buf)->d_ino = inode++;
+ (dptr->dd_buf)->d_off = 0;
+ (dptr->dd_buf)->d_reclen = 0;
+ memcpy((dptr->dd_buf)->d_name,fdata.cFileName,MAX_PATH);
+ return;
+}
+struct dirent *readdir(DIR *dir) {
+
+ WIN32_FIND_DATA fdata = {0};
+ HANDLE hfind;
+ char *tmp ;
+
+ if (!dir)
+ return NULL;
+
+ if (dir->flags & IS_NET) {
+ if(enum_next_share(dir)<0)
+ return NULL;
+ }
+ // special hack for root (which does not have . or ..)
+ else if (dir->flags & IS_ROOT) {
+ tmp= dir->orig_dir_name;
+ hfind = FindFirstFile(tmp,&fdata);
+ FindClose(dir->dd_fd);
+ dir->dd_fd = hfind;
+ dir->dd_size = fdata.nFileSizeLow;
+ (dir->dd_buf)->d_ino = inode++;
+ (dir->dd_buf)->d_off = 0;
+ (dir->dd_buf)->d_reclen = 0;
+ memcpy((dir->dd_buf)->d_name,fdata.cFileName,MAX_PATH);
+ dir->flags &= ~IS_ROOT;
+ return dir->dd_buf;
+
+ }
+ if(!(dir->flags & IS_NET) && !FindNextFile(dir->dd_fd,&fdata) ){
+ return NULL;
+ }
+ (dir->dd_buf)->d_ino = inode++;
+ (dir->dd_buf)->d_off = 0;
+ (dir->dd_buf)->d_reclen = 0;
+ if (! (dir->flags & IS_NET))
+ memcpy((dir->dd_buf)->d_name,fdata.cFileName,MAX_PATH);
+
+ return dir->dd_buf;
+
+}
+
+// Support for treating share names as directories
+// -amol 5/28/97
+static int ginited = 0;
+static HMODULE hmpr;
+
+typedef DWORD (__stdcall *open_fn)(DWORD,DWORD,DWORD,NETRESOURCE *, HANDLE*);
+typedef DWORD (__stdcall *close_fn)( HANDLE);
+typedef DWORD (__stdcall *enum_fn)( HANDLE,DWORD * ,void *,DWORD*);
+
+
+static open_fn p_WNetOpenEnum;
+static close_fn p_WNetCloseEnum;
+static enum_fn p_WNetEnumResource;
+
+HANDLE open_enum(char *server, WIN32_FIND_DATA *fdata) {
+
+ NETRESOURCE netres;
+ HANDLE henum;
+ unsigned long ret;
+ char *ptr;
+ int slashes;
+
+ nethandle_t *hnet;
+
+ ptr = server;
+ slashes = 0;
+
+ while(*ptr) {
+ if (*ptr == '/') {
+ *ptr = '\\';
+ slashes++;
+ }
+ ptr++;
+ }
+
+ if (!ginited) {
+ hmpr = LoadLibrary("MPR.DLL");
+ if (!hmpr)
+ return INVALID_HANDLE_VALUE;
+
+ p_WNetOpenEnum = (open_fn)GetProcAddress(hmpr,"WNetOpenEnumA");
+ p_WNetCloseEnum = (close_fn)GetProcAddress(hmpr,"WNetCloseEnum");
+ p_WNetEnumResource = (enum_fn)GetProcAddress(hmpr,"WNetEnumResourceA");
+
+ if (!p_WNetOpenEnum || !p_WNetCloseEnum || !p_WNetEnumResource)
+ return INVALID_HANDLE_VALUE;
+ ginited = 1;
+ }
+ if (slashes > 2)
+ return INVALID_HANDLE_VALUE;
+
+ memset(fdata,0,sizeof(WIN32_FIND_DATA));
+ fdata->cFileName[0] = '.';
+
+ netres.dwScope = RESOURCE_GLOBALNET;
+ netres.dwType = RESOURCETYPE_ANY;
+ netres.lpRemoteName = server;
+ netres.lpProvider = NULL;
+ netres.dwUsage = 0;
+
+ ret = p_WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,0,
+ &netres,&henum);
+ if (ret != NO_ERROR)
+ return INVALID_HANDLE_VALUE;
+
+ hnet = heap_alloc(sizeof(nethandle_t));
+ hnet->netres = heap_alloc(1024);/*FIXBUF*/
+ hnet->henum = henum;
+
+
+ return (HANDLE)hnet;
+
+}
+void close_enum(DIR*dptr) {
+ nethandle_t *hnet;
+
+ hnet = (nethandle_t*)(dptr->dd_fd);
+
+ heap_free(hnet->netres);
+ p_WNetCloseEnum(hnet->henum);
+ heap_free(hnet);
+}
+int enum_next_share(DIR *dir) {
+ nethandle_t *hnet;
+ char *tmp,*p1;
+ HANDLE henum;
+ DWORD count, breq,ret;
+
+ hnet = (nethandle_t*)(dir->dd_fd);
+ henum = hnet->henum;
+ count = 1;
+ breq = 1024;
+
+ ret = p_WNetEnumResource(henum, &count,hnet->netres,&breq);
+ if (ret != NO_ERROR)
+ return -1;
+
+ tmp = ((NETRESOURCE*)hnet->netres)->lpRemoteName;
+ p1 = &tmp[2];
+#ifdef DSPMBYTE
+ for (; *p1 != '\\'; p1 ++)
+ if (Ismbyte1(*p1) && *(p1 + 1))
+ p1 ++;
+#else /* DSPMBYTE */
+ while(*p1++ != '\\');
+#endif /* DSPMBYTE */
+
+ memcpy( (dir->dd_buf)->d_name, p1, lstrlen(p1)+1);
+
+ dir->dd_size = 0;
+
+ return 0;
+}
diff --git a/win32/dirent.h b/win32/dirent.h
new file mode 100644
index 000000000000..95fb8b38dd5a
--- /dev/null
+++ b/win32/dirent.h
@@ -0,0 +1,72 @@
+/*$Header: /p/tcsh/cvsroot/tcsh/win32/dirent.h,v 1.6 2006/03/03 22:08:45 amold Exp $*/
+/*-
+ * Copyright (c) 1980, 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * dirent.h
+ * directory interface functions. Sort of like dirent functions on unix.
+ * -amol
+ *
+ */
+#ifndef DIRENT_H
+#define DIRENT_H
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+
+#define heap_alloc(s) HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,(s))
+#define heap_free(p) HeapFree(GetProcessHeap(),0,(p))
+#define heap_realloc(p,s) HeapReAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,(p),(s))
+
+#define NAME_MAX MAX_PATH
+
+#define IS_ROOT 0x01
+#define IS_NET 0x02
+
+struct dirent {
+ long d_ino;
+ int d_off;
+ unsigned short d_reclen;
+ char d_name[NAME_MAX+1];
+};
+
+typedef struct {
+ HANDLE dd_fd;
+ int dd_loc;
+ int dd_size;
+ int flags;
+ char orig_dir_name[NAME_MAX +1];
+ struct dirent *dd_buf;
+}DIR;
+
+DIR *opendir(const char*);
+struct dirent *readdir(DIR*);
+int closedir(DIR*);
+void rewinddir(DIR*);
+#endif DIRENT_H
diff --git a/win32/example.tcshrc b/win32/example.tcshrc
new file mode 100644
index 000000000000..bb3b52d023b7
--- /dev/null
+++ b/win32/example.tcshrc
@@ -0,0 +1,211 @@
+#set verbose
+# set environmental variables
+ setenv EDITOR vi.exe
+ setenv PAGER c:/bin/less
+# setenv DISPLAY unix:0
+ setenv LESS "-B -c -h4 -i -M -q -x4 -G"
+ setenv SHELL C:/bin/tcsh.exe
+if ($?PROCESSOR_ARCHITECTURE) then
+ setenv USER $USERNAME
+ setenv LOGNAME $USER
+ setenv HOSTNAME $COMPUTERNAME
+endif
+
+umask 077
+if (! $?prompt) then # Everything else is interactive
+ exit(0)
+endif
+
+#tcsh-specific stuff
+if ($?tcsh) then
+# bindkey -v
+ set autolist
+ set listlinks
+ set pushdtohome
+ set visiblebell
+
+ set ellipsis
+ set rmstar
+# set prompt='%{f9%}%/%{gg%}(%{f2%}%?%{gg%})\>'
+if ($?TERM) then
+ if ($TERM == "emacs") then
+ set prompt='%/\>'
+ else
+ set prompt='%{f9%}%c03%{gg%}\>'
+ set prompt3 = '%{fc%}Correct to %R ?(y|n|e)%{gg%} '
+ endif
+else
+ set prompt='%{f9%}%c03%{gg%}\>'
+ set prompt3 = '%{fc%}Correct to %R ?(y|n|e)%{gg%} '
+endif
+
+ if ($?loginsh) then
+ set correct=all
+ set savedirs=100
+ set autocorrect
+ endif
+
+# set printexitvalue
+ set complete=igncase
+
+ complete which 'p/*/c/'
+ complete where 'p/*/c/'
+ complete start 'p/*/c/'
+ complete cd 'p/1/d/'
+ complete pushd 'p/1/d/'
+ complete popd 'p/1/d/'
+ complete tar 'n/-tvf/t:*.tar/' 'n/-xvf/t:*.tar/'
+ complete winhlp32 'p/*/f:*.HLP/'
+ complete pkunzip 'p/*/f:*.{ZIP,zip}/'
+ complete pkzip 'p/*/f:*.{zip,ZIP}/'
+ complete nmake 'p/*/f:*.MAK/'
+ complete bindkey 'p/*/b/'
+ complete set 'p/*/v/'
+ complete unset 'p/*/v/'
+
+# complex completions
+
+set noglob
+ complete gzip c/--/"(stdout to-stdout decompress uncompress \
+ force help list license no-name quiet recurse \
+ suffix test verbose version fast best)"/ \
+ c/-/"(c d f h l L n q r S t v V 1 2 3 4 5 6 7 8 9 -)"/\
+ n/{-S,--suffix}/x:'<file_name_suffix>'/ \
+ n/{-d,--{de,un}compress}/f:*.{gz,Z,z,zip,taz,tgz}/ \
+ N/{-d,--{de,un}compress}/f:*.{gz,Z,z,zip,taz,tgz}/ \
+ n/*/f:^*.{gz,Z,z,zip,taz,tgz}/
+ complete {gunzip,ungzip} c/--/"(stdout to-stdout force help list license \
+ no-name quiet recurse suffix test verbose version)"/ \
+ c/-/"(c f h l L n q r S t v V -)"/ \
+ n/{-S,--suffix}/x:'<file_name_suffix>'/ \
+ n/*/f:*.{gz,Z,z,zip,taz,tgz}/
+ complete mv c/--/"(backup force interactive update verbose suffix \
+ version-control help version)"/ \
+ c/-/"(b f i u v S V -)"/ \
+ n/{-S,--suffix}/x:'<suffix>'/ \
+ n/{-V,--version-control}/"(t numbered nil existing \
+ never simple)"/ n/-/f/ N/-/d/ p/1/f/ p/2/d/ n/*/f/
+ complete cp c/--/"(archive backup no-dereference force interactive \
+ link preserve symbolic-link update verbose parents \
+ one-file-system recursive suffix version-control help \
+ version)"/ c/-/"(a b d f i l p r s u v x P R S V -)"/ \
+ n/-*r/d/ n/{-S,--suffix}/x:'<suffix>'/ \
+ n/{-V,--version-control}/"(t numbered nil existing \
+ never simple)"/ n/-/f/ N/-/d/ p/1/f/ p/2/d/ n/*/f/
+
+
+ complete net p/1/"(accounts computer config continue file group \
+ help helpmsg localgroup name pause print send session \
+ share start statistics stop time use user view)"/ \
+ n/config/"(server workstation)"/ \
+ n/help/"(accounts computer config continue file group \
+ help helpmsg localgroup name pause print send session \
+ share start statistics stop time use user view)"/ \
+ n/view/"( \\server1 \\server2 )"/ \
+ n/\*/"( \\server1\share1 \\server2\share2 )"/
+
+ complete cl c@-@"(O G F C D E P U u I X v Z ? c H J nologo T V \
+ w W Y M L link)"@ \
+ n@-link@F:d:/lang/msdev/lib@ \
+ c/-O/"(1 2 a b d g i p s t w x y)"/ \
+ c/-G/"(3 4 5 B d r z e s f y h X)"/ \
+ c/-F/"(a A d e m o p r R)"/ \
+ c/-Z/"(i 7 d p a e g l z)"/ \
+ c/-M/"(T D L)"/ \
+ n@*@f:*.{c,C,cpp,CPP}@
+unset noglob
+#end completions
+
+ bindkey -b ^W backward-delete-word
+ bindkey -b ^U backward-kill-line
+ bindkey -b ^R complete-word-fwd
+ bindkey -b M-g list-glob
+ bindkey -b M-* expand-glob
+ bindkey -b M-v expand-variables
+ bindkey -b M-w normalize-command
+ bindkey -b M-/ which-command
+ bindkey -b M-r i-search-back
+ bindkey -b M-s i-search-fwd
+
+# bindkey -b C-I complete-word-fwd
+
+# NT specific bindkey extensions
+ bindkey -b N-up up-history
+ bindkey -b N-down down-history
+ bindkey -b N-right forward-char
+ bindkey -b N-left backward-char
+ bindkey -b N-del delete-char
+ bindkey -b N-ins overwrite-mode
+ bindkey -b N-1 which-command
+ bindkey -b N-2 expand-history
+ bindkey -b N-3 complete-word-raw
+ bindkey -b N-home beginning-of-line
+ bindkey -b N-end end-of-line
+
+#csh stuff
+else
+ set sedstr = "s:/[^/]*/[^/]*/[^/]*/::"
+ set prompt="`echo $cwd | sed -e 's:/[^/]*/[^/]*/[^/]*/::'`>"
+ alias cd ' cd \!*; set prompt=`echo $cwd | sed -e "$sedstr"`\>'
+ alias pushd ' pushd \!*; set prompt=`echo $cwd | sed -e "$sedstr"`\>'
+ alias popd ' popd \!*; set prompt=`echo $cwd | sed -e "$sedstr"`\>'
+endif
+
+#common to tcsh and csh
+
+
+
+if (! $?PATH_DONE) then
+set path=($path c:/gnubin .)
+setenv PATH_DONE 1
+endif
+
+set notify
+set cdpath=( C:/ D:/ )#E:/ H:/samples )
+set noclobber
+set filec
+set history=(1000)
+#"%h %T %{a2%}%R%{gg%}\n")
+#set histdup=all
+set savehist=(200 merge)
+set ignoreeof
+set fignore =(.obj .pdb .bsc .ilk .idb .OBJ .PDB .BSC .ILK .IDB)
+
+set NTlamepathfix
+eval `dircolors`
+unalias v d ls vdir dir
+
+alias ls ls-F
+alias lc ls $LS_OPTIONS
+alias h history
+#alias cwdcmd 'title `echo $cwd`'
+
+#
+# use the win32gnu utils for the following. or the win32sdk ones if you prefer.
+# PLEASE don't alias them to the posix utils in the reskit..
+#
+alias rm c:/gnubin/rm.exe -i
+alias rd c:/gnubin/rmdir.exe
+alias md c:/gnubin/mkdir.exe
+alias mv C:/bin/mv.exe -i
+alias cp C:/bin/cp.exe -i
+alias pwd 'echo $cwd'
+#
+alias env printenv
+alias net NET.EXE # avoid spelling correction to "set"
+alias cl CL.EXE # avoid spelling correction to "cp"
+alias word c:/apps/winword/winword/winword.exe
+alias excel e:/apps/excel/Excel/Excel.exe
+#alias telnet qvtnet32
+alias emacs c:/bin/emacs.csh
+alias gemacs c:/bin/gemacs.csh #gui emacs
+alias eshell c:/bin/eshell.csh
+alias helpcommand winhlp32
+alias benvcmd start cmd /k benv.cmd
+alias benv source c:/bin/razzle.csh
+
+alias use c:/bin/netuse.csh
+alias unuse c:/bin/netunuse.csh
+
+alias unsave unset savehist savedirs
+
diff --git a/win32/fork.c b/win32/fork.c
new file mode 100644
index 000000000000..d173e7ce0422
--- /dev/null
+++ b/win32/fork.c
@@ -0,0 +1,614 @@
+/*$Header: /p/tcsh/cvsroot/tcsh/win32/fork.c,v 1.11 2008/08/31 14:09:01 amold Exp $*/
+/*-
+ * Copyright (c) 1980, 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * The fork() here is based on the ideas used by cygwin
+ * -amol
+ *
+ */
+
+/*
+ * _M_ALPHA changes by Mark Tucker
+ */
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <fcntl.h>
+#include <io.h>
+#include <stdlib.h>
+#include <setjmp.h>
+#include <ntport.h>
+#include "forkdata.h"
+#include "sh.h"
+
+#pragma intrinsic("memcpy", "memset","memcmp")
+#pragma warning(push,3) // forget about W4 here
+
+typedef unsigned long u_long;
+typedef void *ptr_t;
+typedef unsigned char U_char;
+typedef unsigned int U_int;
+typedef unsigned short U_short;
+typedef unsigned long U_long;
+
+
+static void stack_probe(void *ptr) ;
+/*static void heap_init(void);*/
+BOOL CreateWow64Events(DWORD , HANDLE *, HANDLE *, BOOL);
+
+//
+// This is exported from the user program.
+// It must return 0 for no error !!!!
+extern int fork_copy_user_mem(HANDLE );
+
+/*
+ * Apparently , visual c++ on the alpha does not place the
+ * fork data contiguously. To work around that, Mark created
+ * this structure (see forkdata.h)
+ * -amol
+ */
+ForkData gForkData = {0,0,0,0,0,{0},0,0,0};
+
+
+#ifdef _M_IX86
+
+u_long _old_exr = 0; // Saved exception registration for longjmp
+
+#endif // _M_ALPHA
+/*
+ * This hack is an attempt at getting to the exception registration
+ * in an architecture-independent way. It's critical for longjmp in a
+ * code using __try/__except blocks. Microsoft Visual C++ does a global
+ * unwind during a longjmp, and that can cause havoc if the exception
+ * registration stored in longjmp is lower(address wise, indicating a jump
+ * from below of the stack upward.) in the stack than the current
+ * registration (returned by NtCurrentTeb).
+ *
+ * This works with VC++, because that's all I have. With other compilers,
+ * there might be minimal changes required, depending on where the
+ * exception registration record is stored in the longjmp structure.
+ *
+ * -amol 2/6/97
+ */
+
+NT_TIB * (* myNtCurrentTeb)(void);
+
+#define GETEXCEPTIONREGIST() (((NT_TIB*)get_teb())->ExceptionList)
+#define GETSTACKBASE() (((NT_TIB*)get_teb())->StackBase)
+
+
+
+static NT_TIB *the_tib;
+
+#if !defined(_M_IA64) && !defined(_M_AMD64)
+void *get_teb(void) {
+
+
+ if (the_tib)
+ return the_tib;
+
+ myNtCurrentTeb = (void*)GetProcAddress(LoadLibrary("ntdll.dll"),
+ "NtCurrentTeb");
+ if (!myNtCurrentTeb)
+ return NULL;
+ the_tib = myNtCurrentTeb();
+
+ if (the_tib == NULL)
+ abort();
+ return the_tib;
+}
+#else
+#define get_teb NtCurrentTeb
+#endif _M_IA64
+
+void set_stackbase(void*ptr){
+ GETSTACKBASE() = ptr;
+}
+/*
+ * This must be called by the application as the first thing it does.
+ * -amol 2/6/97
+ *
+ * Well, maybe not the FIRST..
+ * -amol 11/10/97
+ */
+
+extern BOOL bIsWow64Process;
+
+int fork_init(void) {
+
+
+ //heap_init(); Now called as the very first thing in silly_entry().
+
+ if (__forked) {
+
+
+ // stack_probe probes out a decent-sized stack for the child,
+ // since initially it has a very small stack (1 page).
+ //
+
+ /* not needed since default commit is set to 0.5MB in
+ * makefile.win32
+ *
+ * stack_probe((char *)__fork_stack_end - 64);
+ */
+
+ //
+ // Save the old Exception registration record and jump
+ // off the cliff.
+ //
+#ifdef _M_IX86
+ _old_exr = __fork_context[6];
+ __fork_context[6] =(int)GETEXCEPTIONREGIST();//tmp;
+#endif _M_ALPHA
+ //
+ // Whee !
+ longjmp(__fork_context,1);
+ }
+
+ return 0;
+}
+int fork(void) {
+
+ size_t rc;
+ size_t stacksize;
+ char modname[512];/*FIXBUF*/
+ HANDLE hProc,hThread, hArray[2];
+ STARTUPINFO si;
+ PROCESS_INFORMATION pi;
+ SECURITY_ATTRIBUTES sa;
+ DWORD dwCreationflags;
+ unsigned int priority;
+ HANDLE h64Parent,h64Child;
+
+#ifndef _M_ALPHA
+ unsigned long fork_stack_end;
+#endif _M_ALPHA
+
+ __fork_stack_begin =GETSTACKBASE();
+
+#ifndef _M_ALPHA
+ __fork_stack_end = &fork_stack_end;
+#else
+ __fork_stack_end = (unsigned long *)__asm("mov $sp, $0");
+#endif /*_M_ALPHA*/
+
+ h64Parent = h64Child = NULL;
+ //
+ // Create two inheritable events
+ //
+ sa.nLength = sizeof(sa);
+ sa.lpSecurityDescriptor =0;
+ sa.bInheritHandle = TRUE;
+ if (!__hforkchild)
+ __hforkchild = CreateEvent(&sa,TRUE,FALSE,NULL);
+ if (!__hforkparent)
+ __hforkparent = CreateEvent(&sa,TRUE,FALSE,NULL);
+
+ rc = setjmp(__fork_context);
+
+ if (rc) { // child
+#ifdef _M_IX86
+ //
+ // Restore old registration
+ // -amol 2/2/97
+ GETEXCEPTIONREGIST() = (struct _EXCEPTION_REGISTRATION_RECORD*)_old_exr;
+#endif // _M_ALPHA
+ SetEvent(__hforkchild);
+
+ dprintf("Child ready to rumble\n");
+ if(WaitForSingleObject(__hforkparent,FORK_TIMEOUT) != WAIT_OBJECT_0)
+ ExitProcess(0xFFFF);
+
+ CloseHandle(__hforkchild);
+ CloseHandle(__hforkparent);
+ __hforkchild = __hforkparent=0;
+
+ //__asm { int 3};
+ restore_fds();
+
+ STR_environ = blk2short(environ);
+ environ = short2blk(STR_environ); /* So that we can free it */
+
+ return 0;
+ }
+ copy_fds();
+ memset(&si,0,sizeof(si));
+ si.cb= sizeof(si);
+
+ /*
+ * This f!@#!@% function returns the old value even if the std handles
+ * have been closed.
+ * Skip this step, since we know tcsh will do the right thing later.
+ *
+ si.hStdInput= GetStdHandle(STD_INPUT_HANDLE);
+ si.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
+ si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
+ */
+
+ if (!GetModuleFileName(GetModuleHandle(NULL),modname,512) ) {
+ rc = GetLastError();
+ return -1;
+ }
+ dwCreationflags = GetPriorityClass(GetCurrentProcess());
+ priority = GetThreadPriority(GetCurrentThread());
+ rc = CreateProcess(NULL,
+ modname,
+ NULL,
+ NULL,
+ TRUE,
+ CREATE_SUSPENDED | dwCreationflags,
+ NULL,
+ NULL,
+ &si,
+ &pi);
+ if (!rc) {
+ rc = GetLastError();
+ return -1;
+ }
+
+ ResetEvent(__hforkchild);
+ ResetEvent(__hforkparent);
+
+ hProc = pi.hProcess;
+ hThread = pi.hThread;
+
+
+ __forked=1;
+ /*
+ * Usage of events in the wow64 case:
+ *
+ * h64Parent : initially non-signalled
+ * h64Child : initially non-signalled
+ *
+ * 1. Create the events, resume the child thread.
+ * 2. Child opens h64Parent to see if it is a child process in wow64
+ * 3. Child opens and sets h64Child to tell parent it's running. (This
+ * step is needed because we can't copy to a process created in the
+ * suspended state on wow64.)
+ * 4. Copy gForkData and then set h64Parent. This tells the child
+ * that the parameters in the structure are trustworthy.
+ * 5. Wait for h64Child so that we know the child has created the stack
+ * in dynamic memory.
+ *
+ * The rest of the fork hack should now proceed as in x86
+ *
+ */
+ if (bIsWow64Process) {
+
+ // allocate the heap for the child. this can be done even when
+ // the child is suspended.
+ // avoids inexplicable allocation failures in the child.
+ if (VirtualAllocEx(hProc,
+ __heap_base,
+ __heap_size,
+ MEM_RESERVE,
+ PAGE_READWRITE) == NULL) {
+ dprintf("virtual allocex failed %d\n",GetLastError());
+ goto error;
+ }
+ if (VirtualAllocEx(hProc,
+ __heap_base,
+ __heap_size,
+ MEM_COMMIT,
+ PAGE_READWRITE) == NULL) {
+ dprintf("virtual allocex2 failed %d\n",GetLastError());
+ goto error;
+ }
+
+ // Do NOT expect existing events
+ if (!CreateWow64Events(pi.dwProcessId,&h64Parent,&h64Child,FALSE)) {
+ goto error;
+ }
+ ResumeThread(hThread);
+
+ // wait for the child to tell us it is running
+ //if (WaitForSingleObject(h64Child,FORK_TIMEOUT) != WAIT_OBJECT_0) {
+ // rc = GetLastError();
+ // goto error;
+ //}
+ hArray[0] = h64Child;
+ hArray[1] = hProc;
+
+ if (WaitForMultipleObjects(2,hArray,FALSE,FORK_TIMEOUT) !=
+ WAIT_OBJECT_0){
+
+ rc = GetLastError();
+ goto error;
+ }
+
+ }
+ //
+ // Copy all the shared data
+ //
+ if (!WriteProcessMemory(hProc,&gForkData,&gForkData,
+ sizeof(ForkData),&rc)) {
+ goto error;
+ }
+ if (rc != sizeof(ForkData))
+ goto error;
+
+ if (!bIsWow64Process) {
+ rc = ResumeThread(hThread);
+ }
+ // in the wow64 case, the child will be waiting on h64parent again.
+ // set it, and then wait for h64child. This will mean the child has
+ // a stack set up at the right location.
+ else {
+ SetEvent(h64Parent);
+ hArray[0] = h64Child;
+ hArray[1] = hProc;
+
+ if (WaitForMultipleObjects(2,hArray,FALSE,FORK_TIMEOUT) !=
+ WAIT_OBJECT_0){
+
+ rc = GetLastError();
+ goto error;
+ }
+ CloseHandle(h64Parent);
+ CloseHandle(h64Child);
+ h64Parent = h64Child = NULL;
+ }
+
+ //
+ // Wait for the child to start and init itself.
+ // The timeout is so that we don't wait too long
+ //
+ hArray[0] = __hforkchild;
+ hArray[1] = hProc;
+
+ if (WaitForMultipleObjects(2,hArray,FALSE,FORK_TIMEOUT) != WAIT_OBJECT_0){
+
+ int err = GetLastError(); // For debugging purposes
+ dprintf("wait failed err %d\n",err);
+ goto error;
+ }
+
+ // Stop the child again and copy the stack and heap
+ //
+ SuspendThread(hThread);
+
+ if (!SetThreadPriority(hThread,priority) ) {
+ priority =GetLastError();
+ }
+
+ // stack
+ stacksize = (char*)__fork_stack_begin - (char*)__fork_stack_end;
+ if (!WriteProcessMemory(hProc,(char *)__fork_stack_end,
+ (char *)__fork_stack_end,
+ (u_long)stacksize,
+ &rc)){
+ goto error;
+ }
+ //
+ // copy heap itself
+ if (!WriteProcessMemory(hProc, (void*)__heap_base,(void*)__heap_base,
+ (DWORD)((char*)__heap_top-(char*)__heap_base),
+ &rc)){
+ goto error;
+ }
+
+ rc = fork_copy_user_mem(hProc);
+
+ if(rc) {
+ goto error;
+ }
+
+ // Release the child.
+ SetEvent(__hforkparent);
+ rc = ResumeThread(hThread);
+
+ __forked=0;
+ dprintf("forked process %d\n",pi.dwProcessId);
+ start_sigchild_thread(hProc,pi.dwProcessId);
+ close_copied_fds();
+
+ CloseHandle(hThread);
+ //
+ // return process id to parent.
+ return pi.dwProcessId;
+
+error:
+ __forked=0;
+ SetEvent(__hforkparent);
+ ResumeThread(hThread);
+ CloseHandle(hProc);
+ CloseHandle(hThread);
+ if (h64Parent) {
+ SetEvent(h64Parent); // don't let child block forever
+ CloseHandle(h64Parent);
+ }
+ if (h64Child)
+ CloseHandle(h64Child);
+ return -1;
+}
+#pragma optimize("",off)
+// The damn optimizer will remove the recursion, resulting in an infinite
+// loop. -amol 4/17/97
+void stack_probe (void *ptr) {
+ char buf[1000];
+ int x;
+
+ if (&x > (int *)ptr)
+ stack_probe(ptr);
+ (void)buf;
+}
+#pragma optimize("",on)
+//
+// This function basically reserves some heap space.
+// In the child it also commits the size committed in the parent.
+void heap_init(void) {
+
+ char * temp;
+ int err;
+ if (__forked) {
+ temp = (char *)VirtualAlloc((void*)__heap_base,__heap_size, MEM_RESERVE,
+ PAGE_READWRITE);
+ if (temp != (char*)__heap_base) {
+ if (!temp){
+ err = GetLastError();
+ if (bIsWow64Process)
+ ExitProcess(0);
+ abort();
+ }
+ else
+ __heap_base = temp;
+ }
+ if (!VirtualAlloc(__heap_base,(char*)__heap_top -(char*)__heap_base,
+ MEM_COMMIT,PAGE_READWRITE)){
+ err = GetLastError();
+ if (bIsWow64Process)
+ ExitProcess(0);
+ abort();
+ }
+ temp = (char*)__heap_base;
+ }
+ else {
+ SYSTEM_INFO sysinfo;
+ GetSystemInfo(&sysinfo);
+ __heap_size = sysinfo.dwPageSize * 1024;
+ __heap_base = VirtualAlloc(0 , __heap_size,MEM_RESERVE|MEM_TOP_DOWN,
+ PAGE_READWRITE);
+
+ if (__heap_base == 0) {
+ abort();
+ }
+
+ __heap_top = __heap_base;
+ }
+
+}
+//
+// Implementation of sbrk() for the fmalloc family
+//
+void * sbrk(int delta) {
+
+ void *retval;
+ void *old_top=__heap_top;
+ char *b = (char*)__heap_top;
+
+ if (delta == 0)
+ return __heap_top;
+ if (delta > 0) {
+
+ retval =VirtualAlloc((void*)__heap_top,delta,MEM_COMMIT,PAGE_READWRITE);
+
+ if (retval == 0 )
+ abort();
+
+ b += delta;
+ __heap_top = (void*)b;
+ }
+ else {
+ retval = VirtualAlloc((void*)((char*)__heap_top - delta),
+ delta,MEM_DECOMMIT, PAGE_READWRITE);
+
+ if (retval == 0)
+ abort();
+
+ b -= delta;
+ __heap_top = (void*)b;
+ }
+
+ return (void*) old_top;
+}
+/*
+ * Semantics of CreateWow64Events
+ *
+ * Try to open the events even if bOpenExisting is FALSE. This will help
+ * us detect name duplication.
+ *
+ * 1. If OpenEvent succeeds,and bOpenExisting is FALSE, fail.
+ *
+ * 2. If OpenEvent failed,and bOpenExisting is TRUE fail
+ *
+ * 3. else create the events anew
+ *
+ */
+#define TCSH_WOW64_PARENT_EVENT_NAME "tcsh-wow64-parent-event"
+#define TCSH_WOW64_CHILD_EVENT_NAME "tcsh-wow64-child-event"
+BOOL CreateWow64Events(DWORD pid, HANDLE *hParent, HANDLE *hChild,
+ BOOL bOpenExisting) {
+
+ SECURITY_ATTRIBUTES sa;
+ char parentname[256],childname[256];
+
+ *hParent = *hChild = NULL;
+
+ // make darn sure they're not inherited
+ sa.nLength = sizeof(sa);
+ sa.lpSecurityDescriptor =0;
+ sa.bInheritHandle = FALSE;
+ //
+
+#pragma warning(disable:4995)
+
+ // This event tells the child to hold for gForkData to be copied
+ wsprintfA(parentname, "Local\\%d-%s",pid, TCSH_WOW64_PARENT_EVENT_NAME);
+
+ wsprintfA(childname, "Local\\%d-%s",pid, TCSH_WOW64_CHILD_EVENT_NAME );
+
+#pragma warning(default:4995)
+
+ *hParent = OpenEvent(EVENT_ALL_ACCESS,FALSE, parentname);
+
+ if(*hParent) {
+ if (bOpenExisting == FALSE) { // didn't expect to be a child process
+ CloseHandle(*hParent);
+ *hParent = NULL;
+ return FALSE;
+ }
+
+ *hChild = OpenEvent(EVENT_ALL_ACCESS,FALSE, childname);
+ if (!*hChild) {
+ CloseHandle(*hParent);
+ *hParent = NULL;
+ return FALSE;
+ }
+
+ return TRUE;
+ }
+ else { //event does not exist
+ if (bOpenExisting == TRUE)
+ return FALSE;
+ }
+
+ *hParent = CreateEvent(&sa,FALSE,FALSE,parentname);
+ if (!*hParent)
+ return FALSE;
+
+
+ *hChild = CreateEvent(&sa,FALSE,FALSE,childname);
+ if (!*hChild){
+ CloseHandle(*hParent);
+ *hParent = NULL;
+ return FALSE;
+ }
+ return TRUE;
+}
diff --git a/win32/forkdata.h b/win32/forkdata.h
new file mode 100644
index 000000000000..5d3f30a37f4e
--- /dev/null
+++ b/win32/forkdata.h
@@ -0,0 +1,76 @@
+/*$Header: /p/tcsh/cvsroot/tcsh/win32/forkdata.h,v 1.4 2004/05/19 18:22:27 christos Exp $*/
+/*-
+ * Copyright (c) 1980, 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+
+#ifndef FORK_DATA_H
+#define FORK_DATA_H
+
+#include <setjmp.h>
+
+/*
+ * This structure is copied by fork() to the child process. It
+ * contains variables of national importance
+ *
+ * Thanks to Mark Tucker for the idea. tcsh now finally works on
+ * alphas.
+ * -amol
+ */
+typedef struct _fork_data {
+ unsigned long _forked;
+ void *_fork_stack_begin;
+ void *_fork_stack_end;
+ unsigned long _heap_size;
+ HANDLE _hforkparent, _hforkchild;
+ void * _heap_base;
+ void * _heap_top;
+ jmp_buf _fork_context;
+} ForkData;
+
+#define __forked gForkData._forked
+#define __fork_stack_begin gForkData._fork_stack_begin
+#define __fork_stack_end gForkData._fork_stack_end
+#define __hforkparent gForkData._hforkparent
+#define __hforkchild gForkData._hforkchild
+#define __fork_context gForkData._fork_context
+#define __heap_base gForkData._heap_base
+#define __heap_size gForkData._heap_size
+#define __heap_top gForkData._heap_top
+
+extern ForkData gForkData;
+
+#ifdef NTDBG
+#define FORK_TIMEOUT INFINITE
+#else
+#define FORK_TIMEOUT (50000)
+#endif /*!NTDBG */
+
+
+
+#endif FORK_DATA_H
diff --git a/win32/globals.c b/win32/globals.c
new file mode 100644
index 000000000000..7c5cc95b5217
--- /dev/null
+++ b/win32/globals.c
@@ -0,0 +1,222 @@
+/*$Header: /p/tcsh/cvsroot/tcsh/win32/globals.c,v 1.11 2008/09/10 20:34:21 amold Exp $*/
+/*-
+ * Copyright (c) 1980, 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+/*
+ * globals.c: The mem locations needed in the child are copied here.
+ * -amol
+ */
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <stdlib.h>
+#include <stdio.h>
+#define STRSAFE_LIB
+#define STRSAFE_NO_CCH_FUNCTIONS
+#include <strsafe.h>
+
+extern unsigned long bookend1,bookend2;
+extern char **environ;
+
+#define IMAGE_SIZEOF_NT_OPTIONAL32_HEADER 224
+#define IMAGE_SIZEOF_NT_OPTIONAL64_HEADER 240
+
+#ifdef _WIN64
+#define IMAGE_SIZEOF_NT_OPTIONAL_HEADER IMAGE_SIZEOF_NT_OPTIONAL64_HEADER
+#else
+#define IMAGE_SIZEOF_NT_OPTIONAL_HEADER IMAGE_SIZEOF_NT_OPTIONAL32_HEADER
+#endif
+
+
+#undef dprintf
+void
+dprintf(char *format, ...)
+{ /* } */
+ va_list vl;
+ char putbuf[2048];
+ DWORD err;
+
+ err = GetLastError();
+ {
+ va_start(vl, format);
+#pragma warning(disable:4995)
+ wvsprintf(putbuf,format, vl);
+#pragma warning(default:4995)
+ va_end(vl);
+ OutputDebugString(putbuf);
+ }
+ SetLastError(err);
+}
+/*
+ * This function is called by fork(). The process must copy
+ * whatever memory is needed in the child. hproc is a handle
+ * to the child process
+ *
+ */
+int fork_copy_user_mem(HANDLE hproc) {
+
+ SIZE_T bytes,rc;
+ SIZE_T size;
+ void *low = &bookend1, *high= &bookend2;
+
+ if(&bookend1 > &bookend2) {
+ low = &bookend2;
+ high = &bookend1;
+ }
+
+ size =(char*)high - (char*)low;
+
+
+ rc =WriteProcessMemory(hproc,low,low, (DWORD)size, &bytes);
+
+ if (!rc) {
+ rc = GetLastError();
+ return -1;
+ }
+ if (size != bytes) {
+ //dprintf("size %d , wrote %d\n",size,bytes);
+ }
+ return 0;
+}
+/*
+ * Inspired by Microsoft KB article ID: Q90493
+ *
+ * returns 0 (false) if app is non-gui, 1 otherwise.
+*/
+#include <winnt.h>
+#include <ntport.h>
+
+__inline BOOL wait_for_io(HANDLE hi, OVERLAPPED *pO) {
+
+ DWORD bytes = 0;
+ if(GetLastError() != ERROR_IO_PENDING)
+ {
+ return FALSE;
+ }
+
+ return GetOverlappedResult(hi,pO,&bytes,TRUE);
+}
+#define CHECK_IO(h,o) if(!wait_for_io(h,o)) {goto done;}
+
+int is_gui(char *exename) {
+
+ HANDLE hImage;
+
+ DWORD bytes;
+ OVERLAPPED overlap;
+
+ ULONG ntSignature;
+
+ struct DosHeader{
+ IMAGE_DOS_HEADER doshdr;
+ DWORD extra[16];
+ };
+
+ struct DosHeader dh;
+ IMAGE_OPTIONAL_HEADER optionalhdr;
+
+ int retCode = 0;
+
+ memset(&overlap,0,sizeof(overlap));
+
+
+ hImage = CreateFile(exename, GENERIC_READ, FILE_SHARE_READ, NULL,
+ OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL| FILE_FLAG_OVERLAPPED, NULL);
+ if (INVALID_HANDLE_VALUE == hImage) {
+ return 0;
+ }
+
+ ReadFile(hImage, &dh, sizeof(struct DosHeader), &bytes,&overlap);
+ CHECK_IO(hImage,&overlap);
+
+
+ if (IMAGE_DOS_SIGNATURE != dh.doshdr.e_magic) {
+ goto done;
+ }
+
+ // read from the coffheaderoffset;
+ overlap.Offset = dh.doshdr.e_lfanew;
+
+ ReadFile(hImage, &ntSignature, sizeof(ULONG), &bytes,&overlap);
+ CHECK_IO(hImage,&overlap);
+
+ if (IMAGE_NT_SIGNATURE != ntSignature) {
+ goto done;
+ }
+ overlap.Offset = dh.doshdr.e_lfanew + sizeof(ULONG) +
+ sizeof(IMAGE_FILE_HEADER);
+
+ ReadFile(hImage, &optionalhdr,IMAGE_SIZEOF_NT_OPTIONAL_HEADER, &bytes,&overlap);
+ CHECK_IO(hImage,&overlap);
+
+ if (optionalhdr.Subsystem ==IMAGE_SUBSYSTEM_WINDOWS_GUI)
+ retCode = 1;
+done:
+ CloseHandle(hImage);
+ return retCode;
+}
+int is_9x_gui(char *prog) {
+
+ char *progpath;
+ DWORD dwret;
+ char *pathbuf;
+ char *pext;
+
+ pathbuf=heap_alloc(MAX_PATH+1);
+ if(!pathbuf)
+ return 0;
+
+ progpath=heap_alloc((MAX_PATH<<1)+1);
+ if(!progpath)
+ return 0;
+
+ if (GetEnvironmentVariable("PATH",pathbuf,MAX_PATH) ==0) {
+ goto failed;
+ }
+
+ pathbuf[MAX_PATH]=0;
+
+ dwret = SearchPath(pathbuf,prog,".EXE",MAX_PATH<<1,progpath,&pext);
+
+ if ( (dwret == 0) || (dwret > (MAX_PATH<<1) ) )
+ goto failed;
+
+ dprintf("progpath is %s\n",progpath);
+ dwret = is_gui(progpath);
+
+ heap_free(pathbuf);
+ heap_free(progpath);
+
+ return dwret;
+
+failed:
+ heap_free(pathbuf);
+ heap_free(progpath);
+ return 0;
+
+
+}
diff --git a/win32/io.c b/win32/io.c
new file mode 100644
index 000000000000..0124f1b2a028
--- /dev/null
+++ b/win32/io.c
@@ -0,0 +1,479 @@
+/*$Header: /p/tcsh/cvsroot/tcsh/win32/io.c,v 1.9 2006/04/13 00:59:02 amold Exp $*/
+/*-
+ * Copyright (c) 1980, 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * io.c
+ * wrapper functions for some i/o routines.
+ * -amol
+ *
+ */
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <memory.h>
+#include <errno.h>
+#include "sh.h"
+#include "ntport.h"
+#include "signal.h"
+
+
+#pragma warning(disable:4127) //conditional expr is constant
+
+#define CR 0x0d
+
+
+extern void make_err_str(unsigned int ,char *,int ) ;
+extern void generic_handler(int);
+extern int console_write(HANDLE,unsigned char*,int);
+
+int consoleread(HANDLE , unsigned char * ,size_t ) ;
+
+INPUT_RECORD girec[2048];
+
+unsigned short __nt_want_vcode=0,__nt_vcode=0;
+HANDLE __h_con_alarm=0;
+HANDLE __h_con_int=0;
+HANDLE __h_con_hup=0;
+
+extern int NoNLSRebind;
+
+extern int OLDSTD, SHIN;
+/*
+ * force_read: Forces a ReadFile, instead of ReadConsole
+ *
+ */
+int force_read(int fd, unsigned char * buf, size_t howmany) {
+ DWORD numread=0,err=0;
+ HANDLE hRead ;
+
+
+ hRead= (HANDLE)__nt_get_osfhandle(fd);
+ if (hRead == INVALID_HANDLE_VALUE) {
+ return 0;
+ }
+again:
+ if (!ReadFile(hRead, buf,(DWORD)howmany,&numread, NULL ) ){
+ err = GetLastError();
+ switch(err) {
+ case ERROR_IO_PENDING:
+ break;
+ case ERROR_ACCESS_DENIED:
+ case ERROR_INVALID_HANDLE:
+ errno = EBADF;
+ return -1;
+ break;
+ case ERROR_HANDLE_EOF:
+ case ERROR_BROKEN_PIPE:
+ errno = 0;
+ return 0;
+ default:
+ errno = EBADF;
+ return 0;
+ }
+ }
+ if (numread == 1 && buf[0] == CR)
+ goto again;
+ return numread;
+}
+int nt_read(int fd, unsigned char * buf, size_t howmany) {
+
+ DWORD numread=0,err=0;
+ HANDLE hRead ;
+ DWORD ftype;
+ //
+
+ hRead= (HANDLE)__nt_get_osfhandle(fd);
+ if (hRead == INVALID_HANDLE_VALUE) {
+ return 0;
+ }
+
+ ftype = GetFileType(hRead);
+
+
+ if ((ftype == FILE_TYPE_CHAR) /*&& (fd != OLDSTD) && (fd != SHIN)*/)
+ return consoleread(hRead,buf,howmany);
+again:
+ if (!ReadFile(hRead, buf,(DWORD)howmany,&numread, NULL ) ){
+ err = GetLastError();
+ switch(err) {
+ case ERROR_IO_PENDING:
+ break;
+ case ERROR_ACCESS_DENIED:
+ case ERROR_INVALID_HANDLE:
+ errno = EBADF;
+ return -1;
+ break;
+ case ERROR_HANDLE_EOF:
+ case ERROR_BROKEN_PIPE:
+ errno = 0;
+ return 0;
+ default:
+ errno = EBADF;
+ return 0;
+ }
+ }
+ if (numread) {
+ if (buf[numread-1] == CR)
+ numread--;
+ if (numread == 0)
+ goto again;
+ }
+ return numread;
+}
+
+/* color-ls patches from TAGA nayuta (nayuta@is.s.u-tokyo.ac.jp) */
+#ifdef COLOR_LS_F
+
+int nt_write_(int , const unsigned char * , size_t );
+int nt_write(int fd, const unsigned char * buf, size_t howmany) {
+ static unsigned char color_buf[256];
+ static char len = 0;
+
+ ssize_t i;
+ ssize_t start = 0;
+ int rc,wrote = 0;
+
+ if (!isatty(fd) || (varval(STRcolor) == NULL))
+ return nt_write_(fd, buf, howmany);
+
+ for (i = 0; i < howmany; i++) {
+ switch (len) {
+ case 0:
+ if (buf[i] == '\x1b') {
+ color_buf[len++] = buf[i];
+ if (0 < i - start){
+ if ((rc=nt_write_(fd, &(buf[start]), i - start)) <0)
+ return -1;
+ else
+ wrote += rc;
+ }
+ start = -1;
+ }
+ break;
+
+ case 1:
+ if (buf[i] != '[')
+ goto set_color;
+ color_buf[len++] = buf[i];
+ break;
+
+ default:
+ if (buf[i] == 'm' || (!isdigit(buf[i]) && buf[i] != ';'))
+ goto set_color;
+ color_buf[len++] = buf[i];
+ break;
+
+ case sizeof(color_buf) - 1:
+set_color:
+ color_buf[len] = '\0';
+ set_attributes(color_buf);
+ len = 0;
+ start = i + 1;
+ break;
+ }
+ }
+
+ if (0 < i - start && 0 <= start) {
+ if ((rc=nt_write_(fd, &(buf[start]), i - start)) < 0)
+ return -1;
+ else
+ wrote += rc;
+ }
+ return wrote;
+}
+int nt_write_(int fd, const unsigned char * buf, size_t howmany)
+#else /* if !COLOR_LS_F */
+int nt_write(int fd, const unsigned char * buf, size_t howmany)
+#endif /* COLOR_LS_F */
+{
+ int bytes_rtn,err;
+ HANDLE hout;
+
+
+ hout = (HANDLE)__nt_get_osfhandle(fd);
+ /*
+ if (isatty(fd))
+ ;// return console_write(hout,buf,howmany);
+ */
+
+ if(!WriteFile(hout, buf,(DWORD)howmany,(ULONG*)&bytes_rtn,
+ NULL)){
+ err = GetLastError();
+ switch(err) {
+ case ERROR_ACCESS_DENIED:
+ case ERROR_INVALID_HANDLE:
+ errno = EBADF;
+ return -1;
+ break;
+ case ERROR_BROKEN_PIPE:
+ errno = EPIPE;
+ return -1;
+ default:
+ errno = EBADF;
+ return -1;
+ }
+
+ }
+ return bytes_rtn?bytes_rtn:-1;
+
+}
+
+#define IS_CTRL_COMBO(a) ( (a) & ( RIGHT_CTRL_PRESSED | LEFT_CTRL_PRESSED) )
+#define IS_ALT_COMBO(a) ( /*(a) &*/ alt_pressed )
+#define IS_SHIFT_COMBO(a) ( (a) & SHIFT_PRESSED)
+
+int consoleread(HANDLE hInput, unsigned char * buf,size_t howmany) {
+
+ INPUT_RECORD *irec = NULL;
+ DWORD numread,controlkey,i;
+ WORD vcode;
+ unsigned char ch;
+ int rc;
+ size_t where=0;
+ int alt_pressed = 0,memfree=0;
+ HANDLE hevents[4];
+ static int pre_ch = -1;
+
+ if (0 <= pre_ch) {
+ buf[0] = (unsigned char)pre_ch;
+ pre_ch = -1;
+ return 1;
+ }
+
+ howmany /= 2; // [ALT + KEY] is expanded ESC KEY, so we need more buffer
+ if (howmany == 0)
+ howmany = 1;
+
+ if (howmany > 2048){
+ irec = heap_alloc(howmany*sizeof(INPUT_RECORD));
+ memfree=1;
+ }
+ else
+ irec = &(girec[0]);
+ if (!irec){
+ errno = ENOMEM;
+ return -1;
+ }
+ while(1) {
+ hevents[0] = __h_con_alarm;
+ hevents[1] = __h_con_int;
+ hevents[2] = __h_con_hup;
+ hevents[3] = hInput;
+ rc = WaitForMultipleObjects(sizeof(hevents)/sizeof(hevents[0]),
+ hevents,FALSE,INFINITE);
+ if (rc == WAIT_OBJECT_0) {
+ generic_handler(SIGALRM);
+ }
+ if (rc == (WAIT_OBJECT_0 +1) ) {
+ errno = EINTR;
+ generic_handler(SIGINT);
+ break;
+ }
+ if (rc == (WAIT_OBJECT_0 +2) ) {
+ errno = EINTR;
+ generic_handler(SIGHUP);
+ break;
+ }
+ rc = ReadConsoleInput(hInput,irec,(DWORD)howmany,&numread);
+ if (!rc) {
+ rc = GetLastError();
+ switch (rc) {
+ case ERROR_INVALID_HANDLE:
+ case ERROR_ACCESS_DENIED:
+ errno = EBADF;
+ break;
+ }
+ if (memfree)
+ heap_free(irec);
+ return -1;
+ }
+ __nt_vcode=0;
+ for(i=0;i<numread;i++) {
+ switch(irec[i].EventType) {
+ case KEY_EVENT:
+ if (irec[i].Event.KeyEvent.bKeyDown) {
+ vcode=(irec[i].Event.KeyEvent.wVirtualKeyCode);
+ ch=(irec[i].Event.KeyEvent.uChar.AsciiChar);
+ controlkey=(irec[i].Event.KeyEvent.dwControlKeyState);
+ if (controlkey & LEFT_ALT_PRESSED)
+ alt_pressed=1;
+ else if (controlkey & RIGHT_ALT_PRESSED){
+ if (NoNLSRebind)
+ alt_pressed=1;
+ }
+
+ if (__nt_want_vcode != 1)
+ goto skippy;
+
+ if (vcode >= VK_F1 && vcode <= VK_F24) {
+
+ __nt_vcode=NT_SPECIFIC_BINDING_OFFSET ;
+ __nt_vcode += (vcode- VK_F1) + SINGLE_KEY_OFFSET;
+
+ if (IS_CTRL_COMBO(controlkey))
+ __nt_vcode += CTRL_KEY_OFFSET;
+
+ else if (IS_ALT_COMBO(controlkey))
+ __nt_vcode += ALT_KEY_OFFSET;
+ else if (IS_SHIFT_COMBO(controlkey))
+ __nt_vcode += SHIFT_KEY_OFFSET;
+
+ __nt_want_vcode=2;
+
+ return 1;
+ }
+ else if (vcode>= VK_PRIOR && vcode <= VK_DOWN) {
+
+ __nt_vcode = NT_SPECIFIC_BINDING_OFFSET ;
+ __nt_vcode += KEYPAD_MAPPING_BEGIN;
+ __nt_vcode += (vcode -VK_PRIOR);
+
+ __nt_vcode += SINGLE_KEY_OFFSET ;
+
+ if (IS_CTRL_COMBO(controlkey))
+ __nt_vcode += CTRL_KEY_OFFSET;
+
+ else if (IS_ALT_COMBO(controlkey))
+ __nt_vcode += ALT_KEY_OFFSET;
+ else if (IS_SHIFT_COMBO(controlkey))
+ __nt_vcode += SHIFT_KEY_OFFSET;
+
+ __nt_want_vcode=2;
+ return 1;
+ }
+ else if (vcode == VK_INSERT) {
+ __nt_vcode = NT_SPECIFIC_BINDING_OFFSET ;
+ __nt_vcode += INS_DEL_MAPPING_BEGIN;
+
+ if (IS_CTRL_COMBO(controlkey))
+ __nt_vcode += CTRL_KEY_OFFSET;
+
+ else if (IS_ALT_COMBO(controlkey))
+ __nt_vcode += ALT_KEY_OFFSET;
+
+ else if (IS_SHIFT_COMBO(controlkey))
+ __nt_vcode += SHIFT_KEY_OFFSET;
+
+ __nt_want_vcode=2;
+ return 1;
+ }
+ else if (vcode == VK_DELETE) {
+ __nt_vcode = NT_SPECIFIC_BINDING_OFFSET ;
+ __nt_vcode += INS_DEL_MAPPING_BEGIN + 1;
+
+ if (IS_CTRL_COMBO(controlkey))
+ __nt_vcode += CTRL_KEY_OFFSET;
+
+ else if (IS_ALT_COMBO(controlkey))
+ __nt_vcode += ALT_KEY_OFFSET;
+
+ else if (IS_SHIFT_COMBO(controlkey))
+ __nt_vcode += SHIFT_KEY_OFFSET;
+
+ __nt_want_vcode=2;
+
+ return 1;
+ }
+skippy:
+ switch(vcode) {
+ case VK_ESCAPE:
+ buf[where++]='\033';
+ break;
+ default:
+ if(ch ){
+ /*
+ * Looks like win95 has a spurious
+ * newline left over
+ */
+ if (gdwPlatform ==
+ VER_PLATFORM_WIN32_WINDOWS &&
+ ch == '\r'){
+ DWORD bread;
+ (void)ReadFile(hInput,&ch,1,&bread,NULL);
+ }
+ /* patch from TAGA nayuta */
+ if ( NoNLSRebind &&
+ (ch == ' ' || ch == '@') &&
+ IS_CTRL_COMBO(controlkey)
+ /*(controlkey & LEFT_CTRL_PRESSED ||
+ controlkey & RIGHT_CTRL_PRESSED)*/
+ )
+ ch = 0;
+ if (alt_pressed) {
+#ifdef DSPMBYTE
+ buf[where++] = '\033';
+ if (howmany == 1)
+ pre_ch = ch;
+ else
+ buf[where++] = ch;
+#else /* !DSPMBYTE */
+ buf[where++] = ch | 0200;
+#endif /* !DSPMBYTE */
+ }
+ else
+ buf[where++] = ch;
+ }
+ break;
+ }
+
+ alt_pressed=0;
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ if (where == 0)
+ continue;
+ if (howmany < where) // avoid trashing memory. -amol 4/16/97
+ buf[where]=0;
+ break;
+ }
+ if (memfree)
+ heap_free(irec);
+ if (!where)
+ return -1;
+ return (int)(where );
+}
+int console_write(HANDLE hout, unsigned char * buf,int howmany) {
+ int bytes,rc;
+
+ bytes = -1;
+
+ rc = WriteConsole(hout,buf,howmany,(DWORD*)&bytes,NULL);
+ if (!rc) {
+ errno = EBADF;
+ bytes = -1;
+ rc = GetLastError();
+ }
+
+ return bytes;
+}
diff --git a/win32/msg/Makefile b/win32/msg/Makefile
new file mode 100644
index 000000000000..bfe1e3541a11
--- /dev/null
+++ b/win32/msg/Makefile
@@ -0,0 +1,49 @@
+!if "$(PROCESSOR_ARCHITECTURE)" == "x86"
+MACHINE = ix86
+!else if "$(PROCESSOR_ARCHITECTURE)" == "ALPHA"
+MACHINE = alpha
+!else #Assume win9x
+MACHINE = ix86
+!endif
+LIBS= libcmt.lib kernel32.lib
+
+all: tcshfr.dll tcshc.dll tcshde.dll tcshsp.dll tcshja.dll tcsh-it.dll
+
+stubdll.obj:stubdll.c
+ cl -W3 -MT -c stubdll.c
+
+tcshgr.dll: tcshgr.res stubdll.obj
+ link -machine:$(MACHINE) -nodefaultlib $(LIBS) tcshgr.res stubdll.obj \
+ -out:tcshgr.dll
+
+tcshfr.dll: tcshfr.res stubdll.obj
+ link -machine:$(MACHINE) -dll -nodefaultlib $(LIBS) tcshfr.res stubdll.obj \
+ -out:tcshfr.dll
+
+tcshde.dll: tcshde.res stubdll.obj
+ link -machine:$(MACHINE) -dll -nodefaultlib $(LIBS) tcshde.res stubdll.obj \
+ -out:tcshde.dll
+
+tcshsp.dll: tcshsp.res stubdll.obj
+ link -machine:$(MACHINE) -dll -nodefaultlib $(LIBS) tcshsp.res stubdll.obj \
+ -out:tcshsp.dll
+
+tcsh-it.dll: tcsh-it.res stubdll.obj
+ link -machine:$(MACHINE) -dll -nodefaultlib $(LIBS) tcsh-it.res stubdll.obj\
+ -out:tcsh-it.dll
+
+tcshja.dll: tcshja.res stubdll.obj
+ link -machine:$(MACHINE) -dll -nodefaultlib $(LIBS) tcshja.res stubdll.obj \
+ -out:tcshja.dll
+
+tcshc.dll: tcshc.res stubdll.obj
+ link -machine:$(MACHINE) -dll -nodefaultlib $(LIBS) tcshc.res stubdll.obj \
+ -out:tcshc.dll
+
+test.exe: test.obj
+ link test.obj user32.lib -out:test.exe
+clean:
+ -del *.obj *.res
+
+cleanall: clean
+ -del *.dll *.exe
diff --git a/win32/msg/makerc.pl b/win32/msg/makerc.pl
new file mode 100644
index 000000000000..39805f7c3914
--- /dev/null
+++ b/win32/msg/makerc.pl
@@ -0,0 +1,43 @@
+# This script converts a tcsh nls file into a format suitable for compiling
+# with RC and stubdll.c. This gives us a stringtable resource in the DLL
+# which can be loaded at startup for tcsh messages.
+#
+# Depending on the languages, the final output may take some tweaking. I have
+# not been able to get Greek to compile in the resource compiler. French,
+# German, and the C locale seem to work.
+#
+# This prints to stdout, so redirect to appropriate place.
+#
+# The alogrithm is simple :
+#
+# String ID = set number * 10,000 + message number
+#
+# This is because we cannot have two messages with the same id.
+#
+# -amol 9/15/96
+#
+#
+print "#include <windows.h>\n";
+print "STRINGTABLE DISCARDABLE\n";
+print "BEGIN\n";
+
+for($i=1; $i <32;$i++) {
+ $filename = "set" . $i;
+
+ open(CURRSET,$filename);
+
+ while(<CURRSET>) {
+ chop $_;
+ if (/^\$/) {
+ print "//" . $_ . "\n";
+ }
+ else {
+# comment following for greek ???
+ s/\"/\"\"/g;
+ ($num,$line)= split(' ',$_,2);
+ print ($i*10000 + $num);
+ print " \"" . $line . "\"\n";
+ }
+ }
+}
+print "END\n"
diff --git a/win32/msg/makercjp.pl b/win32/msg/makercjp.pl
new file mode 100644
index 000000000000..39694a850a4f
--- /dev/null
+++ b/win32/msg/makercjp.pl
@@ -0,0 +1,31 @@
+# This script is almost as same as makerc.pl except that the coding of
+# nls files is converted from euc_japan to shift_jis by nkf.exe
+#
+# this is for japanese nls files
+#
+# 1998/09/23 - nayuta
+
+print "#include <windows.h>\n";
+print "STRINGTABLE DISCARDABLE\n";
+print "BEGIN\n";
+
+for($i=1; $i <32;$i++) {
+ $filename = "set" . $i;
+
+ open(CURRSET,"nkf -E -s $filename |");
+
+ while(<CURRSET>) {
+ chop $_;
+ if (/^\$/) {
+ print "//" . $_ . "\n";
+ }
+ else {
+# comment following for greek ???
+ s/\"/\"\"/g;
+ ($num,$line)= split(' ',$_,2);
+ print ($i*10000 + $num);
+ print " \"" . $line . "\"\n";
+ }
+ }
+}
+print "END\n"
diff --git a/win32/msg/makercrc.pl b/win32/msg/makercrc.pl
new file mode 100644
index 000000000000..d75dea79ee5c
--- /dev/null
+++ b/win32/msg/makercrc.pl
@@ -0,0 +1,35 @@
+# This script converts a .tcshrc file into a format suitable for compiling
+# with RC and stubdll.c. This gives us a stringtable resource in the DLL
+# which can be loaded with the loadresource builtin
+#
+# This prints to stdout, so redirect to appropriate place.
+#
+# The alogrithm is simple :
+#
+# String ID = 666 + line number
+#
+# -amol 3/28/01
+#
+#
+print "#include <windows.h>\n";
+print "STRINGTABLE DISCARDABLE\n";
+print "BEGIN\n";
+
+$filename = $ARGV[0];
+
+open(RCFILE,$filename);
+
+$i = 666;
+while(<RCFILE>) {
+ chop $_;
+ next if (/^#/) ;
+ next if (/^$/);
+
+ s/\"/\"\"/g;
+# print $_;
+
+ print ($i);
+ print " \"" . $_ . "\"\n";
+ $i++;
+}
+print "END\n"
diff --git a/win32/msg/stubdll.c b/win32/msg/stubdll.c
new file mode 100644
index 000000000000..aadadb79237d
--- /dev/null
+++ b/win32/msg/stubdll.c
@@ -0,0 +1,7 @@
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+
+BOOL WINAPI DllEntryPoint(HINSTANCE hdll,DWORD dwreason,LPVOID ignore) {
+
+ return 1;
+}
diff --git a/win32/msg/test.c b/win32/msg/test.c
new file mode 100644
index 000000000000..d47d5933812b
--- /dev/null
+++ b/win32/msg/test.c
@@ -0,0 +1,33 @@
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <stdio.h>
+#include <locale.h>
+
+void main(int argc, char **argv) {
+
+ HINSTANCE hinst;
+ WCHAR buffer[128];
+ unsigned char winbuf[128],oembuf[128];
+ unsigned int number;
+
+ if (argc <3)
+ return;
+
+ hinst = LoadLibrary(argv[1]);
+
+ number = atoi(argv[2]);
+ printf("Load String returns %i\n",
+ LoadStringW(hinst, number, buffer, sizeof(buffer)));
+
+ WideCharToMultiByte(CP_OEMCP,
+ 0,
+ buffer,
+ -1,
+ winbuf,
+ 128,
+ NULL,
+ NULL);
+
+ CharToOem(winbuf,oembuf);
+ printf("oem: %s\n",oembuf);
+}
diff --git a/win32/nt.bind.c b/win32/nt.bind.c
new file mode 100644
index 000000000000..17e5a75910ca
--- /dev/null
+++ b/win32/nt.bind.c
@@ -0,0 +1,1351 @@
+/*$Header: /p/tcsh/cvsroot/tcsh/win32/nt.bind.c,v 1.6 2006/03/05 08:59:36 amold Exp $*/
+/*-
+ * Copyright (c) 1980, 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#include "sh.h"
+#include "ed.h"
+#include "ed.defns.h"
+
+
+KEYCMD CcEmacsMap[] = {
+ /* keymap table, each index into above tbl; should be
+ (256+extra NT bindings)*sizeof(KEYCMD) bytes long */
+
+ F_SET_MARK, /* ^@ */
+ F_TOBEG, /* ^A */
+ F_CHARBACK, /* ^B */
+ F_TTY_INT, /* ^C */
+ F_DELNEXT_LIST_EOF, /* ^D */
+ F_TOEND, /* ^E */
+ F_CHARFWD, /* ^F */
+ F_UNASSIGNED, /* ^G */
+ F_DELPREV, /* ^H */
+ F_COMPLETE, /* ^I */
+ F_NEWLINE, /* ^J */
+ F_KILLEND, /* ^K */
+ F_CLEARDISP, /* ^L */
+ F_NEWLINE, /* ^M */
+ F_DOWN_HIST, /* ^N */
+ F_TTY_FLUSHO, /* ^O */
+ F_UP_HIST, /* ^P */
+ F_TTY_STARTO, /* ^Q */
+ F_REDISP, /* ^R */
+ F_TTY_STOPO, /* ^S */
+ F_CHARSWITCH, /* ^T */
+ F_KILLALL, /* ^U */
+ F_QUOTE, /* ^V */
+ F_KILLREGION, /* ^W */
+ F_XKEY, /* ^X */
+ F_YANK_KILL, /* ^Y */
+ F_TTY_TSUSP, /* ^Z */
+ F_METANEXT, /* ^[ */
+ F_TTY_QUIT, /* ^\ */
+ F_TTY_DSUSP, /* ^] */
+ F_UNASSIGNED, /* ^^ */
+ F_UNASSIGNED, /* ^_ */
+ F_INSERT, /* SPACE */
+ F_INSERT, /* ! */
+ F_INSERT, /* " */
+ F_INSERT, /* # */
+ F_INSERT, /* $ */
+ F_INSERT, /* % */
+ F_INSERT, /* & */
+ F_INSERT, /* ' */
+ F_INSERT, /* ( */
+ F_INSERT, /* ) */
+ F_INSERT, /* * */
+ F_INSERT, /* + */
+ F_INSERT, /* , */
+ F_INSERT, /* - */
+ F_INSERT, /* . */
+ F_INSERT, /* / */
+ F_DIGIT, /* 0 */
+ F_DIGIT, /* 1 */
+ F_DIGIT, /* 2 */
+ F_DIGIT, /* 3 */
+ F_DIGIT, /* 4 */
+ F_DIGIT, /* 5 */
+ F_DIGIT, /* 6 */
+ F_DIGIT, /* 7 */
+ F_DIGIT, /* 8 */
+ F_DIGIT, /* 9 */
+ F_INSERT, /* : */
+ F_INSERT, /* ; */
+ F_INSERT, /* < */
+ F_INSERT, /* = */
+ F_INSERT, /* > */
+ F_INSERT, /* ? */
+ F_INSERT, /* @ */
+ F_INSERT, /* A */
+ F_INSERT, /* B */
+ F_INSERT, /* C */
+ F_INSERT, /* D */
+ F_INSERT, /* E */
+ F_INSERT, /* F */
+ F_INSERT, /* G */
+ F_INSERT, /* H */
+ F_INSERT, /* I */
+ F_INSERT, /* J */
+ F_INSERT, /* K */
+ F_INSERT, /* L */
+ F_INSERT, /* M */
+ F_INSERT, /* N */
+ F_INSERT, /* O */
+ F_INSERT, /* P */
+ F_INSERT, /* Q */
+ F_INSERT, /* R */
+ F_INSERT, /* S */
+ F_INSERT, /* T */
+ F_INSERT, /* U */
+ F_INSERT, /* V */
+ F_INSERT, /* W */
+ F_INSERT, /* X */
+ F_INSERT, /* Y */
+ F_INSERT, /* Z */
+ F_INSERT, /* [ */
+ F_INSERT, /* \ */
+ F_INSERT, /* ] */
+ F_INSERT, /* ^ */
+ F_INSERT, /* _ */
+ F_INSERT, /* ` */
+ F_INSERT, /* a */
+ F_INSERT, /* b */
+ F_INSERT, /* c */
+ F_INSERT, /* d */
+ F_INSERT, /* e */
+ F_INSERT, /* f */
+ F_INSERT, /* g */
+ F_INSERT, /* h */
+ F_INSERT, /* i */
+ F_INSERT, /* j */
+ F_INSERT, /* k */
+ F_INSERT, /* l */
+ F_INSERT, /* m */
+ F_INSERT, /* n */
+ F_INSERT, /* o */
+ F_INSERT, /* p */
+ F_INSERT, /* q */
+ F_INSERT, /* r */
+ F_INSERT, /* s */
+ F_INSERT, /* t */
+ F_INSERT, /* u */
+ F_INSERT, /* v */
+ F_INSERT, /* w */
+ F_INSERT, /* x */
+ F_INSERT, /* y */
+ F_INSERT, /* z */
+ F_INSERT, /* { */
+ F_INSERT, /* | */
+ F_INSERT, /* } */
+ F_INSERT, /* ~ */
+ F_DELPREV, /* ^? */
+ F_UNASSIGNED, /* M-^@ */
+ F_UNASSIGNED, /* M-^A */
+ F_UNASSIGNED, /* M-^B */
+ F_UNASSIGNED, /* M-^C */
+ F_LIST_CHOICES, /* M-^D */
+ F_UNASSIGNED, /* M-^E */
+ F_UNASSIGNED, /* M-^F */
+ F_UNASSIGNED, /* M-^G */
+ F_DELWORDPREV, /* M-^H */
+ F_COMPLETE, /* M-^I */
+ F_UNASSIGNED, /* M-^J */
+ F_UNASSIGNED, /* M-^K */
+ F_CLEARDISP, /* M-^L */
+ F_UNASSIGNED, /* M-^M */
+ F_UNASSIGNED, /* M-^N */
+ F_UNASSIGNED, /* M-^O */
+ F_UNASSIGNED, /* M-^P */
+ F_UNASSIGNED, /* M-^Q */
+ F_UNASSIGNED, /* M-^R */
+ F_UNASSIGNED, /* M-^S */
+ F_UNASSIGNED, /* M-^T */
+ F_UNASSIGNED, /* M-^U */
+ F_UNASSIGNED, /* M-^V */
+ F_UNASSIGNED, /* M-^W */
+ F_UNASSIGNED, /* M-^X */
+ F_UNASSIGNED, /* M-^Y */
+ F_RUN_FG_EDITOR, /* M-^Z */
+ F_COMPLETE, /* M-^[ */
+ F_UNASSIGNED, /* M-^\ */
+ F_UNASSIGNED, /* M-^] */
+ F_UNASSIGNED, /* M-^^ */
+ F_COPYPREV, /* M-^_ */
+ F_EXPAND_HISTORY, /* M-SPACE */
+ F_EXPAND_HISTORY, /* M-! */
+ F_UNASSIGNED, /* M-" */
+ F_UNASSIGNED, /* M-# */
+ F_CORRECT_L, /* M-$ */
+ F_UNASSIGNED, /* M-% */
+ F_UNASSIGNED, /* M-& */
+ F_UNASSIGNED, /* M-' */
+ F_UNASSIGNED, /* M-( */
+ F_UNASSIGNED, /* M-) */
+ F_UNASSIGNED, /* M-* */
+ F_UNASSIGNED, /* M-+ */
+ F_UNASSIGNED, /* M-, */
+ F_UNASSIGNED, /* M-- */
+ F_UNASSIGNED, /* M-. */
+ F_DABBREV_EXPAND, /* M-/ */
+ F_ARGDIGIT, /* M-0 */
+ F_ARGDIGIT, /* M-1 */
+ F_ARGDIGIT, /* M-2 */
+ F_ARGDIGIT, /* M-3 */
+ F_ARGDIGIT, /* M-4 */
+ F_ARGDIGIT, /* M-5 */
+ F_ARGDIGIT, /* M-6 */
+ F_ARGDIGIT, /* M-7 */
+ F_ARGDIGIT, /* M-8 */
+ F_ARGDIGIT, /* M-9 */
+ F_UNASSIGNED, /* M-: */
+ F_UNASSIGNED, /* M-; */
+ F_UNASSIGNED, /* M-< */
+ F_UNASSIGNED, /* M-= */
+ F_UNASSIGNED, /* M-> */
+ F_WHICH, /* M-? */
+ F_UNASSIGNED, /* M-@ */
+ F_UNASSIGNED, /* M-A */
+ F_WORDBACK, /* M-B */
+ F_CASECAPITAL, /* M-C */
+ F_DELWORDNEXT, /* M-D */
+ F_UNASSIGNED, /* M-E */
+ F_WORDFWD, /* M-F */
+ F_UNASSIGNED, /* M-G */
+ F_HELPME, /* M-H */
+ F_UNASSIGNED, /* M-I */
+ F_UNASSIGNED, /* M-J */
+ F_UNASSIGNED, /* M-K */
+ F_CASELOWER, /* M-L */
+ F_UNASSIGNED, /* M-M */
+ F_DOWN_SEARCH_HIST, /* M-N */
+ F_XKEY, /* M-O *//* extended key esc PWP Mar 88 */
+ F_UP_SEARCH_HIST, /* M-P */
+ F_UNASSIGNED, /* M-Q */
+ F_TOGGLE_HIST, /* M-R */
+ F_CORRECT, /* M-S */
+ F_UNASSIGNED, /* M-T */
+ F_CASEUPPER, /* M-U */
+ F_UNASSIGNED, /* M-V */
+ F_COPYREGION, /* M-W */
+ F_UNASSIGNED, /* M-X */
+ F_UNASSIGNED, /* M-Y */
+ F_UNASSIGNED, /* M-Z */
+ F_XKEY, /* M-[ *//* extended key esc -mf Oct 87 */
+ F_UNASSIGNED, /* M-\ */
+ F_UNASSIGNED, /* M-] */
+ F_UNASSIGNED, /* M-^ */
+ F_LAST_ITEM, /* M-_ */
+ F_UNASSIGNED, /* M-` */
+ F_UNASSIGNED, /* M-a */
+ F_WORDBACK, /* M-b */
+ F_CASECAPITAL, /* M-c */
+ F_DELWORDNEXT, /* M-d */
+ F_UNASSIGNED, /* M-e */
+ F_WORDFWD, /* M-f */
+ F_UNASSIGNED, /* M-g */
+ F_HELPME, /* M-h */
+ F_UNASSIGNED, /* M-i */
+ F_UNASSIGNED, /* M-j */
+ F_UNASSIGNED, /* M-k */
+ F_CASELOWER, /* M-l */
+ F_UNASSIGNED, /* M-m */
+ F_DOWN_SEARCH_HIST, /* M-n */
+ F_UNASSIGNED, /* M-o */
+ F_UP_SEARCH_HIST, /* M-p */
+ F_UNASSIGNED, /* M-q */
+ F_TOGGLE_HIST, /* M-r */
+ F_CORRECT, /* M-s */
+ F_UNASSIGNED, /* M-t */
+ F_CASEUPPER, /* M-u */
+ F_UNASSIGNED, /* M-v */
+ F_COPYREGION, /* M-w */
+ F_UNASSIGNED, /* M-x */
+ F_UNASSIGNED, /* M-y */
+ F_UNASSIGNED, /* M-z */
+ F_UNASSIGNED, /* M-{ */
+ F_UNASSIGNED, /* M-| */
+ F_UNASSIGNED, /* M-} */
+ F_UNASSIGNED, /* M-~ */
+ F_DELWORDPREV, /* M-^? */
+ /* Extra keys begin here */
+ F_UNASSIGNED, /* f-1 */
+ F_UNASSIGNED, /* f-2 */
+ F_UNASSIGNED, /* f-3 */
+ F_UNASSIGNED, /* f-4 */
+ F_UNASSIGNED, /* f-5 */
+ F_UNASSIGNED, /* f-6 */
+ F_UNASSIGNED, /* f-7 */
+ F_UNASSIGNED, /* f-8 */
+ F_UNASSIGNED, /* f-9 */
+ F_UNASSIGNED, /* f-10 */
+ F_UNASSIGNED, /* f-11 */
+ F_UNASSIGNED, /* f-12 */
+ F_UNASSIGNED, /* f-13 */
+ F_UNASSIGNED, /* f-14 */
+ F_UNASSIGNED, /* f-15 */
+ F_UNASSIGNED, /* f-16 */
+ F_UNASSIGNED, /* f-17 */
+ F_UNASSIGNED, /* f-18 */
+ F_UNASSIGNED, /* f-19 */
+ F_UNASSIGNED, /* f-20 */
+ F_UNASSIGNED, /* f-21 */
+ F_UNASSIGNED, /* f-22 */
+ F_UNASSIGNED, /* f-23 */
+ F_UNASSIGNED, /* f-24 */
+ F_UNASSIGNED, /* PgUp */
+ F_UNASSIGNED, /* PgDn */
+ F_UNASSIGNED, /* end */
+ F_UNASSIGNED, /* home */
+ F_UNASSIGNED, /* LEFT */
+ F_UNASSIGNED, /* UP */
+ F_UNASSIGNED, /* RIGHT */
+ F_UNASSIGNED, /* DOWN */
+ F_UNASSIGNED, /* INS */
+ F_UNASSIGNED, /* DEL */
+ /* ctrl key mappings */
+ F_UNASSIGNED, /* f-1 */
+ F_UNASSIGNED, /* f-2 */
+ F_UNASSIGNED, /* f-3 */
+ F_UNASSIGNED, /* f-4 */
+ F_UNASSIGNED, /* f-5 */
+ F_UNASSIGNED, /* f-6 */
+ F_UNASSIGNED, /* f-7 */
+ F_UNASSIGNED, /* f-8 */
+ F_UNASSIGNED, /* f-9 */
+ F_UNASSIGNED, /* f-10 */
+ F_UNASSIGNED, /* f-11 */
+ F_UNASSIGNED, /* f-12 */
+ F_UNASSIGNED, /* f-13 */
+ F_UNASSIGNED, /* f-14 */
+ F_UNASSIGNED, /* f-15 */
+ F_UNASSIGNED, /* f-16 */
+ F_UNASSIGNED, /* f-17 */
+ F_UNASSIGNED, /* f-18 */
+ F_UNASSIGNED, /* f-19 */
+ F_UNASSIGNED, /* f-20 */
+ F_UNASSIGNED, /* f-21 */
+ F_UNASSIGNED, /* f-22 */
+ F_UNASSIGNED, /* f-23 */
+ F_UNASSIGNED, /* f-24 */
+ F_UNASSIGNED, /* PgUp */
+ F_UNASSIGNED, /* PgDn */
+ F_UNASSIGNED, /* end */
+ F_UNASSIGNED, /* home */
+ F_UNASSIGNED, /* LEFT */
+ F_UNASSIGNED, /* UP */
+ F_UNASSIGNED, /* RIGHT */
+ F_UNASSIGNED, /* DOWN */
+ F_UNASSIGNED, /* INS */
+ F_UNASSIGNED, /* DEL */
+
+ /* alt key mappings */
+ F_UNASSIGNED, /* f-1 */
+ F_UNASSIGNED, /* f-2 */
+ F_UNASSIGNED, /* f-3 */
+ F_UNASSIGNED, /* f-4 */
+ F_UNASSIGNED, /* f-5 */
+ F_UNASSIGNED, /* f-6 */
+ F_UNASSIGNED, /* f-7 */
+ F_UNASSIGNED, /* f-8 */
+ F_UNASSIGNED, /* f-9 */
+ F_UNASSIGNED, /* f-10 */
+ F_UNASSIGNED, /* f-11 */
+ F_UNASSIGNED, /* f-12 */
+ F_UNASSIGNED, /* f-13 */
+ F_UNASSIGNED, /* f-14 */
+ F_UNASSIGNED, /* f-15 */
+ F_UNASSIGNED, /* f-16 */
+ F_UNASSIGNED, /* f-17 */
+ F_UNASSIGNED, /* f-18 */
+ F_UNASSIGNED, /* f-19 */
+ F_UNASSIGNED, /* f-20 */
+ F_UNASSIGNED, /* f-21 */
+ F_UNASSIGNED, /* f-22 */
+ F_UNASSIGNED, /* f-23 */
+ F_UNASSIGNED, /* f-24 */
+ F_UNASSIGNED, /* PgUp */
+ F_UNASSIGNED, /* PgDn */
+ F_UNASSIGNED, /* end */
+ F_UNASSIGNED, /* home */
+ F_UNASSIGNED, /* LEFT */
+ F_UNASSIGNED, /* UP */
+ F_UNASSIGNED, /* RIGHT */
+ F_UNASSIGNED, /* DOWN */
+ F_UNASSIGNED, /* INS */
+ F_UNASSIGNED, /* DEL */
+ /* shift key mappings */
+ F_UNASSIGNED, /* f-1 */
+ F_UNASSIGNED, /* f-2 */
+ F_UNASSIGNED, /* f-3 */
+ F_UNASSIGNED, /* f-4 */
+ F_UNASSIGNED, /* f-5 */
+ F_UNASSIGNED, /* f-6 */
+ F_UNASSIGNED, /* f-7 */
+ F_UNASSIGNED, /* f-8 */
+ F_UNASSIGNED, /* f-9 */
+ F_UNASSIGNED, /* f-10 */
+ F_UNASSIGNED, /* f-11 */
+ F_UNASSIGNED, /* f-12 */
+ F_UNASSIGNED, /* f-13 */
+ F_UNASSIGNED, /* f-14 */
+ F_UNASSIGNED, /* f-15 */
+ F_UNASSIGNED, /* f-16 */
+ F_UNASSIGNED, /* f-17 */
+ F_UNASSIGNED, /* f-18 */
+ F_UNASSIGNED, /* f-19 */
+ F_UNASSIGNED, /* f-20 */
+ F_UNASSIGNED, /* f-21 */
+ F_UNASSIGNED, /* f-22 */
+ F_UNASSIGNED, /* f-23 */
+ F_UNASSIGNED, /* f-24 */
+ F_UNASSIGNED, /* PgUp */
+ F_UNASSIGNED, /* PgDn */
+ F_UNASSIGNED, /* end */
+ F_UNASSIGNED, /* home */
+ F_UNASSIGNED, /* LEFT */
+ F_UNASSIGNED, /* UP */
+ F_UNASSIGNED, /* RIGHT */
+ F_UNASSIGNED, /* DOWN */
+ F_UNASSIGNED, /* INS */
+ F_UNASSIGNED /* DEL */
+};
+
+/*
+ * keymap table for vi. Each index into above tbl; should be
+ * 256 entries long. Vi mode uses a sticky-extend to do command mode:
+ * insert mode characters are in the normal keymap, and command mode
+ * in the extended keymap.
+ */
+KEYCMD CcViMap[] = {
+#ifdef KSHVI
+ F_UNASSIGNED, /* ^@ */
+ F_INSERT, /* ^A */
+ F_INSERT, /* ^B */
+ F_INSERT, /* ^C */
+ F_INSERT, /* ^D */
+ F_INSERT, /* ^E */
+ F_INSERT, /* ^F */
+ F_INSERT, /* ^G */
+ V_DELPREV, /* ^H */ /* BackSpace key */
+ F_COMPLETE, /* ^I */ /* Tab Key */
+ F_NEWLINE, /* ^J */
+ F_INSERT, /* ^K */
+ F_INSERT, /* ^L */
+ F_NEWLINE, /* ^M */
+ F_INSERT, /* ^N */
+ F_INSERT, /* ^O */
+ F_INSERT, /* ^P */
+ F_TTY_STARTO, /* ^Q */
+ F_INSERT, /* ^R */
+ F_INSERT, /* ^S */
+ F_INSERT, /* ^T */
+ F_INSERT, /* ^U */
+ F_QUOTE, /* ^V */
+ F_DELWORDPREV, /* ^W */ /* Only until start edit pos */
+ F_INSERT, /* ^X */
+ F_INSERT, /* ^Y */
+ F_INSERT, /* ^Z */
+ V_CMD_MODE, /* ^[ */ /* [ Esc ] key */
+ F_TTY_QUIT, /* ^\ */
+ F_INSERT, /* ^] */
+ F_INSERT, /* ^^ */
+ F_INSERT, /* ^_ */
+#else /* !KSHVI */
+ F_UNASSIGNED, /* ^@ */ /* NOTE: These mapping do NOT */
+ F_TOBEG, /* ^A */ /* Correspond well to the KSH */
+ F_CHARBACK, /* ^B */ /* VI editting assignments */
+ F_TTY_INT, /* ^C */ /* On the other hand they are */
+ F_LIST_EOF, /* ^D */ /* convenient any many people */
+ F_TOEND, /* ^E */ /* have gotten used to them */
+ F_CHARFWD, /* ^F */
+ F_LIST_GLOB, /* ^G */
+ F_DELPREV, /* ^H */ /* BackSpace key */
+ F_COMPLETE, /* ^I */ /* Tab Key */
+ F_NEWLINE, /* ^J */
+ F_KILLEND, /* ^K */
+ F_CLEARDISP, /* ^L */
+ F_NEWLINE, /* ^M */
+ F_DOWN_HIST, /* ^N */
+ F_TTY_FLUSHO, /* ^O */
+ F_UP_HIST, /* ^P */
+ F_TTY_STARTO, /* ^Q */
+ F_REDISP, /* ^R */
+ F_TTY_STOPO, /* ^S */
+ F_CHARSWITCH, /* ^T */
+ F_KILLBEG, /* ^U */
+ F_QUOTE, /* ^V */
+ F_DELWORDPREV, /* ^W */
+ F_EXPAND, /* ^X */
+ F_TTY_DSUSP, /* ^Y */
+ F_TTY_TSUSP, /* ^Z */
+ V_CMD_MODE, /* ^[ */
+ F_TTY_QUIT, /* ^\ */
+ F_UNASSIGNED, /* ^] */
+ F_UNASSIGNED, /* ^^ */
+ F_UNASSIGNED, /* ^_ */
+#endif /* KSHVI */
+ F_INSERT, /* SPACE */
+ F_INSERT, /* ! */
+ F_INSERT, /* " */
+ F_INSERT, /* # */
+ F_INSERT, /* $ */
+ F_INSERT, /* % */
+ F_INSERT, /* & */
+ F_INSERT, /* ' */
+ F_INSERT, /* ( */
+ F_INSERT, /* ) */
+ F_INSERT, /* * */
+ F_INSERT, /* + */
+ F_INSERT, /* , */
+ F_INSERT, /* - */
+ F_INSERT, /* . */
+ F_INSERT, /* / */
+ F_INSERT, /* 0 */
+ F_INSERT, /* 1 */
+ F_INSERT, /* 2 */
+ F_INSERT, /* 3 */
+ F_INSERT, /* 4 */
+ F_INSERT, /* 5 */
+ F_INSERT, /* 6 */
+ F_INSERT, /* 7 */
+ F_INSERT, /* 8 */
+ F_INSERT, /* 9 */
+ F_INSERT, /* : */
+ F_INSERT, /* ; */
+ F_INSERT, /* < */
+ F_INSERT, /* = */
+ F_INSERT, /* > */
+ F_INSERT, /* ? */
+ F_INSERT, /* @ */
+ F_INSERT, /* A */
+ F_INSERT, /* B */
+ F_INSERT, /* C */
+ F_INSERT, /* D */
+ F_INSERT, /* E */
+ F_INSERT, /* F */
+ F_INSERT, /* G */
+ F_INSERT, /* H */
+ F_INSERT, /* I */
+ F_INSERT, /* J */
+ F_INSERT, /* K */
+ F_INSERT, /* L */
+ F_INSERT, /* M */
+ F_INSERT, /* N */
+ F_INSERT, /* O */
+ F_INSERT, /* P */
+ F_INSERT, /* Q */
+ F_INSERT, /* R */
+ F_INSERT, /* S */
+ F_INSERT, /* T */
+ F_INSERT, /* U */
+ F_INSERT, /* V */
+ F_INSERT, /* W */
+ F_INSERT, /* X */
+ F_INSERT, /* Y */
+ F_INSERT, /* Z */
+ F_INSERT, /* [ */
+ F_INSERT, /* \ */
+ F_INSERT, /* ] */
+ F_INSERT, /* ^ */
+ F_INSERT, /* _ */
+ F_INSERT, /* ` */
+ F_INSERT, /* a */
+ F_INSERT, /* b */
+ F_INSERT, /* c */
+ F_INSERT, /* d */
+ F_INSERT, /* e */
+ F_INSERT, /* f */
+ F_INSERT, /* g */
+ F_INSERT, /* h */
+ F_INSERT, /* i */
+ F_INSERT, /* j */
+ F_INSERT, /* k */
+ F_INSERT, /* l */
+ F_INSERT, /* m */
+ F_INSERT, /* n */
+ F_INSERT, /* o */
+ F_INSERT, /* p */
+ F_INSERT, /* q */
+ F_INSERT, /* r */
+ F_INSERT, /* s */
+ F_INSERT, /* t */
+ F_INSERT, /* u */
+ F_INSERT, /* v */
+ F_INSERT, /* w */
+ F_INSERT, /* x */
+ F_INSERT, /* y */
+ F_INSERT, /* z */
+ F_INSERT, /* { */
+ F_INSERT, /* | */
+ F_INSERT, /* } */
+ F_INSERT, /* ~ */
+ F_DELPREV, /* ^? */
+ F_UNASSIGNED, /* M-^@ */
+ F_UNASSIGNED, /* M-^A */
+ F_UNASSIGNED, /* M-^B */
+ F_UNASSIGNED, /* M-^C */
+ F_UNASSIGNED, /* M-^D */
+ F_UNASSIGNED, /* M-^E */
+ F_UNASSIGNED, /* M-^F */
+ F_UNASSIGNED, /* M-^G */
+ F_UNASSIGNED, /* M-^H */
+ F_UNASSIGNED, /* M-^I */
+ F_UNASSIGNED, /* M-^J */
+ F_UNASSIGNED, /* M-^K */
+ F_UNASSIGNED, /* M-^L */
+ F_UNASSIGNED, /* M-^M */
+ F_UNASSIGNED, /* M-^N */
+ F_UNASSIGNED, /* M-^O */
+ F_UNASSIGNED, /* M-^P */
+ F_UNASSIGNED, /* M-^Q */
+ F_UNASSIGNED, /* M-^R */
+ F_UNASSIGNED, /* M-^S */
+ F_UNASSIGNED, /* M-^T */
+ F_UNASSIGNED, /* M-^U */
+ F_UNASSIGNED, /* M-^V */
+ F_UNASSIGNED, /* M-^W */
+ F_UNASSIGNED, /* M-^X */
+ F_UNASSIGNED, /* M-^Y */
+ F_UNASSIGNED, /* M-^Z */
+ F_UNASSIGNED, /* M-^[ */
+ F_UNASSIGNED, /* M-^\ */
+ F_UNASSIGNED, /* M-^] */
+ F_UNASSIGNED, /* M-^^ */
+ F_UNASSIGNED, /* M-^_ */
+ F_UNASSIGNED, /* M-SPACE */
+ F_UNASSIGNED, /* M-! */
+ F_UNASSIGNED, /* M-" */
+ F_UNASSIGNED, /* M-# */
+ F_UNASSIGNED, /* M-$ */
+ F_UNASSIGNED, /* M-% */
+ F_UNASSIGNED, /* M-& */
+ F_UNASSIGNED, /* M-' */
+ F_UNASSIGNED, /* M-( */
+ F_UNASSIGNED, /* M-) */
+ F_UNASSIGNED, /* M-* */
+ F_UNASSIGNED, /* M-+ */
+ F_UNASSIGNED, /* M-, */
+ F_UNASSIGNED, /* M-- */
+ F_UNASSIGNED, /* M-. */
+ F_UNASSIGNED, /* M-/ */
+ F_UNASSIGNED, /* M-0 */
+ F_UNASSIGNED, /* M-1 */
+ F_UNASSIGNED, /* M-2 */
+ F_UNASSIGNED, /* M-3 */
+ F_UNASSIGNED, /* M-4 */
+ F_UNASSIGNED, /* M-5 */
+ F_UNASSIGNED, /* M-6 */
+ F_UNASSIGNED, /* M-7 */
+ F_UNASSIGNED, /* M-8 */
+ F_UNASSIGNED, /* M-9 */
+ F_UNASSIGNED, /* M-: */
+ F_UNASSIGNED, /* M-; */
+ F_UNASSIGNED, /* M-< */
+ F_UNASSIGNED, /* M-= */
+ F_UNASSIGNED, /* M-> */
+ F_UNASSIGNED, /* M-? */
+ F_UNASSIGNED, /* M-@ */
+ F_UNASSIGNED, /* M-A */
+ F_UNASSIGNED, /* M-B */
+ F_UNASSIGNED, /* M-C */
+ F_UNASSIGNED, /* M-D */
+ F_UNASSIGNED, /* M-E */
+ F_UNASSIGNED, /* M-F */
+ F_UNASSIGNED, /* M-G */
+ F_UNASSIGNED, /* M-H */
+ F_UNASSIGNED, /* M-I */
+ F_UNASSIGNED, /* M-J */
+ F_UNASSIGNED, /* M-K */
+ F_UNASSIGNED, /* M-L */
+ F_UNASSIGNED, /* M-M */
+ F_UNASSIGNED, /* M-N */
+ F_UNASSIGNED, /* M-O */
+ F_UNASSIGNED, /* M-P */
+ F_UNASSIGNED, /* M-Q */
+ F_UNASSIGNED, /* M-R */
+ F_UNASSIGNED, /* M-S */
+ F_UNASSIGNED, /* M-T */
+ F_UNASSIGNED, /* M-U */
+ F_UNASSIGNED, /* M-V */
+ F_UNASSIGNED, /* M-W */
+ F_UNASSIGNED, /* M-X */
+ F_UNASSIGNED, /* M-Y */
+ F_UNASSIGNED, /* M-Z */
+ F_UNASSIGNED, /* M-[ */
+ F_UNASSIGNED, /* M-\ */
+ F_UNASSIGNED, /* M-] */
+ F_UNASSIGNED, /* M-^ */
+ F_UNASSIGNED, /* M-_ */
+ F_UNASSIGNED, /* M-` */
+ F_UNASSIGNED, /* M-a */
+ F_UNASSIGNED, /* M-b */
+ F_UNASSIGNED, /* M-c */
+ F_UNASSIGNED, /* M-d */
+ F_UNASSIGNED, /* M-e */
+ F_UNASSIGNED, /* M-f */
+ F_UNASSIGNED, /* M-g */
+ F_UNASSIGNED, /* M-h */
+ F_UNASSIGNED, /* M-i */
+ F_UNASSIGNED, /* M-j */
+ F_UNASSIGNED, /* M-k */
+ F_UNASSIGNED, /* M-l */
+ F_UNASSIGNED, /* M-m */
+ F_UNASSIGNED, /* M-n */
+ F_UNASSIGNED, /* M-o */
+ F_UNASSIGNED, /* M-p */
+ F_UNASSIGNED, /* M-q */
+ F_UNASSIGNED, /* M-r */
+ F_UNASSIGNED, /* M-s */
+ F_UNASSIGNED, /* M-t */
+ F_UNASSIGNED, /* M-u */
+ F_UNASSIGNED, /* M-v */
+ F_UNASSIGNED, /* M-w */
+ F_UNASSIGNED, /* M-x */
+ F_UNASSIGNED, /* M-y */
+ F_UNASSIGNED, /* M-z */
+ F_UNASSIGNED, /* M-{ */
+ F_UNASSIGNED, /* M-| */
+ F_UNASSIGNED, /* M-} */
+ F_UNASSIGNED, /* M-~ */
+ F_UNASSIGNED, /* M-^? */
+ /* Extra keys begin here */
+ F_UNASSIGNED, /* f-1 */
+ F_UNASSIGNED, /* f-2 */
+ F_UNASSIGNED, /* f-3 */
+ F_UNASSIGNED, /* f-4 */
+ F_UNASSIGNED, /* f-5 */
+ F_UNASSIGNED, /* f-6 */
+ F_UNASSIGNED, /* f-7 */
+ F_UNASSIGNED, /* f-8 */
+ F_UNASSIGNED, /* f-9 */
+ F_UNASSIGNED, /* f-10 */
+ F_UNASSIGNED, /* f-11 */
+ F_UNASSIGNED, /* f-12 */
+ F_UNASSIGNED, /* f-13 */
+ F_UNASSIGNED, /* f-14 */
+ F_UNASSIGNED, /* f-15 */
+ F_UNASSIGNED, /* f-16 */
+ F_UNASSIGNED, /* f-17 */
+ F_UNASSIGNED, /* f-18 */
+ F_UNASSIGNED, /* f-19 */
+ F_UNASSIGNED, /* f-20 */
+ F_UNASSIGNED, /* f-21 */
+ F_UNASSIGNED, /* f-22 */
+ F_UNASSIGNED, /* f-23 */
+ F_UNASSIGNED, /* f-24 */
+ F_UNASSIGNED, /* PgUp */
+ F_UNASSIGNED, /* PgDn */
+ F_UNASSIGNED, /* end */
+ F_UNASSIGNED, /* home */
+ F_UNASSIGNED, /* LEFT */
+ F_UNASSIGNED, /* UP */
+ F_UNASSIGNED, /* RIGHT */
+ F_UNASSIGNED, /* DOWN */
+ F_UNASSIGNED, /* INS */
+ F_UNASSIGNED, /* DEL */
+ /* ctrl key mappings */
+ F_UNASSIGNED, /* f-1 */
+ F_UNASSIGNED, /* f-2 */
+ F_UNASSIGNED, /* f-3 */
+ F_UNASSIGNED, /* f-4 */
+ F_UNASSIGNED, /* f-5 */
+ F_UNASSIGNED, /* f-6 */
+ F_UNASSIGNED, /* f-7 */
+ F_UNASSIGNED, /* f-8 */
+ F_UNASSIGNED, /* f-9 */
+ F_UNASSIGNED, /* f-10 */
+ F_UNASSIGNED, /* f-11 */
+ F_UNASSIGNED, /* f-12 */
+ F_UNASSIGNED, /* f-13 */
+ F_UNASSIGNED, /* f-14 */
+ F_UNASSIGNED, /* f-15 */
+ F_UNASSIGNED, /* f-16 */
+ F_UNASSIGNED, /* f-17 */
+ F_UNASSIGNED, /* f-18 */
+ F_UNASSIGNED, /* f-19 */
+ F_UNASSIGNED, /* f-20 */
+ F_UNASSIGNED, /* f-21 */
+ F_UNASSIGNED, /* f-22 */
+ F_UNASSIGNED, /* f-23 */
+ F_UNASSIGNED, /* f-24 */
+ F_UNASSIGNED, /* PgUp */
+ F_UNASSIGNED, /* PgDn */
+ F_UNASSIGNED, /* end */
+ F_UNASSIGNED, /* home */
+ F_UNASSIGNED, /* LEFT */
+ F_UNASSIGNED, /* UP */
+ F_UNASSIGNED, /* RIGHT */
+ F_UNASSIGNED, /* DOWN */
+ F_UNASSIGNED, /* INS */
+ F_UNASSIGNED, /* DEL */
+
+ /* alt key mappings */
+ F_UNASSIGNED, /* f-1 */
+ F_UNASSIGNED, /* f-2 */
+ F_UNASSIGNED, /* f-3 */
+ F_UNASSIGNED, /* f-4 */
+ F_UNASSIGNED, /* f-5 */
+ F_UNASSIGNED, /* f-6 */
+ F_UNASSIGNED, /* f-7 */
+ F_UNASSIGNED, /* f-8 */
+ F_UNASSIGNED, /* f-9 */
+ F_UNASSIGNED, /* f-10 */
+ F_UNASSIGNED, /* f-11 */
+ F_UNASSIGNED, /* f-12 */
+ F_UNASSIGNED, /* f-13 */
+ F_UNASSIGNED, /* f-14 */
+ F_UNASSIGNED, /* f-15 */
+ F_UNASSIGNED, /* f-16 */
+ F_UNASSIGNED, /* f-17 */
+ F_UNASSIGNED, /* f-18 */
+ F_UNASSIGNED, /* f-19 */
+ F_UNASSIGNED, /* f-20 */
+ F_UNASSIGNED, /* f-21 */
+ F_UNASSIGNED, /* f-22 */
+ F_UNASSIGNED, /* f-23 */
+ F_UNASSIGNED, /* f-24 */
+ F_UNASSIGNED, /* PgUp */
+ F_UNASSIGNED, /* PgDn */
+ F_UNASSIGNED, /* end */
+ F_UNASSIGNED, /* home */
+ F_UNASSIGNED, /* LEFT */
+ F_UNASSIGNED, /* UP */
+ F_UNASSIGNED, /* RIGHT */
+ F_UNASSIGNED, /* DOWN */
+ F_UNASSIGNED, /* INS */
+ F_UNASSIGNED, /* DEL */
+ /* shift key mappings */
+ F_UNASSIGNED, /* f-1 */
+ F_UNASSIGNED, /* f-2 */
+ F_UNASSIGNED, /* f-3 */
+ F_UNASSIGNED, /* f-4 */
+ F_UNASSIGNED, /* f-5 */
+ F_UNASSIGNED, /* f-6 */
+ F_UNASSIGNED, /* f-7 */
+ F_UNASSIGNED, /* f-8 */
+ F_UNASSIGNED, /* f-9 */
+ F_UNASSIGNED, /* f-10 */
+ F_UNASSIGNED, /* f-11 */
+ F_UNASSIGNED, /* f-12 */
+ F_UNASSIGNED, /* f-13 */
+ F_UNASSIGNED, /* f-14 */
+ F_UNASSIGNED, /* f-15 */
+ F_UNASSIGNED, /* f-16 */
+ F_UNASSIGNED, /* f-17 */
+ F_UNASSIGNED, /* f-18 */
+ F_UNASSIGNED, /* f-19 */
+ F_UNASSIGNED, /* f-20 */
+ F_UNASSIGNED, /* f-21 */
+ F_UNASSIGNED, /* f-22 */
+ F_UNASSIGNED, /* f-23 */
+ F_UNASSIGNED, /* f-24 */
+ F_UNASSIGNED, /* PgUp */
+ F_UNASSIGNED, /* PgDn */
+ F_UNASSIGNED, /* end */
+ F_UNASSIGNED, /* home */
+ F_UNASSIGNED, /* LEFT */
+ F_UNASSIGNED, /* UP */
+ F_UNASSIGNED, /* RIGHT */
+ F_UNASSIGNED, /* DOWN */
+ F_UNASSIGNED, /* INS */
+ F_UNASSIGNED /* DEL */
+};
+
+KEYCMD CcViCmdMap[] = {
+ F_UNASSIGNED, /* ^@ */
+ F_TOBEG, /* ^A */
+ F_UNASSIGNED, /* ^B */
+ F_TTY_INT, /* ^C */
+ F_LIST_CHOICES, /* ^D */
+ F_TOEND, /* ^E */
+ F_UNASSIGNED, /* ^F */
+ F_LIST_GLOB, /* ^G */
+ F_CHARBACK, /* ^H */
+ V_CM_COMPLETE, /* ^I */
+ F_NEWLINE, /* ^J */
+ F_KILLEND, /* ^K */
+ F_CLEARDISP, /* ^L */
+ F_NEWLINE, /* ^M */
+ F_DOWN_HIST, /* ^N */
+ F_TTY_FLUSHO, /* ^O */
+ F_UP_HIST, /* ^P */
+ F_TTY_STARTO, /* ^Q */
+ F_REDISP, /* ^R */
+ F_TTY_STOPO, /* ^S */
+ F_UNASSIGNED, /* ^T */
+ F_KILLBEG, /* ^U */
+ F_UNASSIGNED, /* ^V */
+ F_DELWORDPREV, /* ^W */
+ F_EXPAND, /* ^X */
+ F_UNASSIGNED, /* ^Y */
+ F_UNASSIGNED, /* ^Z */
+ F_METANEXT, /* ^[ */
+ F_TTY_QUIT, /* ^\ */
+ F_UNASSIGNED, /* ^] */
+ F_UNASSIGNED, /* ^^ */
+ F_UNASSIGNED, /* ^_ */
+ F_CHARFWD, /* SPACE */
+ F_EXPAND_HISTORY, /* ! */
+ F_UNASSIGNED, /* " */
+ F_UNASSIGNED, /* # */
+ F_TOEND, /* $ */
+ F_UNASSIGNED, /* % */
+ F_UNASSIGNED, /* & */
+ F_UNASSIGNED, /* ' */
+ F_UNASSIGNED, /* ( */
+ F_UNASSIGNED, /* ) */
+ F_EXPAND_GLOB, /* * */
+ F_DOWN_HIST, /* + */
+ V_RCHAR_BACK, /* , */
+ F_UP_HIST, /* - */
+ F_UNASSIGNED, /* . */
+ V_DSH_META, /* / */
+ V_ZERO, /* 0 */
+ F_ARGDIGIT, /* 1 */
+ F_ARGDIGIT, /* 2 */
+ F_ARGDIGIT, /* 3 */
+ F_ARGDIGIT, /* 4 */
+ F_ARGDIGIT, /* 5 */
+ F_ARGDIGIT, /* 6 */
+ F_ARGDIGIT, /* 7 */
+ F_ARGDIGIT, /* 8 */
+ F_ARGDIGIT, /* 9 */
+ F_UNASSIGNED, /* : */
+ V_RCHAR_FWD, /* ; */
+ F_UNASSIGNED, /* < */
+ F_UNASSIGNED, /* = */
+ F_UNASSIGNED, /* > */
+ V_USH_META, /* ? */
+ F_UNASSIGNED, /* @ */
+ V_ADDEND, /* A */
+ V_WORDBACK, /* B */
+ V_CHGTOEND, /* C */
+ F_KILLEND, /* D */
+ V_ENDWORD, /* E */
+ V_CHAR_BACK, /* F */
+ F_UNASSIGNED, /* G */
+ F_UNASSIGNED, /* H */
+ V_INSBEG, /* I */
+ F_DOWN_SEARCH_HIST, /* J */
+ F_UP_SEARCH_HIST, /* K */
+ F_UNASSIGNED, /* L */
+ F_UNASSIGNED, /* M */
+ V_RSRCH_BACK, /* N */
+ F_XKEY, /* O */
+ F_UNASSIGNED, /* P */
+ F_UNASSIGNED, /* Q */
+ V_REPLMODE, /* R */
+ V_SUBSTLINE, /* S */
+ V_CHARTO_BACK, /* T */
+ F_UNASSIGNED, /* U */
+ F_EXPAND_VARS, /* V */
+ V_WORDFWD, /* W */
+ F_DELPREV, /* X */
+ F_UNASSIGNED, /* Y */
+ F_UNASSIGNED, /* Z */
+ F_XKEY, /* [ */
+ F_UNASSIGNED, /* \ */
+ F_UNASSIGNED, /* ] */
+ F_TOBEG, /* ^ */
+ F_UNASSIGNED, /* _ */
+ F_UNASSIGNED, /* ` */
+ V_ADD, /* a */
+ F_WORDBACK, /* b */
+ V_CHGMETA, /* c */
+ V_DELMETA, /* d */
+ V_EWORD, /* e */
+ V_CHAR_FWD, /* f */
+ F_UNASSIGNED, /* g */
+ F_CHARBACK, /* h */
+ V_INSERT, /* i */
+ F_DOWN_HIST, /* j */
+ F_UP_HIST, /* k */
+ F_CHARFWD, /* l */
+ F_UNASSIGNED, /* m */
+ V_RSRCH_FWD, /* n */
+ F_UNASSIGNED, /* o */
+ F_UNASSIGNED, /* p */
+ F_UNASSIGNED, /* q */
+ V_REPLONE, /* r */
+ V_SUBSTCHAR, /* s */
+ V_CHARTO_FWD, /* t */
+ V_UNDO, /* u */
+ F_EXPAND_VARS, /* v */
+ V_WORDBEGNEXT, /* w */
+ F_DELNEXT_EOF, /* x */
+ F_UNASSIGNED, /* y */
+ F_UNASSIGNED, /* z */
+ F_UNASSIGNED, /* { */
+ F_UNASSIGNED, /* | */
+ F_UNASSIGNED, /* } */
+ V_CHGCASE, /* ~ */
+ F_DELPREV, /* ^? */
+ F_UNASSIGNED, /* M-^@ */
+ F_UNASSIGNED, /* M-^A */
+ F_UNASSIGNED, /* M-^B */
+ F_UNASSIGNED, /* M-^C */
+ F_UNASSIGNED, /* M-^D */
+ F_UNASSIGNED, /* M-^E */
+ F_UNASSIGNED, /* M-^F */
+ F_UNASSIGNED, /* M-^G */
+ F_UNASSIGNED, /* M-^H */
+ F_UNASSIGNED, /* M-^I */
+ F_UNASSIGNED, /* M-^J */
+ F_UNASSIGNED, /* M-^K */
+ F_UNASSIGNED, /* M-^L */
+ F_UNASSIGNED, /* M-^M */
+ F_UNASSIGNED, /* M-^N */
+ F_UNASSIGNED, /* M-^O */
+ F_UNASSIGNED, /* M-^P */
+ F_UNASSIGNED, /* M-^Q */
+ F_UNASSIGNED, /* M-^R */
+ F_UNASSIGNED, /* M-^S */
+ F_UNASSIGNED, /* M-^T */
+ F_UNASSIGNED, /* M-^U */
+ F_UNASSIGNED, /* M-^V */
+ F_UNASSIGNED, /* M-^W */
+ F_UNASSIGNED, /* M-^X */
+ F_UNASSIGNED, /* M-^Y */
+ F_UNASSIGNED, /* M-^Z */
+ F_UNASSIGNED, /* M-^[ */
+ F_UNASSIGNED, /* M-^\ */
+ F_UNASSIGNED, /* M-^] */
+ F_UNASSIGNED, /* M-^^ */
+ F_UNASSIGNED, /* M-^_ */
+ F_UNASSIGNED, /* M-SPACE */
+ F_UNASSIGNED, /* M-! */
+ F_UNASSIGNED, /* M-" */
+ F_UNASSIGNED, /* M-# */
+ F_UNASSIGNED, /* M-$ */
+ F_UNASSIGNED, /* M-% */
+ F_UNASSIGNED, /* M-& */
+ F_UNASSIGNED, /* M-' */
+ F_UNASSIGNED, /* M-( */
+ F_UNASSIGNED, /* M-) */
+ F_UNASSIGNED, /* M-* */
+ F_UNASSIGNED, /* M-+ */
+ F_UNASSIGNED, /* M-, */
+ F_UNASSIGNED, /* M-- */
+ F_UNASSIGNED, /* M-. */
+ F_UNASSIGNED, /* M-/ */
+ F_UNASSIGNED, /* M-0 */
+ F_UNASSIGNED, /* M-1 */
+ F_UNASSIGNED, /* M-2 */
+ F_UNASSIGNED, /* M-3 */
+ F_UNASSIGNED, /* M-4 */
+ F_UNASSIGNED, /* M-5 */
+ F_UNASSIGNED, /* M-6 */
+ F_UNASSIGNED, /* M-7 */
+ F_UNASSIGNED, /* M-8 */
+ F_UNASSIGNED, /* M-9 */
+ F_UNASSIGNED, /* M-: */
+ F_UNASSIGNED, /* M-; */
+ F_UNASSIGNED, /* M-< */
+ F_UNASSIGNED, /* M-= */
+ F_UNASSIGNED, /* M-> */
+ F_HELPME, /* M-? */
+ F_UNASSIGNED, /* M-@ */
+ F_UNASSIGNED, /* M-A */
+ F_UNASSIGNED, /* M-B */
+ F_UNASSIGNED, /* M-C */
+ F_UNASSIGNED, /* M-D */
+ F_UNASSIGNED, /* M-E */
+ F_UNASSIGNED, /* M-F */
+ F_UNASSIGNED, /* M-G */
+ F_UNASSIGNED, /* M-H */
+ F_UNASSIGNED, /* M-I */
+ F_UNASSIGNED, /* M-J */
+ F_UNASSIGNED, /* M-K */
+ F_UNASSIGNED, /* M-L */
+ F_UNASSIGNED, /* M-M */
+ F_UNASSIGNED, /* M-N */
+ F_XKEY, /* M-O *//* extended key esc PWP Mar 88 */
+ F_UNASSIGNED, /* M-P */
+ F_UNASSIGNED, /* M-Q */
+ F_UNASSIGNED, /* M-R */
+ F_UNASSIGNED, /* M-S */
+ F_UNASSIGNED, /* M-T */
+ F_UNASSIGNED, /* M-U */
+ F_UNASSIGNED, /* M-V */
+ F_UNASSIGNED, /* M-W */
+ F_UNASSIGNED, /* M-X */
+ F_UNASSIGNED, /* M-Y */
+ F_UNASSIGNED, /* M-Z */
+ F_XKEY, /* M-[ *//* extended key esc -mf Oct 87 */
+ F_UNASSIGNED, /* M-\ */
+ F_UNASSIGNED, /* M-] */
+ F_UNASSIGNED, /* M-^ */
+ F_UNASSIGNED, /* M-_ */
+ F_UNASSIGNED, /* M-` */
+ F_UNASSIGNED, /* M-a */
+ F_UNASSIGNED, /* M-b */
+ F_UNASSIGNED, /* M-c */
+ F_UNASSIGNED, /* M-d */
+ F_UNASSIGNED, /* M-e */
+ F_UNASSIGNED, /* M-f */
+ F_UNASSIGNED, /* M-g */
+ F_UNASSIGNED, /* M-h */
+ F_UNASSIGNED, /* M-i */
+ F_UNASSIGNED, /* M-j */
+ F_UNASSIGNED, /* M-k */
+ F_UNASSIGNED, /* M-l */
+ F_UNASSIGNED, /* M-m */
+ F_UNASSIGNED, /* M-n */
+ F_UNASSIGNED, /* M-o */
+ F_UNASSIGNED, /* M-p */
+ F_UNASSIGNED, /* M-q */
+ F_UNASSIGNED, /* M-r */
+ F_UNASSIGNED, /* M-s */
+ F_UNASSIGNED, /* M-t */
+ F_UNASSIGNED, /* M-u */
+ F_UNASSIGNED, /* M-v */
+ F_UNASSIGNED, /* M-w */
+ F_UNASSIGNED, /* M-x */
+ F_UNASSIGNED, /* M-y */
+ F_UNASSIGNED, /* M-z */
+ F_UNASSIGNED, /* M-{ */
+ F_UNASSIGNED, /* M-| */
+ F_UNASSIGNED, /* M-} */
+ F_UNASSIGNED, /* M-~ */
+ F_UNASSIGNED, /* M-^? */
+ /* extra keys begin here */
+ F_UNASSIGNED, /* f-1 */
+ F_UNASSIGNED, /* f-2 */
+ F_UNASSIGNED, /* f-3 */
+ F_UNASSIGNED, /* f-4 */
+ F_UNASSIGNED, /* f-5 */
+ F_UNASSIGNED, /* f-6 */
+ F_UNASSIGNED, /* f-7 */
+ F_UNASSIGNED, /* f-8 */
+ F_UNASSIGNED, /* f-9 */
+ F_UNASSIGNED, /* f-10 */
+ F_UNASSIGNED, /* f-11 */
+ F_UNASSIGNED, /* f-12 */
+ F_UNASSIGNED, /* f-13 */
+ F_UNASSIGNED, /* f-14 */
+ F_UNASSIGNED, /* f-15 */
+ F_UNASSIGNED, /* f-16 */
+ F_UNASSIGNED, /* f-17 */
+ F_UNASSIGNED, /* f-18 */
+ F_UNASSIGNED, /* f-19 */
+ F_UNASSIGNED, /* f-20 */
+ F_UNASSIGNED, /* f-21 */
+ F_UNASSIGNED, /* f-22 */
+ F_UNASSIGNED, /* f-23 */
+ F_UNASSIGNED, /* f-24 */
+ F_UNASSIGNED, /* PgUp */
+ F_UNASSIGNED, /* PgDn */
+ F_UNASSIGNED, /* end */
+ F_UNASSIGNED, /* home */
+ F_UNASSIGNED, /* LEFT */
+ F_UNASSIGNED, /* UP */
+ F_UNASSIGNED, /* RIGHT */
+ F_UNASSIGNED, /* DOWN */
+ F_UNASSIGNED, /* INS */
+ F_UNASSIGNED, /* DEL */
+
+ /* ctrl key mappings */
+ F_UNASSIGNED, /* f-1 */
+ F_UNASSIGNED, /* f-2 */
+ F_UNASSIGNED, /* f-3 */
+ F_UNASSIGNED, /* f-4 */
+ F_UNASSIGNED, /* f-5 */
+ F_UNASSIGNED, /* f-6 */
+ F_UNASSIGNED, /* f-7 */
+ F_UNASSIGNED, /* f-8 */
+ F_UNASSIGNED, /* f-9 */
+ F_UNASSIGNED, /* f-10 */
+ F_UNASSIGNED, /* f-11 */
+ F_UNASSIGNED, /* f-12 */
+ F_UNASSIGNED, /* f-13 */
+ F_UNASSIGNED, /* f-14 */
+ F_UNASSIGNED, /* f-15 */
+ F_UNASSIGNED, /* f-16 */
+ F_UNASSIGNED, /* f-17 */
+ F_UNASSIGNED, /* f-18 */
+ F_UNASSIGNED, /* f-19 */
+ F_UNASSIGNED, /* f-20 */
+ F_UNASSIGNED, /* f-21 */
+ F_UNASSIGNED, /* f-22 */
+ F_UNASSIGNED, /* f-23 */
+ F_UNASSIGNED, /* f-24 */
+ F_UNASSIGNED, /* PgUp */
+ F_UNASSIGNED, /* PgDn */
+ F_UNASSIGNED, /* end */
+ F_UNASSIGNED, /* home */
+ F_UNASSIGNED, /* LEFT */
+ F_UNASSIGNED, /* UP */
+ F_UNASSIGNED, /* RIGHT */
+ F_UNASSIGNED, /* DOWN */
+ F_UNASSIGNED, /* INS */
+ F_UNASSIGNED, /* DEL */
+
+ /* alt key mappings */
+ F_UNASSIGNED, /* f-1 */
+ F_UNASSIGNED, /* f-2 */
+ F_UNASSIGNED, /* f-3 */
+ F_UNASSIGNED, /* f-4 */
+ F_UNASSIGNED, /* f-5 */
+ F_UNASSIGNED, /* f-6 */
+ F_UNASSIGNED, /* f-7 */
+ F_UNASSIGNED, /* f-8 */
+ F_UNASSIGNED, /* f-9 */
+ F_UNASSIGNED, /* f-10 */
+ F_UNASSIGNED, /* f-11 */
+ F_UNASSIGNED, /* f-12 */
+ F_UNASSIGNED, /* f-13 */
+ F_UNASSIGNED, /* f-14 */
+ F_UNASSIGNED, /* f-15 */
+ F_UNASSIGNED, /* f-16 */
+ F_UNASSIGNED, /* f-17 */
+ F_UNASSIGNED, /* f-18 */
+ F_UNASSIGNED, /* f-19 */
+ F_UNASSIGNED, /* f-20 */
+ F_UNASSIGNED, /* f-21 */
+ F_UNASSIGNED, /* f-22 */
+ F_UNASSIGNED, /* f-23 */
+ F_UNASSIGNED, /* f-24 */
+ F_UNASSIGNED, /* PgUp */
+ F_UNASSIGNED, /* PgDn */
+ F_UNASSIGNED, /* end */
+ F_UNASSIGNED, /* home */
+ F_UNASSIGNED, /* LEFT */
+ F_UNASSIGNED, /* UP */
+ F_UNASSIGNED, /* RIGHT */
+ F_UNASSIGNED, /* DOWN */
+ F_UNASSIGNED, /* INS */
+ F_UNASSIGNED, /* DEL */
+ /* shift key mappings */
+ F_UNASSIGNED, /* f-1 */
+ F_UNASSIGNED, /* f-2 */
+ F_UNASSIGNED, /* f-3 */
+ F_UNASSIGNED, /* f-4 */
+ F_UNASSIGNED, /* f-5 */
+ F_UNASSIGNED, /* f-6 */
+ F_UNASSIGNED, /* f-7 */
+ F_UNASSIGNED, /* f-8 */
+ F_UNASSIGNED, /* f-9 */
+ F_UNASSIGNED, /* f-10 */
+ F_UNASSIGNED, /* f-11 */
+ F_UNASSIGNED, /* f-12 */
+ F_UNASSIGNED, /* f-13 */
+ F_UNASSIGNED, /* f-14 */
+ F_UNASSIGNED, /* f-15 */
+ F_UNASSIGNED, /* f-16 */
+ F_UNASSIGNED, /* f-17 */
+ F_UNASSIGNED, /* f-18 */
+ F_UNASSIGNED, /* f-19 */
+ F_UNASSIGNED, /* f-20 */
+ F_UNASSIGNED, /* f-21 */
+ F_UNASSIGNED, /* f-22 */
+ F_UNASSIGNED, /* f-23 */
+ F_UNASSIGNED, /* f-24 */
+ F_UNASSIGNED, /* PgUp */
+ F_UNASSIGNED, /* PgDn */
+ F_UNASSIGNED, /* end */
+ F_UNASSIGNED, /* home */
+ F_UNASSIGNED, /* LEFT */
+ F_UNASSIGNED, /* UP */
+ F_UNASSIGNED, /* RIGHT */
+ F_UNASSIGNED, /* DOWN */
+ F_UNASSIGNED, /* INS */
+ F_UNASSIGNED /* DEL */
+};
+ static void
+nt_bad_spec(const Char *keystr)
+{
+ xprintf(CGETS(20, 4, "Bad key spec %S\n"), keystr);
+}
+extern int lstricmp(char*,char*);
+Char nt_translate_bindkey(const Char*s) {
+ char *astr = short2str(s);
+ short fkey;
+ char corm; /* 1 for ctrl map, 2 for meta map, 3 for shift map*/
+ Char keycode = 0;
+
+ corm = 0;
+
+ if (astr[0] == 'C')
+ corm= 1;
+ else if (astr[0] == 'M')
+ corm = 2;
+ else if (astr[0] == 'S') /*shift keymap by avner.lottem@intel.com*/
+ corm = 3;
+
+ if (corm)
+ astr += 2; /* skip C- or M- or S-*/
+
+ fkey = (short)atoi(astr);
+ if (fkey !=0) {
+ keycode = (NT_SPECIFIC_BINDING_OFFSET+ (fkey-1) );
+ }
+ else {
+ if (!_stricmp("pgup",astr)) {
+ keycode = (NT_SPECIFIC_BINDING_OFFSET + KEYPAD_MAPPING_BEGIN);
+ }
+ else if (!_stricmp("pgdown",astr)) {
+ keycode = (NT_SPECIFIC_BINDING_OFFSET + KEYPAD_MAPPING_BEGIN + 1);
+ }
+ else if (!_stricmp("end",astr)) {
+ keycode = (NT_SPECIFIC_BINDING_OFFSET + KEYPAD_MAPPING_BEGIN + 2);
+ }
+ else if (!_stricmp("home",astr)) {
+ keycode = (NT_SPECIFIC_BINDING_OFFSET + KEYPAD_MAPPING_BEGIN + 3);
+ }
+ else if (!_stricmp("left",astr)) {
+ keycode = (NT_SPECIFIC_BINDING_OFFSET + KEYPAD_MAPPING_BEGIN + 4);
+ }
+ else if (!_stricmp("up",astr)) {
+ keycode = (NT_SPECIFIC_BINDING_OFFSET + KEYPAD_MAPPING_BEGIN + 5);
+ }
+ else if (!_stricmp("right",astr)) {
+ keycode = (NT_SPECIFIC_BINDING_OFFSET + KEYPAD_MAPPING_BEGIN + 6);
+ }
+ else if (!_stricmp("down",astr)) {
+ keycode = (NT_SPECIFIC_BINDING_OFFSET + KEYPAD_MAPPING_BEGIN + 7);
+ }
+ else if (!_stricmp("ins",astr)) {
+ keycode = (NT_SPECIFIC_BINDING_OFFSET + INS_DEL_MAPPING_BEGIN );
+ }
+ else if (!_stricmp("del",astr)) {
+ keycode = (NT_SPECIFIC_BINDING_OFFSET +INS_DEL_MAPPING_BEGIN +1 );
+ }
+ else
+ nt_bad_spec(s);
+ }
+ if (keycode && corm) {
+ if (corm == 1)
+ keycode += CTRL_KEY_OFFSET;
+ else if (corm == 2)
+ keycode += ALT_KEY_OFFSET;
+ else if (corm == 3)
+ keycode += SHIFT_KEY_OFFSET;
+ }
+
+ return keycode;
+}
diff --git a/win32/nt.char.c b/win32/nt.char.c
new file mode 100644
index 000000000000..f76bfefd9cb9
--- /dev/null
+++ b/win32/nt.char.c
@@ -0,0 +1,127 @@
+/*$Header: /p/tcsh/cvsroot/tcsh/win32/nt.char.c,v 1.10 2008/10/11 12:47:39 christos Exp $*/
+/*-
+ * Copyright (c) 1980, 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * nt.char.c : Does NLS-like stuff
+ * -amol
+ *
+ */
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <stdlib.h>
+#include "sh.h"
+
+
+static HMODULE hlangdll;
+
+
+extern DWORD gdwPlatform;
+
+
+unsigned char oem_it(unsigned char ch) {
+ unsigned char ch1[2],ch2[2];
+
+ ch1[0] = ch;
+ ch1[1] = 0;
+
+ OemToChar((char*)ch1,(char*)ch2);
+
+ return ch2[0];
+}
+void nls_dll_unload(void) {
+ FreeLibrary(hlangdll);
+ hlangdll=NULL;
+}
+char * nt_cgets(int set, int msgnum, char *def) {
+
+ int rc;
+ int msg;
+ static char oembuf[256];/*FIXBUF*/
+ WCHAR buffer[256];/*FIXBUF*/
+
+
+
+ if (!hlangdll)
+ return def;
+
+ msg = set * 10000 + msgnum;
+
+ if (gdwPlatform == VER_PLATFORM_WIN32_WINDOWS) {
+ rc = LoadString(hlangdll,msg,oembuf,sizeof(oembuf));
+
+ if(!rc)
+ return def;
+ return oembuf;
+ }
+ rc = LoadStringW(hlangdll,msg,buffer,ARRAYSIZE(buffer));
+
+ if(!rc)
+ return def;
+
+ WideCharToMultiByte(CP_OEMCP,
+ 0,
+ buffer,
+ -1,
+ oembuf,//winbuf,
+ 256,
+ NULL,NULL);
+
+ return oembuf;
+}
+#if defined(DSPMBYTE)
+void nt_autoset_dspmbyte(void) {
+ switch (GetConsoleCP()) {
+ case 932: /* Japan */
+ setcopy(CHECK_MBYTEVAR, STRsjis, VAR_READWRITE);
+ update_dspmbyte_vars();
+ break;
+ }
+}
+
+// _mbmap must be copied to the child during fork()
+unsigned short _mbmap[256] = { 0 };
+#endif
+
+#undef free
+void nls_dll_init(void) {
+
+ char *ptr;
+ size_t size = 0;
+
+
+ if (_dupenv_s(&ptr,&size,"TCSHLANG") == 0){
+
+ if (hlangdll)
+ FreeLibrary(hlangdll);
+ hlangdll = LoadLibrary(ptr);
+
+ free(ptr);
+ }
+}
diff --git a/win32/nt.const.c b/win32/nt.const.c
new file mode 100644
index 000000000000..daee2881ee41
--- /dev/null
+++ b/win32/nt.const.c
@@ -0,0 +1,50 @@
+/*$Header: /p/tcsh/cvsroot/tcsh/win32/nt.const.c,v 1.4 2003/02/08 20:03:29 christos Exp $*/
+/*
+ * nt.const.c: NT-specific String constants for tcsh.
+ */
+/*-
+ * Copyright (c) 1980, 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#define _h_tc_const
+#include "sh.h"
+#ifdef WINNT_NATIVE
+Char STRoldtitle[] = { 'o', 'l', 'd', 't', 'i', 't', 'l', 'e', '\0' };
+Char STRNTlamepathfix[] = { 'N', 'T', 'l', 'a', 'm', 'e', 'p', 'a', 't', 'h',
+ 'f', 'i','x','\0'};
+Char STRtcshlang[] = { 'T', 'C', 'S', 'H', 'L', 'A', 'N', 'G', '\0' };
+Char STRtcshsubsthb[] = { 'T', 'C', 'S', 'H', 'S', 'U', 'B', 'S', 'T',
+ 'H', 'B', '\0' };
+Char STRtcshonlystartexes[] = { 'T', 'C', 'S', 'H', 'O', 'N', 'L', 'Y', 'S',
+ 'T', 'A', 'R', 'T', 'E', 'X', 'E', 'S', '\0' };
+Char STRNTslowexec[] = {'N','T','s','l','o','w','e','x','e','c','\0'};
+
+Char STRNTcaseifypwd[]={'N','T','c','a','s','e','i','f','y','p','w','d','\0'};
+Char STRdotEXE[] = {'.','E','X','E','\0'};
+
+Char STRNTnoquoteprotect[]={'N','T','n','o','q','u','o','t','e','p','r','o','t','e','c','t','\0'};
+#endif /* WINNT_NATIVE */
diff --git a/win32/nt.screen.c b/win32/nt.screen.c
new file mode 100644
index 000000000000..702591506cf5
--- /dev/null
+++ b/win32/nt.screen.c
@@ -0,0 +1,539 @@
+/*$Header: /p/tcsh/cvsroot/tcsh/win32/nt.screen.c,v 1.14 2006/03/14 01:22:57 mitr Exp $*/
+/*
+ * ed.screen.c: Editor/termcap-curses interface
+ */
+/*-
+ * Copyright (c) 1980, 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#include "sh.h"
+
+
+#include "ed.h"
+#include "tc.h"
+#include "ed.defns.h"
+
+
+/* #define DEBUG_LITERAL */
+
+/*
+ * IMPORTANT NOTE: these routines are allowed to look at the current screen
+ * and the current possition assuming that it is correct. If this is not
+ * true, then the update will be WRONG! This is (should be) a valid
+ * assumption...
+ */
+
+
+
+extern int nt_getsize(int*,int*,int*);
+extern int nt_ClearEOL( void) ;
+extern void NT_ClearEOD( void) ;
+extern void NT_ClearScreen(void) ;
+extern void NT_VisibleBell(void);
+extern void NT_WrapHorizontal(void);
+
+static int GetSize(int *lins, int *cols);
+
+int DisplayWindowHSize;
+ void
+terminit(void)
+{
+ return;
+}
+
+
+
+int T_ActualWindowSize;
+
+static void ReBufferDisplay (void);
+
+
+/*ARGSUSED*/
+ void
+TellTC(void)
+{
+
+ xprintf(CGETS(7, 1, "\n\tYou're using a Windows console.\n"));
+}
+
+
+ static void
+ReBufferDisplay(void)
+{
+ register int i;
+ Char **b;
+ Char **bufp;
+ int lins,cols;
+
+ nt_getsize(&lins,&cols,&DisplayWindowHSize);
+
+ b = Display;
+ Display = NULL;
+ if (b != NULL) {
+ for (bufp = b; *bufp != NULL; bufp++)
+ xfree((ptr_t) * bufp);
+ xfree((ptr_t) b);
+ }
+ b = Vdisplay;
+ Vdisplay = NULL;
+ if (b != NULL) {
+ for (bufp = b; *bufp != NULL; bufp++)
+ xfree((ptr_t) * bufp);
+ xfree((ptr_t) b);
+ }
+ TermH = cols;
+
+ TermV = (INBUFSIZE * 4) / TermH + 1;/*FIXBUF*/
+ b = (Char **) xmalloc((size_t) (sizeof(*b) * (TermV + 1)));
+ for (i = 0; i < TermV; i++)
+ b[i] = (Char *) xmalloc((size_t) (sizeof(*b[i]) * (TermH + 1)));
+ b[TermV] = NULL;
+ Display = b;
+ b = (Char **) xmalloc((size_t) (sizeof(*b) * (TermV + 1)));
+ for (i = 0; i < TermV; i++)
+ b[i] = (Char *) xmalloc((size_t) (sizeof(*b[i]) * (TermH + 1)));
+ b[TermV] = NULL;
+ Vdisplay = b;
+}
+
+ void
+SetTC(char *what, char *how)
+{
+ int li,win,co;
+
+ nt_getsize(&li,&co,&win);
+ if (!lstrcmp(what,"li")) {
+ li = atoi(how);
+
+ }else if(!lstrcmp(what,"co")) { //set window, not buffer size
+ win = atoi(how);
+ }
+ else
+ stderror(ERR_SYSTEM, "SetTC","Sorry, this function is not supported");
+
+ ChangeSize(li,win);
+ return;
+}
+
+
+/*
+ * Print the termcap string out with variable substitution
+ */
+ void
+EchoTC(Char **v)
+{
+ Char **globbed;
+ char cv[BUFSIZE];/*FIXBUF*/
+ int verbose = 0, silent = 0;
+ static char *fmts = "%s\n", *fmtd = "%d\n";
+ int li,co;
+
+
+ setname("echotc");
+
+ v = glob_all_or_error(v);
+ globbed = v;
+ cleanup_push(globbed, blk_cleanup);
+
+ if (!v || !*v || *v[0] == '\0')
+ goto end;
+ if (v[0][0] == '-') {
+ switch (v[0][1]) {
+ case 'v':
+ verbose = 1;
+ break;
+ case 's':
+ silent = 1;
+ break;
+ default:
+ stderror(ERR_NAME | ERR_TCUSAGE);
+ break;
+ }
+ v++;
+ }
+ if (!*v || *v[0] == '\0')
+ goto end;
+ (void) StringCbCopy(cv,sizeof(cv), short2str(*v));
+
+ GetSize(&li,&co);
+
+ if(!lstrcmp(cv,"rows") || !lstrcmp(cv,"lines") ) {
+ xprintf(fmtd,T_Lines);
+ goto end;
+ }
+ else if(!lstrcmp(cv,"cols") ) {
+ xprintf(fmtd,T_ActualWindowSize);
+ goto end;
+ }
+ else if(!lstrcmp(cv,"buffer") ) {
+ xprintf(fmtd,T_Cols);
+ goto end;
+ }
+ else
+ stderror(ERR_SYSTEM, "EchoTC","Sorry, this function is not supported");
+
+end:
+ cleanup_until(globbed);
+}
+
+int GotTermCaps = 0;
+
+
+ void
+ResetArrowKeys(void)
+{
+}
+
+ void
+DefaultArrowKeys(void)
+{
+}
+
+
+ int
+SetArrowKeys(const CStr *name, XmapVal *fun, int type)
+{
+ UNREFERENCED_PARAMETER(name);
+ UNREFERENCED_PARAMETER(fun);
+ UNREFERENCED_PARAMETER(type);
+ return -1;
+}
+
+ int
+IsArrowKey(Char *name)
+{
+ UNREFERENCED_PARAMETER(name);
+ return 0;
+}
+
+ int
+ClearArrowKeys(const CStr *name)
+{
+ UNREFERENCED_PARAMETER(name);
+ return -1;
+}
+
+ void
+PrintArrowKeys(const CStr *name)
+{
+ UNREFERENCED_PARAMETER(name);
+ return;
+}
+
+
+ void
+BindArrowKeys(void)
+{
+ return;
+}
+
+#define GoodStr(ignore) 1
+ void
+SetAttributes(Char atr)
+{
+ atr &= ATTRIBUTES;
+}
+
+/* PWP 6-27-88 -- if the tty driver thinks that we can tab, we ask termcap */
+ int
+CanWeTab(void)
+{
+ return 1;
+}
+
+/* move to line <where> (first line == 0) as efficiently as possible; */
+ void
+MoveToLine(int where)
+{
+ int del;
+
+ if (where == CursorV)
+ return;
+
+ if (where > TermV) {
+#ifdef DEBUG_SCREEN
+ xprintf("MoveToLine: where is ridiculous: %d\r\n", where);
+ flush();
+#endif /* DEBUG_SCREEN */
+ return;
+ }
+
+ del = where - CursorV;
+
+ NT_MoveToLineOrChar(del, 1);
+
+ CursorV = where; /* now where is here */
+}
+
+/* move to character position (where) as efficiently as possible */
+ void
+MoveToChar(int where)
+{
+ if (where == CursorH)
+ return;
+
+ if (where >= TermH) {
+#ifdef DEBUG_SCREEN
+ xprintf("MoveToChar: where is riduculous: %d\r\n", where);
+ flush();
+#endif /* DEBUG_SCREEN */
+ return;
+ }
+
+ if (!where) { /* if where is first column */
+ //(void) putraw('\r'); /* do a CR */
+ NT_MoveToLineOrChar(where, 0);
+ flush();
+ CursorH = 0;
+ return;
+ }
+
+ NT_MoveToLineOrChar(where, 0);
+ CursorH = where; /* now where is here */
+}
+
+ void
+so_write(register Char *cp, register int n)
+{
+ if (n <= 0)
+ return; /* catch bugs */
+
+ if (n > TermH) {
+ return;
+ }
+
+ do {
+ if (*cp & LITERAL) {
+ Char *d;
+
+ for (d = litptr + (*cp++ & ~LITERAL) * LIT_FACTOR; *d;
+ d++)
+ (void) putraw(*d);
+ }
+ else
+ (void) putraw(*cp++);
+ CursorH++;
+ } while (--n);
+
+ if (CursorH >= TermH) { /* wrap? */
+ CursorH = 0;
+ CursorV++;
+ NT_WrapHorizontal();
+
+ }
+ else if(CursorH >= DisplayWindowHSize) {
+ flush();
+ NT_MoveToLineOrChar(CursorH,0);
+ }
+}
+
+
+ void
+DeleteChars(int num) /* deletes <num> characters */
+{
+ if (num <= 0)
+ return;
+
+ if (!T_CanDel) {
+#ifdef DEBUG_EDIT
+ xprintf(CGETS(7, 16, "ERROR: cannot delete\r\n"));
+#endif /* DEBUG_EDIT */
+ flush();
+ return;
+ }
+
+ if (num > TermH) {
+#ifdef DEBUG_SCREEN
+ xprintf(CGETS(7, 17, "DeletChars: num is riduculous: %d\r\n"), num);
+ flush();
+#endif /* DEBUG_SCREEN */
+ return;
+ }
+
+}
+
+/* Puts terminal in insert character mode, or inserts num characters in the
+ line */
+ void
+Insert_write(register Char *cp, register int num)
+{
+ UNREFERENCED_PARAMETER(cp);
+
+ if (num <= 0)
+ return;
+ if (!T_CanIns) {
+#ifdef DEBUG_EDIT
+ xprintf(CGETS(7, 18, "ERROR: cannot insert\r\n"));
+#endif /* DEBUG_EDIT */
+ flush();
+ return;
+ }
+
+ if (num > TermH) {
+#ifdef DEBUG_SCREEN
+ xprintf(CGETS(7, 19, "StartInsert: num is riduculous: %d\r\n"), num);
+ flush();
+#endif /* DEBUG_SCREEN */
+ return;
+ }
+
+
+}
+
+/* clear to end of line. There are num characters to clear */
+ void
+ClearEOL(int num)
+{
+
+ if (num <= 0)
+ return;
+
+ nt_ClearEOL();
+
+}
+
+ void
+ClearScreen(void)
+{ /* clear the whole screen and home */
+
+ NT_ClearScreen();
+
+}
+
+ void
+SoundBeep(void)
+{ /* produce a sound */
+ beep_cmd ();
+ if (adrof(STRnobeep))
+ return;
+
+ if (adrof(STRvisiblebell))
+ NT_VisibleBell(); /* visible bell */
+ else
+ MessageBeep(MB_ICONQUESTION);
+}
+
+ void
+ClearToBottom(void)
+{ /* clear to the bottom of the screen */
+ NT_ClearEOD();
+
+}
+
+ void
+GetTermCaps(void)
+{
+ int lins,cols;
+
+ nt_getsize(&lins,&cols,&DisplayWindowHSize);
+
+ GotTermCaps = 1;
+
+ T_Cols = cols;
+ T_Lines = lins;
+ T_ActualWindowSize = DisplayWindowHSize;
+ T_Margin = MARGIN_AUTO;
+ T_CanCEOL = 1;
+ T_CanDel = 0;
+ T_CanIns = 0;
+ T_CanUP = 1;
+
+ ReBufferDisplay();
+ ClearDisp();
+
+ return;
+}
+/* GetSize():
+ * Return the new window size in lines and cols, and
+ * true if the size was changed.
+ */
+ int
+GetSize(int *lins, int *cols)
+{
+
+ int ret = 0;
+
+ *lins = T_Lines;
+
+ *cols = T_Cols;
+
+ nt_getsize(lins,cols,&DisplayWindowHSize);
+
+ // compare the actual visible window size,but return the console buffer size
+ // this is seriously demented.
+ ret = (T_Lines != *lins || T_ActualWindowSize != DisplayWindowHSize);
+
+ T_Lines = *lins;
+ T_Cols = *cols;
+ T_ActualWindowSize = DisplayWindowHSize;
+
+ return ret;
+}
+ void
+ChangeSize(int lins, int cols)
+{
+
+ int rc = 0;
+ // here we're setting the window size, not the buffer size.
+ //
+ nt_set_size(lins,cols);
+
+ rc = GetSize(&lins,&cols);
+
+
+ ReBufferDisplay(); /* re-make display buffers */
+ ClearDisp();
+}
+ void
+PutPlusOne(Char c, int width)
+{
+ extern int OldvcV;
+
+ while (width > 1 && CursorH + width > DisplayWindowHSize)
+ PutPlusOne(' ', 1);
+ if ((c & LITERAL) != 0) {
+ Char *d;
+ for (d = litptr + (c & ~LITERAL) * LIT_FACTOR; *d; d++)
+ (void) putwraw(*d);
+ } else {
+ (void) putwraw(c);
+ }
+
+ Display[CursorV][CursorH++] = (Char) c;
+ while (--width > 0)
+ Display[CursorV][CursorH++] = CHAR_DBWIDTH;
+
+ if (CursorH >= TermH) { /* if we must overflow */
+ CursorH = 0;
+ CursorV++;
+ OldvcV++;
+ NT_WrapHorizontal();
+ }
+ else if(CursorH >= DisplayWindowHSize) {
+ NT_MoveToLineOrChar(CursorH,0);
+ }
+}
diff --git a/win32/nt.who.c b/win32/nt.who.c
new file mode 100644
index 000000000000..59ef39eec42d
--- /dev/null
+++ b/win32/nt.who.c
@@ -0,0 +1,275 @@
+/*$Header: /p/tcsh/cvsroot/tcsh/win32/nt.who.c,v 1.6 2006/03/05 08:59:36 amold Exp $*/
+/*-
+ * Copyright (c) 1980, 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * nt.who.c: Support for who-like functions, using NETBIOS
+ * -amol
+ *
+ */
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <nb30.h>
+#include <stdio.h>
+#include "sh.h"
+
+
+typedef struct _ASTAT_ {
+ ADAPTER_STATUS adapt;
+ NAME_BUFFER NameBuff [10];
+} ASTAT;
+
+typedef struct _n_ctx {
+ NCB ncb;
+ u_char usr_name[NCBNAMSZ];
+ u_char mach_name[NCBNAMSZ];
+} ncb_ctx;
+
+typedef UCHAR (APIENTRY *netbios_func)(NCB *);
+
+
+static netbios_func p_Netbios =0;
+static int ginited = 0;
+
+static CRITICAL_SECTION nb_critter;
+static HMODULE hnetapi;
+
+
+extern int add_to_who_list(u_char *,u_char*);
+
+void init_netbios(void ) {
+
+
+ if (!ginited) {
+ hnetapi = LoadLibrary("NETAPI32.DLL");
+ if (!hnetapi)
+ return ;
+
+ p_Netbios = (netbios_func)GetProcAddress(hnetapi,"Netbios");
+
+ if (!p_Netbios )
+ return ;
+ ginited = 1;
+ }
+ InitializeCriticalSection(&nb_critter);
+}
+void cleanup_netbios(void) {
+ if (hnetapi){
+ DeleteCriticalSection(&nb_critter);
+ FreeLibrary(hnetapi);
+ }
+}
+void CALLBACK complete_ncb( NCB * p_ncb) {
+
+ int count,i;
+ ADAPTER_STATUS *p_ad;
+ ASTAT *pas;
+ char *p1;
+ ncb_ctx *ctx = (ncb_ctx *)p_ncb;
+
+ if (p_ncb->ncb_retcode)
+ goto end;
+
+ __try {
+
+ EnterCriticalSection(&nb_critter);
+ pas = ((ASTAT*) p_ncb->ncb_buffer);
+ p_ad = &pas->adapt;
+
+ count = p_ad->name_count;
+
+ if (count <=0 )
+ __leave;
+
+ if (ctx->usr_name[0] == 0) { //any user on given machine
+ for(i=0; i<count;i++) {
+ if (pas->NameBuff[i].name[15] == 03) { // unique name
+ if (!strncmp((char*)(pas->NameBuff[i].name),
+ (char*)(p_ncb->ncb_callname),
+ NCBNAMSZ)) {
+ continue;
+ }
+ else {
+ p1 = strchr((char*)(pas->NameBuff[i].name),' ');
+ if (p1)
+ *p1 = 0;
+ else
+ pas->NameBuff[i].name[15]= 0;
+ add_to_who_list(pas->NameBuff[i].name,
+ ctx->mach_name);
+ break;
+ }
+ }
+ }
+ }
+ else if (ctx->mach_name[0] == 0) { // given user on any machine
+ for(i=0; i<count;i++) {
+ if (pas->NameBuff[i].name[15] == 03) { // unique name
+ if (!strncmp((char*)(pas->NameBuff[i].name),
+ (char*)(p_ncb->ncb_callname),
+ NCBNAMSZ))
+ continue;
+ else {
+ p1 = strchr((char*)(pas->NameBuff[i].name),' ');
+ if (p1)
+ *p1 = 0;
+ else
+ pas->NameBuff[i].name[15]= 0;
+
+ add_to_who_list(ctx->usr_name, pas->NameBuff[i].name);
+
+ break;
+ }
+ }
+ }
+ }
+ else { // specific user on specific machine
+ for(i=0; i<count;i++) {
+ if (pas->NameBuff[i].name[15] == 03) { // unique name
+ // skip computer name
+ if (!strncmp((char*)(pas->NameBuff[i].name),
+ (char*)(p_ncb->ncb_callname),
+ NCBNAMSZ)) {
+ continue;
+ }
+ else if (!strncmp((char*)(pas->NameBuff[i].name),
+ (char*)(ctx->usr_name),
+ lstrlen((char*)ctx->usr_name))) {
+ p1 = strchr((char*)pas->NameBuff[i].name,' ');
+ if (p1)
+ *p1 = 0;
+ else
+ pas->NameBuff[i].name[15]= 0;
+ add_to_who_list(pas->NameBuff[i].name,ctx->mach_name);
+ break;
+ }
+ }
+ }
+ }
+ }
+ __except(GetExceptionCode()) {
+ ;
+ }
+ LeaveCriticalSection(&nb_critter);
+end:
+ heap_free(p_ncb->ncb_buffer);
+ heap_free(p_ncb);
+ return;
+}
+void start_ncbs (Char **vp) {
+
+ ncb_ctx * p_ctx;
+ NCB *Ncb;
+ Char **namevec = vp;
+ char *p1,*p2,*nb_name;
+ UCHAR uRetCode;
+ ASTAT *Adapter;
+
+ if (!ginited) {
+ init_netbios();
+ }
+ if (!ginited)
+ return;
+
+ for (namevec = vp;*namevec != NULL;namevec +=2) {
+
+ p_ctx = heap_alloc(sizeof(ncb_ctx));
+ Adapter = heap_alloc(sizeof(ASTAT));
+
+ Ncb = (NCB*)p_ctx;
+
+ memset( Ncb, 0, sizeof(NCB) );
+
+ Ncb->ncb_command = NCBRESET;
+ Ncb->ncb_lana_num = 0;
+
+ uRetCode = p_Netbios( Ncb );
+
+ if(uRetCode)
+ goto cleanup;
+
+ if ((**namevec == '\0' ) || ( *(namevec +1) == NULL) ||
+ (**(namevec +1) == '\0') )
+ break;
+
+
+ p1 = short2str(*namevec);
+ if (!_stricmp(p1,"any") ) {
+ p_ctx->usr_name[0] = 0;
+ }
+ else {
+ StringCbCopy((char*)p_ctx->usr_name,sizeof(p_ctx->usr_name),p1);
+ }
+ p1 = (char*)&(p_ctx->usr_name[0]);
+
+ p2 = short2str(*(namevec+1));
+ //
+ // If machine is not "any", make it the callname
+ //
+ if (!_stricmp(p2,"any") ) {
+ p_ctx->mach_name[0] = 0;
+ nb_name = p1;
+ }
+ else {
+ StringCbCopy((char*)p_ctx->mach_name,sizeof(p_ctx->mach_name),p2);
+ nb_name = p2;
+ }
+
+ // do not permit any any
+ //
+ if( (p_ctx->mach_name[0] == 0) && (p_ctx->usr_name[0] == 0) )
+ goto cleanup;
+
+
+
+ memset( Ncb, 0, sizeof (NCB) );
+
+ Ncb->ncb_command = NCBASTAT | ASYNCH;
+ Ncb->ncb_lana_num = 0;
+
+ memset(Ncb->ncb_callname,' ',sizeof(Ncb->ncb_callname));
+
+ Ncb->ncb_callname[15]=03;
+
+ memcpy(Ncb->ncb_callname,nb_name,lstrlen(nb_name));
+
+ Ncb->ncb_buffer = (u_char *) Adapter;
+ Ncb->ncb_length = sizeof(*Adapter);
+
+ Ncb->ncb_post = complete_ncb;
+
+ uRetCode = p_Netbios( Ncb );
+ }
+ return;
+
+cleanup:
+ heap_free(Adapter);
+ heap_free(p_ctx);
+ return;
+}
diff --git a/win32/ntb1.c b/win32/ntb1.c
new file mode 100644
index 000000000000..ccc54451c116
--- /dev/null
+++ b/win32/ntb1.c
@@ -0,0 +1,35 @@
+/*$Header: /p/tcsh/cvsroot/tcsh/win32/ntb1.c,v 1.4 2004/05/19 18:22:28 christos Exp $*/
+/*-
+ * Copyright (c) 1980, 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+//
+// Placeholder variable to mark beginning of data segment.
+// -amol
+//
+#include "ntport.h"
+unsigned long bookend1=0;
diff --git a/win32/ntb2.c b/win32/ntb2.c
new file mode 100644
index 000000000000..99a119917185
--- /dev/null
+++ b/win32/ntb2.c
@@ -0,0 +1,34 @@
+/*$Header: /p/tcsh/cvsroot/tcsh/win32/ntb2.c,v 1.4 2004/05/19 18:22:28 christos Exp $*/
+/*-
+ * Copyright (c) 1980, 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+//
+// Placeholder variable to mark end of data segment.
+//
+#include "ntport.h"
+unsigned long bookend2=0;
diff --git a/win32/ntfunc.c b/win32/ntfunc.c
new file mode 100644
index 000000000000..2799715cb109
--- /dev/null
+++ b/win32/ntfunc.c
@@ -0,0 +1,1207 @@
+/*$Header: /p/tcsh/cvsroot/tcsh/win32/ntfunc.c,v 1.19 2006/08/27 01:13:28 amold Exp $*/
+/*-
+ * Copyright (c) 1980, 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * ntfunc.c builtins specific to NT
+ * -amol
+ *
+ */
+#pragma warning(push,3)
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <shellapi.h>
+#pragma warning(pop)
+#include <errno.h>
+#include <sh.h>
+#include "ed.h"
+
+#include "nt.const.h"
+
+
+extern DWORD gdwPlatform;
+
+extern int StrQcmp(Char *, Char *);
+extern int hashval_extern(Char*);
+extern int bit_extern(int,int);
+extern void bis_extern(int,int);
+extern int hashname(Char*);
+
+extern void NT_ClearScreen_WholeBuffer(void);
+
+BOOL is_url(const char *cmd);
+
+void error(char * ) ;
+void make_err_str(unsigned int ,char *,int) ;
+
+#define INF INT_MAX
+struct biltins nt_bfunc[] = {
+ { "cls", docls, 0, 0 },
+#ifdef NTDBG
+ { "debugbreak", dodebugbreak, 0, 0 },
+#endif /* NTDBG */
+ { "ps", dops, 0, 1 },
+ { "shutdown", doshutdown, 0, 2 },
+ { "start", dostart, 1, INF },
+ { "title", dotitle, 1, INF },
+};
+int nt_nbfunc = sizeof nt_bfunc / sizeof *nt_bfunc;
+
+char start_usage[] = { ":\n \
+ Similar to cmd.exe's start \n \
+ start [-Ttitle] [-Dpath] [-min] [-max] [-separate] [-shared] \n \
+ [-low|normal|realtime|high] program args \n \
+ Batch/Cmd files must be started with CMD /K \n"
+};
+
+struct biltins * nt_check_additional_builtins(Char *cp) {
+
+ register struct biltins *bp1, *bp2;
+ int i;
+
+ for (bp1 = nt_bfunc, bp2 = nt_bfunc + nt_nbfunc; bp1 < bp2;bp1++) {
+
+ if ((i = ((char) *cp) - *bp1->bname) == 0 &&
+ (i = StrQcmp(cp, str2short(bp1->bname))) == 0)
+ return bp1;
+ }
+ return (0);
+}
+void nt_print_builtins(size_t maxwidth) {
+
+ /* would use print_by_column() in tw.parse.c but that assumes
+ * we have an array of Char * to pass.. (sg)
+ */
+ extern int Tty_raw_mode;
+ extern int TermH; /* from the editor routines */
+ extern int lbuffed; /* from sh.print.c */
+
+ register struct biltins *b;
+ register size_t row, col, columns, rows;
+ size_t w ,oldmax;
+
+
+ /* find widest string */
+
+ oldmax = maxwidth;
+
+ for ( b = nt_bfunc; b < &nt_bfunc[nt_nbfunc]; ++b)
+ maxwidth = max(maxwidth, (int)lstrlen(b->bname));
+
+ if (oldmax != maxwidth)
+ ++maxwidth; /* for space */
+
+ columns = (TermH + 1) / maxwidth; /* PWP: terminal size change */
+ if (!columns)
+ columns = 1;
+ rows = (nt_nbfunc + (columns - 1)) / columns;
+
+ for (b = nt_bfunc, row = 0; row < rows; row++) {
+ for (col = 0; col < columns; col++) {
+ if (b < &nt_bfunc[nt_nbfunc]) {
+ w = (int)lstrlen(b->bname);
+ xprintf("%s", b->bname);
+ if (col < (columns - 1)) /* Not last column? */
+ for (; w < maxwidth; w++)
+ xputchar(' ');
+ ++b;
+ }
+ }
+ if (Tty_raw_mode)
+ xputchar('\r');
+ xputchar('\n');
+ }
+
+}
+/* patch from TAGA Nayuta for start . */
+BOOL is_directory(const char *the_cmd) {
+ DWORD attr = GetFileAttributes(the_cmd);
+ return (attr != 0xFFFFFFFF &&
+ (attr & FILE_ATTRIBUTE_DIRECTORY));
+}
+void dostart(Char ** vc, struct command *c) {
+
+ char *cmdstr,*cmdend,*ptr;
+ char argv0[256];/*FIXBUF*/
+ DWORD cmdsize;
+ char *currdir=NULL;
+ char *savepath;
+ char **v = NULL;
+ STARTUPINFO si;
+ PROCESS_INFORMATION pi;
+ DWORD dwCreationFlags=CREATE_NEW_CONSOLE;
+ DWORD k,cmdlen,j,jj,ret;
+
+
+ UNREFERENCED_PARAMETER(c);
+ vc++;
+
+ cmdsize = 512;
+ cmdstr = heap_alloc(cmdsize);
+ cmdend = cmdstr;
+ cmdlen = 0;
+
+ memset(&si,0,sizeof(si));
+ si.cb = sizeof(si);
+
+ vc = glob_all_or_error(vc);
+ v = short2blk(vc);
+ if(v == NULL) {
+ stderror(ERR_NOMEM);
+ return;
+ }
+ blkfree(vc);
+ for (k = 0; v[k] != NULL ; k++){
+
+ if ( v[k][0] == '-' ) {
+ /* various options */
+ if( (v[k][1] == 'T') || (v[k][1] == 't'))
+ si.lpTitle =&( v[k][2]);
+ else if ( (v[k][1] == 'D') || (v[k][1] == 'd'))
+ currdir =&( v[k][2]);
+ else if (!_stricmp(&v[k][1],"MIN") )
+ si.wShowWindow = SW_SHOWMINIMIZED;
+ else if (!_stricmp(&v[k][1],"MAX") )
+ si.wShowWindow = SW_SHOWMAXIMIZED;
+ else if (!_stricmp(&v[k][1],"SEPARATE") )
+ dwCreationFlags |= CREATE_SEPARATE_WOW_VDM;
+ else if (!_stricmp(&v[k][1],"SHARED") )
+ dwCreationFlags |= CREATE_SHARED_WOW_VDM;
+ else if (!_stricmp(&v[k][1],"LOW") )
+ dwCreationFlags |= IDLE_PRIORITY_CLASS;
+ else if (!_stricmp(&v[k][1],"NORMAL") )
+ dwCreationFlags |= NORMAL_PRIORITY_CLASS;
+ else if (!_stricmp(&v[k][1],"HIGH") )
+ dwCreationFlags |= HIGH_PRIORITY_CLASS;
+ else if (!_stricmp(&v[k][1],"REALTIME") )
+ dwCreationFlags |= REALTIME_PRIORITY_CLASS;
+ else{
+ blkfree((Char **)v);
+ stderror(ERR_SYSTEM,start_usage,"See CMD.EXE for more info");/*FIXRESET*/
+ }
+ }
+ else{ // non-option arg
+ break;
+ }
+ }
+ /*
+ * Stop the insanity of requiring start "tcsh -l"
+ * Option processing now stops at first non-option arg
+ * -amol 5/30/96
+ */
+ for (jj=k;v[jj] != NULL; jj++) {
+ j=(lstrlen(v[jj]) + 2);
+ if (j + cmdlen > cmdsize) {
+ ptr = cmdstr;
+ cmdstr = heap_realloc(cmdstr, max(cmdsize << 1, j+cmdlen) );
+ if(!cmdstr)
+ {
+ heap_free(ptr);
+ stderror(ERR_NOMEM,"start");/*FIXRESET*/
+ }
+ cmdend = cmdstr + (cmdend - ptr);
+ cmdsize <<= 1;
+ }
+ ptr = v[jj];
+ while (*ptr) {
+ *cmdend++ = *ptr++;
+ cmdlen++;
+ }
+ *cmdend++ = ' ';
+ cmdlen++;
+ }
+ if (jj == k) {
+ blkfree((Char **)v);
+ stderror(ERR_SYSTEM,start_usage,"See CMD.EXE for more info");/*FIXRESET*/
+ return;
+ }
+ *cmdend = 0;
+ StringCbCopy(argv0,sizeof(argv0),v[k]);
+
+
+ /*
+ * strictly speaking, it should do no harm to set the path
+ * back to '\'-delimited even in the parent, but in the
+ * interest of consistency, we save the old value and restore it
+ * later
+ */
+
+ savepath = fix_path_for_child();
+
+ if (! CreateProcess(NULL,
+ cmdstr,
+ NULL,
+ NULL,
+ FALSE,
+ dwCreationFlags,
+ NULL,
+ currdir,
+ &si,
+ &pi) ) {
+
+ restore_path(savepath);
+
+ ret = GetLastError();
+ if (ret == ERROR_BAD_EXE_FORMAT || ret == ERROR_ACCESS_DENIED ||
+ (ret == ERROR_FILE_NOT_FOUND &&
+ (is_url(v[k]) || is_directory(v[k]))
+ )
+ ) {
+
+ char erbuf[MAX_PATH];
+
+ errno = ENOEXEC;
+
+ try_shell_ex(&v[k],0,FALSE);
+
+ heap_free(cmdstr); /* free !! */
+
+ if (errno) {
+ strerror_s(erbuf,sizeof(erbuf),errno);
+ stderror(ERR_ARCH,argv0,erbuf);/*FIXRESET*/
+ }
+ }
+ else if (ret == ERROR_INVALID_PARAMETER) {
+
+ errno = ENAMETOOLONG;
+
+ heap_free(cmdstr); /* free !! */
+
+ stderror(ERR_TOOLARGE,argv0);/*FIXRESET*/
+
+ }
+ else {
+ errno = ENOENT;
+ if (
+ ( (v[k][0] == '\\') ||(v[k][0] == '/') ) &&
+ ( (v[k][1] == '\\') ||(v[k][1] == '/') ) &&
+ (!v[k+1])
+ )
+ try_shell_ex(&v[k],0,FALSE);
+
+ heap_free(cmdstr); /* free !! */
+ if (errno) {
+ stderror(ERR_NOTFOUND,argv0);/*FIXRESET*/
+ }
+ }
+ }
+ else {
+ CloseHandle(pi.hProcess);
+ CloseHandle(pi.hThread);
+
+ heap_free(cmdstr);
+ restore_path(savepath);
+ }
+ blkfree((Char **)v);
+ return;
+}
+void error(char * ebuf) {
+
+ write(2,(unsigned char*)ebuf,lstrlen(ebuf));
+}
+void make_err_str(unsigned int error,char *buf,int size) {
+
+ FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
+ NULL,
+ error,
+ MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US),
+ buf,
+ size,
+ NULL);
+ return;
+
+}
+
+// We should really use the environ array, but NT likes it to be sorted.
+// So we just let the win32 apis take care of inheritance of the environment.
+// -amol 4/7/97
+//
+//char nameBuf[BUFSIZ], valBuf[BUFSIZ];
+char dummy;
+char *nameBuf=&dummy, *valBuf=&dummy;
+
+void nt_set_env(const Char *name, const Char *val) {
+ char *cname, *cval;
+ int len;
+
+ cname = name?short2str(name):NULL;
+ if(cname) {
+ len = lstrlen(cname);
+ nameBuf = heap_alloc(len+1);
+ if (!nameBuf) {
+ stderror(ERR_TOOLARGE);
+ }
+ StringCbCopy(nameBuf,len+1,cname);
+ }
+ cval = val?short2str(val):NULL;
+ if(cval) {
+ len = lstrlen(cval);
+ valBuf = heap_alloc(len+1);
+ StringCbCopy(valBuf,len+1,cval);
+ }
+
+ SetEnvironmentVariable(nameBuf,cval?valBuf:NULL);
+
+ if (!lstrcmp(nameBuf,"TCSHONLYSTARTEXES"))
+ init_shell_dll();
+
+ heap_free(nameBuf);
+ if (cval)
+ heap_free(valBuf);
+
+
+}
+void dotitle(Char **vc, struct command * c) {
+
+ int k;
+ char titlebuf[512];
+ char errbuf[128],err2[128];
+ char **v;
+
+ UNREFERENCED_PARAMETER(c);
+ vc++;
+ vc = glob_all_or_error(vc);
+ cleanup_push(vc, blk_cleanup);
+
+ if ((k=GetConsoleTitle(titlebuf,512) ) != 0) {
+ titlebuf[k]=0;
+ setcopy(STRoldtitle,str2short(titlebuf),VAR_READWRITE);
+ }
+
+ memset(titlebuf,0,512);
+ v = short2blk(vc);
+ cleanup_until(vc);
+ cleanup_push((Char **)v, blk_cleanup);
+ for (k = 0; v[k] != NULL ; k++){
+ __try {
+ StringCbCat(titlebuf,sizeof(titlebuf),v[k]);
+ StringCbCat(titlebuf,sizeof(titlebuf)," ");
+ }
+ __except(GetExceptionCode()) {
+ stderror(ERR_TOOMANY);
+ }
+ }
+
+ if (!SetConsoleTitle(titlebuf) ) {
+ make_err_str(GetLastError(),errbuf,128);
+ (void)StringCbPrintf(err2,sizeof(err2),"%s",v[k]);
+ stderror(ERR_SYSTEM,err2,errbuf);
+ }
+ cleanup_until((Char **)v);
+ return;
+}
+void docls(Char **vc, struct command *c) {
+ UNREFERENCED_PARAMETER(vc);
+ UNREFERENCED_PARAMETER(c);
+ NT_ClearScreen_WholeBuffer();
+}
+int nt_feed_to_cmd(char *file,char **argv) {
+
+ char *ptr, *orig;
+ char cmdbuf[128];
+ HANDLE htemp;
+ STARTUPINFO si;
+ PROCESS_INFORMATION pi;
+
+ if (!file)
+ return 1;
+
+ ptr = strrchr(file,'.');
+
+ if(!ptr)
+ return 1;
+
+ if (lstrlen(ptr) <4)
+ return 1;
+
+ if ( _stricmp(ptr,".bat") && _stricmp(ptr,".cmd") )
+ return 1;
+
+
+ memset(&si,0,sizeof(si));
+ memset(&pi,0,sizeof(pi));
+
+ si.cb = sizeof(si);
+ si.dwFlags = STARTF_USESTDHANDLES;
+ htemp= (HANDLE)_get_osfhandle(0);
+ DuplicateHandle(GetCurrentProcess(),htemp,GetCurrentProcess(),
+ &si.hStdInput,0,TRUE,DUPLICATE_SAME_ACCESS);
+ htemp= (HANDLE)_get_osfhandle(1);
+ DuplicateHandle(GetCurrentProcess(),htemp,GetCurrentProcess(),
+ &si.hStdOutput,0,TRUE,DUPLICATE_SAME_ACCESS);
+ htemp= (HANDLE)_get_osfhandle(2);
+ DuplicateHandle(GetCurrentProcess(),htemp,GetCurrentProcess(),
+ &si.hStdError,0,TRUE,DUPLICATE_SAME_ACCESS);
+
+
+ ptr =file;
+ while(*ptr) {
+ if (*ptr == '/')
+ *ptr = '\\';
+ ptr++;
+ }
+ if (gdwPlatform == VER_PLATFORM_WIN32_WINDOWS){
+ (void)StringCbPrintf(cmdbuf,sizeof(cmdbuf),
+ "command.com /c %s",file);
+ }
+ else
+ (void)StringCbPrintf(cmdbuf,sizeof(cmdbuf),
+ "cmd /c %s",file);
+
+ argv++;
+ ptr = &cmdbuf[0] ;
+ orig = ptr;
+ while(*argv) {
+ StringCbCat(ptr,sizeof(cmdbuf) - (orig - ptr), " ");
+ StringCbCat(ptr,sizeof(cmdbuf) - (orig - ptr),*argv);
+ argv++;
+ }
+
+ ptr = fix_path_for_child();
+
+ if (!CreateProcess(NULL,
+ cmdbuf,
+ NULL,
+ NULL,
+ TRUE,
+ 0,//CREATE_NEW_CONSOLE |CREATE_NEW_PROCESS_GROUP,
+ NULL,
+ NULL,
+ &si,
+ &pi) ){
+ restore_path(ptr);
+ }
+ else {
+
+ restore_path(ptr);
+ CloseHandle(pi.hThread);
+ WaitForSingleObject(pi.hProcess,INFINITE);
+ CloseHandle(pi.hProcess);
+ ExitProcess(0);
+ }
+
+ return 1; /*NOTREACHED*/
+}
+static char *hb_subst_array[20] ;
+void init_hb_subst(void) {
+ int i= 0;
+ size_t len;
+ char envbuf[1024];
+ char *ptr;
+ char *p2;
+
+ envbuf[0]=0;
+
+ GetEnvironmentVariable("TCSHSUBSTHB",envbuf,1024);
+
+ ptr = &envbuf[0];
+
+ if (!*ptr)
+ return;
+
+ p2 = ptr;
+
+ while (*ptr) {
+ if (*ptr == ';') {
+ len = ptr - p2;
+ if (!len){
+ ptr++;
+ continue;
+ }
+ hb_subst_array[i] = heap_alloc(len+1);
+ StringCbCopy(hb_subst_array[i],len + 1, p2);
+
+ i++;
+ p2 = ptr+1;
+ }
+ ptr++;
+ }
+}
+char *hb_subst(char *orig) {
+ int i, match;
+ char *p1;
+
+ for(i =0 ;i <20; i++) {
+ p1 = hb_subst_array[i];
+ if (!p1)
+ continue;
+ while(*p1 != ' ')
+ p1++;
+
+ *p1 = 0;
+ match = !_stricmp(orig,hb_subst_array[i]);
+ *p1 = ' ';
+ if (match){
+ return (p1+1);
+ }
+ }
+ return NULL;
+
+}
+typedef BOOL (__stdcall *shell_ex_func)(LPSHELLEXECUTEINFO);
+
+/* DO NOT initialize these here -amol */
+static HMODULE hShellDll;
+static shell_ex_func pShellExecuteEx;
+int __nt_only_start_exes;
+
+static char no_assoc[256]; //the environment string/*FIXBUF*/
+static char *no_assoc_array[20]; // the list of extensions to NOT try /*FIXBUF*/
+// explorer associations for
+
+void init_shell_dll(void) {
+
+ int rc,i;
+ size_t len;
+ char *p2, *ptr;
+
+ if (!hShellDll) {
+ hShellDll = LoadLibrary("Shell32.dll");
+ if (hShellDll) {
+ pShellExecuteEx = (shell_ex_func)GetProcAddress(
+ hShellDll,
+ "ShellExecuteEx");
+ }
+ }
+ rc=GetEnvironmentVariable("TCSHONLYSTARTEXES",no_assoc,256) ;
+ if (!rc || (rc > 255))
+ return;
+
+ if (rc == 1) {
+ __nt_only_start_exes = 1;
+ return;
+ }
+
+ ptr = &no_assoc[0];
+ i = 0;
+
+ if (!ptr)
+ return;
+
+ p2 = ptr;
+
+ while (i < 20) {
+ if (*ptr == ';' || (!*ptr)) {
+ len = ptr - p2;
+ if (!len){
+ ptr++;
+ continue;
+ }
+ no_assoc_array[i] = heap_alloc(len+1);
+ StringCbCopy(no_assoc_array[i],len+1, p2);
+ dprintf("no_assoc array %d inited to %s\n",i,no_assoc_array[i]);
+
+ i++;
+ p2 = ptr+1;
+ }
+ if (!*ptr)
+ break;
+ ptr++;
+ }
+#if NTDBG
+ for(i=0;i<20,no_assoc_array[i] != NULL;i++)
+ dprintf("no_assoc array %d inited remains %s\n",i,no_assoc_array[i]);
+#endif NTDBG
+
+}
+// return non-zero if str is found in no_assoc_array
+int find_no_assoc(char *my_str) {
+ int i, match;
+ char *p1;
+
+ for(i =0 ;i <20; i++) {
+ p1 = no_assoc_array[i];
+ dprintf("no_assoc array %d is %s\n",i,no_assoc_array[i]);
+ if (!p1)
+ continue;
+ match = !_stricmp(my_str,no_assoc_array[i]);
+ if (match)
+ return 1;
+ }
+ return 0;
+}
+void try_shell_ex(char **argv,int exitsuccess, BOOL throw_ok) {/*FIXRESET*/
+
+ char *prog;
+ char *cmdstr, *p2, *cmdend;
+ char *originalPtr = NULL;
+ unsigned int cmdsize,cmdlen;
+ char err2[256];
+ char *ptr;
+ SHELLEXECUTEINFO shinfo;
+ unsigned long mask = SEE_MASK_FLAG_NO_UI;
+ BOOL rc;
+ char *extension;
+
+ prog=*argv;
+
+ dprintf("trying shellex for prog %s\n",prog);
+ ptr = prog;
+ if (!is_url(prog)) {
+
+ while(*ptr) {
+ if (*ptr == '/')
+ *ptr = '\\';
+ ptr++;
+ }
+
+ extension = ptr;
+
+ // search back for "."
+ while(extension != prog) {
+ if (*extension == '.') {
+ extension++;
+ break;
+ }
+ else
+ extension--;
+ }
+ /* check if this matches a member in the no_assoc array.
+ */
+ if (extension != prog) {
+ if (find_no_assoc(extension))
+ return;
+ }
+
+ }
+ originalPtr = cmdstr= heap_alloc(MAX_PATH<<2);
+
+ cmdsize = MAX_PATH<<2;
+
+ p2 = cmdstr;
+
+ cmdlen = 0;
+ cmdend = p2;
+
+ argv++; // the first arg is the command
+
+
+ dprintf("try_shell_ex calling c_a_a_q");
+ if(!concat_args_and_quote(argv,&originalPtr,&cmdstr,&cmdlen,&cmdend,&cmdsize))
+ {
+ errno = ENOMEM;
+ heap_free(originalPtr);
+ return;
+ }
+
+ *cmdend = 0;
+
+
+ memset(&shinfo,0,sizeof(shinfo));
+ shinfo.cbSize = sizeof(shinfo);
+ shinfo.fMask = SEE_MASK_FLAG_DDEWAIT | mask;
+ shinfo.hwnd = NULL;
+ shinfo.lpVerb = NULL;
+ shinfo.lpFile = prog;
+ shinfo.lpParameters = &cmdstr[0];
+ shinfo.lpDirectory = 0;
+ shinfo.nShow = SW_SHOWDEFAULT;
+
+
+ ptr = fix_path_for_child();
+
+ rc = pShellExecuteEx(&shinfo);
+ if (rc ) {
+ if (exitsuccess)
+ ExitProcess(0);
+ errno = 0;
+
+ heap_free(originalPtr);
+ return;
+ }
+ if (throw_ok) {
+ // if we got here, ShellExecuteEx failed, so reset() via stderror()
+ // this may cause the caller to leak, but the assumption is that
+ // only a child process sets exitsuccess, so it will be dead soon
+ // anyway
+
+ restore_path(ptr);
+
+ make_err_str(GetLastError(),cmdstr,512);//don't need the full size
+ (void)StringCbPrintf(err2,sizeof(err2),"%s",prog);
+ stderror(ERR_SYSTEM,err2,cmdstr);/*FIXRESET*/
+ }
+
+ heap_free(originalPtr);
+ restore_path(ptr);
+
+ errno = ENOEXEC;
+
+}
+#ifdef NTDBG
+void dodebugbreak(Char **vc, struct command *c) {
+ UNREFERENCED_PARAMETER(vc);
+ UNREFERENCED_PARAMETER(c);
+ DebugBreak();
+}
+#endif NTDBG
+int nt_texec(char *, char**) ;
+static Char *epath;
+static Char *abspath[] = {STRNULL,0};
+int nt_try_fast_exec(struct command *t) {
+ register Char **pv, **av;
+ register Char *dp,*sav;
+ register char **tt;
+ register char *f;
+ register struct varent *v;
+ register int hashval,i;
+ register int slash;
+ int rc = 0, gflag;
+ Char *vp;
+ Char *blk[2];
+
+ vp = varval(STRNTslowexec);
+ if (vp != STRNULL)
+ return 1;
+
+ blk[0] = t->t_dcom[0];
+ blk[1] = 0;
+
+ // don't do backtick
+ if(Strchr(t->t_dcom[0],'`') )
+ return 1;
+
+
+ gflag = tglob(blk);
+ if (gflag) {
+ pv = globall(blk, gflag);
+ if (pv == 0) {
+ return 1;
+ }
+ }
+ else
+ pv = saveblk(blk);
+
+ trim(pv);
+
+ epath = Strsave(pv[0]);
+ v = adrof(STRpath);
+ if (v == 0 && epath[0] != '/' && epath[0] != '.') {
+ blkfree(pv);
+ return 1;
+ }
+ slash = any(short2str(epath),'/');
+ /*
+ * Glob the argument list, if necessary. Otherwise trim off the quote bits.
+ */
+ av = &t->t_dcom[1];
+ gflag = tglob(av);
+ if (gflag) {
+ av = globall(av, gflag);/*FIXRESET*/
+ if (av == 0) {
+ blkfree(pv);
+ return 1;
+ }
+ }
+ else
+ av = saveblk(av);
+
+ blkfree(t->t_dcom);
+ t->t_dcom = blkspl(pv, av);
+ xfree((ptr_t) pv);
+ xfree((ptr_t) av);
+ av = t->t_dcom;
+ //trim(av);
+
+ if (*av == NULL || **av == '\0')
+ return 1;
+
+ xechoit(av);/*FIXRESET*/ /* Echo command if -x */
+ if (v == 0 || v->vec[0] == 0 || slash)
+ pv = abspath;
+ else
+ pv = v->vec;
+
+ sav = Strspl(STRslash,*av);
+ hashval = hashval_extern(*av);
+
+ i = 0;
+ do {
+#pragma warning(disable:4310)
+ if (!slash && ABSOLUTEP(pv[0]) && havhash) {
+#pragma warning(default:4310)
+ if (!bit_extern(hashval,i)){
+ pv++;i++;
+ continue;
+ }
+ }
+ if (pv[0][0] == 0 || eq(pv[0],STRdot)) {
+
+ tt = short2blk(av);
+ f = short2str(*av);
+
+ rc = nt_texec(f, tt);
+
+ blkfree((Char**)tt);
+ if (!rc)
+ break;
+ }
+ else {
+ dp = Strspl(*pv,sav);
+ tt = short2blk(av);
+ f = short2str(dp);
+
+ rc = nt_texec(f, tt);
+
+ blkfree((Char**)tt);
+ xfree((ptr_t)dp);
+ if (!rc)
+ break;
+ }
+ pv++;
+ i++;
+ }while(*pv);
+ return rc;
+}
+int nt_texec(char *prog, char**args ) {
+
+ STARTUPINFO si;
+ PROCESS_INFORMATION pi;
+ HANDLE htemp;
+ DWORD type=0;
+ DWORD dwCreationflags;
+ unsigned int priority;
+ char *argv0 = NULL, *savepath = NULL;
+ char *cmdstr,*cmdend ;
+ char *originalPtr = NULL;
+ unsigned int cmdsize,cmdlen;
+ char *p2;
+ char **savedargs;
+ int retries=0;
+ int hasdot =0;
+ int is_winnt=0;
+ int retval = 1;
+
+ memset(&si,0,sizeof(si));
+ savedargs = args;
+
+ /* MUST FREE !! */
+ originalPtr = cmdstr= heap_alloc(MAX_PATH<<2);
+ cmdsize = MAX_PATH<<2;
+
+ is_winnt = (gdwPlatform != VER_PLATFORM_WIN32_WINDOWS);
+
+
+ p2 = cmdstr;
+
+ cmdlen = 0;
+ cmdlen += copy_quote_and_fix_slashes(prog,cmdstr,&hasdot);
+ p2 += cmdlen;
+
+ if (*cmdstr != '"') {
+ // If not quoted, skip initial character we left for quote
+ *cmdstr = 'A';
+ cmdstr++;
+ cmdsize--;
+ }
+ *p2 = 0;
+ cmdend = p2;
+
+ if (!is_winnt) {
+ argv0 = NULL;
+ }
+ else {
+ argv0= heap_alloc(MAX_PATH);
+ (void)StringCbPrintf(argv0,MAX_PATH,"%s",prog);
+ }
+
+ si.cb = sizeof(STARTUPINFO);
+ si.dwFlags = STARTF_USESTDHANDLES;
+ htemp= (HANDLE)_get_osfhandle(SHIN);
+ DuplicateHandle(GetCurrentProcess(),htemp,GetCurrentProcess(),
+ &si.hStdInput,0,TRUE,DUPLICATE_SAME_ACCESS);
+ htemp= (HANDLE)_get_osfhandle(SHOUT);
+ DuplicateHandle(GetCurrentProcess(),htemp,GetCurrentProcess(),
+ &si.hStdOutput,0,TRUE,DUPLICATE_SAME_ACCESS);
+ htemp= (HANDLE)_get_osfhandle(SHDIAG);
+ DuplicateHandle(GetCurrentProcess(),htemp,GetCurrentProcess(),
+ &si.hStdError,0,TRUE,DUPLICATE_SAME_ACCESS);
+
+
+ /*
+ quotespace hack needed since execv() would have separated args, but
+ createproces doesnt
+ -amol 9/14/96
+ */
+
+ args++; // the first arg is the command
+
+ dprintf("nt_texec calling c_a_a_q");
+ if(concat_args_and_quote(args,&originalPtr,&cmdstr,&cmdlen,&cmdend,&cmdsize) == NULL)
+ {
+ retval = 1;
+ errno = ENOMEM;
+ heap_free(originalPtr);
+ goto free_mem;
+ }
+
+ *cmdend = 0;
+
+ dwCreationflags = GetPriorityClass(GetCurrentProcess());
+ priority = GetThreadPriority(GetCurrentThread());
+
+ if (is_winnt) {
+ retries = 0;
+ // For NT, try ShellExecuteEx first
+ do {
+ if (GetBinaryType(argv0,&type))
+ break;
+ if (GetLastError() == ERROR_BAD_EXE_FORMAT){
+ errno = ENOEXEC;
+ if (!__nt_only_start_exes)
+ try_shell_ex(savedargs,0,FALSE);
+ if (errno) {
+ retval = 1;
+ goto free_mem;
+ }
+ else {
+ retval = 0;
+ goto free_mem;
+ }
+ }
+ // only try shellex again after appending ".exe fails
+ else if ( retries > 1 ){
+ if (
+ ( (argv0[0] == '\\') ||(argv0[0] == '/') ) &&
+ ( (argv0[1] == '\\') ||(argv0[1] == '/') ) &&
+ (!args[1])
+ )
+ if (!__nt_only_start_exes)
+ try_shell_ex(savedargs,0,FALSE);
+ errno = ENOENT;
+ }
+ if (retries == 0)
+ (void)StringCbPrintf(argv0,MAX_PATH,"%s.exe",prog);
+ else if (retries == 1) {
+ (void)StringCbPrintf(argv0,MAX_PATH,"%s.EXE",prog);
+ }
+ retries++;
+ }while(retries < 3);
+ }
+ savepath = fix_path_for_child();
+re_cp:
+ dprintf("nt_texec cmdstr %s\n",cmdstr);
+
+
+ if (!CreateProcess(argv0,
+ cmdstr,
+ NULL,
+ NULL,
+ TRUE, // need this for redirecting std handles
+ dwCreationflags,
+ NULL,//envcrap,
+ NULL,
+ &si,
+ &pi) ){
+
+ if (GetLastError() == ERROR_BAD_EXE_FORMAT) {
+ errno = ENOEXEC;
+ }
+ else if (GetLastError() == ERROR_INVALID_PARAMETER) {
+ errno = ENAMETOOLONG;
+ }else {
+ errno = ENOENT;
+ }
+ if (!is_winnt && !hasdot) { //append '.' to the end if needed
+ StringCbCat(cmdstr,cmdsize,".");
+ hasdot=1;
+ goto re_cp;
+ }
+ retval = 1;
+ }
+ else{
+ int gui_app ;
+ DWORD exitcode;
+ char guivar[50];
+
+
+ if (GetEnvironmentVariable("TCSH_NOASYNCGUI",guivar,50))
+ gui_app=0;
+ else
+ gui_app= is_gui(argv0);
+
+ if(!gui_app) {
+ WaitForSingleObject(pi.hProcess,INFINITE);
+ (void)GetExitCodeProcess(pi.hProcess,&exitcode);
+ setv(STRstatus, putn(exitcode), VAR_READWRITE);/*FIXRESET*/
+ }
+ retval = 0;
+ CloseHandle(pi.hProcess);
+ CloseHandle(pi.hThread);
+ }
+free_mem:
+ CloseHandle(si.hStdInput);
+ CloseHandle(si.hStdOutput);
+ CloseHandle(si.hStdError);
+
+ if(savepath)
+ restore_path(savepath);
+
+ heap_free(originalPtr);
+ if (argv0)
+ heap_free(argv0);
+ return retval;
+}
+BOOL is_url(const char *thecmd) {
+ char *protocol;
+ const char *c;
+ HKEY hkey;
+ char buf[2];
+ DWORD type;
+ DWORD size;
+
+ c = strchr(thecmd, ':');
+ size = (DWORD)(c - thecmd);
+ if (!c || size <= 1)
+ return FALSE;
+
+ protocol = (char *)heap_alloc(size + 2);
+ StringCbCopy(protocol,size+2, thecmd);
+ protocol[size] = '\0';
+
+ if (RegOpenKeyEx(HKEY_CLASSES_ROOT, protocol, 0, KEY_READ, &hkey)
+ != ERROR_SUCCESS ) {
+ heap_free(protocol);
+ return FALSE;
+ }
+
+ heap_free(protocol);
+
+ type = REG_SZ;
+ size = sizeof(buf);
+ if ( RegQueryValueEx(hkey, "URL Protocol", NULL, &type, (BYTE*)buf, &size)
+ != ERROR_SUCCESS) {
+ RegCloseKey(hkey);
+ return FALSE;
+ }
+ RegCloseKey(hkey);
+ return TRUE;
+}
+/*
+ * patch based on work by Chun-Pong Yu (bol.pacific.net.sg)
+ */
+BOOL is_nt_executable(char *path,char *extension) {
+ DWORD exetype;
+
+ if (GetBinaryType(path,&exetype))
+ return TRUE;
+ if (*extension && find_no_assoc(extension))
+ return TRUE;
+
+ return FALSE;
+}
+int executable(const Char *dir, const Char *name, int dir_ok)
+{
+ struct stat stbuf;
+ Char path[MAXPATHLEN + 1];
+ char *strname;
+ char extension[MAXPATHLEN];
+ char *ptr, *p2 ;
+ int has_ext = 0;
+ extern void copyn(Char *, const Char *, size_t);
+ extern void catn(Char *, const Char *, int);
+
+ (void) memset(path, 0, sizeof(path));
+
+ if (dir && *dir) {
+ copyn(path, dir, MAXPATHLEN);
+ catn(path, name, MAXPATHLEN);
+
+ p2 = ptr = short2str(path);
+
+ while (*ptr++)
+ continue;
+ --ptr;
+
+ while(ptr > p2) {
+ if (*ptr == '/')
+ break;
+ if (*ptr == '.') {
+ has_ext = 1;
+ StringCbCopy(extension,MAXPATHLEN,ptr+1);
+ break;
+ }
+ ptr--;
+ }
+ if (!has_ext && (nt_stat(p2, &stbuf) == -1))
+ catn(path, STRdotEXE, MAXPATHLEN);
+ strname = short2str(path);
+ }
+ else
+ strname = short2str(name);
+
+ return (stat(strname, &stbuf) != -1 &&
+ ((dir_ok && S_ISDIR(stbuf.st_mode)) ||
+ (S_ISREG(stbuf.st_mode) &&
+ (is_nt_executable(strname,extension) ||
+ (stbuf.st_mode & (S_IXOTH | S_IXGRP | S_IXUSR)))
+ )));
+}
+ int
+nt_check_if_windir(char *path)
+{
+ char windir[MAX_PATH];
+
+ (void)GetWindowsDirectory(windir, sizeof(windir));
+ windir[2] = '/';
+
+ return (strstr(path, windir) != NULL);
+}
+
+ void
+nt_check_name_and_hash(int is_windir, char *file, int i)
+{
+ char name_only[MAX_PATH];
+ char *tmp = (char *)strrchr(file, '.');
+ char uptmp[5], *nameptr, *np2;
+ int icount, hashval;
+
+ if(!tmp || tmp[4])
+ goto nodot;
+
+ for (icount = 0; icount < 4; icount++)
+ uptmp[icount] = (char)toupper(tmp[icount]);
+ uptmp[4]=0;
+
+ if (is_windir)
+ if((uptmp[1] != 'E') || (uptmp[2] != 'X') || (uptmp[3] != 'E'))
+ return;
+ (void) memset(name_only, 0, MAX_PATH);
+ nameptr = file;
+ np2 = name_only;
+ while(nameptr != tmp) {
+ *np2++= (char)tolower(*nameptr);
+ nameptr++;
+ }
+ hashval = hashname(str2short(name_only));
+ bis_extern(hashval, i);
+nodot:
+ hashval = hashname(str2short(file));
+ bis_extern(hashval, i);
+}
diff --git a/win32/ntport.h b/win32/ntport.h
new file mode 100644
index 000000000000..d78fbf684a51
--- /dev/null
+++ b/win32/ntport.h
@@ -0,0 +1,511 @@
+/*$Header: /p/tcsh/cvsroot/tcsh/win32/ntport.h,v 1.14 2010/05/23 17:20:32 amold Exp $*/
+/*-
+ * Copyright (c) 1980, 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+// ntport.h
+// the main header.
+// -amol
+//
+//
+#ifndef NTPORT_H
+#define NTPORT_H
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <io.h>
+#include <direct.h>
+#include "dirent.h"
+#include "version.h"
+
+#ifndef WINDOWS_ONLY
+#define STRSAFE_NO_DEPRECATE
+#endif /* WINDOWS_ONLY*/
+#define STRSAFE_LIB
+#define STR_NO_CCH_FUNCTIONS
+#include <strsafe.h>
+
+// These needed for fork(), which controls the heap management.
+#pragma data_seg(".fusrdata")
+#define INIT_ZERO =0
+#define INIT_ZERO_STRUCT ={0}
+#define malloc fmalloc
+#define calloc fcalloc
+#define realloc frealloc
+#define free ffree
+#undef min
+#undef max
+
+#define heap_alloc(s) HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,(s))
+#define heap_free(p) HeapFree(GetProcessHeap(),0,(p))
+#define heap_realloc(p,s) HeapReAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,(p),(s))
+
+#pragma warning(disable:4018) //signed-unsigned mismatch
+#define HAVENOLIMIT
+
+/* os-dependent stuff. belongs in tc.os.h, but I never said this would be
+pretty */
+
+#define lstat stat
+#ifdef S_IFMT
+# if !defined(S_ISDIR) && defined(S_IFDIR)
+# define S_ISDIR(a) (((a) & S_IFMT) == S_IFDIR)
+# endif /* ! S_ISDIR && S_IFDIR */
+# if !defined(S_ISCHR) && defined(S_IFCHR)
+# define S_ISCHR(a) (((a) & S_IFMT) == S_IFCHR)
+# endif /* ! S_ISCHR && S_IFCHR */
+# if !defined(S_ISBLK) && defined(S_IFBLK)
+# define S_ISBLK(a) (((a) & S_IFMT) == S_IFBLK)
+# endif /* ! S_ISBLK && S_IFBLK */
+# if !defined(S_ISREG) && defined(S_IFREG)
+# define S_ISREG(a) (((a) & S_IFMT) == S_IFREG)
+# endif /* ! S_ISREG && S_IFREG */
+# if !defined(S_ISFIFO) && defined(S_IFIFO)
+# define S_ISFIFO(a) (((a) & S_IFMT) == S_IFIFO)
+# endif /* ! S_ISFIFO && S_IFIFO */
+# if !defined(S_ISNAM) && defined(S_IFNAM)
+# define S_ISNAM(a) (((a) & S_IFMT) == S_IFNAM)
+# endif /* ! S_ISNAM && S_IFNAM */
+# if !defined(S_ISLNK) && defined(S_IFLNK)
+# define S_ISLNK(a) (((a) & S_IFMT) == S_IFLNK)
+# endif /* ! S_ISLNK && S_IFLNK */
+# if !defined(S_ISSOCK) && defined(S_IFSOCK)
+# define S_ISSOCK(a) (((a) & S_IFMT) == S_IFSOCK)
+# endif /* ! S_ISSOCK && S_IFSOCK */
+#endif /* S_IFMT */
+
+/* port defines */
+#define getpid GetCurrentProcessId
+#define getpgrp GetCurrentProcessId
+#define tcgetpgrp(a) GetCurrentProcessId()
+#define tcsetpgrp(a,b) 0
+#define setpgid(a,b) 0
+
+
+#define close(a) nt_close(a)
+#define execv(a,b) nt_exec((a),(b))
+#define execve(a,b,c) nt_execve((a),(b),(c))
+
+#define open nt_open
+#define read(f,b,n) nt_read((f),(b),(n))
+#define write(f,b,n) nt_write((f),(b),(n))
+#define creat(f,m) nt_creat((f),(m))
+#define _exit(a) ExitProcess((a))
+
+#define chdir(a) nt_chdir(a)
+
+#undef putc
+#undef putchar
+#define fgetc(a) nt_fgetc(a)
+#define fputs(a,b) nt_fputs((a),(b))
+#define putc(a,b) nt_putc((char)(a),(b))
+#define fflush(a) nt_fflush((a))
+#define fputc(a,b) nt_fputc((char)(a),(b))
+#define fprintf nt_fprintf
+#define puts(a) nt_puts(a)
+#define putchar(a) nt_putchar((char)(a))
+#define fclose(p) nt_fclose(p)
+#define _get_osfhandle __nt_get_osfhandle
+#define _open_osfhandle __nt_open_osfhandle
+#define clearerr nt_clearerr
+#define dup2 nt_dup2
+#define fdopen nt_fdopen
+#define fgets nt_fgets
+#define fileno nt_fileno
+#define fopen nt_fopen
+#define fread nt_fread
+#define fseek nt_fseek
+#define ftell nt_ftell
+#define fwrite nt_fwrite
+#define isatty nt_isatty
+#define lseek nt_lseek
+#define printf nt_printf
+#define access nt_access
+#define fstat(a,b) nt_fstat((a),(b))
+#define stat(a,b) nt_stat((a),(b))
+
+#define setvbuf(a,b,c,d)
+#define setpgrp(a,b) (-1)
+#define tcsetattr(a,b,c) 0
+
+#define inline __inline
+
+#undef stdin
+#undef stdout
+#undef stderr
+#define stdin ((FILE*)my_stdin)
+#define stdout ((FILE*)my_stdout)
+#define stderr ((FILE*)my_stderr)
+
+#define dup(f) nt_dup((f))
+#define sleep(a) Sleep((a)*1000)
+
+#define getcwd(a,b) forward_slash_get_cwd((a),(b))
+
+
+#define L_SET SEEK_SET
+#define L_XTND SEEK_END
+#define L_INCR SEEK_CUR
+#define S_IXUSR S_IEXEC
+#define S_IXGRP S_IEXEC
+#define S_IXOTH S_IEXEC
+
+#define NOFILE 64
+#define ARG_MAX 1024
+#define MAXSIG NSIG
+
+/*
+mode Value Checks File For
+
+00 Existence only
+02 Write permission
+04 Read permission
+06 Read and write permission
+*/
+#define F_OK 0
+#define X_OK 1
+#define W_OK 2
+#define R_OK 4
+#define XD_OK 9 //executable and not directory
+
+/* base key mappings + ctrl-key mappings + alt-key mappings */
+/* see nt.bind.c to figure these out */
+/* 256 +
+ 4*24 (fkeys) +
+ 4*4 (arrow) +
+ 4*2 (pgup/dn) +
+ 4*2 (home/end) +
+ 4*2 (ins/del)
+*/
+#define NT_NUM_KEYS 392
+
+#define NT_SPECIFIC_BINDING_OFFSET 256 /* where our bindings start */
+
+#define KEYPAD_MAPPING_BEGIN 24 /* offset from NT_SPECIFIC
+ where keypad mappings begin */
+#define INS_DEL_MAPPING_BEGIN 32
+
+#define SINGLE_KEY_OFFSET 0 /*if no ctrl or alt pressed */
+#define CTRL_KEY_OFFSET 34
+#define ALT_KEY_OFFSET (34*2)
+#define SHIFT_KEY_OFFSET (34*3)
+
+typedef int pid_t;
+typedef int speed_t;
+typedef unsigned char u_char;
+typedef size_t caddr_t;
+typedef int sig_atomic_t;
+typedef int mode_t;
+typedef UINT32 uint32_t;
+
+struct timeval{
+ long tv_sec;
+ long tv_usec;
+};
+struct termios;
+/*
+struct timezone{
+ int tz_minuteswest;
+ int dsttime;
+};
+*/
+struct rusage {
+
+ struct timeval ru_utime; /* user time used */
+ struct timeval ru_stime; /* system time used */
+ long ru_maxrss; /* maximum resident set size */
+ long ru_ixrss; /* integral shared memory size */
+ long ru_idrss; /* integral unshared data size */
+ long ru_isrss; /* integral unshared stack size */
+ long ru_minflt; /* page reclaims */
+ long ru_majflt; /* page faults */
+ long ru_nswap; /* swaps */
+ long ru_inblock; /* block input operations */
+ long ru_oublock; /* block output operations */
+ long ru_msgsnd; /* messages sent */
+ long ru_msgrcv; /* messages received */
+ long ru_nsignals; /* signals received */
+ long ru_nvcsw; /* voluntary context switches */
+ long ru_nivcsw; /* involuntary context switches */
+};
+typedef int uid_t;
+typedef int gid_t;
+typedef long ssize_t;
+
+struct passwd {
+ char *pw_name; /* user name */
+ char *pw_passwd; /* user password */
+ uid_t pw_uid; /* user id */
+ gid_t pw_gid; /* group id */
+ char *pw_gecos; /* real name */
+ char *pw_dir; /* home directory */
+ char *pw_shell; /* shell program */
+};
+struct group {
+ char *gr_name; /* group name */
+ char *gr_passwd; /* group password */
+ gid_t gr_gid; /* group id */
+ char **gr_mem; /* group members */
+};
+
+#ifndef _INTPTR_T_DEFINED
+#ifdef _WIN64
+typedef __int64 intptr_t;
+#else
+typedef int intptr_t;
+#endif
+#define _INTPTR_T_DEFINED
+#endif
+/* ntport.c */
+extern char * ttyname(int);
+extern struct passwd* getpwuid(uid_t ) ;
+extern struct group * getgrgid(gid_t ) ;
+extern struct passwd* getpwnam(const char* ) ;
+extern struct group* getgrnam(char* ) ;
+extern gid_t getuid(void) ;
+extern gid_t getgid(void) ;
+extern gid_t geteuid(void) ;
+extern gid_t getegid(void) ;
+
+#ifdef NTDBG
+extern void dprintf(char *,...);
+#define DBreak() __asm {int 3}
+#else
+#define dprintf (void)
+#endif NTDBG
+
+#define pipe(a) nt_pipe(a)
+
+
+/* support.c */
+extern void nt_init(void);
+extern int gethostname(char*,int);
+extern char* forward_slash_get_cwd(char *,size_t len );
+extern int nt_chdir(char*);
+extern void nt_execve(char *,char**,char**);
+extern void nt_exec(char *,char**);
+extern int quoteProtect(char *, char *,unsigned long) ;
+extern char* fix_path_for_child(void) ;
+extern void restore_path(char *) ;
+extern int copy_quote_and_fix_slashes(char *,char *, int * );
+extern char* concat_args_and_quote(char **,char**,char **,unsigned int *, char **,
+ unsigned int *) ;
+
+
+extern int is_nt_executable(char*,char*);
+/* io.c */
+extern int force_read(int, unsigned char*,size_t);
+extern int nt_read(int, unsigned char*,size_t);
+extern int nt_write(int, const unsigned char*,size_t);
+extern int stringtable_read(int,char*,size_t);
+
+/* tparse.c */
+extern int tc_putc(char,FILE*);
+
+
+void nt_cleanup(void);
+
+/* stdio.c */
+extern int nt_creat(const char*,int);
+extern int nt_close(int);
+extern int nt_open(const char*,int ,...);
+extern int nt_pipe(int*);
+extern void restore_fds(void ) ;
+extern void copy_fds(void);
+extern void close_copied_fds(void ) ;
+extern int nt_fgetc(FILE*);
+extern int nt_dup(int);
+extern int nt_fputs(char*,FILE*);
+extern int nt_putc(char,FILE*);
+extern int nt_fflush(FILE*);
+extern int nt_fputc(char, FILE*);
+extern int nt_fprintf(FILE*,char*,...);
+extern int nt_puts(char*);
+extern int nt_putchar(char);
+extern int nt_fclose(FILE*);
+extern int nt_fputs(char *, FILE*);
+extern intptr_t __nt_get_osfhandle(int);
+extern int __nt_open_osfhandle(intptr_t, int);
+extern int nt_clearerr(FILE*);
+extern int nt_dup2(int,int );
+extern FILE* nt_fdopen(int,char*);
+extern char * nt_fgets(char *,int, FILE*);
+extern int nt_fileno(FILE*);
+extern FILE *nt_fopen(char *,char*);
+extern int nt_fread(void *,size_t,size_t,FILE*);
+extern int nt_fwrite(void*,size_t,size_t,FILE*);
+extern int nt_fseek(FILE*,long,int);
+extern long nt_ftell(FILE*);
+extern int nt_isatty(int);
+extern int nt_lseek(int,long,int);
+extern int nt_printf(char*,...);
+extern int nt_access(char*,int);
+extern int nt_fstat(int, struct stat *) ;
+extern int nt_stat(const char *, struct stat *) ;
+extern void nt_close_on_exec(int , int);
+extern void init_stdio(void) ;
+extern int is_resource_file(int);
+#ifndef STDIO_C
+extern void *my_stdin,*my_stdout,*my_stderr;
+#endif STDIO_C
+
+
+/* nt.char.c */
+extern unsigned char oem_it(unsigned char );
+extern char *nt_cgets(int,int,char*);
+extern void nls_dll_init(void);
+extern void nls_dll_unload(void);
+extern void nt_autoset_dspmbyte(void);
+
+/* fork.c */
+extern int fork_init(void);
+extern int fork(void);
+extern void *sbrk(int);
+extern void *fmalloc(size_t);
+extern void ffree(void *);
+extern void *frealloc(void*,size_t);
+extern void *fcalloc(size_t,size_t);
+extern void set_stackbase(void*);
+
+/* console.c */
+extern void do_nt_cooked_mode(void );
+extern void do_nt_raw_mode(void ) ;
+extern int do_nt_check_cooked_mode(void);
+extern void set_cons_attr (char *);
+extern void NT_MoveToLineOrChar(int ,int ) ;
+extern void nt_term_init(void);
+extern void nt_term_cleanup(void);
+extern void nt_set_size(int,int);
+//extern DWORD set_cooked_mode(HANDLE);
+//extern void set_raw_mode(HANDLE);
+//extern void set_arbitrary_mode(HANDLE,DWORD);
+extern void set_attributes(const unsigned char *color);
+
+/* ../sh.exec.c */
+extern int nt_check_if_windir(char *);
+extern void nt_check_name_and_hash(int ,char *,int);
+
+
+/* clip.c */
+extern void cut_clip(void);
+extern int paste_clip(void);
+extern void init_clipboard(void);
+extern HANDLE create_clip_writer_thread(void) ;
+extern HANDLE create_clip_reader_thread(void) ;
+
+/* signal.c */
+extern int kill(int,int);
+extern int nice(int);
+extern void nt_init_signals(void) ;
+extern void nt_cleanup_signals(void) ;
+extern void start_sigchild_thread(HANDLE , DWORD ) ;
+
+/* nt.who.c */
+extern void start_ncbs(short **);
+extern void cleanup_netbios(void);
+
+/* ntfunc.c */
+struct command;
+extern void dostart(short **,struct command *);
+extern void docls(short **,struct command *);
+extern void dotitle(short **, struct command * ) ;
+extern void dostacksize(short**,struct command *);
+extern void dosourceresource(short **, struct command * ) ;
+extern void doprintresource(short **, struct command * ) ;
+#ifdef NTDBG
+extern void dodebugbreak(short **, struct command * ) ;
+#endif NTDBG
+extern void nt_set_env(const short *, const short*);
+extern char *hb_subst(char *) ;
+extern void init_hb_subst() ;
+extern void init_shell_dll(void) ;
+extern void try_shell_ex(char**,int,BOOL);
+extern int nt_try_fast_exec(struct command *);
+extern int nt_feed_to_cmd(char*,char**);
+extern short nt_translate_bindkey(const short*);
+
+extern struct biltins *nt_check_additional_builtins(short *);
+extern void nt_print_builtins(size_t);
+
+/* ps.c */
+extern void init_plister(void);
+extern void dops(short **,struct command *);
+extern void doshutdown(short **,struct command *);
+extern int kill_by_wm_close(int ) ;
+
+/* globals.c */
+extern int is_gui(char*);
+extern int is_9x_gui(char*);
+
+
+/* Global variables */
+extern unsigned short __nt_want_vcode,__nt_vcode,__nt_really_exec;
+extern int __dup_stdin;
+extern int __nt_only_start_exes;
+extern unsigned short __nt_child_nohupped;
+extern DWORD gdwPlatform,gdwVersion;
+extern int is_dev_clipboard_active;
+extern HANDLE ghdevclipthread;
+extern DWORD gdwStackSize;
+
+// bogus
+#define getppid() 0
+
+struct tms {
+ clock_t tms_utime;
+ clock_t tms_stime;
+ clock_t tms_cutime;
+ clock_t tms_cstime;
+};
+#define UT_UNKNOWN 0
+#define DEAD_PROCESS 7
+#define USER_PROCESS 8
+#define UT_LINESIZE 16
+#define UT_NAMESIZE 8
+#define UT_HOSTSIZE 16
+
+struct utmp {
+ short ut_type; /* type of login */
+ pid_t ut_pid;
+ char ut_line[UT_LINESIZE]; /* device pref'/dev/' */
+ char ut_id[2]; /*abbrev tty name */
+ time_t ut_time; /* login time */
+ char ut_user[UT_NAMESIZE]; /* user name */
+ char ut_host[UT_HOSTSIZE]; /* hostname for rlogin */
+ long ut_addr; /*ipaddr of remote host */
+};
+
+
+#define ut_name ut_user
+#define killpg kill
+
+#endif NTPORT_H
diff --git a/win32/ps.c b/win32/ps.c
new file mode 100644
index 000000000000..bc81f1c954ee
--- /dev/null
+++ b/win32/ps.c
@@ -0,0 +1,371 @@
+/*$Header: /p/tcsh/cvsroot/tcsh/win32/ps.c,v 1.9 2006/03/14 01:22:58 mitr Exp $*/
+/*-
+ * Copyright (c) 1980, 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * ps.c : ps,shutdown builtins.
+ * -amol
+ *
+ */
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <winperf.h>
+#include <tlhelp32.h>
+#include <sh.h>
+#include <errno.h>
+
+
+#define REGKEY_PERF "software\\microsoft\\windows nt\\currentversion\\perflib"
+#define REGSUBKEY_COUNTERS "Counters"
+#define PROCESS_COUNTER "process"
+#define PROCESSID_COUNTER "id process"
+
+typedef struct _pslist {
+ DWORD pid;
+ HANDLE hwnd;
+ char exename[MAX_PATH];
+ char title[80];
+}pslist;
+
+
+typedef BOOL (WINAPI *walker)(HANDLE,LPPROCESSENTRY32);
+typedef HANDLE (WINAPI *create_snapshot)(DWORD,DWORD);
+static walker proc32First;
+static walker proc32Next;
+static create_snapshot createSnapshot;
+
+typedef BOOL (WINAPI *enumproc)(DWORD *,DWORD,DWORD *);
+typedef BOOL (WINAPI *enummod)(HANDLE,HMODULE*,DWORD,DWORD*);
+typedef DWORD(WINAPI *getfilename_ex)(HANDLE,HANDLE , char*,DWORD);
+typedef DWORD (WINAPI *getbasename)(HANDLE,HMODULE,char*,DWORD);
+static enumproc enum_processes;
+static enummod enum_process_modules;
+static getfilename_ex getfilenameex;
+static getbasename GetModuleBaseNameA;
+
+typedef DWORD (*plist_proc)(void);
+
+DWORD Win95Lister(void);
+DWORD NTLister(void);
+
+plist_proc ProcessListFunc;
+pslist *processlist;
+static unsigned long numprocs, g_dowindows;
+
+static HMODULE hlib;
+
+extern DWORD gdwPlatform;
+extern void make_err_str(int,char *,int);
+
+BOOL CALLBACK enum_wincb(HWND hwnd,LPARAM nump) {
+
+ unsigned int i;
+ DWORD pid = 0;
+
+ if (!GetWindowThreadProcessId(hwnd,&pid))
+ return TRUE;
+
+ for (i =0;i < nump;i++) {
+ if (processlist[i].pid == pid){
+ processlist[i].hwnd = hwnd;
+ if (processlist[i].title[0] !=0)
+ break;;
+ GetWindowText(hwnd,processlist[i].title,
+ sizeof(processlist[i].title));
+ break;
+ }
+ }
+ return TRUE;
+}
+static HWND ghwndtokillbywm_close;
+BOOL CALLBACK enum_wincb2(HWND hwnd,LPARAM pidtokill) {
+ DWORD pid = 0;
+
+ if (!GetWindowThreadProcessId(hwnd,&pid))
+ return TRUE;
+ if (pid == (DWORD)pidtokill){
+ ghwndtokillbywm_close = hwnd;
+ PostMessage( hwnd, WM_CLOSE, 0, 0 );
+ return TRUE;
+ }
+
+ return TRUE;
+}
+int kill_by_wm_close(int pid) {
+ EnumWindows(enum_wincb2,(LPARAM)pid);
+ if (!ghwndtokillbywm_close)
+ return -1;
+ ghwndtokillbywm_close = NULL;
+ return 0;
+}
+DWORD Win95Lister(void) {
+
+ HANDLE hsnap;
+ PROCESSENTRY32 pe;
+ unsigned long nump =0;
+
+
+ hsnap = createSnapshot(TH32CS_SNAPPROCESS,0);
+ if (hsnap == INVALID_HANDLE_VALUE)
+ return 0;
+
+ // if (processlist)
+ // p_free(processlist);
+
+ pe.dwSize = sizeof(PROCESSENTRY32);
+ if (proc32First(hsnap,&pe) ) {
+ processlist = heap_alloc(100*sizeof(pslist));
+ if (!processlist)
+ goto done;
+
+ do {
+ StringCbCopy(processlist[nump].exename,
+ sizeof(processlist[nump].exename),pe.szExeFile);
+
+ processlist[nump].title[0] = 0;
+ processlist[nump].pid = pe.th32ProcessID;
+ nump++;
+ }while(proc32Next(hsnap,&pe));
+ }
+done:
+ CloseHandle(hsnap);
+
+ if (g_dowindows) {
+ EnumWindows(enum_wincb,(LPARAM)nump);
+ }
+ return nump;
+}
+
+DWORD NTLister(void) {
+
+ DWORD procs[200],dummy,ignore;
+ HANDLE hproc;
+ HMODULE hmod;
+ unsigned int i;
+
+
+ // if (processlist)
+ // p_free(processlist);
+
+ if (!enum_processes(procs,sizeof(procs),&dummy) ) {
+ return 0;
+ }
+
+ dummy = dummy/sizeof(DWORD); // number of entries filled
+
+ processlist = heap_alloc(dummy*sizeof(pslist));
+ if (!processlist){
+ return 0;
+ }
+
+ for(i=0 ; i< dummy;i++) {
+ processlist[i].pid = procs[i];
+ processlist[i].title[0] = 0;
+ hproc = OpenProcess(PROCESS_QUERY_INFORMATION |PROCESS_VM_READ,
+ FALSE,procs[i]);
+ if (hproc) {
+ if (enum_process_modules(hproc,&hmod,sizeof(hmod),&ignore)) {
+ GetModuleBaseNameA(hproc,hmod, processlist[i].exename,MAX_PATH);
+ }
+ else
+ StringCbCopy(processlist[i].exename,
+ sizeof(processlist[i].exename),"(unknown)");
+ CloseHandle(hproc);
+ }
+ else
+ StringCbCopy(processlist[i].exename,
+ sizeof(processlist[i].exename),"(unknown)");
+
+ }
+ if (g_dowindows) {
+ EnumWindows(enum_wincb,(LPARAM)dummy);
+ }
+ return dummy;
+}
+
+void init_plister(void) {
+
+
+ hlib = LoadLibrary("kernel32.dll");
+ if (!hlib)
+ return ;
+
+
+ ProcessListFunc = Win95Lister;
+
+ proc32First = (walker)GetProcAddress(hlib,"Process32First");
+ proc32Next = (walker)GetProcAddress(hlib,"Process32Next");
+ createSnapshot= (create_snapshot)GetProcAddress(hlib,
+ "CreateToolhelp32Snapshot");
+
+ FreeLibrary(hlib);
+ if (!proc32First || !proc32Next || !createSnapshot) {
+ ProcessListFunc = NULL;
+ }
+}
+void dops(Char ** vc, struct command *c) {
+
+ DWORD nump;
+ unsigned int i,k;
+ char **v;
+
+ UNREFERENCED_PARAMETER(c);
+
+ if (!ProcessListFunc)
+ return;
+ vc = glob_all_or_error(vc);
+ v = short2blk(vc);
+ blkfree(vc);
+ for (k = 0; v[k] != NULL ; k++){
+ if ( v[k][0] == '-' ) {
+ if( (v[k][1] == 'W') || (v[k][1] == 'w'))
+ g_dowindows = 1;
+ }
+ }
+ blkfree((Char**)v);
+ nump = ProcessListFunc();
+
+ for(i=0; i< nump; i++) {
+ if (gdwPlatform == VER_PLATFORM_WIN32_NT)
+ xprintf("%6u %-20s %-30s\n",processlist[i].pid,
+ processlist[i].exename,
+ g_dowindows?processlist[i].title:"");
+ else
+ xprintf("0x%08x %-20s %-30s\n",processlist[i].pid,
+ processlist[i].exename,
+ g_dowindows?processlist[i].title:"");
+ }
+ g_dowindows =0;
+
+ if (processlist)
+ heap_free(processlist);
+
+}
+static char shutdown_usage[]= {"shutdown -[r|l][f] now\n-r reboots, -l logs\
+ off the current user\n-f forces termination of running applications.\n\
+ The default action is to shutdown without a reboot.\n\"now\" must be \
+ specified to actually shutdown or reboot\n"};
+
+void doshutdown(Char **vc, struct command *c) {
+
+ unsigned int flags = 0;
+ unsigned char reboot,shutdown,logoff,shutdown_ok;
+ char **v;
+ char *ptr;
+ char errbuf[128];
+ int k;
+ HANDLE hToken;
+ TOKEN_PRIVILEGES tp,tpPrevious;
+ LUID luid;
+ DWORD cbPrevious = sizeof(TOKEN_PRIVILEGES);
+
+ UNREFERENCED_PARAMETER(c);
+
+ if (gdwPlatform != VER_PLATFORM_WIN32_NT) {
+ stderror(ERR_SYSTEM,"shutdown","Sorry,not supported on win95");
+ }
+
+ shutdown_ok = reboot = shutdown = logoff = 0;
+ vc = glob_all_or_error(vc);
+ v = short2blk(vc);
+ blkfree(vc);
+ cleanup_push((Char **)v, blk_cleanup);
+ for (k = 0; v[k] != NULL ; k++){
+ if ( v[k][0] == '-' ) {
+ ptr = v[k];
+ ptr++;
+ while( ptr && *ptr) {
+ if (*ptr == 'f')
+ flags |= EWX_FORCE;
+ if (*ptr == 'r')
+ reboot =1;
+ else if (*ptr == 'l')
+ logoff =1;
+ else
+ stderror(ERR_SYSTEM,"Usage",shutdown_usage);
+ ptr++;
+ }
+ }
+ else if (!_stricmp(v[k],"now")) {
+ shutdown_ok = 1;
+ }
+ }
+ if (k == 0)
+ stderror(ERR_SYSTEM,"Usage",shutdown_usage);
+ if (!reboot && !logoff){
+ flags |= EWX_SHUTDOWN;
+ shutdown = 1;
+ }
+ if (reboot && logoff )
+ stderror(ERR_SYSTEM,"Usage",shutdown_usage);
+ if (reboot)
+ flags |= EWX_REBOOT;
+ if (logoff)
+ flags |= EWX_LOGOFF;
+
+ if ((reboot || shutdown) && (!shutdown_ok) )
+ stderror(ERR_SYSTEM,"shutdown","Specify \"now\" to really shutdown");
+
+
+ if (!OpenProcessToken(GetCurrentProcess(),
+ TOKEN_ADJUST_PRIVILEGES| TOKEN_QUERY,
+ &hToken) ){
+ make_err_str(GetLastError(),errbuf,128);
+ stderror(ERR_SYSTEM,"shutdown failed",errbuf);
+ }
+
+
+ if (!LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&luid)) {
+ make_err_str(GetLastError(),errbuf,128);
+ stderror(ERR_SYSTEM,"shutdown failed",errbuf);
+ }
+ tp.PrivilegeCount = 1;
+ tp.Privileges[0].Luid = luid;
+ tp.Privileges[0].Attributes = 0;
+
+ if (!AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),&tpPrevious,
+ &cbPrevious)){
+ make_err_str(GetLastError(),errbuf,128);
+ stderror(ERR_SYSTEM,"shutdown failed",errbuf);
+ }
+ tpPrevious.PrivilegeCount = 1;
+ tpPrevious.Privileges[0].Luid = luid;
+ tpPrevious.Privileges[0].Attributes |= SE_PRIVILEGE_ENABLED;
+
+ if (!AdjustTokenPrivileges(hToken,FALSE,&tpPrevious,cbPrevious,NULL,
+ NULL)){
+ make_err_str(GetLastError(),errbuf,128);
+ stderror(ERR_SYSTEM,"shutdown failed",errbuf);
+ }
+ if ( !ExitWindowsEx(flags,0) ) {
+ make_err_str(GetLastError(),errbuf,128);
+ stderror(ERR_SYSTEM,"shutdown failed",errbuf);
+ }
+ cleanup_until((Char **)v);
+}
diff --git a/win32/signal.c b/win32/signal.c
new file mode 100644
index 000000000000..facede8c40f0
--- /dev/null
+++ b/win32/signal.c
@@ -0,0 +1,728 @@
+/*$Header: /p/tcsh/cvsroot/tcsh/win32/signal.c,v 1.12 2010/05/13 22:04:17 amold Exp $*/
+/*-
+ * Copyright (c) 1980, 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * signal.c: Signal emulation hacks.
+ * -amol
+ *
+ */
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <errno.h>
+#include <stdlib.h>
+#include "ntport.h"
+#include "forkdata.h"
+#include "signal.h"
+
+#pragma warning(disable:4055)
+
+#define SIGBAD(signo) ( (signo) <=0 || (signo) >=NSIG)
+#define fast_sigmember(a,b) ( (*(a) & (1 << (b-1)) ) )
+#define inc_pending(a) (gPending[(a)]+=1)
+
+#define suspend_main_thread() SuspendThread(hmainthr)
+#define resume_main_thread() ResumeThread(hmainthr)
+
+int generic_handler(DWORD);
+int ctrl_handler(DWORD);
+
+typedef struct _child_list {
+ DWORD dwProcessId;
+ DWORD exitcode;
+ struct _child_list *next;
+}ChildListNode;
+
+Sigfunc *handlers[NSIG]={0};
+static unsigned long gPending[NSIG]={0};
+static unsigned long gBlockMask = 0;
+
+static ChildListNode *clist_h; //head of list
+static ChildListNode *clist_t; // tail of list
+
+static CRITICAL_SECTION sigcritter;
+static HANDLE hmainthr;
+static HANDLE hsigsusp;
+static int __is_suspended = 0;
+static HANDLE __halarm=0;
+
+extern HANDLE __h_con_alarm,__h_con_int, __h_con_hup;
+
+// must be done before fork;
+void nt_init_signals(void) {
+
+ SetConsoleCtrlHandler((PHANDLER_ROUTINE)ctrl_handler,TRUE);
+ InitializeCriticalSection(&sigcritter);
+
+ clist_t = clist_h = NULL;
+
+
+ if (!DuplicateHandle(GetCurrentProcess(),
+ GetCurrentThread(),
+ GetCurrentProcess(),
+ &hmainthr,
+ 0,
+ FALSE,
+ DUPLICATE_SAME_ACCESS)){
+ ExitProcess(GetLastError());
+ }
+ hsigsusp = CreateEvent(NULL,FALSE,FALSE,NULL);
+ __h_con_alarm=CreateEvent(NULL,FALSE,FALSE,NULL);
+ __h_con_int=CreateEvent(NULL,FALSE,FALSE,NULL);
+ __h_con_hup=CreateEvent(NULL,FALSE,FALSE,NULL);
+ if (!hsigsusp)
+ abort();
+
+}
+void nt_cleanup_signals(void) {
+ if (__forked)
+ return;
+ DeleteCriticalSection(&sigcritter);
+ CloseHandle(hmainthr);
+ CloseHandle(hsigsusp);
+ CloseHandle(__h_con_alarm);
+ CloseHandle(__h_con_int);
+ CloseHandle(__h_con_hup);
+ CloseHandle(__halarm);
+}
+int sigaddset(sigset_t *set, int signo) {
+
+ if (SIGBAD(signo)) {
+ errno = EINVAL;
+ return -1;
+ }
+ *set |= 1 << (signo-1);
+ return 0;
+}
+int sigdelset(sigset_t *set, int signo) {
+ if (SIGBAD(signo)) {
+ errno = EINVAL;
+ return -1;
+ }
+ *set &= ~( 1 << (signo-1));
+
+ return 0;
+
+}
+int sigismember(const sigset_t *set, int signo) {
+ if (SIGBAD(signo)) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ return ( (*set & (1 <<(signo-1)) ) != 0);
+
+}
+void deliver_pending(void) {
+ unsigned long temp;
+ int sig=1;
+
+ temp = ~gBlockMask;
+ while(temp && (sig < NSIG)) {
+
+ if (temp & 0x01){
+ if (gPending[sig]){
+ //gPending[sig]=0;
+ do {
+ dprintf("deliver_pending for sig %d\n",sig);
+ gPending[sig]--;
+ generic_handler(sig);
+ }while(gPending[sig] != 0);
+ }
+ }
+ temp >>= 1;
+ sig++;
+ }
+}
+int sigprocmask(int how, const sigset_t *set, sigset_t*oset) {
+
+ if (oset)
+ *oset = gBlockMask;
+ if (set) {
+ switch (how) {
+ case SIG_BLOCK:
+ gBlockMask |= *set;
+ break;
+ case SIG_UNBLOCK:
+ gBlockMask &= (~(*set));
+ break;
+ case SIG_SETMASK:
+ gBlockMask = *set;
+ break;
+ default:
+ break;
+ }
+ }
+ if (how != SIG_BLOCK)
+ deliver_pending();
+
+ return 0;
+
+}
+int sigsuspend(const sigset_t *mask) {
+ sigset_t omask;
+
+
+ EnterCriticalSection(&sigcritter);
+ __is_suspended++;
+ LeaveCriticalSection(&sigcritter);
+
+ sigprocmask(SIG_SETMASK,mask,&omask);
+
+ dprintf("suspending main thread susp count %d\n",__is_suspended);
+ do {
+ WaitForSingleObject(hsigsusp,INFINITE);
+ }while(__is_suspended > 0);
+
+
+ sigprocmask(SIG_SETMASK,&omask,0);
+ errno = EINTR;
+ return -1;
+
+}
+
+int sigaction(int signo, const struct sigaction *act, struct sigaction *oact) {
+
+ if (SIGBAD(signo)) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ if(oact){
+ oact->sa_handler = handlers[signo];
+ oact->sa_mask = 0;
+ oact->sa_flags =0;
+ }
+ if ((signo == SIGHUP) && (act && (act->sa_handler == SIG_IGN))
+ && __forked)
+ __nt_child_nohupped = 1;
+ if (act)
+ handlers[signo]=act->sa_handler;
+
+ return 0;
+
+}
+int ctrl_handler(DWORD event) {
+
+ if (event == CTRL_C_EVENT || event == CTRL_BREAK_EVENT) {
+ SetEvent(__h_con_int);
+ return TRUE;
+ }
+ if (event == CTRL_CLOSE_EVENT) {
+ SetEvent(__h_con_hup);
+ return TRUE;
+ }
+
+ return generic_handler(event+1);
+}
+int generic_handler(DWORD signo) {
+
+ int blocked=0;
+
+ if (SIGBAD(signo) )
+ return FALSE;
+ switch (signo) {
+ case SIGINT:
+ if (handlers[signo] != SIG_IGN){
+ if (fast_sigmember(&gBlockMask,signo) ) {
+ inc_pending(signo);
+ blocked=1;
+ }
+ else if (handlers[signo] == SIG_DFL)
+ ExitProcess(0xC000013AL);
+ else
+ handlers[signo](signo);
+ }
+ break;
+ case SIGBREAK:
+ if (handlers[signo] != SIG_IGN){
+ if (fast_sigmember(&gBlockMask,signo) ) {
+ inc_pending(signo);
+ blocked=1;
+ }
+ else if (handlers[signo] == SIG_DFL)
+ ExitProcess(0xC000013AL);
+ else
+ handlers[signo](signo);
+ }
+ break;
+ case SIGHUP: //CTRL_CLOSE_EVENT
+ if (handlers[signo] != SIG_IGN){
+ if (fast_sigmember(&gBlockMask,signo) ) {
+ inc_pending(signo);
+ blocked=1;
+ }
+ else if (handlers[signo] == SIG_DFL)
+ ExitProcess(604);
+ else
+ handlers[signo](signo);
+ }
+ break;
+ case SIGTERM: //CTRL_LOGOFF_EVENT
+ if (handlers[signo] != SIG_IGN){
+ if (fast_sigmember(&gBlockMask,signo) ) {
+ inc_pending(signo);
+ blocked=1;
+ }
+ else if (handlers[signo] == SIG_DFL)
+ ExitProcess(604);
+ else
+ handlers[signo](signo);
+ }
+ else
+ ExitProcess(604);
+ break;
+ case SIGKILL: //CTRL_SHUTDOWN_EVENT
+ if (handlers[signo] != SIG_IGN){
+ if (fast_sigmember(&gBlockMask,signo) ) {
+ inc_pending(signo);
+ blocked=1;
+ }
+ else if (handlers[signo] == SIG_DFL)
+ ExitProcess(604);
+ else
+ handlers[signo](signo);
+ }
+ else
+ ExitProcess(604);
+ break;
+ case SIGALRM:
+ if (handlers[signo] != SIG_IGN){
+ if (fast_sigmember(&gBlockMask,signo) ) {
+ inc_pending(signo);
+ blocked=1;
+ }
+ else if (handlers[signo] == SIG_DFL)
+ ExitProcess(604);
+ else
+ handlers[signo](signo);
+ }
+ break;
+ case SIGCHLD:
+ if (handlers[signo] != SIG_IGN){
+ if (fast_sigmember(&gBlockMask,signo) ) {
+ dprintf("inc pending for sig %d count %d\n",signo,
+ gPending[signo]);
+ inc_pending(signo);
+ blocked=1;
+ }
+ else if (handlers[signo] != SIG_DFL)
+ handlers[signo](signo);
+ }
+ break;
+ default:
+ ExitProcess(604);
+ break;
+ }
+ if (!blocked && __is_suspended) {
+ EnterCriticalSection(&sigcritter);
+ __is_suspended--;
+ LeaveCriticalSection(&sigcritter);
+ dprintf("releasing suspension is_suspsend = %d\n",__is_suspended);
+ SetEvent(hsigsusp);
+ }
+ return TRUE;
+}
+Sigfunc *_nt_signal(int signal, Sigfunc * handler) {
+
+ Sigfunc *old;
+
+ if (SIGBAD(signal)) {
+ errno = EINVAL;
+ return SIG_ERR;
+ }
+ if (signal == SIGHUP && handler == SIG_IGN && __forked) {
+ __nt_child_nohupped = 1;
+ }
+
+
+ old = handlers[signal];
+ handlers[signal] = handler;
+
+
+ return old;
+}
+int waitpid(pid_t pid, int *statloc, int options) {
+
+ ChildListNode *temp;
+ int retcode;
+
+ UNREFERENCED_PARAMETER(options);
+ errno = EINVAL;
+ if (pid != -1)
+ return -1;
+
+ EnterCriticalSection(&sigcritter);
+ if (!clist_h)
+ retcode =0;
+ else {
+ retcode = clist_h->dwProcessId;
+ if (statloc) *statloc = clist_h->exitcode;
+ temp = clist_h;
+ clist_h = clist_h->next;
+ heap_free(temp);
+ }
+ LeaveCriticalSection(&sigcritter);
+
+ errno = 0;
+ return retcode;
+
+}
+unsigned int __alarm_set=0;
+
+void CALLBACK alarm_callback( unsigned long interval) {
+
+ int rc;
+
+ rc = WaitForSingleObject(__halarm,interval*1000);
+ if (rc != WAIT_TIMEOUT)
+ return ;
+
+ SetEvent(__h_con_alarm);
+ __alarm_set = 0;
+ return;
+
+ // consoleread() now waits for above event, and calls generic_handler to
+ // handle SIGALRM in the main thread. That helps me avoid
+ // problems with fork() when we are in a secondary thread.
+ //
+ // This means sched, periodic etc will not be signalled unless consoleread
+ // is called, but that's a reasonable risk, i think.
+ // -amol 4/10/97
+
+}
+unsigned int alarm(unsigned int seconds) {
+
+ unsigned int temp;
+ static unsigned int prev_val=0;
+ HANDLE ht;
+ DWORD tid;
+ SECURITY_ATTRIBUTES secd;
+
+ secd.nLength=sizeof(secd);
+ secd.lpSecurityDescriptor=NULL;
+ secd.bInheritHandle=TRUE;
+
+
+ if (!__halarm) {
+ __halarm=CreateEvent(&secd,FALSE,FALSE,NULL);
+ }
+ if(__alarm_set )
+ SetEvent(__halarm);
+
+ if (!seconds){
+ __alarm_set=0;
+ return 0;
+ }
+ __alarm_set = 1;
+
+ ht = CreateThread(NULL,gdwStackSize,
+ (LPTHREAD_START_ROUTINE)alarm_callback,
+ (void*)UIntToPtr(seconds),
+ 0,&tid);
+ if (ht)
+ CloseHandle(ht);
+
+ temp = prev_val;
+ prev_val = seconds*1000;
+
+ return temp;
+}
+void add_to_child_list(DWORD dwpid,DWORD exitcode) {
+ if (clist_h == NULL) {
+ clist_h = heap_alloc(sizeof(ChildListNode));
+ if (!clist_h)
+ goto end;
+ clist_h->dwProcessId = dwpid;
+ clist_h->exitcode = exitcode;
+ clist_h->next= NULL;
+ clist_t = clist_h;
+ }
+ else {
+ clist_t->next = heap_alloc(sizeof(ChildListNode));
+ if (!clist_t->next)
+ goto end;
+ clist_t = clist_t->next;
+ clist_t->dwProcessId= dwpid;
+ clist_h->exitcode = exitcode;
+ clist_t->next = NULL;
+ }
+end:
+ ;
+}
+void sig_child_callback(DWORD pid,DWORD exitcode) {
+
+ DWORD ecode = 0;
+
+ EnterCriticalSection(&sigcritter);
+ add_to_child_list(pid,exitcode);
+ suspend_main_thread();
+ //
+ // pchild() tries to reset(), which crashes the thread
+ //
+ __try {
+ generic_handler(SIGCHLD);
+ }
+ __except(ecode = GetExceptionCode()) {
+ ;
+ }
+ resume_main_thread();
+ LeaveCriticalSection(&sigcritter);
+
+}
+struct thread_args {
+ DWORD pid;
+ HANDLE hproc;
+};
+void sigchild_thread(struct thread_args *args) {
+
+ DWORD exitcode=0;
+ WaitForSingleObject(args->hproc,INFINITE);
+ GetExitCodeProcess(args->hproc,&exitcode);
+ CloseHandle(args->hproc);
+ sig_child_callback(args->pid,exitcode);
+ dprintf("exiting sigchild thread for pid %d\n",args->pid);
+ heap_free(args);
+}
+void start_sigchild_thread(HANDLE hproc, DWORD pid) {
+
+ struct thread_args *args=heap_alloc(sizeof(struct thread_args));
+ DWORD tid;
+ HANDLE hthr;
+ args->hproc = hproc;
+ args->pid = pid;
+
+ dprintf("creating sigchild thread for pid %d\n",pid);
+ hthr = CreateThread(NULL,
+ gdwStackSize,
+ (LPTHREAD_START_ROUTINE)sigchild_thread,
+ (LPVOID)args,
+ 0,
+ &tid);
+
+
+ CloseHandle(hthr);
+
+}
+int kill(int pid, int sig) {
+
+ HANDLE hproc;
+ int ret =0;
+ extern DWORD gdwPlatform;
+ BOOL is_winnt = TRUE;
+
+ errno = EPERM;
+ is_winnt = (gdwPlatform != VER_PLATFORM_WIN32_WINDOWS);
+
+ if(is_winnt) {
+ if(pid < 0)
+ {
+ if (pid == -1)
+ return -1;
+ pid = -pid; //no groups that we can actually do anything with.
+
+ }
+ }
+ else { //win9x has -ve pids
+ if(pid > 0)
+ {
+ if (pid == 1)
+ return -1;
+ pid = -pid; //no groups that we can actually do anything with.
+
+ }
+ }
+
+
+ switch(sig) {
+ case 0:
+ case 7:
+ hproc = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);
+ if (hproc == NULL) {
+ errno = ESRCH;
+ ret = -1;
+ dprintf("proc %d not found\n",pid);
+ }
+ else{
+ dprintf("proc %d found\n",pid);
+ }
+ if (sig == 7) {
+ if (!TerminateProcess(hproc,0xC000013AL) ) {
+ ret = -1;
+ }
+ }
+ CloseHandle(hproc);
+ break;
+ case 1:
+ if (!GenerateConsoleCtrlEvent(CTRL_C_EVENT,pid))
+ ret = -1;
+ break;
+ case 2:
+ if (!GenerateConsoleCtrlEvent(CTRL_BREAK_EVENT,pid))
+ ret = -1;
+ break;
+ case 3:
+ if (kill_by_wm_close(pid) <0 ) {
+ errno = ESRCH;
+ ret = -1;
+ }
+ default:
+ break;
+ }
+ return ret;
+}
+//
+// nice(niceness)
+//
+// where niceness is an integer in the range -6 to +7
+//
+// A usual foreground process starts at level 9 in the chart below
+//
+// the range -6 to +7 takes it from Base priority 15 down to 2.
+//
+// Note that level 1 or > 15 are not allowed.
+//
+// Priority Level 11 (niceness -2) or greater affects system performance,
+// so use with care.
+//
+// niceness defaults to +4, which is lowest for background normal class.
+// As in unix, +ve niceness indicates lower priorities.
+
+/***************************************************************************
+Niceness Base Priority class/thread priority
+
+ 1 Idle, normal, or high class, THREAD_PRIORITY_IDLE
+
++7 2 Idle class, THREAD_PRIORITY_LOWEST
++6 3 Idle class, THREAD_PRIORITY_BELOW_NORMAL
++5 4 Idle class, THREAD_PRIORITY_NORMAL
++4 5 Background normal class, THREAD_PRIORITY_LOWEST
+ Idle class, THREAD_PRIORITY_ABOVE_NORMAL
++3 6 Background normal class, THREAD_PRIORITY_BELOW_NORMAL
+ Idle class, THREAD_PRIORITY_HIGHEST
++2 7 Foreground normal class, THREAD_PRIORITY_LOWEST
+ Background normal class, THREAD_PRIORITY_NORMAL
++1 8 Foreground normal class, THREAD_PRIORITY_BELOW_NORMAL
+ Background normal class, THREAD_PRIORITY_ABOVE_NORMAL
+ 0 9 Foreground normal class, THREAD_PRIORITY_NORMAL
+ Background normal class, THREAD_PRIORITY_HIGHEST
+-1 10 Foreground normal class, THREAD_PRIORITY_ABOVE_NORMAL
+-2 11 High class, THREAD_PRIORITY_LOWEST
+ Foreground normal class, THREAD_PRIORITY_HIGHEST
+-3 12 High class, THREAD_PRIORITY_BELOW_NORMAL
+-4 13 High class, THREAD_PRIORITY_NORMAL
+-5 14 High class, THREAD_PRIORITY_ABOVE_NORMAL
+-6 15 Idle, normal, or high class, THREAD_PRIORITY_TIME_CRITICAL
+ High class, THREAD_PRIORITY_HIGHEST
+
+
+ 16 Real-time class, THREAD_PRIORITY_IDLE
+ 22 Real-time class, THREAD_PRIORITY_LOWEST
+ 23 Real-time class, THREAD_PRIORITY_BELOW_NORMAL
+ 24 Real-time class, THREAD_PRIORITY_NORMAL
+ 25 Real-time class, THREAD_PRIORITY_ABOVE_NORMAL
+ 26 Real-time class, THREAD_PRIORITY_HIGHEST
+ 31 Real-time class, THREAD_PRIORITY_TIME_CRITICAL
+****************************************************************************/
+int nice(int niceness) {
+
+ DWORD pclass = IDLE_PRIORITY_CLASS;
+ int priority = THREAD_PRIORITY_NORMAL;
+
+ if (niceness < -6 || niceness > 7) {
+ errno = EPERM;
+ return -1;
+ }
+ switch (niceness) {
+ case 7:
+ pclass = IDLE_PRIORITY_CLASS;
+ priority = THREAD_PRIORITY_LOWEST;
+ break;
+ case 6:
+ pclass = IDLE_PRIORITY_CLASS;
+ priority = THREAD_PRIORITY_BELOW_NORMAL;
+ break;
+ case 5:
+ pclass = IDLE_PRIORITY_CLASS;
+ priority = THREAD_PRIORITY_NORMAL;
+ break;
+ case 4:
+ pclass = IDLE_PRIORITY_CLASS;
+ priority = THREAD_PRIORITY_ABOVE_NORMAL;
+ break;
+ case 3:
+ pclass = IDLE_PRIORITY_CLASS;
+ priority = THREAD_PRIORITY_HIGHEST;
+ break;
+ case 2:
+ pclass = NORMAL_PRIORITY_CLASS;
+ priority = THREAD_PRIORITY_LOWEST;
+ break;
+ case 1:
+ pclass = NORMAL_PRIORITY_CLASS;
+ priority = THREAD_PRIORITY_BELOW_NORMAL;
+ break;
+ case (-1):
+ pclass = NORMAL_PRIORITY_CLASS;
+ priority = THREAD_PRIORITY_ABOVE_NORMAL;
+ break;
+ case (-2):
+ pclass = NORMAL_PRIORITY_CLASS;
+ priority = THREAD_PRIORITY_HIGHEST;
+ break;
+ case (-3):
+ pclass = HIGH_PRIORITY_CLASS;
+ priority = THREAD_PRIORITY_BELOW_NORMAL;
+ break;
+ case (-4):
+ pclass = HIGH_PRIORITY_CLASS;
+ priority = THREAD_PRIORITY_NORMAL;
+ break;
+ case (-5):
+ pclass = HIGH_PRIORITY_CLASS;
+ priority = THREAD_PRIORITY_ABOVE_NORMAL;
+ break;
+ case (-6):
+ pclass = HIGH_PRIORITY_CLASS;
+ priority = THREAD_PRIORITY_HIGHEST;
+ break;
+ default:
+ break;
+ }
+
+ if (!SetPriorityClass(GetCurrentProcess(),pclass)){
+ errno = EPERM;
+ return -1;
+ }
+ if (!SetThreadPriority(GetCurrentThread(),priority)){
+ errno = EPERM;
+ return -1;
+ }
+ return -1;
+}
diff --git a/win32/signal.h b/win32/signal.h
new file mode 100644
index 000000000000..ba7f1b49b7d4
--- /dev/null
+++ b/win32/signal.h
@@ -0,0 +1,125 @@
+/*-
+ * Copyright (c) 1980, 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+// signal.h: signal emulation things
+// -amol
+//
+#ifndef SIGNAL_H
+#define SIGNAL_H
+
+
+#define NSIG 23
+
+// These must be CTRL_xxx_EVENT+1 (in wincon.h)
+//
+#define SIGINT 1
+#define SIGBREAK 2
+#define SIGHUP 3 //CTRL_CLOSE_EVENT
+// 3 and 4 are reserved. hence we can't use 4 and 5
+#define SIGTERM 6 // ctrl_logoff
+#define SIGKILL 7 // ctrl_shutdown
+
+#define SIGILL 8
+#define SIGFPE 9
+#define SIGALRM 10
+//#define SIGWINCH 11
+#define SIGSEGV 12
+#define SIGSTOP 13
+#define SIGPIPE 14
+#define SIGCHLD 15
+#define SIGCONT 16
+#define SIGTSTP 18
+#define SIGTTOU 19
+#define SIGTTIN 20
+#define SIGABRT 22
+
+#define SIGQUIT SIGBREAK
+
+/* signal action codes */
+
+#define SIG_DFL (void (*)(int))IntToPtr(0) /* default signal action */
+#define SIG_IGN (void (*)(int))IntToPtr(1) /* ignore signal */
+#define SIG_SGE (void (*)(int))IntToPtr(3) /* signal gets error */
+#define SIG_ACK (void (*)(int))IntToPtr(4) /* acknowledge */
+
+
+/* signal error value (returned by signal call on error) */
+
+#define SIG_ERR (void (*)(int))IntToPtr(-1) /* signal error value */
+
+
+#define SIG_BLOCK 0
+#define SIG_UNBLOCK 1
+#define SIG_SETMASK 2
+
+#undef signal
+#define signal _nt_signal
+
+typedef unsigned long sigset_t;
+typedef void Sigfunc (int);
+
+struct sigaction {
+ Sigfunc *sa_handler;
+ sigset_t sa_mask;
+ int sa_flags;
+};
+
+
+#define sigemptyset(ptr) (*(ptr) = 0)
+#define sigfillset(ptr) ( *(ptr) = ~(sigset_t)0,0)
+
+
+/* Function prototypes */
+
+void (* _nt_signal(int, void (*)(int)))(int);
+
+int sigaddset(sigset_t*, int);
+int sigdelset(sigset_t*,int);
+unsigned int alarm(unsigned int);
+
+int sigismember(const sigset_t *set, int);
+int sigprocmask(int ,const sigset_t*,sigset_t*);
+int sigaction(int, const struct sigaction *, struct sigaction*);
+int sigsuspend(const sigset_t *sigmask);
+
+#define WNOHANG 0
+#define WUNTRACED 1
+
+#define WIFEXITED(a) 1
+#define WEXITSTATUS(a) (a)
+//#define WIFSIGNALED(a) ((a!= -1)&&(((((unsigned long)(a)) >>24) & 0xC0)!=0))
+#define WIFSIGNALED(a) ((a !=-1)&&((((unsigned long)(a)) & 0xC0000000 ) != 0))
+#define WTERMSIG(a) (((unsigned long)(a))==0xC000013AL?SIGINT:SIGSEGV)
+#define WCOREDUMP(a) 0
+#define WIFSTOPPED(a) 0
+#define WSTOPSIG(a) 0
+
+int waitpid(pid_t, int*,int);
+int times(struct tms*);
+
+#endif SIGNAL_H
diff --git a/win32/stdio.c b/win32/stdio.c
new file mode 100644
index 000000000000..2fa3fc66869a
--- /dev/null
+++ b/win32/stdio.c
@@ -0,0 +1,628 @@
+/*$Header: /p/tcsh/cvsroot/tcsh/win32/stdio.c,v 1.10 2010/05/27 04:00:23 amold Exp $*/
+/*-
+ * Copyright (c) 1980, 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+/*
+ * stdio.c Implement a whole load of i/o functions.
+ * This makes it much easier to keep track of inherited handles and
+ * also makes us reasonably vendor crt-independent.
+ * -amol
+ *
+ */
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <stdio.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#define STDIO_C
+#include <ntport.h>
+#include <forkdata.h>
+
+
+#define __MAX_OPEN_FILES 64
+
+#define FIOCLEX 1
+#define FCONSOLE 2
+
+typedef struct _myfile {
+ HANDLE handle;
+ unsigned long flags;
+} MY_FILE;
+
+typedef unsigned long u_long;
+
+#define INVHL (INVALID_HANDLE_VALUE)
+
+MY_FILE __gOpenFiles[__MAX_OPEN_FILES]={0};
+MY_FILE __gOpenFilesCopy[__MAX_OPEN_FILES]={0};
+
+MY_FILE *my_stdin=0, *my_stdout=0, *my_stderr=0;
+
+extern int didfds;
+int __dup_stdin = 0;
+
+
+void init_stdio(void) {
+
+ int i;
+ __gOpenFiles[0].handle = GetStdHandle(STD_INPUT_HANDLE);
+ __gOpenFiles[1].handle = GetStdHandle(STD_OUTPUT_HANDLE);
+ __gOpenFiles[2].handle = GetStdHandle(STD_ERROR_HANDLE);
+
+ __gOpenFiles[0].flags = (GetFileType(ULongToPtr(STD_INPUT_HANDLE))==
+ FILE_TYPE_CHAR)? FCONSOLE:0;
+ __gOpenFiles[1].flags = (GetFileType(ULongToPtr(STD_OUTPUT_HANDLE))==
+ FILE_TYPE_CHAR)? FCONSOLE:0;
+ __gOpenFiles[2].flags = (GetFileType(ULongToPtr(STD_ERROR_HANDLE))==
+ FILE_TYPE_CHAR)? FCONSOLE:0;
+
+ for(i=3;i<__MAX_OPEN_FILES;i++) {
+ __gOpenFiles[i].handle = INVHL;
+ __gOpenFilesCopy[i].handle = INVHL;
+ __gOpenFiles[i].flags = 0;
+ }
+
+ my_stdin = &__gOpenFiles[0];
+ my_stdout = &__gOpenFiles[1];
+ my_stderr = &__gOpenFiles[2];
+}
+
+ void nt_close_on_exec(int fd, int on) {
+ if(on)
+ __gOpenFiles[fd].flags |= FIOCLEX;
+ else
+ __gOpenFiles[fd].flags &= ~FIOCLEX;
+ }
+void restore_fds(void ) {
+ int i;
+ int min=3;
+
+ if (__forked && (didfds|| __dup_stdin))
+ min =0;
+ //
+ // ok for tcsh. see fork.c for why
+ //
+ __gOpenFiles[0].handle = INVHL;
+ __gOpenFiles[1].handle = INVHL;
+ __gOpenFiles[2].handle = INVHL;
+ my_stdin = &__gOpenFiles[0];
+ my_stdout = &__gOpenFiles[1];
+ my_stderr = &__gOpenFiles[2];
+ for(i=min;i<__MAX_OPEN_FILES;i++) {
+ if (__gOpenFilesCopy[i].handle == INVHL)
+ continue;
+ __gOpenFiles[i].handle = __gOpenFilesCopy[i].handle ;
+ __gOpenFiles[i].flags = __gOpenFilesCopy[i].flags ;
+ }
+}
+void close_copied_fds(void ) {
+ int i;
+ int min=3;
+ if (didfds|| __dup_stdin)
+ min =0;
+ for(i=min;i<__MAX_OPEN_FILES;i++) {
+ if (__gOpenFilesCopy[i].handle == INVHL)
+ continue;
+ CloseHandle((HANDLE)__gOpenFilesCopy[i].handle);
+ __gOpenFilesCopy[i].handle = INVHL;
+ }
+ __dup_stdin=0;
+}
+void copy_fds(void ) {
+ int i;
+ int min=3;
+ if (didfds || __dup_stdin)
+ min =0;
+ for(i=min;i<__MAX_OPEN_FILES;i++) {
+ if (__gOpenFiles[i].handle == INVHL) {
+ __gOpenFilesCopy[i].handle = INVHL;
+ continue;
+ }
+
+ if(!DuplicateHandle(GetCurrentProcess(),
+ (HANDLE)__gOpenFiles[i].handle ,
+ GetCurrentProcess(),
+ (HANDLE*)&__gOpenFilesCopy[i].handle,
+ 0, TRUE, DUPLICATE_SAME_ACCESS) )
+ __gOpenFilesCopy[i].handle = INVHL;
+ __gOpenFilesCopy[i].flags = __gOpenFiles[i].flags;
+ }
+}
+intptr_t __nt_get_osfhandle(int fd) {
+ return (intptr_t)(__gOpenFiles[fd].handle);
+}
+int __nt_open_osfhandle(intptr_t h1, int mode) {
+ int i;
+
+ UNREFERENCED_PARAMETER(mode);
+
+ for(i=0;i<__MAX_OPEN_FILES;i++) {
+ if (__gOpenFiles[i].handle == INVHL) {
+ __gOpenFiles[i].handle = (HANDLE)h1;
+ __gOpenFiles[i].flags = 0;
+ return i;
+ }
+ }
+ errno = EMFILE;
+ return -1;
+}
+int nt_close(int fd) {
+
+ if( (fd == -1) ||(__gOpenFiles[fd].handle == INVHL))
+ return 0;
+ CloseHandle((HANDLE)(__gOpenFiles[fd].handle));
+ __gOpenFiles[fd].handle = INVHL;
+ __gOpenFiles[fd].flags = 0;
+
+ // dprintf("closing 0x%08x\n",(__gOpenFiles[fd].handle));
+ return 0;
+}
+int nt_access(char *filename, int mode) {
+
+ DWORD attribs=(DWORD)-1, bintype;
+ int tries=0;
+ char buf[512];/*FIXBUF*/
+
+ if (!filename) {
+ errno = ENOENT;
+ return -1;
+ }
+ (void)StringCbPrintf(buf,sizeof(buf),"%s",filename);
+retry:
+ attribs = GetFileAttributes(buf);
+ tries++;
+
+ if (attribs == (DWORD) -1) {
+ if( (GetLastError() == ERROR_FILE_NOT_FOUND) && (mode & X_OK) ) {
+ switch(tries){
+ case 1:
+ (void)StringCbPrintf(buf,sizeof(buf),"%s.exe",filename);
+ break;
+ case 2:
+ (void)StringCbPrintf(buf,sizeof(buf),"%s.cmd",filename);
+ break;
+ case 3:
+ (void)StringCbPrintf(buf,sizeof(buf),"%s.bat",filename);
+ break;
+ case 4:
+ (void)StringCbPrintf(buf,sizeof(buf),"%s.com",filename);
+ break;
+ default:
+ goto giveup;
+ break;
+ }
+ goto retry;
+ }
+ }
+giveup:
+ if (attribs == (DWORD)-1 ) {
+ errno = EACCES;
+ return -1;
+ }
+ if ( (mode & W_OK) && (attribs & FILE_ATTRIBUTE_READONLY) ) {
+ errno = EACCES;
+ return -1;
+ }
+ if (mode & X_OK) {
+ if ((mode & XD_OK) && (attribs & FILE_ATTRIBUTE_DIRECTORY) ){
+ errno = EACCES;
+ return -1;
+ }
+ if ((!(attribs & FILE_ATTRIBUTE_DIRECTORY)) &&
+ !GetBinaryType(buf,&bintype) &&(tries >4) ) {
+ errno = EACCES;
+ return -1;
+ }
+ }
+ return 0;
+}
+int nt_seek(HANDLE h1, long offset, int how) {
+ DWORD dwmove;
+
+ switch(how) {
+ case SEEK_CUR:
+ dwmove = FILE_CURRENT;
+ break;
+ case SEEK_END:
+ dwmove = FILE_END;
+ break;
+ case SEEK_SET:
+ dwmove = FILE_BEGIN;
+ break;
+ default:
+ errno = EINVAL;
+ return -1;
+ }
+
+ if (SetFilePointer(h1,offset,NULL,dwmove) == -1){
+ errno = EBADF;
+ return -1;
+ }
+ return 0;
+}
+int nt_lseek(int fd,long offset, int how) {
+ HANDLE h1 ;
+ h1 =__gOpenFiles[fd].handle;
+ return nt_seek(h1,offset,how);
+}
+int nt_isatty(int fd) {
+ return (__gOpenFiles[fd].flags & FCONSOLE);
+}
+int nt_dup(int fdin) {
+
+ HANDLE hdup;
+ HANDLE horig = __gOpenFiles[fdin].handle;
+ int ret;
+
+
+ if (!DuplicateHandle(GetCurrentProcess(),
+ horig,
+ GetCurrentProcess(),
+ &hdup,
+ 0,
+ FALSE,
+ DUPLICATE_SAME_ACCESS)) {
+ errno = GetLastError();
+ errno = EBADF;
+ return -1;
+ }
+ ret = __nt_open_osfhandle((intptr_t)hdup,_O_BINARY | _O_NOINHERIT);
+
+ __gOpenFiles[ret].flags = __gOpenFiles[fdin].flags;
+
+ return ret;
+}
+int nt_dup2(int fdorig,int fdcopy) {
+
+ HANDLE hdup;
+ HANDLE horig = __gOpenFiles[fdorig].handle;
+
+
+ if (__gOpenFiles[fdcopy].handle != INVHL) {
+ CloseHandle((HANDLE)__gOpenFiles[fdcopy].handle );
+ __gOpenFiles[fdcopy].handle = INVHL;
+ __gOpenFiles[fdcopy].flags = 0;
+ }
+ if (!DuplicateHandle(GetCurrentProcess(),
+ horig,
+ GetCurrentProcess(),
+ &hdup,
+ 0,
+ fdcopy<3?TRUE:FALSE, DUPLICATE_SAME_ACCESS)) {
+ errno = GetLastError();
+ errno = EBADF;
+ return -1;
+ }
+ __gOpenFiles[fdcopy].handle = hdup;
+ __gOpenFiles[fdcopy].flags = __gOpenFiles[fdorig].flags;
+ switch(fdcopy) {
+ case 0:
+ SetStdHandle(STD_INPUT_HANDLE,hdup);
+ break;
+ case 1:
+ SetStdHandle(STD_OUTPUT_HANDLE,hdup);
+ break;
+ case 2:
+ SetStdHandle(STD_ERROR_HANDLE,hdup);
+ break;
+ default:
+ break;
+ }
+
+ return 0;
+}
+int nt_pipe2(HANDLE hpipe[2]) {
+
+ SECURITY_ATTRIBUTES secd;
+
+ secd.nLength=sizeof(secd);
+ secd.lpSecurityDescriptor=NULL;
+ secd.bInheritHandle=FALSE;
+
+ return (!CreatePipe(&hpipe[0],&hpipe[1],&secd,0));
+}
+int nt_pipe(int hpipe[2]) {
+ HANDLE hpipe2[2];
+
+ nt_pipe2(hpipe2);
+ hpipe[0] = __nt_open_osfhandle((intptr_t)hpipe2[0],O_NOINHERIT);
+ hpipe[1] = __nt_open_osfhandle((intptr_t)hpipe2[1],O_NOINHERIT);
+ return 0;
+}
+/* check if name is //server. if checkifShare is set,
+ * also check if //server/share
+ */
+int is_server(const char *name,int checkifShare) {
+ const char *p1, *p2;
+
+ if (!*name || !*(name+1))
+ return 0;
+
+ p1 = name;
+ if (((p1[0] != '/') && (p1[0] != '\\') ) ||
+ ((p1[1] != '/') && (p1[1] != '\\') ))
+ return 0;
+
+ p2 = p1 + 2;
+ while (*p2 && *p2 != '/' && *p2 != '\\')
+#ifdef DSPMBYTE
+ if (Ismbyte1(*p2) && *(p2 + 1))
+ p2 += 2;
+ else
+#endif /* DSPMBYTE */
+ p2++;
+
+ /* just check for server */
+ if (!checkifShare) {
+ /* null terminated unc server name */
+ /* terminating '/' (//server/) is also ok */
+ if (!*p2 || !*(p2+1))
+ return 1;
+
+ }
+ else {
+ if (!*p2 || !*(p2+1))
+ return 0;
+ p2++;
+ while(*p2 && *p2 != '/' && *p2 != '\\')
+ p2++;
+ if (!*p2 || !*(p2+1))
+ return 1;
+ }
+ return 0;
+
+}
+__inline int is_unc(char *filename) {
+ if (*filename && (*filename == '/' || *filename == '\\')
+ && *(filename+1)
+ && (*(filename+1) == '/' || *(filename+1) == '\\')) {
+ return 1;
+ }
+ return 0;
+}
+int nt_stat(const char *filename, struct stat *stbuf) {
+
+ // stat hangs on server name
+ // Use any directory, since the info in stat means %$!* on
+ // windows anyway.
+ // -amol 5/28/97
+ /* is server or share */
+ if (is_server(filename,0) || is_server(filename,1) ||
+ (*(filename+1) && *(filename+1) == ':' && !*(filename+2)) ) {
+ return _stat("C:/",(struct _stat *)stbuf);
+ }
+ else {
+ char *last = (char*)filename + strlen(filename) -1;
+ int rc = 0;
+ BOOL lastslash = (*last == '/');
+ if(lastslash)
+ {
+ *last = 0;
+ }
+ rc = _stat(filename,(struct _stat *)stbuf);
+ if(lastslash)
+ {
+ *last = '/';
+ }
+ return rc;
+ }
+}
+//
+// replacement for creat that makes handle non-inheritable.
+// -amol
+//
+int nt_creat(const char *filename, int mode) {
+ // ignore the bloody mode
+
+ int fd = 0,is_cons =0;
+ HANDLE retval;
+ SECURITY_ATTRIBUTES security;
+
+ UNREFERENCED_PARAMETER(mode);
+
+
+ security.nLength = sizeof(security);
+ security.lpSecurityDescriptor = NULL;
+ security.bInheritHandle = FALSE;
+
+ if (!_stricmp(filename,"/dev/tty") ){
+ filename = "CONOUT$";
+ is_cons = 1;
+ }
+ else if (!_stricmp(filename,"/dev/null") ){
+ filename = "NUL";
+ }
+ else if (!_stricmp(filename,"/dev/clipboard")) {
+ retval = create_clip_writer_thread();
+ if (retval == INVHL)
+ return -1;
+ goto get_fd;
+ }
+ retval = CreateFile(filename,
+ GENERIC_READ | GENERIC_WRITE,
+ FILE_SHARE_READ | FILE_SHARE_WRITE,
+ is_cons?NULL:&security,
+ CREATE_ALWAYS,
+ 0,
+ NULL);
+
+ if (retval == INVALID_HANDLE_VALUE) {
+ errno = EACCES;
+ return -1;
+ }
+get_fd:
+ fd = __nt_open_osfhandle((intptr_t)retval,_O_BINARY);
+ if (fd <0) {
+ //should never happen
+ abort();
+ }
+ else {
+ if (is_cons) {
+ __gOpenFiles[fd].flags = FCONSOLE;
+ }
+ }
+ return fd;
+
+}
+int nt_open(const char *filename, int perms,...) {
+
+ // ignore the bloody mode
+
+ int fd,mode, is_cons=0;
+ HANDLE retval;
+ SECURITY_ATTRIBUTES security;
+ DWORD dwAccess, dwFlags, dwCreateDist;
+ va_list ap;
+
+ va_start(ap,perms);
+ mode = va_arg(ap,int);
+ va_end(ap);
+
+ if (!lstrcmp(filename,"/dev/tty") ){
+ if (perms == O_RDONLY) //o_rdonly is 0
+ filename = "CONIN$";
+ else if (perms & O_WRONLY)
+ filename = "CONOUT$";
+ is_cons = 1;
+ }
+ else if (!lstrcmp(filename,"/dev/null") ){
+ filename = "NUL";
+ }
+ else if (!_stricmp(filename,"/dev/clipboard")) {
+ retval = create_clip_reader_thread();
+ goto get_fd;
+ }
+ security.nLength = sizeof(security);
+ security.lpSecurityDescriptor = NULL;
+ security.bInheritHandle = FALSE;
+
+ switch (perms & (_O_RDONLY | _O_WRONLY | _O_RDWR) ) {
+ case _O_RDONLY:
+ dwAccess = GENERIC_READ;
+ break;
+ case _O_WRONLY:
+ dwAccess = GENERIC_WRITE;
+ break;
+ case _O_RDWR:
+ dwAccess = GENERIC_READ | GENERIC_WRITE ;
+ break;
+ default:
+ errno = EINVAL;
+ return -1;
+ }
+ switch (perms & (_O_CREAT | _O_TRUNC) ){
+ case 0:
+ dwCreateDist = OPEN_EXISTING;
+ break;
+ case _O_CREAT:
+ dwCreateDist = CREATE_ALWAYS;
+ break;
+ case _O_CREAT | _O_TRUNC:
+ dwCreateDist = CREATE_ALWAYS;
+ break;
+ case _O_TRUNC:
+ dwCreateDist = TRUNCATE_EXISTING;
+ break;
+ default:
+ errno = EINVAL;
+ return -1;
+ }
+ dwFlags = 0;
+ if (perms & O_TEMPORARY)
+ dwFlags = FILE_FLAG_DELETE_ON_CLOSE;
+ retval = CreateFile(filename,
+ dwAccess,//GENERIC_READ | GENERIC_WRITE,
+ FILE_SHARE_READ | FILE_SHARE_WRITE,
+ &security,
+ dwCreateDist,//CREATE_ALWAYS,
+ dwFlags,
+ NULL);
+
+ if (retval == INVALID_HANDLE_VALUE) {
+ int err = GetLastError();
+ if (err == ERROR_FILE_NOT_FOUND)
+ errno = ENOENT;
+ else
+ errno = EACCES;
+ return -1;
+ }
+ if (perms & O_APPEND) {
+ SetFilePointer(retval,0,NULL,FILE_END);
+ }
+get_fd:
+ fd = __nt_open_osfhandle((intptr_t)retval,_O_BINARY);
+ if (fd <0) {
+ //should never happen
+ abort();
+ }
+ else {
+ if (is_cons) {
+ __gOpenFiles[fd].flags = FCONSOLE;
+ }
+ }
+ return fd;
+
+}
+/*
+ * This should be the LAST FUNCTION IN THIS FILE
+ *
+ */
+#undef fstat
+#undef _open_osfhandle
+#undef close
+int nt_fstat(int fd, struct stat *stbuf) {
+ int realfd;
+ HANDLE h1;
+
+ errno = EBADF;
+
+ if(!DuplicateHandle(GetCurrentProcess(),
+ (HANDLE)__gOpenFiles[fd].handle,
+ GetCurrentProcess(),
+ &h1,
+ 0,
+ FALSE,
+ DUPLICATE_SAME_ACCESS) )
+ return -1;
+ realfd = _open_osfhandle((intptr_t)h1,0);
+ if (realfd <0 )
+ return -1;
+
+ if( fstat(realfd,stbuf) <0 ) {
+ _close(realfd);
+ return -1;
+ }
+ _close(realfd);
+ errno =0;
+ return 0;
+
+}
+
diff --git a/win32/support.c b/win32/support.c
new file mode 100644
index 000000000000..dd3c117af693
--- /dev/null
+++ b/win32/support.c
@@ -0,0 +1,941 @@
+/*$Header: /p/tcsh/cvsroot/tcsh/win32/support.c,v 1.14 2008/08/31 14:09:01 amold Exp $*/
+/*-
+ * Copyright (c) 1980, 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * support.c
+ * various routines to do exec, etc.
+ *
+ */
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <wincon.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <stdio.h>
+#include <locale.h>
+#include "ntport.h"
+#include "sh.err.h"
+#include "sh.h"
+#include "nt.const.h"
+
+
+DWORD gdwPlatform,gdwVersion;
+unsigned short __nt_really_exec = 0,__nt_child_nohupped =0;
+DWORD gdwStackSize = 524288;//0.5 MB
+
+void path_slashify(char *pstr) {
+ while(*pstr) {
+#ifdef DSPMBYTE
+ if (Ismbyte1(*pstr) && *(pstr + 1))
+ pstr ++;
+ else
+#endif /* DSPMBYTE */
+ if (*pstr == '\\')
+ *pstr = '/';
+ pstr++;
+ }
+}
+
+void do_nothing(const wchar_t *p1, const wchar_t *p2, const wchar_t*p3,
+ unsigned int p4, uintptr_t p5) {
+ UNREFERENCED_PARAMETER(p1);
+ UNREFERENCED_PARAMETER(p2);
+ UNREFERENCED_PARAMETER(p3);
+ UNREFERENCED_PARAMETER(p4);
+ UNREFERENCED_PARAMETER(p5);
+}
+void nt_init(void) {
+
+
+#ifdef SECURE_CD
+ {
+ char temp[512];/*FIXBUF*/
+ extern char gcurr_drive;
+ if(!GetCurrentDirectory(512,temp))
+ ExitProcess((DWORD)-1);
+ gcurr_drive=temp[0];
+ }
+#endif SECURE_CD
+
+ _set_invalid_parameter_handler(do_nothing);
+ init_stdio();
+ nt_init_signals();
+ nt_term_init();
+ init_hb_subst();
+ setlocale(LC_ALL,"");
+ init_shell_dll();
+ init_plister();
+ fork_init();
+ init_clipboard();
+ return;
+}
+void nt_cleanup(void){
+ nt_term_cleanup();
+ nt_cleanup_signals();
+ cleanup_netbios();
+}
+void caseify_pwd(char *curwd) {
+ char *sp, *dp, p,*s;
+ WIN32_FIND_DATA fdata;
+ HANDLE hFind;
+
+ if (gdwPlatform !=VER_PLATFORM_WIN32_NT)
+ return;
+
+ if (*curwd == '\\' && (!curwd[1] || curwd[1] == '\\'))
+ return;
+ sp = curwd +3;
+ dp = curwd +3;
+ do {
+ p= *sp;
+ if (p && p != '\\'){
+ sp++;
+ continue;
+ }
+ else {
+ *sp = 0;
+ hFind = FindFirstFile(curwd,&fdata);
+ *sp = p;
+ if (hFind != INVALID_HANDLE_VALUE) {
+ FindClose(hFind);
+ s = fdata.cFileName;
+ while(*s) {
+ *dp++ = *s++;
+ }
+ dp++;
+ sp = dp;
+ }
+ else {
+ sp++;
+ dp = sp;
+ }
+ }
+ sp++;
+ }while(p != 0);
+
+}
+static char defcwd[MAX_PATH];
+char * forward_slash_get_cwd(char * path, size_t maxlen) {
+
+ char *ptemp;
+ Char *vp;
+ int rc ;
+
+ if ((path == NULL) || (maxlen == 0)) {
+ path = &defcwd[0];
+ maxlen = MAX_PATH;
+ }
+
+ rc = GetCurrentDirectory((DWORD)maxlen,path);
+ if (rc > maxlen) {
+ errno = ERANGE;
+ return NULL;
+ }
+ vp = varval(STRNTcaseifypwd);
+ if (vp != STRNULL) {
+ caseify_pwd(path);
+ }
+ ptemp=path;
+
+ path_slashify(ptemp);
+
+ return path;
+}
+void getmachine (void) {
+
+ char temp[256];
+ char *vendor, *ostype;
+ OSVERSIONINFO osver;
+ SYSTEM_INFO sysinfo;
+
+
+ memset(&osver,0,sizeof(osver));
+ memset(&sysinfo,0,sizeof(sysinfo));
+ vendor = "Microsoft";
+
+ tsetenv(STRVENDOR,str2short(vendor));
+
+ osver.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+
+ if (!GetVersionEx(&osver)) {
+ MessageBox(NULL,"GetVersionEx failed in getmachine",
+ "tcsh",MB_ICONHAND);
+ ExitProcess(0xFF);
+ }
+ GetSystemInfo(&sysinfo);
+
+ if(osver.dwPlatformId == VER_PLATFORM_WIN32_NT) {
+ char *ostr;
+ ostype = "WindowsNT";
+ ostr = "Windows NT";
+
+ (void)StringCbPrintf(temp,sizeof(temp),"%s %d.%d Build %d (%s)",
+ ostr,
+ osver.dwMajorVersion,osver.dwMinorVersion,
+ osver.dwBuildNumber,
+ osver.szCSDVersion[0]?osver.szCSDVersion:"");
+ tsetenv(STRHOSTTYPE,str2short(temp));
+ }
+ else if (osver.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) {
+ ostype = "Windows9x";
+ (void)StringCbPrintf(temp,sizeof(temp),
+ "Win9x %d.%d:%d",osver.dwMajorVersion,osver.dwMinorVersion,
+ LOWORD(osver.dwBuildNumber));
+ tsetenv(STRHOSTTYPE,str2short(temp));
+ }
+ else {
+ ostype = "WindowsWhoKnows";
+ MessageBox(NULL,"Unknown platform","tcsh",MB_ICONHAND);
+ }
+ tsetenv(STROSTYPE,str2short(ostype));
+ switch (sysinfo.wProcessorArchitecture) {
+ case PROCESSOR_ARCHITECTURE_INTEL:
+ if ( ( sysinfo.wProcessorLevel < 3) ||
+ ( sysinfo.wProcessorLevel > 9) )
+ sysinfo.wProcessorLevel = 3;
+
+ (void)StringCbPrintf(temp,sizeof(temp),
+ "i%d86",sysinfo.wProcessorLevel);
+ break;
+ case PROCESSOR_ARCHITECTURE_ALPHA:
+ (void)StringCbPrintf(temp,sizeof(temp),"Alpha");
+ break;
+ case PROCESSOR_ARCHITECTURE_MIPS:
+ (void)StringCbPrintf(temp,sizeof(temp),"Mips");
+ break;
+ case PROCESSOR_ARCHITECTURE_PPC:
+ (void)StringCbPrintf(temp,sizeof(temp),"PPC");
+ break;
+ case PROCESSOR_ARCHITECTURE_AMD64:
+ (void)StringCbPrintf(temp,sizeof(temp),"AMD64");
+ break;
+ default:
+ (void)StringCbPrintf(temp,sizeof(temp),"Unknown");
+ break;
+ }
+ tsetenv(STRMACHTYPE,str2short(temp));
+
+}
+void nt_exec(char *prog, char**args) {
+ nt_execve(prog,args,NULL);
+}
+void nt_execve(char *prog, char**args, char**envir ) {
+
+ STARTUPINFO si;
+ PROCESS_INFORMATION pi;
+ HANDLE htemp;
+ BOOL bRet;
+ DWORD type=0;
+ DWORD dwCreationflags;
+ unsigned int priority;
+ char *argv0= NULL;
+ char *cmdstr, *cmdend ;
+ char *originalPtr;
+ unsigned int cmdsize,cmdlen;
+ char *p2;
+ char **savedargs;
+ int retries=0;
+ int hasdot =0;
+ int is_winnt ;
+
+ UNREFERENCED_PARAMETER(envir);
+
+ memset(&si,0,sizeof(si));
+ savedargs = args;
+
+ /*
+ * This memory is not freed because we are exec()ed and will
+ * not be alive long.
+ */
+ originalPtr = cmdstr= heap_alloc(MAX_PATH<<2);
+
+ is_winnt = (gdwPlatform != VER_PLATFORM_WIN32_WINDOWS);
+
+
+ cmdsize = MAX_PATH<<2;
+
+ p2 = cmdstr;
+
+ cmdlen = 0;
+ cmdlen += copy_quote_and_fix_slashes(prog,cmdstr,&hasdot);
+
+ p2 += cmdlen;
+
+ /* If the command was not quoted ,
+ skip initial character we left for quote */
+ if (*cmdstr != '"') {
+ *cmdstr = 'A';
+ cmdstr++;
+ cmdsize--;
+ }
+ *p2 = 0;
+ cmdend = p2;
+
+
+ if (!is_winnt){
+ argv0 = NULL;
+ goto win95_directly_here;
+ }
+ else {
+ argv0 = heap_alloc(MAX_PATH); /* not freed */
+ (void)StringCbPrintf(argv0,MAX_PATH,"%s",prog);
+ }
+
+retry:
+
+ bRet=GetBinaryType(argv0,&type);
+ dprintf("binary type for %s is %d\n",argv0,bRet);
+ //
+ // For NT, append .EXE and retry
+ //
+ if (is_winnt && !bRet ) {
+ /* Don't append .EXE if it could be a script file */
+ if (GetLastError() == ERROR_BAD_EXE_FORMAT){
+ errno = ENOEXEC;
+ if (!__nt_only_start_exes)
+ try_shell_ex(args,1,FALSE); //can't throw on error
+ return;
+ }
+ else if ( retries ){
+ if (
+ ( (argv0[0] == '\\') ||(argv0[0] == '/') ) &&
+ ( (argv0[1] == '\\') ||(argv0[1] == '/') ) &&
+ (!args[1])
+ )
+ if (!__nt_only_start_exes)
+ try_shell_ex(args,1,FALSE);
+ errno = ENOENT;
+ }
+ if (retries > 1){
+ return;
+ }
+ // Try uppercase once and then lower case
+ //
+ if (!retries) {
+ (void)StringCbPrintf(argv0,MAX_PATH,"%s.exe",prog);
+ }
+ else {
+ (void)StringCbPrintf(argv0,MAX_PATH,"%s.EXE",prog);
+ /* fix for clearcase */
+ }
+ retries++;
+ goto retry;
+ }
+
+win95_directly_here:
+
+ si.cb = sizeof(STARTUPINFO);
+ si.dwFlags = STARTF_USESTDHANDLES;
+ htemp= (HANDLE)_get_osfhandle(0);
+ DuplicateHandle(GetCurrentProcess(),htemp,GetCurrentProcess(),
+ &si.hStdInput,0,TRUE,DUPLICATE_SAME_ACCESS);
+ htemp= (HANDLE)_get_osfhandle(1);
+ DuplicateHandle(GetCurrentProcess(),htemp,GetCurrentProcess(),
+ &si.hStdOutput,0,TRUE,DUPLICATE_SAME_ACCESS);
+ htemp= (HANDLE)_get_osfhandle(2);
+ DuplicateHandle(GetCurrentProcess(),htemp,GetCurrentProcess(),
+ &si.hStdError,0,TRUE,DUPLICATE_SAME_ACCESS);
+
+
+
+ args++; // the first arg is the command
+
+
+ dprintf("nt_execve calling c_a_a_q");
+ if(!concat_args_and_quote(args,&originalPtr,&cmdstr,&cmdlen,&cmdend,
+ &cmdsize))
+ {
+ dprintf("concat_args_and_quote failed\n");
+ heap_free(originalPtr);
+ errno = ENOMEM;
+ goto fail_return;
+ }
+
+ *cmdend = 0;
+
+ dwCreationflags = GetPriorityClass(GetCurrentProcess());
+ if (__nt_child_nohupped) {
+ dwCreationflags |= DETACHED_PROCESS;
+ }
+ priority = GetThreadPriority(GetCurrentThread());
+
+ (void)fix_path_for_child();
+
+ if (is_winnt)
+ dwCreationflags |= CREATE_SUSPENDED;
+
+
+re_cp:
+ dprintf("argv0 %s cmdstr %s\n",argv0,cmdstr);
+ bRet = CreateProcessA(argv0, cmdstr,
+ NULL, NULL,
+ TRUE, // need this for redirecting std handles
+ dwCreationflags,
+ NULL, NULL,
+ &si,
+ &pi);
+ if (!bRet){
+ if (GetLastError() == ERROR_BAD_EXE_FORMAT) {
+ if (!__nt_only_start_exes)
+ try_shell_ex(savedargs,1,FALSE);
+ errno = ENOEXEC;
+ }
+ else if (GetLastError() == ERROR_INVALID_PARAMETER) {
+ /* can't get invalid parameter, so this must be
+ * the case when we exceed the command length limit.
+ */
+ errno = ENAMETOOLONG;
+ }
+ else {
+ errno = ENOENT;
+ }
+ if (!is_winnt && !hasdot) { //append '.' to the end if needed
+ (void)StringCbCat(cmdstr,cmdsize,".");
+ hasdot=1;
+ goto re_cp;
+ }
+ }
+ else{
+ int gui_app ;
+ char guivar[50];
+
+ if (GetEnvironmentVariable("TCSH_NOASYNCGUI",guivar,50))
+ gui_app=0;
+ else {
+ if (is_winnt || hasdot)
+ gui_app= is_gui(argv0);
+ else
+ gui_app = is_9x_gui(prog);
+ }
+
+ if (is_winnt && !SetThreadPriority(pi.hThread,priority) ) {
+ priority =GetLastError();
+ }
+ if (is_winnt)
+ ResumeThread(pi.hThread);
+ errno= 0;
+
+ if (__nt_really_exec||__nt_child_nohupped || gui_app){
+ ExitProcess(0);
+ }
+ else {
+ DWORD exitcode=0;
+ WaitForSingleObject(pi.hProcess,INFINITE);
+ (void)GetExitCodeProcess(pi.hProcess,&exitcode);
+ CloseHandle(pi.hProcess);
+ CloseHandle(pi.hThread);
+ /*
+ * If output was redirected to /dev/clipboard,
+ * we need to close the pipe handles
+ */
+ if (is_dev_clipboard_active) {
+ CloseHandle((HANDLE)_get_osfhandle(0));
+ CloseHandle((HANDLE)_get_osfhandle(1));
+ CloseHandle((HANDLE)_get_osfhandle(2));
+ CloseHandle(si.hStdInput);
+ CloseHandle(si.hStdOutput);
+ CloseHandle(si.hStdError);
+ WaitForSingleObject(ghdevclipthread,60*1000);
+ }
+ ExitProcess(exitcode);
+ }
+ }
+fail_return:
+ CloseHandle(si.hStdInput);
+ CloseHandle(si.hStdOutput);
+ CloseHandle(si.hStdError);
+ return;
+}
+/* This function from Mark Tucker (mtucker@fiji.sidefx.com) */
+int quoteProtect(char *dest, char *src,unsigned long destsize) {
+ char *prev, *curr;
+ for (curr = src; *curr; curr++) {
+
+ // Protect " from MS-DOS expansion
+ if (*curr == '"') {
+ // Now, protect each preceeding backslash
+ for (prev = curr-1; prev >= src && *prev == '\\'; prev--) {
+ *dest++ = '\\';
+ destsize--;
+ if(destsize == 0)
+ return ERROR_BUFFER_OVERFLOW;
+ }
+
+ *dest++ = '\\';
+ destsize--;
+ if(destsize == 0)
+ return ERROR_BUFFER_OVERFLOW;
+ }
+ *dest++ = *curr;
+ destsize--;
+ if(destsize == 0)
+ return ERROR_BUFFER_OVERFLOW;
+
+ }
+ *dest = 0;
+
+ return NO_ERROR;
+}
+
+
+int gethostname(char *buf, int len) {
+ GetComputerName(buf,(DWORD*)&len);
+ return 0;
+}
+int nt_chdir (char *path) {
+ char *tmp = path;
+ if (gdwPlatform !=VER_PLATFORM_WIN32_NT) {
+ while(*tmp) {
+ if (*tmp == '/') *tmp = '\\';
+ tmp++;
+ }
+ }
+ return _chdir(path);
+}
+void WINAPI uhef( EXCEPTION_POINTERS *lpep) {
+ ExitProcess(lpep->ExceptionRecord->ExceptionCode);
+}
+extern BOOL CreateWow64Events(DWORD,HANDLE*,HANDLE*,BOOL);
+// load kernel32 and look for iswow64. if not found, assume FALSE
+BOOL bIsWow64Process = FALSE;
+void init_wow64(void) {
+ HMODULE hlib;
+ //BOOL (WINAPI *pfnIsWow64)(HANDLE,BOOL*);
+ FARPROC pfnIsWow64;
+
+ bIsWow64Process = FALSE;
+
+ hlib = LoadLibrary("kernel32.dll");
+ if (!hlib) {
+ return;
+ }
+ pfnIsWow64 = GetProcAddress(hlib,"IsWow64Process");
+ if (!pfnIsWow64) {
+ FreeLibrary(hlib);
+ return;
+ }
+ if (!pfnIsWow64(GetCurrentProcess(),&bIsWow64Process) )
+ bIsWow64Process = FALSE;
+
+ FreeLibrary(hlib);
+ return;
+
+}
+
+extern void mainCRTStartup(void *);
+
+/*
+ * heap_init() MUST NOT be moved outside the entry point. Sometimes child
+ * processes may load random DLLs not loaded by the parent and
+ * use the heap address reserved for fmalloc() in the parent. This
+ * causes havoc as no dynamic memory can then be inherited.
+ *
+ */
+extern void heap_init(void);
+
+#include <forkdata.h>
+void silly_entry(void *peb) {
+ char * path1=NULL;
+ int rc;
+ char temp[MAX_PATH+5];
+ char buf[MAX_PATH];
+ char ptr1[MAX_PATH];
+ char ptr2[MAX_PATH];
+ char ptr3[MAX_PATH];
+ OSVERSIONINFO osver;
+
+ osver.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+
+ if (!GetVersionEx(&osver)) {
+ MessageBox(NULL,"GetVersionEx failed","tcsh",MB_ICONHAND);
+ ExitProcess(0xFF);
+ }
+ gdwVersion = osver.dwMajorVersion;
+
+ if(gdwVersion < 6) // no wow64 hackery for vista.
+ {
+ init_wow64();
+ }
+
+#ifdef _M_IX86
+ // look at the explanation in fork.c for why we do these steps.
+ if (bIsWow64Process) {
+ HANDLE h64Parent,h64Child;
+ char *stk, *end;
+ DWORD mb = (1<<20);
+
+ // if we found the events, then we're the product of a fork()
+ if (CreateWow64Events(GetCurrentProcessId(),
+ &h64Parent,&h64Child,TRUE)) {
+
+ if (!h64Parent || !h64Child)
+ return;
+
+ // tell parent we're rolling
+ SetEvent(h64Child);
+
+ if(WaitForSingleObject(h64Parent,FORK_TIMEOUT) != WAIT_OBJECT_0) {
+ return;
+ }
+
+ // if __forked is 0, we shouldn't have found the events
+ if (!__forked)
+ return;
+ }
+
+ // now create the stack
+
+ if (!__forked) {
+ stk = VirtualAlloc(NULL,mb+65536,MEM_COMMIT,PAGE_READWRITE);
+ if (!stk) {
+ dprintf("virtual alloc in parent failed %d\n",GetLastError());
+ return;
+ }
+ end = stk + mb + 65536;
+ end -= sizeof(char*);
+
+ __fork_stack_begin = end;
+
+ __asm {mov esp,end };
+
+ set_stackbase(end);
+ heap_init();
+ }
+ else { // child process
+ stk = (char*)__fork_stack_begin + sizeof(char*)- mb - 65536;
+
+ dprintf("begin is 0x%08x\n",stk);
+ end = VirtualAlloc(stk, mb+65536 , MEM_RESERVE , PAGE_READWRITE);
+ if (!end) {
+ rc = GetLastError();
+ dprintf("virtual alloc 1 in child failed %d\n",rc);
+ return;
+ }
+ stk = VirtualAlloc(end, mb+65536 , MEM_COMMIT , PAGE_READWRITE);
+ if (!stk) {
+ rc = GetLastError();
+ dprintf("virtual alloc 2 in child failed %d\n",rc);
+ return;
+ }
+ end = stk + mb + 65536;
+ __asm {mov esp, end};
+ set_stackbase(end);
+
+ SetEvent(h64Child);
+
+ CloseHandle(h64Parent);
+ CloseHandle(h64Child);
+ }
+ }
+#endif _M_IX86
+
+
+ SetFileApisToOEM();
+
+ if (!bIsWow64Process)
+ heap_init();
+
+
+
+
+ /* If home is set, we only need to change '\' to '/' */
+ rc = GetEnvironmentVariable("HOME",buf,MAX_PATH);
+ if (rc && (rc < MAX_PATH)){
+ path_slashify(buf);
+ (void)SetEnvironmentVariable("HOME",buf);
+ goto skippy;
+ }
+
+ memset(ptr1,0,MAX_PATH);
+ memset(ptr2,0,MAX_PATH);
+ memset(ptr3,0,MAX_PATH);
+
+ if(osver.dwPlatformId == VER_PLATFORM_WIN32_NT) {
+ GetEnvironmentVariable("USERPROFILE",ptr1,MAX_PATH);
+ GetEnvironmentVariable("HOMEDRIVE",ptr2,MAX_PATH);
+ GetEnvironmentVariable("HOMEPATH",ptr3,MAX_PATH);
+
+ ptr1[MAX_PATH -1] = ptr2[MAX_PATH-1] = ptr3[MAX_PATH-1]= 0;
+
+#pragma warning(disable:4995)
+ if (!ptr1[0] || osver.dwMajorVersion <4) {
+ wsprintfA(temp, "%s%s",ptr2[0]?ptr2:"C:",ptr3[0]?ptr3:"\\");
+ }
+ else if (osver.dwMajorVersion >= 4) {
+ wsprintfA(temp, "%s",ptr1);
+ }
+#pragma warning(default:4995)
+ }
+ else if (osver.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) {
+
+ rc = GetWindowsDirectory(ptr1,MAX_PATH);
+ if (rc > MAX_PATH) {
+ MessageBox(NULL,"This should never happen","tcsh",MB_ICONHAND);
+ ExitProcess(0xFF);
+ }
+ (void)StringCbPrintf(temp,sizeof(temp),"%s",ptr1);
+ }
+ else {
+ MessageBox(NULL,"Unknown platform","tcsh",MB_ICONHAND);
+ }
+ path_slashify(temp);
+ SetEnvironmentVariable("HOME",temp);
+
+skippy:
+ gdwPlatform = osver.dwPlatformId;
+
+
+ rc = GetEnvironmentVariable("Path",path1,0);
+ if ( rc !=0) {
+
+ path1 =heap_alloc(rc);
+
+ GetEnvironmentVariable("Path",path1,rc);
+ SetEnvironmentVariable("Path",NULL);
+ /*SetEnvironmentVariable("PATH",NULL);*/
+ SetEnvironmentVariable("PATH",path1);
+
+ heap_free(path1);
+ }
+ mainCRTStartup(peb);
+}
+
+/*
+ * Copy source into target, quote if it has space, also converting '/' to '\'.
+ *
+ * hasdot is set to 1 if source ends in a file extension
+ * return value is the length of the string copied.
+ */
+int copy_quote_and_fix_slashes(char *source,char *target, int *hasdot ) {
+
+ int len ;
+ int hasspace;
+ char *save;
+ char *ptr;
+
+ save = target; /* leave space for quote */
+ len = 1;
+
+ target++;
+
+ hasspace = 0;
+ while(*source) {
+ if (*source == '/')
+ *source = '\\';
+ else if (*source == ' ')
+ hasspace = 1;
+
+ *target++ = *source;
+
+ source++;
+ len++;
+ }
+ ptr = target;//source;
+ while( (ptr > save ) && (*ptr != '\\')) {
+ if (*ptr == '.')
+ *hasdot = 1;
+ ptr--;
+ }
+
+ if (hasspace) {
+ *save = '"';
+ *target = '"';
+ len++;
+ }
+ return len;
+}
+/*
+ * This routine is a replacement for the old, horrible strcat() loop
+ * that was used to turn the argv[] array into a string for CreateProcess().
+ * It's about a zillion times faster.
+ * -amol 2/4/99
+ */
+char *concat_args_and_quote(char **args, char **poriginalPtr,char **cstr,
+ unsigned int *clen, char **cend, unsigned int *cmdsize) {
+
+ unsigned int argcount, arglen, cmdlen;
+ char *tempptr, *cmdend ,*cmdstr;
+ short quotespace = 0;
+ short quotequote = 0;
+ short noquoteprotect = 0;
+ char *tempquotedbuf;
+ unsigned long tqlen = 256;
+ int rc;
+
+ dprintf("entering concat_args_and_quote\n");
+ tempquotedbuf = heap_alloc(tqlen);
+
+ noquoteprotect = (short)(varval(STRNTnoquoteprotect) != STRNULL);
+ /*
+ quotespace hack needed since execv() would have separated args, but
+ createproces doesnt
+ -amol 9/14/96
+ */
+ cmdend= *cend;
+ cmdstr = *cstr;
+ cmdlen = *clen;
+
+ argcount = 0;
+ while (*args) {
+
+ *cmdend++ = ' ';
+ cmdlen++;
+
+ tempptr = *args;
+
+ arglen = 0;
+ argcount++;
+
+ //dprintf("args is %s\n",*args);
+ if (!*tempptr) {
+ *cmdend++ = '"';
+ *cmdend++ = '"';
+ }
+ while(*tempptr) {
+ if (*tempptr == ' ' || *tempptr == '\t')
+ quotespace = 1;
+ else if (*tempptr == '"')
+ quotequote = 1;
+ tempptr++;
+ arglen++;
+ }
+ if (arglen + cmdlen +4 > *cmdsize) { // +4 is if we have to quote
+
+
+ tempptr = heap_realloc(*poriginalPtr,*cmdsize<<1);
+
+ if(!tempptr)
+ return NULL;
+
+ // If it's not the same heap block, re-adjust the pointers.
+ if (tempptr != *poriginalPtr) {
+ cmdstr = tempptr + (cmdstr - *poriginalPtr);
+ cmdend = tempptr + (cmdend- *poriginalPtr);
+ *poriginalPtr = tempptr;
+ }
+
+ *cmdsize <<=1;
+ }
+ if (quotespace)
+ *cmdend++ = '"';
+
+ if ((noquoteprotect == 0) && quotequote){
+ tempquotedbuf[0]=0;
+
+ tempptr = &tempquotedbuf[0];
+
+ rc = quoteProtect(tempquotedbuf,*args,tqlen);
+
+ while(rc == ERROR_BUFFER_OVERFLOW) {
+ char *tmp = tempquotedbuf;
+ tempquotedbuf = heap_realloc(tempquotedbuf,tqlen <<1);
+ if(!tempquotedbuf) {
+ heap_free(tmp);
+ return NULL;
+ }
+ tqlen <<= 1;
+ tempptr = &tempquotedbuf[0];
+ rc = quoteProtect(tempquotedbuf,*args,tqlen);
+ }
+ while (*tempptr) {
+ *cmdend = *tempptr;
+ cmdend++;
+ tempptr++;
+ }
+ cmdlen +=2;
+ }
+ else {
+ tempptr = *args;
+ while(*tempptr) {
+ *cmdend = *tempptr;
+ cmdend++;
+ tempptr++;
+ }
+ }
+
+ if (quotespace) {
+ *cmdend++ = '"';
+ cmdlen +=2;
+ }
+ cmdlen += arglen;
+
+ args++;
+ }
+ *clen = cmdlen;
+ *cend = cmdend;
+ *cstr = cmdstr;
+
+ heap_free(tempquotedbuf);
+
+
+ return cmdstr;
+}
+char *fix_path_for_child(void) {
+
+ char *ptr;
+ Char *vp;
+ char *pathstr;
+ char *oldpath;
+ long len;
+
+ vp = varval(STRNTlamepathfix);
+
+ if (vp != STRNULL) {
+
+ len = GetEnvironmentVariable("PATH",NULL,0);
+
+ oldpath = heap_alloc(len+1);
+ pathstr = heap_alloc(len+1);
+
+ len = GetEnvironmentVariable("PATH",oldpath,len+1);
+ memcpy(pathstr,oldpath,len);
+
+ ptr = pathstr;
+ while(*ptr) {
+ if (*ptr == '/')
+ *ptr = '\\';
+ ptr++;
+ }
+ SetEnvironmentVariable("PATH",pathstr);
+ heap_free(pathstr);
+
+ return oldpath; //freed in restore_path;
+ }
+ else
+ return NULL;
+
+}
+void restore_path(char *oldpath) {
+ if (oldpath) {
+ SetEnvironmentVariable("PATH",oldpath);
+ heap_free(oldpath);
+ }
+}
diff --git a/win32/tcshrc.rc b/win32/tcshrc.rc
new file mode 100644
index 000000000000..e51f3e9b8c86
--- /dev/null
+++ b/win32/tcshrc.rc
@@ -0,0 +1,99 @@
+#if 0
+#include <windows.h>
+STRINGTABLE DISCARDABLE
+BEGIN
+666 " setenv EDITOR vi.exe"
+667 " setenv PAGER c:/bin/less"
+668 " setenv NOREBIND 1"
+669 " setenv LESS ""-B -c -h4 -i -M -q -x4 -G"""
+670 " setenv SHELL C:/bin/tcsh.exe"
+671 "if ($?PROCESSOR_ARCHITECTURE) then"
+672 " setenv USER $USERNAME"
+673 " setenv LOGNAME $USER"
+674 " setenv HOSTNAME $COMPUTERNAME"
+675 "endif"
+676 "umask 077"
+677 "if (! $?prompt) then # Everything else is interactive"
+678 " exit(0)"
+679 "endif"
+680 "unsetenv EXINIT"
+681 "if ($?tcsh) then"
+682 " set autolist"
+683 " set listlinks"
+684 " set pushdtohome"
+685 " set visiblebell"
+686 " set ellipsis"
+687 " set rmstar"
+688 "if ($?TERM) then"
+689 " if ($TERM == ""emacs"") then"
+690 " set prompt='%/\>'"
+691 " else"
+692 " set prompt='%{%}%c03%{%}\>'"
+693 " set prompt3='%{%}Correct to %R ?(y|n|e)%{%} '"
+694 " endif"
+695 "else"
+696 " set prompt='%{%}%c03%{%}\>'"
+697 " set prompt3='%{%}Correct to %R ?(y|n|e)%{%} '"
+698 "endif"
+699 " if ($?loginsh) then"
+700 " set correct=all"
+701 " set savedirs=100"
+702 " set autocorrect"
+703 " endif"
+704 " set complete=igncase"
+705 " complete which 'p/*/c/'"
+706 " complete where 'p/*/c/'"
+707 " complete start 'p/1/c/'"
+708 " complete cd 'p/1/d/'"
+709 " complete pushd 'p/1/d/'"
+710 " complete popd 'p/1/d/'"
+711 " complete bindkey 'p/*/b/'"
+712 " complete set 'p/*/v/'"
+713 " complete unset 'p/*/v/'"
+714 " bindkey -b ^W backward-delete-word"
+715 " bindkey -b ^U backward-kill-line"
+716 " bindkey -b ^R complete-word-fwd"
+717 " bindkey -b M-g list-glob"
+718 " bindkey -b M-* expand-glob"
+719 " bindkey -b M-v expand-variables"
+720 " bindkey -b M-w normalize-command"
+721 " bindkey -b M-/ e_dosify_prev"
+722 " bindkey -b M-r i-search-back"
+723 " bindkey -b M-x e_copy_to_clipboard"
+724 " bindkey -b M-y e_paste_from_clipboard"
+725 " bindkey -b N-up up-history"
+726 " bindkey -b N-down down-history"
+727 " bindkey -b N-right forward-char"
+728 " bindkey -b N-left backward-char"
+729 " bindkey -b N-del delete-char"
+730 " bindkey -b N-ins overwrite-mode"
+731 " bindkey -b N-1 which-command"
+732 " bindkey -b N-2 expand-history"
+733 " bindkey -b N-3 complete-word-raw"
+734 " bindkey -b N-home beginning-of-line"
+735 " bindkey -b N-end end-of-line"
+736 "endif"
+737 "if (! $?PATH_DONE) then"
+738 "set path=($path:q c:/bin .)"
+739 "setenv PATH_DONE 1"
+740 "endif"
+741 "set notify"
+742 "set noclobber"
+743 "set filec"
+744 "set history=(200) "
+745 "set savehist=(200 merge)"
+746 "set ignoreeof"
+747 "set fignore =(.obj .pdb .bsc .ilk .idb .OBJ .PDB .BSC .ILK .IDB)"
+748 "set color=(ls-F)"
+749 "alias ls ls-F "
+750 "alias h history"
+751 "alias rm c:/bin/rm.exe -i"
+752 "alias rd c:/bin/rmdir.exe"
+753 "alias md c:/bin/mkdir.exe"
+754 "alias mv C:/bin/mv.exe -i"
+755 "alias cp C:/bin/cp.exe -i"
+756 "alias pwd 'echo $cwd'"
+757 "alias env printenv"
+758 "alias unsave unset savehist savedirs"
+END
+#endif 0
diff --git a/win32/version.h b/win32/version.h
new file mode 100644
index 000000000000..44d425764877
--- /dev/null
+++ b/win32/version.h
@@ -0,0 +1,14 @@
+/*$Header: /p/tcsh/cvsroot/tcsh/win32/version.h,v 1.24 2008/09/10 20:34:21 amold Exp $*/
+#ifndef VERSION_H
+#define VERSION_H
+
+/* remember to change both instance of the version -amol */
+
+#ifdef NTDBG
+#define LOCALSTR ",nt-rev-8.10-debug"
+#else
+#define LOCALSTR ",nt-rev-8.10"
+ //patches
+#endif NTDBG
+
+#endif VERSION_H