Import of tcsh-6.20.00

This commit is contained in:
Dmitry Chagin 2017-03-18 21:41:53 +00:00
parent 0bc8d6575f
commit 6895abeab8
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/vendor/tcsh/dist/; revision=315512
svn path=/vendor/tcsh/6.20.00/; revision=315513; tag=vendor/tcsh/6.20.00
132 changed files with 15663 additions and 4170 deletions

View File

@ -10,11 +10,7 @@
* 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. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* 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.
*

92
Fixes
View File

@ -1,3 +1,95 @@
20. V6.20.00 - 20161124
19. Don't resize the screen if it did not change size.
18. V6.19.01 - 20161025
17. restore file description when cleaning up after eval:
repeat 99 time
16. PR/572: Fix $SHLVL issue when exec'ing subshells.
15. PR/403: Fix backquote expansion for multi-byte character sets.
14. Fix drawing issu with multi-line prompt (Kensuke Iwahashi/David Kaspar)
13. always send prusage to stdout.
12. PR/526: Fix double \\ printing from previous fix in history expansion.
11. Android updates from Corinna Vinschen
10. PR/526: Quote backslashes properly so they can be preserved in ``
expansions
9. Fix memory leak for paraml
8. Add notempty and ask values for the noclobber setting (Martin Tournoij)
7. more correct $wordchars for vimode (Luke Mewburn)
6. expose VImode in $vimode (Luke Mewburn)
5. display what the compiled in editor is in bindkey -d (Luke Mewburn)
4. run-fg-editor improvements and documentation (Luke Mewburn)
3. Fix parsing of 'if (cond)then' (Fridolin Pokorny)
2. PR/437: Fix handling of invalid unicode characters.
1. PR/451: Fix error messages containing %c to be always '%c'
41. V6.19.00 - 20150521
40. V6.18.05 - 20150510
39. fix reseting when interrupted inside an eval "eval sleep 10^C"
(paulo.cesar.pereira.de.andrade)
38. rename handle_intr -> handle_interrupt as originally intended.
37. fix input tests that need stdin on a tty
36. V6.18.04 - 20150504
35. revert fix echo "\1", it is incorrect.
34. revert fix to PR/437, breaks short strings.
33. V6.18.03 - 20150503
32. PR/437: Nakajima Akira: Fix segmentation fault reading input files
31. PR/291: Print job status messages to stderr.
30. Fridolin Pokorny NUL in `` does not mean EOF.
29. Pavel Raiskup fix hang with:
while (1)
( date & ; wait )
end
28. Add cdtohome special variable (Martin Tournoij)
27. Fix root prompt char for windows (Corinna Vinschen)
26. For "next" completion matches only consider exact matches of the previous
word (Jamie Landeg-Jones)
25. Fix echo "\1" for echo_style=both where the first character was
not processed properly (Gary Duzan)
24. V6.18.02 - 20140618
23. fix ls-F /non printing exit value twice.
22. rename configure.in to configure.ac, add aclocal.m4 to CVS
21. set foo="aabaabaa"; echo $foo:as/a// should produce bb
20. Add locked merge history support (Marcin Konarski)
19. Support more resource limits from various BSD's
18. Cache history count to speed up thing
17. PR/240: minix support
16. revert fix for 15. Causes extra quoting, for example (foo is a program
that prints its arguments):
$ ./foo 'abc' *
'\a\b\c'
15. fix globbing for ``, stripping backslashes. Example:
cat << _EOF > huh
echo 'hello\;world'
_EOF
echo `./huh 0`
echo `./huh $?`
14. fix for `` that causes hang. Example:
cat << _EOF > huh
#!/bin/sh
echo "[$@]"
echo "I am running"
echo "I am running ($$)" >> huh.out
_EOF
cat << _EOF > huh.tcsh
#!/bin/tcsh -f
./huh \
`#comment blah blah blah` \
parameter a \
`#comment blah blah blah` \
parameter b \
`#comment blah blah blah` \
parameter c
echo ok
_EOF
13. remove AsciiOnly fix now that the real issue has been fixed (Roman Kollar)
12. define utmp file for aix (Laurence Darby)
11. fix if history in loops
10. make ls-F print to stderr and set the exit code
9. make rmstar interruptible on linux
8. Get rid of pret_t and make the printf functions return the number of
characters printed as the system ones do.
7. Parse a FreeBSD compat $LSCOLORS. What to do when both LSCOLORS and
LS_COLORS are set. I am not documenting this until we decide.
6. V6.18.01 - 20120214
5. fix interruptible wait again
4. ignore bogus compiler overflow message

View File

@ -1,5 +1,5 @@
XCOMM
XCOMM $tcsh: Imakefile,v 1.87 2010/01/28 19:01:05 christos Exp $
XCOMM $tcsh: Imakefile,v 1.88 2014/07/07 20:34:58 christos Exp $
XCOMM
XCOMM Imakefile for tcsh 6.12
XCOMM Marc Horowitz, MIT SIPB
@ -526,8 +526,8 @@ MISCF = Makefile.std Fixes MAKEDIFFS MAKESHAR NewThings README FAQ \
WishList config_f.h eight-bit.me glob.3 patchlevel.h \
pathnames.h tcsh.man Ported src.desc Imakefile imake.config \
README.imake complete.tcsh vmsreadme.txt Makefile.vms termcap.vms \
snames.h host.defs gethost.c tcsh.man2html Makefile.in configure.in \
Makefile.win32
snames.h host.defs gethost.c tcsh.man2html Makefile.in configure.ac \
Makefile.win32 aclocal.m4
CONFSRCS=config/[a-z]*

View File

@ -1,4 +1,4 @@
# $tcsh: Makefile.in,v 3.49 2011/02/05 17:35:31 christos Exp $
# $tcsh: Makefile.in,v 3.59 2015/08/24 20:09:04 kim Exp $
# Makefile.in 4.3 6/11/83
#
# C Shell with process control; VM/UNIX VAX Makefile
@ -315,8 +315,8 @@ CPP = @CPP@
# on the suns does not know how to make dynamically linked binaries.
# 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
# -ansi -pedantic
#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 -Wcast-qual -Wwrite-strings -Wold-style-definition -Wuninitialized -Wpointer-sign
# -Wconversion -Wformat=2 -ansi -pedantic
#CC= gcc -Wall -pipe -B/bin/
# Generate code for Intel 486 (linux)
#CC= gcc -m486 -pipe -Wall
@ -377,14 +377,14 @@ ASSRCS= sh.c sh.dir.c sh.dol.c sh.err.c sh.exec.c sh.char.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 \
tw.color.c
PSSRCS= sh.decls.h glob.c glob.h mi.termios.c mi.wait.h mi.varargs.h ma.setp.c \
PSSRCS= sh.decls.h glob.c glob.h dotlock.c dotlock.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.file.${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} \
sh.sem.${SUF} sh.set.${SUF} sh.time.${SUF} glob.${SUF} dotlock.${SUF} \
mi.termios.${SUF} ma.setp.${SUF} vms.termcap.${SUF}
TWSRCS= tw.decls.h tw.h tw.help.c tw.init.c tw.parse.c tw.spell.c \
@ -411,12 +411,12 @@ AVSRCS= Fixes MAKEDIFFS MAKESHAR NewThings README FAQ \
WishList config_f.h eight-bit.me glob.3 patchlevel.h \
pathnames.h tcsh.man Ported src.desc Imakefile imake.config \
README.imake complete.tcsh vmsreadme.txt termcap.vms snames.h \
host.defs gethost.c tcsh.man2html configure.in configure config.h.in \
tests/testsuite.at
host.defs gethost.c tcsh.man2html configure.ac configure config.h.in \
tests/testsuite.at aclocal.m4
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/mb-utf8.at tests/noexec.at tests/parenthesis.at tests/syntax.at \
tests/subst.at tests/variables.at tests/sh.dol.at
VHSRCS=${PVSRCS} ${AVSRCS}
@ -533,11 +533,11 @@ tc.const.h: tc.const.c sh.char.h config.h config_f.h sh.types.h sh.err.h
${CPP} $(CPPFLAGS) ${DFLAGS} ${EXTRAFLAGS} -D_h_tc_const\
$(srcdir)/tc.const.c | \
sed -n -e 's/^\(Char STR[a-zA-Z0-9_]*\) *\[ *\].*/extern \1[];/p' | \
sort >> $@.tmp
LC_COLLATE=C sort >> $@.tmp
@echo '#endif /* _h_tc_const */' >> $@.tmp
@if [ -f $@ ] && cmp -s $@.tmp $@; then echo $@ unchanged.; rm -f $@.tmp; else mv -f $@.tmp $@; echo $@ recreated.; fi
$(srcdir)/tests/package.m4: $(srcdir)/configure.in
$(srcdir)/tests/package.m4: $(srcdir)/configure.ac
{ \
echo '# Signature of the current package.'; \
echo 'm4_define([AT_PACKAGE_NAME], [@PACKAGE_NAME@])'; \
@ -594,12 +594,12 @@ vgrind:
@vgrind -t -x -h Index index >/crp/bill/csh/index.t
install-strip: install
-strip ${DESTBIN}/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:
@ -623,25 +623,6 @@ install.man: tcsh.man
# 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
cp ${srcdir}/WishList ${srcdir}/Y2K ${DESTDIR}${prefix}/share/doc/tcsh
perl ${srcdir}/tcsh.man2html ${srcdir}/tcsh.man
cp -rp tcsh.html ${DESTDIR}${prefix}/share/doc/tcsh
-mkdir -p ${DESTDIR}/etc/defaults/etc/profile.d
-mkdir -p ${DESTDIR}/etc/profile.d
-mkdir -p ${DESTDIR}/etc/postinstall
-mkdir -p ${DESTDIR}/etc/preremove
cp -p ${srcdir}/cygwin/csh.cshrc ${DESTDIR}/etc/defaults/etc
cp -p ${srcdir}/cygwin/csh.login ${DESTDIR}/etc/defaults/etc
cp -p ${srcdir}/cygwin/bindkey.tcsh ${DESTDIR}/etc/defaults/etc/profile.d
cp -p ${srcdir}/complete.tcsh ${DESTDIR}/etc/defaults/etc/profile.d
cp -p ${srcdir}/cygwin/postinstall.sh ${DESTDIR}/etc/postinstall/tcsh.sh
cp -p ${srcdir}/cygwin/preremove.sh ${DESTDIR}/etc/preremove/tcsh.sh
clean: clean.catalogs
${RM} -f a.out strings x.c xs.c tcsh$(EXEEXT) tcsh.a _MAKE_LOG gethost
${RM} -f *.${SUF} *.i *.s
@ -748,11 +729,11 @@ ftp: tcsh-${VERSION}.tar.Z tcsh.tahoe-${VERSION}.tar.Z
autoconfigure: $(srcdir)/configure $(srcdir)/config.h.in
$(srcdir)/configure: $(srcdir)/configure.in
$(srcdir)/configure: $(srcdir)/configure.ac
cd $(srcdir) && autoconf
$(srcdir)/config.h.in: $(srcdir)/stamp-h.in
$(srcdir)/stamp-h.in: $(srcdir)/configure.in
$(srcdir)/stamp-h.in: $(srcdir)/configure.ac
cd $(srcdir) && autoheader
@echo timestamp > $(srcdir)/stamp-h.in
@ -787,6 +768,9 @@ ${TWOBJS} ${TWINC}: ${TWH}
# glob.h
glob.${SUF} sh.glob.${SUF}: glob.h
# dotlock.h
dotlock.${SUF}: dotlock.h
# ed.defns.h
EDDINC=tc.bind.${SUF} tc.func.${SUF} tc.os.${SUF}
${EDOBJS} ${EDDINC}: ed.defns.h

17
Makefile.man2html Normal file
View File

@ -0,0 +1,17 @@
#
# Create the HTML version of the manual page
#
CGI=tcsh.html/tcsh.cgi
tcsh.html/top.html: tcsh.man tcsh.man2html
perl tcsh.man2html -i
-rm -f tcsh.html/index.html
chmod -R a+rX tcsh.html
mv ${CGI} ${CGI}.bak
sed -e '1s,^.*$$,#!/usr/bin/perl,' < ${CGI}.bak > ${CGI}
chmod a+rx ${CGI}
rm -f ${CGI}.bak
clean:
-rm -rf tcsh.html

View File

@ -1,4 +1,4 @@
# $tcsh: Makefile.std,v 1.97 2006/03/02 18:46:44 christos Exp $
# $tcsh: Makefile.std,v 1.100 2015/08/24 20:09:04 kim Exp $
# Makefile.std 4.3 6/11/83
#
# C Shell with process control; VM/UNIX VAX Makefile
@ -287,14 +287,14 @@ 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 \
PSSRCS= sh.decls.h glob.c glob.h dotlock.c dotlock.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.file.${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} \
sh.sem.${SUF} sh.set.${SUF} sh.time.${SUF} glob.${SUF} dotlock.${SUF} \
mi.termios.${SUF} ma.setp.${SUF} vms.termcap.${SUF}
TWSRCS= tw.decls.h tw.h tw.help.c tw.init.c tw.parse.c tw.spell.c \
@ -321,7 +321,8 @@ AVSRCS= Fixes MAKEDIFFS MAKESHAR NewThings README FAQ \
WishList config_f.h eight-bit.me glob.3 patchlevel.h \
pathnames.h tcsh.man Ported src.desc Imakefile imake.config \
README.imake complete.tcsh vmsreadme.txt termcap.vms snames.h \
host.defs gethost.c tcsh.man2html configure.in configure config.h.in
host.defs gethost.c tcsh.man2html configure.ac configure config.h.in \
aclocal.m4
VHSRCS=${PVSRCS} ${AVSRCS}
@ -424,7 +425,7 @@ tc.const.h: tc.const.c sh.char.h config.h config_f.h sh.types.h sh.err.h
${CPP} $(INCLUDES) ${DFLAGS} ${EXTRAFLAGS} -D_h_tc_const\
$(srcdir)/tc.const.c | grep 'Char STR' | \
sed -e 's/Char \([a-zA-Z0-9_]*\) *\[ *\].*/extern Char \1[];/' | \
sort >> $@
LC_COLLATE=C sort >> $@
@echo '#endif /* _h_tc_const */' >> $@
csh.prof: ${OBJS} sh.prof.${SUF} mcrt0.${SUF}
@ -584,11 +585,11 @@ ftp: tcsh-${VERSION}.tar.Z tcsh.tahoe-${VERSION}.tar.Z
autoconfigure: $(srcdir)/configure $(srcdir)/config.h.in
$(srcdir)/configure: $(srcdir)/configure.in
$(srcdir)/configure: $(srcdir)/configure.ac
cd $(srcdir) && autoconf
$(srcdir)/config.h.in: $(srcdir)/stamp-h.in
$(srcdir)/stamp-h.in: $(srcdir)/configure.in
$(srcdir)/stamp-h.in: $(srcdir)/configure.ac
cd $(srcdir) && autoheader
@echo timestamp > $(srcdir)/stamp-h.in
@ -620,6 +621,9 @@ ${TWOBJS} ${TWINC}: ${TWH}
# glob.h
glob.${SUF} sh.glob.${SUF}: glob.h
# dotlock.h
dotlock.${SUF}: dotlock.h
# ed.defns.h
EDDINC=tc.bind.${SUF} tc.func.${SUF} tc.os.${SUF}
${EDOBJS} ${EDDINC}: ed.defns.h

View File

@ -1,4 +1,4 @@
# $tcsh: Makefile.vms,v 1.39 2006/03/02 18:46:44 christos Exp $
# $tcsh: Makefile.vms,v 1.40 2014/07/07 20:34:58 christos Exp $
# Makefile.vms 4.3 6/11/83
#
# C Shell with process control; VM/UNIX VAX Makefile
@ -299,7 +299,7 @@ AVSRCS= Fixes MAKEDIFFS MAKESHAR NewThings README FAQ \
WishList config_f.h eight-bit.me glob.3 patchlevel.h \
pathnames.h tcsh.man Ported src.desc Imakefile imake.config \
README.imake complete.tcsh vmsreadme.txt termcap.vms snames.h \
host.defs gethost.c tcsh.man2html configure.in
host.defs gethost.c tcsh.man2html configure.ac aclocal.m4
VHSRCS=${PVSRCS} ${AVSRCS}

2
README
View File

@ -1,4 +1,4 @@
This is tcsh version 6.18.01. Tcsh is a version of the Berkeley
This is tcsh version 6.20.00. 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.

1409
aclocal.m4 vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

590
config.guess vendored
View File

@ -1,14 +1,12 @@
#! /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, 2010
# Free Software Foundation, Inc.
# Copyright 1992-2015 Free Software Foundation, Inc.
timestamp='2009-12-30'
timestamp='2015-03-04'
# 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
# the Free Software Foundation; either version 2 of the License, or
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
@ -17,26 +15,22 @@ timestamp='2009-12-30'
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
# 02110-1301, USA.
# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Originally written by Per Bothner. Please send patches (context
# diff format) to <config-patches@gnu.org> and include a ChangeLog
# entry.
# the same distribution terms that you use for the rest of that
# program. This Exception is an additional permission under section 7
# of the GNU General Public License, version 3 ("GPLv3").
#
# 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.
# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
#
# 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
#
# Please send patches to <config-patches@gnu.org>.
me=`echo "$0" | sed -e 's,.*/,,'`
@ -56,9 +50,7 @@ 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, 2009, 2010 Free
Software Foundation, Inc.
Copyright 1992-2015 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."
@ -140,12 +132,33 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
case "${UNAME_SYSTEM}" in
Linux|GNU|GNU/*)
# If the system lacks a compiler, then just pick glibc.
# We could probably try harder.
LIBC=gnu
eval $set_cc_for_build
cat <<-EOF > $dummy.c
#include <features.h>
#if defined(__UCLIBC__)
LIBC=uclibc
#elif defined(__dietlibc__)
LIBC=dietlibc
#else
LIBC=gnu
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
;;
esac
# Note: order is significant - the case branches are not exclusive.
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
# *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
# switched to ELF, *-*-netbsd* would select the old
# object file format. This provides both forward
@ -155,20 +168,27 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# Note: NetBSD doesn't particularly care about the vendor
# portion of the name. We always set it to "unknown".
sysctl="sysctl -n hw.machine_arch"
UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
/usr/sbin/$sysctl 2>/dev/null || echo unknown)`
UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
/sbin/$sysctl 2>/dev/null || \
/usr/sbin/$sysctl 2>/dev/null || \
echo unknown)`
case "${UNAME_MACHINE_ARCH}" in
armeb) machine=armeb-unknown ;;
arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
sh3eb) machine=sh-unknown ;;
sh5el) machine=sh5le-unknown ;;
earmv*)
arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
machine=${arch}${endian}-unknown
;;
*) machine=${UNAME_MACHINE_ARCH}-unknown ;;
esac
# The Operating System including object format, if it has switched
# to ELF recently, or will in the future.
case "${UNAME_MACHINE_ARCH}" in
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax)
eval $set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ELF__
@ -181,7 +201,14 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
fi
;;
*)
os=netbsd
os=netbsd
;;
esac
# Determine ABI tags.
case "${UNAME_MACHINE_ARCH}" in
earm*)
expr='s/^earmv[0-9]/-eabi/;s/eb$//'
abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
;;
esac
# The OS release
@ -200,7 +227,11 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}"
echo "${machine}-${os}${release}${abi}"
exit ;;
*:Bitrig:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
exit ;;
*:OpenBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
@ -224,7 +255,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
;;
*5.*)
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
;;
esac
# According to Compaq, /usr/sbin/psrinfo has been available on
@ -270,7 +301,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
exit ;;
# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
exitcode=$?
trap '' 0
exit $exitcode ;;
Alpha\ *:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# Should we change UNAME_MACHINE based on the output of uname instead
@ -296,12 +330,12 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
echo s390-ibm-zvmoe
exit ;;
*:OS400:*:*)
echo powerpc-ibm-os400
echo powerpc-ibm-os400
exit ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit ;;
arm:riscos:*:*|arm:RISCOS:*:*)
arm*:riscos:*:*|arm*:RISCOS:*:*)
echo arm-unknown-riscos
exit ;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
@ -395,23 +429,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# MiNT. But MiNT is downward compatible to TOS, so this should
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
exit ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
echo m68k-milan-mint${UNAME_RELEASE}
exit ;;
echo m68k-milan-mint${UNAME_RELEASE}
exit ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
echo m68k-hades-mint${UNAME_RELEASE}
exit ;;
echo m68k-hades-mint${UNAME_RELEASE}
exit ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
echo m68k-unknown-mint${UNAME_RELEASE}
exit ;;
echo m68k-unknown-mint${UNAME_RELEASE}
exit ;;
m68k:machten:*:*)
echo m68k-apple-machten${UNAME_RELEASE}
exit ;;
@ -481,8 +515,8 @@ EOF
echo m88k-motorola-sysv3
exit ;;
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
then
if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
@ -495,7 +529,7 @@ EOF
else
echo i586-dg-dgux${UNAME_RELEASE}
fi
exit ;;
exit ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
echo m88k-dolphin-sysv3
exit ;;
@ -552,15 +586,16 @@ EOF
echo rs6000-ibm-aix3.2
fi
exit ;;
*:AIX:*:[456])
*:AIX:*:[4567])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
else
IBM_ARCH=powerpc
fi
if [ -x /usr/bin/oslevel ] ; then
IBM_REV=`/usr/bin/oslevel`
if [ -x /usr/bin/lslpp ] ; then
IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
else
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
fi
@ -595,52 +630,52 @@ EOF
9000/[678][0-9][0-9])
if [ -x /usr/bin/getconf ]; then
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
case "${sc_cpu_version}" in
523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
532) # CPU_PA_RISC2_0
case "${sc_kernel_bits}" in
32) HP_ARCH="hppa2.0n" ;;
64) HP_ARCH="hppa2.0w" ;;
sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
case "${sc_cpu_version}" in
523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
532) # CPU_PA_RISC2_0
case "${sc_kernel_bits}" in
32) HP_ARCH="hppa2.0n" ;;
64) HP_ARCH="hppa2.0w" ;;
'') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
esac ;;
esac
esac ;;
esac
fi
if [ "${HP_ARCH}" = "" ]; then
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
sed 's/^ //' << EOF >$dummy.c
#define _HPUX_SOURCE
#include <stdlib.h>
#include <unistd.h>
#define _HPUX_SOURCE
#include <stdlib.h>
#include <unistd.h>
int main ()
{
#if defined(_SC_KERNEL_BITS)
long bits = sysconf(_SC_KERNEL_BITS);
#endif
long cpu = sysconf (_SC_CPU_VERSION);
int main ()
{
#if defined(_SC_KERNEL_BITS)
long bits = sysconf(_SC_KERNEL_BITS);
#endif
long cpu = sysconf (_SC_CPU_VERSION);
switch (cpu)
{
case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
case CPU_PA_RISC2_0:
#if defined(_SC_KERNEL_BITS)
switch (bits)
{
case 64: puts ("hppa2.0w"); break;
case 32: puts ("hppa2.0n"); break;
default: puts ("hppa2.0"); break;
} break;
#else /* !defined(_SC_KERNEL_BITS) */
puts ("hppa2.0"); break;
#endif
default: puts ("hppa1.0"); break;
}
exit (0);
}
switch (cpu)
{
case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
case CPU_PA_RISC2_0:
#if defined(_SC_KERNEL_BITS)
switch (bits)
{
case 64: puts ("hppa2.0w"); break;
case 32: puts ("hppa2.0n"); break;
default: puts ("hppa2.0"); break;
} break;
#else /* !defined(_SC_KERNEL_BITS) */
puts ("hppa2.0"); break;
#endif
default: puts ("hppa1.0"); break;
}
exit (0);
}
EOF
(CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
test -z "$HP_ARCH" && HP_ARCH=hppa
@ -731,22 +766,22 @@ EOF
exit ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
echo c1-convex-bsd
exit ;;
exit ;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
exit ;;
exit ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
echo c34-convex-bsd
exit ;;
exit ;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
echo c38-convex-bsd
exit ;;
exit ;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
echo c4-convex-bsd
exit ;;
exit ;;
CRAY*Y-MP:*:*:*)
echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit ;;
@ -770,14 +805,14 @@ EOF
exit ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
5000:UNIX_System_V:4.*:*)
FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
@ -789,30 +824,35 @@ EOF
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
exit ;;
*:FreeBSD:*:*)
case ${UNAME_MACHINE} in
pc98)
echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
UNAME_PROCESSOR=`/usr/bin/uname -p`
case ${UNAME_PROCESSOR} in
amd64)
echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
*)
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
esac
exit ;;
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
exit ;;
*:MINGW64*:*)
echo ${UNAME_MACHINE}-pc-mingw64
exit ;;
*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
*:MSYS*:*)
echo ${UNAME_MACHINE}-pc-msys
exit ;;
i*:windows32*:*)
# uname -m includes "-pc" on this system.
echo ${UNAME_MACHINE}-mingw32
# uname -m includes "-pc" on this system.
echo ${UNAME_MACHINE}-mingw32
exit ;;
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
exit ;;
*:Interix*:*)
case ${UNAME_MACHINE} in
case ${UNAME_MACHINE} in
x86)
echo i586-pc-interix${UNAME_RELEASE}
exit ;;
@ -849,15 +889,22 @@ EOF
exit ;;
*:GNU:*:*)
# the GNU system
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
exit ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
exit ;;
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit ;;
aarch64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
aarch64_be:Linux:*:*)
UNAME_MACHINE=aarch64_be
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
EV5) UNAME_MACHINE=alphaev5 ;;
@ -867,52 +914,59 @@ EOF
EV6) UNAME_MACHINE=alphaev6 ;;
EV67) UNAME_MACHINE=alphaev67 ;;
EV68*) UNAME_MACHINE=alphaev68 ;;
esac
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}
if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
arc:Linux:*:* | arceb:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
arm*:Linux:*:*)
eval $set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_EABI__
then
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
else
echo ${UNAME_MACHINE}-unknown-linux-gnueabi
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
else
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
fi
fi
exit ;;
avr32*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
cris:Linux:*:*)
echo cris-axis-linux-gnu
echo ${UNAME_MACHINE}-axis-linux-${LIBC}
exit ;;
crisv32:Linux:*:*)
echo crisv32-axis-linux-gnu
echo ${UNAME_MACHINE}-axis-linux-${LIBC}
exit ;;
e2k:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
frv:Linux:*:*)
echo frv-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
hexagon:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
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}"
echo ${UNAME_MACHINE}-pc-linux-${LIBC}
exit ;;
ia64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
m32r*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
m68*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
mips:Linux:*:* | mips64:Linux:*:*)
eval $set_cc_for_build
@ -931,51 +985,63 @@ EOF
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
;;
or32:Linux:*:*)
echo or32-unknown-linux-gnu
openrisc*:Linux:*:*)
echo or1k-unknown-linux-${LIBC}
exit ;;
or32:Linux:*:* | or1k*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
padre:Linux:*:*)
echo sparc-unknown-linux-gnu
echo sparc-unknown-linux-${LIBC}
exit ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
echo hppa64-unknown-linux-gnu
echo hppa64-unknown-linux-${LIBC}
exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
PA7*) echo hppa1.1-unknown-linux-gnu ;;
PA8*) echo hppa2.0-unknown-linux-gnu ;;
*) echo hppa-unknown-linux-gnu ;;
PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
*) echo hppa-unknown-linux-${LIBC} ;;
esac
exit ;;
ppc64:Linux:*:*)
echo powerpc64-unknown-linux-gnu
echo powerpc64-unknown-linux-${LIBC}
exit ;;
ppc:Linux:*:*)
echo powerpc-unknown-linux-gnu
echo powerpc-unknown-linux-${LIBC}
exit ;;
ppc64le:Linux:*:*)
echo powerpc64le-unknown-linux-${LIBC}
exit ;;
ppcle:Linux:*:*)
echo powerpcle-unknown-linux-${LIBC}
exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
echo ${UNAME_MACHINE}-ibm-linux
echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
exit ;;
sh64*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
sh*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
tile*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
vax:Linux:*:*)
echo ${UNAME_MACHINE}-dec-linux-gnu
echo ${UNAME_MACHINE}-dec-linux-${LIBC}
exit ;;
x86_64:Linux:*:*)
echo x86_64-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
xtensa*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@ -984,11 +1050,11 @@ EOF
echo i386-sequent-sysv4
exit ;;
i*86:UNIX_SV:4.2MP:2.*)
# Unixware is an offshoot of SVR4, but it has its own version
# number series starting with 2...
# I am not positive that other SVR4 systems won't match this,
# Unixware is an offshoot of SVR4, but it has its own version
# number series starting with 2...
# I am not positive that other SVR4 systems won't match this,
# I just have to hope. -- rms.
# Use sysv4.2uw... so that sysv4* matches it.
# Use sysv4.2uw... so that sysv4* matches it.
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
exit ;;
i*86:OS/2:*:*)
@ -1020,7 +1086,7 @@ EOF
fi
exit ;;
i*86:*:5:[678]*)
# UnixWare 7.x, OpenUNIX and OpenServer 6.
# UnixWare 7.x, OpenUNIX and OpenServer 6.
case `/bin/uname -X | grep "^Machine"` in
*486*) UNAME_MACHINE=i486 ;;
*Pentium) UNAME_MACHINE=i586 ;;
@ -1048,13 +1114,13 @@ EOF
exit ;;
pc:*:*:*)
# Left here for compatibility:
# uname -m prints for DJGPP always 'pc', but it prints nothing about
# the processor, so we play safe by assuming i586.
# uname -m prints for DJGPP always 'pc', but it prints nothing about
# the processor, so we play safe by assuming i586.
# Note: whatever this is, it MUST be the same as what config.sub
# prints for the "djgpp" host, or else GDB configury will decide that
# this is a cross-build.
echo i586-pc-msdosdjgpp
exit ;;
exit ;;
Intel:Mach:3*:*)
echo i386-pc-mach3
exit ;;
@ -1089,8 +1155,8 @@ EOF
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
&& { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4; exit; } ;;
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4; exit; } ;;
NCR*:*:4.2:* | MPRAS*:*:4.2:*)
OS_REL='.3'
test -r /etc/.relid \
@ -1133,10 +1199,10 @@ EOF
echo ns32k-sni-sysv
fi
exit ;;
PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
# says <Richard.M.Bartel@ccMail.Census.GOV>
echo i586-unisys-sysv4
exit ;;
PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
# says <Richard.M.Bartel@ccMail.Census.GOV>
echo i586-unisys-sysv4
exit ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
@ -1162,11 +1228,11 @@ EOF
exit ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if [ -d /usr/nec ]; then
echo mips-nec-sysv${UNAME_RELEASE}
echo mips-nec-sysv${UNAME_RELEASE}
else
echo mips-unknown-sysv${UNAME_RELEASE}
echo mips-unknown-sysv${UNAME_RELEASE}
fi
exit ;;
exit ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
echo powerpc-be-beos
exit ;;
@ -1179,6 +1245,9 @@ EOF
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
echo i586-pc-haiku
exit ;;
x86_64:Haiku:*:*)
echo x86_64-unknown-haiku
exit ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
exit ;;
@ -1205,19 +1274,31 @@ EOF
exit ;;
*: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
eval $set_cc_for_build
if test "$UNAME_PROCESSOR" = unknown ; then
UNAME_PROCESSOR=powerpc
fi
if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
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
case $UNAME_PROCESSOR in
i386) UNAME_PROCESSOR=x86_64 ;;
powerpc) UNAME_PROCESSOR=powerpc64 ;;
esac
fi
fi
elif test "$UNAME_PROCESSOR" = i386 ; then
# Avoid executing cc on OS X 10.9, as it ships with a stub
# that puts up a graphical alert prompting to install
# developer tools. Any system running Mac OS X 10.7 or
# later (Darwin 11 and later) is required to have a 64-bit
# processor. This is not true of the ARM version of Darwin
# that Apple uses in portable devices.
UNAME_PROCESSOR=x86_64
fi
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
@ -1231,7 +1312,10 @@ EOF
*:QNX:*:4*)
echo i386-pc-qnx
exit ;;
NSE-?:NONSTOP_KERNEL:*:*)
NEO-?:NONSTOP_KERNEL:*:*)
echo neo-tandem-nsk${UNAME_RELEASE}
exit ;;
NSE-*:NONSTOP_KERNEL:*:*)
echo nse-tandem-nsk${UNAME_RELEASE}
exit ;;
NSR-?:NONSTOP_KERNEL:*:*)
@ -1276,13 +1360,13 @@ EOF
echo pdp10-unknown-its
exit ;;
SEI:*:*:SEIUX)
echo mips-sei-seiux${UNAME_RELEASE}
echo mips-sei-seiux${UNAME_RELEASE}
exit ;;
*:DragonFly:*:*)
echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
exit ;;
*:*VMS:*:*)
UNAME_MACHINE=`(uname -p) 2>/dev/null`
UNAME_MACHINE=`(uname -p) 2>/dev/null`
case "${UNAME_MACHINE}" in
A*) echo alpha-dec-vms ; exit ;;
I*) echo ia64-dec-vms ; exit ;;
@ -1300,159 +1384,11 @@ EOF
i*86:AROS:*:*)
echo ${UNAME_MACHINE}-pc-aros
exit ;;
x86_64:VMkernel:*:*)
echo ${UNAME_MACHINE}-unknown-esx
exit ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
eval $set_cc_for_build
cat >$dummy.c <<EOF
#ifdef _SEQUENT_
# include <sys/types.h>
# include <sys/utsname.h>
#endif
main ()
{
#if defined (sony)
#if defined (MIPSEB)
/* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
I don't know.... */
printf ("mips-sony-bsd\n"); exit (0);
#else
#include <sys/param.h>
printf ("m68k-sony-newsos%s\n",
#ifdef NEWSOS4
"4"
#else
""
#endif
); exit (0);
#endif
#endif
#if defined (__arm) && defined (__acorn) && defined (__unix)
printf ("arm-acorn-riscix\n"); exit (0);
#endif
#if defined (hp300) && !defined (hpux)
printf ("m68k-hp-bsd\n"); exit (0);
#endif
#if defined (NeXT)
#if !defined (__ARCHITECTURE__)
#define __ARCHITECTURE__ "m68k"
#endif
int version;
version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
if (version < 4)
printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
else
printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
exit (0);
#endif
#if defined (MULTIMAX) || defined (n16)
#if defined (UMAXV)
printf ("ns32k-encore-sysv\n"); exit (0);
#else
#if defined (CMU)
printf ("ns32k-encore-mach\n"); exit (0);
#else
printf ("ns32k-encore-bsd\n"); exit (0);
#endif
#endif
#endif
#if defined (__386BSD__)
printf ("i386-pc-bsd\n"); exit (0);
#endif
#if defined (sequent)
#if defined (i386)
printf ("i386-sequent-dynix\n"); exit (0);
#endif
#if defined (ns32000)
printf ("ns32k-sequent-dynix\n"); exit (0);
#endif
#endif
#if defined (_SEQUENT_)
struct utsname un;
uname(&un);
if (strncmp(un.version, "V2", 2) == 0) {
printf ("i386-sequent-ptx2\n"); exit (0);
}
if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
printf ("i386-sequent-ptx1\n"); exit (0);
}
printf ("i386-sequent-ptx\n"); exit (0);
#endif
#if defined (vax)
# if !defined (ultrix)
# include <sys/param.h>
# if defined (BSD)
# if BSD == 43
printf ("vax-dec-bsd4.3\n"); exit (0);
# else
# if BSD == 199006
printf ("vax-dec-bsd4.3reno\n"); exit (0);
# else
printf ("vax-dec-bsd\n"); exit (0);
# endif
# endif
# else
printf ("vax-dec-bsd\n"); exit (0);
# endif
# else
printf ("vax-dec-ultrix\n"); exit (0);
# endif
#endif
#if defined (alliant) && defined (i860)
printf ("i860-alliant-bsd\n"); exit (0);
#endif
exit (1);
}
EOF
$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
{ echo "$SYSTEM_NAME"; exit; }
# Apollos put the system type in the environment.
test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
# Convex versions that predate uname can use getsysinfo(1)
if [ -x /usr/convex/getsysinfo ]
then
case `getsysinfo -f cpu_type` in
c1*)
echo c1-convex-bsd
exit ;;
c2*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
exit ;;
c34*)
echo c34-convex-bsd
exit ;;
c38*)
echo c38-convex-bsd
exit ;;
c4*)
echo c4-convex-bsd
exit ;;
esac
fi
cat >&2 <<EOF
$0: unable to guess system type

View File

@ -1,4 +1,4 @@
/* config.h.in. Generated from configure.in by autoheader. */
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to the type of elements in the array set by `getgroups'. Usually
this is either `int' or `gid_t'. */
@ -69,6 +69,9 @@
/* Define to 1 if you have the `mallinfo' function. */
#undef HAVE_MALLINFO
/* Define to 1 if you have the `mblen' function. */
#undef HAVE_MBLEN
/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
#undef HAVE_MBRTOWC

280
config.sub vendored
View File

@ -1,38 +1,31 @@
#! /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, 2010
# Free Software Foundation, Inc.
# Copyright 1992-2013 Free Software Foundation, Inc.
timestamp='2009-12-31'
timestamp='2013-04-24'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
# can handle that machine. It does not imply ALL GNU software can.
#
# 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
# the Free Software Foundation; either version 2 of the License, or
# 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
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
# 02110-1301, USA.
# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# the same distribution terms that you use for the rest of that
# program. This Exception is an additional permission under section 7
# of the GNU General Public License, version 3 ("GPLv3").
# Please send patches to <config-patches@gnu.org>. Submit a context
# diff and a properly formatted GNU ChangeLog entry.
# Please send patches with a ChangeLog entry to config-patches@gnu.org.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
@ -75,9 +68,7 @@ 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, 2009, 2010 Free
Software Foundation, Inc.
Copyright 1992-2013 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."
@ -124,13 +115,18 @@ esac
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
knetbsd*-gnu* | netbsd*-gnu* | \
kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
android-linux)
os=-linux-android
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
;;
*)
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
if [ $basic_machine != $1 ]
@ -153,12 +149,12 @@ 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 | -microblaze)
-apple | -axis | -knuth | -cray | -microblaze*)
os=
basic_machine=$1
;;
-bluegene*)
os=-cnk
-bluegene*)
os=-cnk
;;
-sim | -cisco | -oki | -wec | -winbond)
os=
@ -174,10 +170,10 @@ case $os in
os=-chorusos
basic_machine=$1
;;
-chorusrdb)
os=-chorusrdb
-chorusrdb)
os=-chorusrdb
basic_machine=$1
;;
;;
-hiux*)
os=-hiuxwe2
;;
@ -222,6 +218,12 @@ case $os in
-isc*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-lynx*178)
os=-lynxos178
;;
-lynx*5)
os=-lynxos5
;;
-lynx*)
os=-lynxos
;;
@ -246,20 +248,27 @@ case $basic_machine in
# Some are omitted here because they have special meanings below.
1750a | 580 \
| a29k \
| aarch64 | aarch64_be \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
| arc | arceb \
| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
| avr | avr32 \
| be32 | be64 \
| bfin \
| c4x | clipper \
| d10v | d30v | dlx | dsp16xx \
| epiphany \
| fido | fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| hexagon \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
| le32 | le64 \
| lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
| maxq | mb | microblaze | mcore | mep | metag \
| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
@ -277,34 +286,45 @@ case $basic_machine in
| mipsisa64r2 | mipsisa64r2el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
| mipsr5900 | mipsr5900el \
| mipstx39 | mipstx39el \
| mn10200 | mn10300 \
| moxie \
| mt \
| msp430 \
| nios | nios2 \
| nds32 | nds32le | nds32be \
| nios | nios2 | nios2eb | nios2el \
| ns16k | ns32k \
| or32 \
| open8 \
| or1k | or32 \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
| powerpc | powerpc64 | powerpc64le | powerpcle \
| pyramid \
| rx \
| rl78 | 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 \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
| spu | strongarm \
| tahoe | thumb | tic4x | tic80 | tron \
| spu \
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
| ubicom32 \
| v850 | v850e \
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
| we32k \
| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
| x86 | xc16x | xstormy16 | xtensa \
| z8k | z80)
basic_machine=$basic_machine-unknown
;;
m6811 | m68hc11 | m6812 | m68hc12 | picochip)
# Motorola 68HC11/12.
c54x)
basic_machine=tic54x-unknown
;;
c55x)
basic_machine=tic55x-unknown
;;
c6x)
basic_machine=tic6x-unknown
;;
m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
basic_machine=$basic_machine-unknown
os=-none
;;
@ -314,6 +334,21 @@ case $basic_machine in
basic_machine=mt-unknown
;;
strongarm | thumb | xscale)
basic_machine=arm-unknown
;;
xgate)
basic_machine=$basic_machine-unknown
os=-none
;;
xscaleeb)
basic_machine=armeb-unknown
;;
xscaleel)
basic_machine=armel-unknown
;;
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users.
@ -328,25 +363,30 @@ case $basic_machine in
# Recognize the basic CPU types with company name.
580-* \
| a29k-* \
| aarch64-* | aarch64_be-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \
| be32-* | be64-* \
| bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* \
| clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| hexagon-* \
| i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \
| le32-* | le64-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
| m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
| microblaze-* | microblazeel-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
@ -364,29 +404,34 @@ case $basic_machine in
| mipsisa64r2-* | mipsisa64r2el-* \
| mipsisa64sb1-* | mipsisa64sb1el-* \
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
| mipsr5900-* | mipsr5900el-* \
| mipstx39-* | mipstx39el-* \
| mmix-* \
| mt-* \
| msp430-* \
| nios-* | nios2-* \
| nds32-* | nds32le-* | nds32be-* \
| nios-* | nios2-* | nios2eb-* | nios2el-* \
| none-* | np1-* | ns16k-* | ns32k-* \
| open8-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
| pyramid-* \
| romp-* | rs6000-* | rx-* \
| rl78-* | 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-* \
| sparclite-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
| tahoe-* | thumb-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
| tahoe-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
| tile*-* \
| tron-* \
| ubicom32-* \
| v850-* | v850e-* | vax-* \
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
| vax-* \
| we32k-* \
| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
| x86-* | x86_64-* | xc16x-* | xps100-* \
| xstormy16-* | xtensa*-* \
| ymp-* \
| z8k-* | z80-*)
@ -411,7 +456,7 @@ case $basic_machine in
basic_machine=a29k-amd
os=-udi
;;
abacus)
abacus)
basic_machine=abacus-unknown
;;
adobe68k)
@ -481,11 +526,20 @@ case $basic_machine in
basic_machine=powerpc-ibm
os=-cnk
;;
c54x-*)
basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
c55x-*)
basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
c6x-*)
basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
c90)
basic_machine=c90-cray
os=-unicos
;;
cegcc)
cegcc)
basic_machine=arm-unknown
os=-cegcc
;;
@ -517,7 +571,7 @@ case $basic_machine in
basic_machine=craynv-cray
os=-unicosmp
;;
cr16)
cr16 | cr16-*)
basic_machine=cr16-unknown
os=-elf
;;
@ -675,7 +729,6 @@ case $basic_machine in
i370-ibm* | ibm*)
basic_machine=i370-ibm
;;
# I'm not sure what "Sysv32" means. Should this be sysv3.2?
i*86v32)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv32
@ -733,9 +786,13 @@ case $basic_machine in
basic_machine=ns32k-utek
os=-sysv
;;
microblaze)
microblaze*)
basic_machine=microblaze-xilinx
;;
mingw64)
basic_machine=x86_64-pc
os=-mingw64
;;
mingw32)
basic_machine=i386-pc
os=-mingw32
@ -772,10 +829,18 @@ case $basic_machine in
ms1-*)
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
;;
msys)
basic_machine=i386-pc
os=-msys
;;
mvs)
basic_machine=i370-ibm
os=-mvs
;;
nacl)
basic_machine=le32-unknown
os=-nacl
;;
ncr3000)
basic_machine=i486-ncr
os=-sysv4
@ -840,6 +905,12 @@ case $basic_machine in
np1)
basic_machine=np1-gould
;;
neo-tandem)
basic_machine=neo-tandem
;;
nse-tandem)
basic_machine=nse-tandem
;;
nsr-tandem)
basic_machine=nsr-tandem
;;
@ -922,9 +993,10 @@ case $basic_machine in
;;
power) basic_machine=power-ibm
;;
ppc) basic_machine=powerpc-unknown
ppc | ppcbe) basic_machine=powerpc-unknown
;;
ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
ppc-* | ppcbe-*)
basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppcle | powerpclittle | ppc-le | powerpc-little)
basic_machine=powerpcle-unknown
@ -949,7 +1021,11 @@ case $basic_machine in
basic_machine=i586-unknown
os=-pw32
;;
rdos)
rdos | rdos64)
basic_machine=x86_64-pc
os=-rdos
;;
rdos32)
basic_machine=i386-pc
os=-rdos
;;
@ -1018,6 +1094,9 @@ case $basic_machine in
basic_machine=i860-stratus
os=-sysv4
;;
strongarm-* | thumb-*)
basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
sun2)
basic_machine=m68000-sun
;;
@ -1074,20 +1153,8 @@ case $basic_machine in
basic_machine=t90-cray
os=-unicos
;;
tic54x | c54x*)
basic_machine=tic54x-unknown
os=-coff
;;
tic55x | c55x*)
basic_machine=tic55x-unknown
os=-coff
;;
tic6x | c6x*)
basic_machine=tic6x-unknown
os=-coff
;;
tile*)
basic_machine=tile-unknown
basic_machine=$basic_machine-unknown
os=-linux-gnu
;;
tx39)
@ -1157,6 +1224,9 @@ case $basic_machine in
xps | xps100)
basic_machine=xps100-honeywell
;;
xscale-* | xscalee[bl]-*)
basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
;;
ymp)
basic_machine=ymp-cray
os=-unicos
@ -1254,11 +1324,11 @@ esac
if [ x"$os" != x"" ]
then
case $os in
# First match some system type aliases
# that might get confused with valid system types.
# 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
-auroraux)
os=-auroraux
;;
-solaris1 | -solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'`
@ -1282,20 +1352,21 @@ case $os in
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
| -sym* | -kopensolaris* \
| -sym* | -kopensolaris* | -plan9* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* | -aros* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
| -openbsd* | -solidbsd* \
| -bitrig* | -openbsd* | -solidbsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* | -cegcc* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
| -linux-newlib* | -linux-musl* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
@ -1342,7 +1413,7 @@ case $os in
-opened*)
os=-openedition
;;
-os400*)
-os400*)
os=-os400
;;
-wince*)
@ -1391,7 +1462,7 @@ case $os in
-sinix*)
os=-sysv4
;;
-tpf*)
-tpf*)
os=-tpf
;;
-triton*)
@ -1427,17 +1498,14 @@ case $os in
-aros*)
os=-aros
;;
-kaos*)
os=-kaos
;;
-zvmoe)
os=-zvmoe
;;
-dicos*)
os=-dicos
;;
-nacl*)
;;
-nacl*)
;;
-none)
;;
*)
@ -1460,10 +1528,10 @@ else
# system, and we'll never get to this point.
case $basic_machine in
score-*)
score-*)
os=-elf
;;
spu-*)
spu-*)
os=-elf
;;
*-acorn)
@ -1475,8 +1543,20 @@ case $basic_machine in
arm*-semi)
os=-aout
;;
c4x-* | tic4x-*)
os=-coff
c4x-* | tic4x-*)
os=-coff
;;
hexagon-*)
os=-elf
;;
tic54x-*)
os=-coff
;;
tic55x-*)
os=-coff
;;
tic6x-*)
os=-coff
;;
# This must come before the *-dec entry.
pdp10-*)
@ -1496,14 +1576,11 @@ case $basic_machine in
;;
m68000-sun)
os=-sunos3
# This also exists in the configure program, but was not the
# default.
# os=-sunos4
;;
m68*-cisco)
os=-aout
;;
mep-*)
mep-*)
os=-elf
;;
mips*-cisco)
@ -1512,6 +1589,9 @@ case $basic_machine in
mips*-*)
os=-elf
;;
or1k-*)
os=-elf
;;
or32-*)
os=-coff
;;
@ -1530,7 +1610,7 @@ case $basic_machine in
*-ibm)
os=-aix
;;
*-knuth)
*-knuth)
os=-mmixware
;;
*-wec)

View File

@ -85,8 +85,7 @@
* also define _POSIX_C_SOURCE, which throws our code off.
*/
#define _BSD_SOURCE
#define _SVID_SOURCE
#define _DEFAULT_SOURCE
#define _POSIX_SOURCE
#define _XOPEN_SOURCE 500
#define _GNU_SOURCE
@ -101,7 +100,7 @@
/****************** local defines *********************/
#ifndef _PATH_TCSHELL
#define _PATH_TCSHELL "/system/bin/tcsh"
#define _PATH_TCSHELL "/system/xbin/tcsh"
#endif
#define ECHO_STYLE BOTH_ECHO

View File

@ -98,6 +98,7 @@
#elif defined(__APPLE__)
# define SYSMALLOC
# define BSD_STYLE_COLORLS
#endif
#endif /* _h_config */

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/config_f.h,v 3.47 2011/02/05 20:34:55 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/config_f.h,v 3.52 2016/04/16 15:44:18 christos Exp $ */
/*
* config_f.h -- configure various defines for tcsh
*
@ -38,6 +38,10 @@
#ifndef _h_config_f
#define _h_config_f
#ifdef HAVE_FEATURES_H
#include <features.h> /* for __GLIBC__ */
#endif
/*
* SHORT_STRINGS Use at least 16 bit characters instead of 8 bit chars
* This fixes up quoting problems and eases implementation
@ -50,7 +54,7 @@
* WIDE_STRINGS Represent strings using wide characters
* Allows proper function in multibyte encodings like UTF-8
*/
#if defined (SHORT_STRINGS) && defined (NLS) && !defined (WINNT_NATIVE) && !defined(_OSD_POSIX)
#if defined (SHORT_STRINGS) && defined (NLS) && !defined (WINNT_NATIVE) && !defined(_OSD_POSIX) && SIZEOF_WCHAR_T > 1
# define WIDE_STRINGS
# if SIZEOF_WCHAR_T < 4
# define UTF16_STRINGS
@ -135,7 +139,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__) || defined (__CYGWIN__) || defined(__GLIBC__)
#if defined(__MACHTEN__) || defined(PURIFY) || defined(MALLOC_TRACE) || defined(_OSD_POSIX) || defined(__MVS__) || defined (__CYGWIN__) || defined(__GLIBC__) || defined(__OpenBSD__) || defined(__APPLE__) || defined (__ANDROID__)
# define SYSMALLOC
#else
# undef SYSMALLOC

418
configure vendored
View File

@ -1,13 +1,11 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.68 for tcsh 6.18.01.
# Generated by GNU Autoconf 2.69 for tcsh 6.20.00.
#
# Report bugs to <http://bugs.gw.com/>.
#
#
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
# Foundation, Inc.
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
#
#
# This configure script is free software; the Free Software Foundation
@ -136,6 +134,31 @@ export LANGUAGE
# CDPATH.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
# Use a proper internal environment variable to ensure we don't fall
# into an infinite loop, continuously re-executing ourselves.
if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
_as_can_reexec=no; export _as_can_reexec;
# 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
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+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
as_fn_exit 255
fi
# We don't want this to propagate to other subprocesses.
{ _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
@ -169,7 +192,8 @@ 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"
test x\$exitcode = x0 || exit 1
test -x / || 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'\" &&
@ -214,21 +238,25 @@ IFS=$as_save_IFS
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+"$@"}
export CONFIG_SHELL
# 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
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+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
exit 255
fi
if test x$as_have_required = xno; then :
@ -331,6 +359,14 @@ $as_echo X"$as_dir" |
} # as_fn_mkdir_p
# as_fn_executable_p FILE
# -----------------------
# Test if FILE is an executable regular file.
as_fn_executable_p ()
{
test -f "$1" && test -x "$1"
} # as_fn_executable_p
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
@ -452,6 +488,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
chmod +x "$as_me.lineno" ||
{ $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
# If we had to re-execute with $CONFIG_SHELL, we're ensured to have
# already done that, so ensure we don't try to do so again and fall
# in an infinite loop. This has already happened in practice.
_as_can_reexec=no; export _as_can_reexec
# 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).
@ -486,16 +526,16 @@ if (echo >conf$$.file) 2>/dev/null; then
# ... 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'.
# In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
as_ln_s='cp -p'
as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
as_ln_s='cp -p'
as_ln_s='cp -pR'
fi
else
as_ln_s='cp -p'
as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@ -507,28 +547,8 @@ else
as_mkdir_p=false
fi
if test -x / >/dev/null 2>&1; then
as_test_x='test -x'
else
if ls -dL / >/dev/null 2>&1; then
as_ls_L_option=L
else
as_ls_L_option=
fi
as_test_x='
eval sh -c '\''
if test -d "$1"; then
test -d "$1/.";
else
case $1 in #(
-*)set "./$1";;
esac;
case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
???[sx]*):;;*)false;;esac;fi
'\'' sh
'
fi
as_executable_p=$as_test_x
as_test_x='test -x'
as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@ -560,8 +580,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='tcsh'
PACKAGE_TARNAME='tcsh'
PACKAGE_VERSION='6.18.01'
PACKAGE_STRING='tcsh 6.18.01'
PACKAGE_VERSION='6.20.00'
PACKAGE_STRING='tcsh 6.20.00'
PACKAGE_BUGREPORT='http://bugs.gw.com/'
PACKAGE_URL=''
@ -1145,8 +1165,6 @@ target=$target_alias
if test "x$host_alias" != x; then
if test "x$build_alias" = x; then
cross_compiling=maybe
$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
@ -1232,7 +1250,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.18.01 to adapt to many kinds of systems.
\`configure' configures tcsh 6.20.00 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1297,7 +1315,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of tcsh 6.18.01:";;
short | recursive ) echo "Configuration of tcsh 6.20.00:";;
esac
cat <<\_ACEOF
@ -1312,7 +1330,7 @@ Optional Features:
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-gnu-ld assume the C compiler uses GNU ld default=no
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
--with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
--without-libiconv-prefix don't search for libiconv in includedir and libdir
--with-hesiod=PREFIX Use Hesiod lookup for ~ expansion
@ -1393,10 +1411,10 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
tcsh configure 6.18.01
generated by GNU Autoconf 2.68
tcsh configure 6.20.00
generated by GNU Autoconf 2.69
Copyright (C) 2010 Free Software Foundation, Inc.
Copyright (C) 2012 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@ -1509,7 +1527,7 @@ $as_echo "$ac_try_echo"; } >&5
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
$as_test_x conftest$ac_exeext
test -x conftest$ac_exeext
}; then :
ac_retval=0
else
@ -1709,7 +1727,8 @@ int
main ()
{
static int test_array [1 - 2 * !(($2) >= 0)];
test_array [0] = 0
test_array [0] = 0;
return test_array [0];
;
return 0;
@ -1725,7 +1744,8 @@ int
main ()
{
static int test_array [1 - 2 * !(($2) <= $ac_mid)];
test_array [0] = 0
test_array [0] = 0;
return test_array [0];
;
return 0;
@ -1751,7 +1771,8 @@ int
main ()
{
static int test_array [1 - 2 * !(($2) < 0)];
test_array [0] = 0
test_array [0] = 0;
return test_array [0];
;
return 0;
@ -1767,7 +1788,8 @@ int
main ()
{
static int test_array [1 - 2 * !(($2) >= $ac_mid)];
test_array [0] = 0
test_array [0] = 0;
return test_array [0];
;
return 0;
@ -1801,7 +1823,8 @@ int
main ()
{
static int test_array [1 - 2 * !(($2) <= $ac_mid)];
test_array [0] = 0
test_array [0] = 0;
return test_array [0];
;
return 0;
@ -1948,7 +1971,8 @@ int
main ()
{
static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)];
test_array [0] = 0
test_array [0] = 0;
return test_array [0];
;
return 0;
@ -2150,8 +2174,8 @@ 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.18.01, which was
generated by GNU Autoconf 2.68. Invocation command line was
It was created by tcsh $as_me 6.20.00, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@ -2571,7 +2595,7 @@ case $as_dir/ in #((
# 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 as_fn_executable_p "$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.
@ -2781,6 +2805,11 @@ case "${host}" in
tcsh_config_file=sysV88
;;
## Minix systems
*-*-minix*)
tcsh_config_file=minix
;;
## NetBSD systems
*-*-netbsd*)
tcsh_config_file=bsd4.4
@ -2801,6 +2830,11 @@ case "${host}" in
tcsh_config_file=bsd4.4
;;
## MirBSD systems
*-*-mirbsd*)
tcsh_config_file=bsd4.4
;;
## OpenBSD systems
*-*-openbsd*)
tcsh_config_file=bsd4.4
@ -2975,7 +3009,7 @@ 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
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@ -3015,7 +3049,7 @@ 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
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@ -3068,7 +3102,7 @@ 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
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@ -3109,7 +3143,7 @@ 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
if as_fn_executable_p "$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
@ -3167,7 +3201,7 @@ 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
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@ -3211,7 +3245,7 @@ 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
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@ -3657,8 +3691,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdarg.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
struct stat;
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
struct buf { int x; };
FILE * (*rcsopen) (struct buf *, struct stat *, int);
@ -3898,7 +3931,7 @@ do
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
as_fn_executable_p "$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
@ -3964,7 +3997,7 @@ do
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
as_fn_executable_p "$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
@ -4073,7 +4106,7 @@ 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
if as_fn_executable_p "$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
@ -4108,6 +4141,13 @@ if test "x$GCC" != xyes ; then
CFLAGS="$CFLAGS $NON_GNU_CFLAGS"
fi
case "${host}" in
*-*-android*)
CFLAGS="${CFLAGS} -fPIE"
LDFLAGS="${LDFLAGS} -pie"
;;
esac
{ $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 :
@ -4274,6 +4314,10 @@ ac_res=$ac_cv_search_tgetent
if test "$ac_res" != no; then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
else
as_fn_error $? "unable to find the tgetent() function" "$LINENO" 5
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
@ -4461,6 +4505,7 @@ fi
prefix="$acl_save_prefix"
# Check whether --with-gnu-ld was given.
if test "${with_gnu_ld+set}" = set; then :
withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
@ -4471,21 +4516,21 @@ fi
# Prepare PATH_SEPARATOR.
# 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=';'
else
PATH_SEPARATOR=:
fi
rm -f conf$$.sh
# Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
# contains only /bin. Note that ksh looks also at the FPATH variable,
# so we have to set that as well for the test.
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
ac_prog=ld
if test "$GCC" = yes; then
# Check if gcc -print-prog-name=ld gives a path.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5
$as_echo_n "checking for ld used by GCC... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
$as_echo_n "checking for ld used by $CC... " >&6; }
case $host in
*-*-mingw*)
# gcc leaves a trailing carriage return which upsets mingw
@ -4495,11 +4540,11 @@ $as_echo_n "checking for ld used by GCC... " >&6; }
esac
case $ac_prog in
# Accept absolute paths.
[\\/]* | [A-Za-z]:[\\/]*)
[\\/]* | ?:[\\/]*)
re_direlt='/[^/][^/]*/\.\./'
# 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
# Canonicalize the pathname 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%/%"`
done
test -z "$LD" && LD="$ac_prog"
@ -4524,23 +4569,26 @@ 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-:}"
acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
for ac_dir in $PATH; do
IFS="$acl_save_ifs"
test -z "$ac_dir" && ac_dir=.
if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
acl_cv_path_LD="$ac_dir/$ac_prog"
# Check to see if the program is GNU ld. I'd rather use --version,
# but apparently some GNU ld's only accept -v.
# but apparently some variants of GNU ld only accept -v.
# Break only if it was the GNU/non-GNU ld that we prefer.
case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
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
IFS="$ac_save_ifs"
IFS="$acl_save_ifs"
else
acl_cv_path_LD="$LD" # Let the user override the test with a path.
fi
@ -4560,12 +4608,14 @@ $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.
# I'd rather use --version here, but apparently some GNU lds only accept -v.
case `$LD -v 2>&1 </dev/null` in
*GNU* | *'with BFD'*)
acl_cv_prog_gnu_ld=yes ;;
acl_cv_prog_gnu_ld=yes
;;
*)
acl_cv_prog_gnu_ld=no ;;
acl_cv_prog_gnu_ld=no
;;
esac
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5
@ -4748,7 +4798,7 @@ fi
done
if test -z "$already_handled"; then
names_already_handled="$names_already_handled $name"
uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'`
eval value=\"\$HAVE_LIB$uppername\"
if test -n "$value"; then
if test "$value" = yes; then
@ -5176,14 +5226,16 @@ else
am_cv_lib_iconv=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdlib.h>
#include <iconv.h>
int
main ()
{
iconv_t cd = iconv_open("","");
iconv(cd,NULL,NULL,NULL,NULL);
iconv_close(cd);
iconv(cd,NULL,NULL,NULL,NULL);
iconv_close(cd);
;
return 0;
}
@ -5198,14 +5250,16 @@ rm -f core conftest.err conftest.$ac_objext \
LIBS="$LIBS $LIBICONV"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdlib.h>
#include <iconv.h>
int
main ()
{
iconv_t cd = iconv_open("","");
iconv(cd,NULL,NULL,NULL,NULL);
iconv_close(cd);
iconv(cd,NULL,NULL,NULL,NULL);
iconv_close(cd);
;
return 0;
}
@ -5229,40 +5283,50 @@ if ${am_cv_func_iconv_works+:} false; then :
$as_echo_n "(cached) " >&6
else
am_save_LIBS="$LIBS"
am_save_LIBS="$LIBS"
if test $am_cv_lib_iconv = yes; then
LIBS="$LIBS $LIBICONV"
fi
if test "$cross_compiling" = yes; then :
am_cv_func_iconv_works=no
for ac_iconv_const in '' 'const'; do
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
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 ()
#ifndef ICONV_CONST
# define ICONV_CONST $ac_iconv_const
#endif
int
main ()
{
int result = 0;
/* 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 */
static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */
char buf[10];
const char *inptr = input;
ICONV_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,
&inptr, &inbytesleft,
&outptr, &outbytesleft);
if (res == 0)
return 1;
result |= 1;
iconv_close (cd_utf8_to_88591);
}
}
/* Test against Solaris 10 bug: Failures are not distinguishable from
@ -5271,17 +5335,37 @@ int main ()
iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
if (cd_ascii_to_88591 != (iconv_t)(-1))
{
static const char input[] = "\263";
static ICONV_CONST char input[] = "\263";
char buf[10];
const char *inptr = input;
ICONV_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,
&inptr, &inbytesleft,
&outptr, &outbytesleft);
if (res == 0)
return 1;
result |= 2;
iconv_close (cd_ascii_to_88591);
}
}
/* Test against AIX 6.1..7.1 bug: Buffer overrun. */
{
iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
if (cd_88591_to_utf8 != (iconv_t)(-1))
{
static ICONV_CONST char input[] = "\304";
static char buf[2] = { (char)0xDE, (char)0xAD };
ICONV_CONST char *inptr = input;
size_t inbytesleft = 1;
char *outptr = buf;
size_t outbytesleft = 1;
size_t res = iconv (cd_88591_to_utf8,
&inptr, &inbytesleft,
&outptr, &outbytesleft);
if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
result |= 4;
iconv_close (cd_88591_to_utf8);
}
}
#if 0 /* This bug could be worked around by the caller. */
@ -5290,17 +5374,18 @@ int main ()
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";
static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
char buf[50];
const char *inptr = input;
ICONV_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,
&inptr, &inbytesleft,
&outptr, &outbytesleft);
if ((int)res > 0)
return 1;
result |= 8;
iconv_close (cd_88591_to_utf8);
}
}
#endif
@ -5314,19 +5399,22 @@ int main ()
&& iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
/* Try HP-UX names. */
&& iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
return 1;
result |= 16;
return result;
;
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
test "$am_cv_func_iconv_works" = no || break
done
LIBS="$am_save_LIBS"
fi
@ -5373,7 +5461,7 @@ extern
#ifdef __cplusplus
"C"
#endif
#if defined(__STDC__) || defined(__cplusplus)
#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus)
size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
#else
size_t iconv();
@ -5406,6 +5494,7 @@ cat >>confdefs.h <<_ACEOF
#define ICONV_CONST $am_cv_proto_iconv_arg1
_ACEOF
fi
@ -6303,11 +6392,11 @@ else
int
main ()
{
/* FIXME: Include the comments suggested by Paul. */
#ifndef __cplusplus
/* Ultrix mips cc rejects this. */
/* Ultrix mips cc rejects this sort of thing. */
typedef int charset[2];
const charset cs;
const charset cs = { 0, 0 };
/* SunOS 4.1.1 cc rejects this. */
char const *const *pcpcc;
char **ppc;
@ -6324,8 +6413,9 @@ main ()
++pcpcc;
ppc = (char**) pcpcc;
pcpcc = (char const *const *) ppc;
{ /* SCO 3.2v4 cc rejects this. */
char *t;
{ /* SCO 3.2v4 cc rejects this sort of thing. */
char tx;
char *t = &tx;
char const *s = 0 ? (char *) 0 : (char const *) 0;
*t++ = 0;
@ -6341,10 +6431,10 @@ main ()
iptr p = 0;
++p;
}
{ /* AIX XL C 1.02.0.0 rejects this saying
{ /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
"k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
struct s { int j; const int *ap[3]; };
struct s *b; b->j = 5;
struct s { int j; const int *ap[3]; } bx;
struct s *b = &bx; b->j = 5;
}
{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
const int foo = 10;
@ -6486,7 +6576,7 @@ else
have_catgets=no
fi
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
for ac_func in dup2 getauthid getcwd gethostname getpwent getutent getutxent mallinfo mblen 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"
@ -7161,16 +7251,16 @@ if (echo >conf$$.file) 2>/dev/null; then
# ... 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'.
# In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
as_ln_s='cp -p'
as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
as_ln_s='cp -p'
as_ln_s='cp -pR'
fi
else
as_ln_s='cp -p'
as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@ -7230,28 +7320,16 @@ else
as_mkdir_p=false
fi
if test -x / >/dev/null 2>&1; then
as_test_x='test -x'
else
if ls -dL / >/dev/null 2>&1; then
as_ls_L_option=L
else
as_ls_L_option=
fi
as_test_x='
eval sh -c '\''
if test -d "$1"; then
test -d "$1/.";
else
case $1 in #(
-*)set "./$1";;
esac;
case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
???[sx]*):;;*)false;;esac;fi
'\'' sh
'
fi
as_executable_p=$as_test_x
# as_fn_executable_p FILE
# -----------------------
# Test if FILE is an executable regular file.
as_fn_executable_p ()
{
test -f "$1" && test -x "$1"
} # as_fn_executable_p
as_test_x='test -x'
as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@ -7272,8 +7350,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# 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.18.01, which was
generated by GNU Autoconf 2.68. Invocation command line was
This file was extended by tcsh $as_me 6.20.00, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@ -7338,11 +7416,11 @@ _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.18.01
configured by $0, generated by GNU Autoconf 2.68,
tcsh config.status 6.20.00
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
Copyright (C) 2010 Free Software Foundation, Inc.
Copyright (C) 2012 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
@ -7431,7 +7509,7 @@ fi
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
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'
@ -8027,7 +8105,7 @@ $as_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) 2010 Free Software Foundation, Inc.
# Copyright (C) 2012 Free Software Foundation, Inc.
# The test suite will define top_srcdir=$at_top_srcdir/../.. etc.
at_testdir='.'

View File

@ -7,10 +7,10 @@ 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 $
dnl $tcsh: configure.ac,v 3.10 2016/11/24 15:04:52 christos Exp $
AC_PREREQ([2.59])dnl Minimum Autoconf version required.
AC_INIT([tcsh], [6.18.01], [http://bugs.gw.com/])
AC_INIT([tcsh], [6.20.00], [http://bugs.gw.com/])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_SRCDIR([tc.vers.c])
AC_CONFIG_HEADERS([config.h])
@ -99,6 +99,11 @@ case "${host}" in
tcsh_config_file=sysV88
;;
## Minix systems
*-*-minix*)
tcsh_config_file=minix
;;
## NetBSD systems
*-*-netbsd*)
tcsh_config_file=bsd4.4
@ -119,6 +124,11 @@ case "${host}" in
tcsh_config_file=bsd4.4
;;
## MirBSD systems
*-*-mirbsd*)
tcsh_config_file=bsd4.4
;;
## OpenBSD systems
*-*-openbsd*)
tcsh_config_file=bsd4.4
@ -296,10 +306,20 @@ if test "x$GCC" != xyes ; then
CFLAGS="$CFLAGS $NON_GNU_CFLAGS"
fi
dnl More recent Android requires PIEs
case "${host}" in
*-*-android*)
CFLAGS="${CFLAGS} -fPIE"
LDFLAGS="${LDFLAGS} -pie"
;;
esac
dnl Checks for libraries
AC_SEARCH_LIBS(crypt, crypt)
AC_SEARCH_LIBS(getspnam, sec)
AC_SEARCH_LIBS(tgetent, termlib termcap curses ncurses)
AC_SEARCH_LIBS([tgetent], [termlib termcap curses ncurses], [], [
AC_MSG_ERROR([unable to find the tgetent() function])
])
AC_SEARCH_LIBS(gethostbyname, nsl)
AC_SEARCH_LIBS(connect, socket)
AC_SEARCH_LIBS(catgets, catgets)
@ -387,7 +407,7 @@ AC_INCLUDES_DEFAULT([])
AC_CHECK_FUNC([setlocale], [have_setlocale=yes], [have_setlocale=no])
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
[getutent getutxent mallinfo mblen memmove memset mkstemp nice] dnl
[nl_langinfo sbrk setpgid setpriority strerror strstr sysconf wcwidth])
AC_FUNC_GETPGRP
AC_FUNC_MBRTOWC

View File

@ -1,12 +0,0 @@
#!/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

View File

@ -1,2 +0,0 @@
#!/bin/bash
rm -f /usr/bin/csh /usr/bin/csh.exe /usr/bin/csh.lnk /usr/share/man/man1/csh.1*

180
dotlock.c Normal file
View File

@ -0,0 +1,180 @@
/* $NetBSD: dotlock.c,v 1.11 2009/10/21 01:07:46 snj Exp $ */
/*
* Copyright (c) 1996 Christos Zoulas. 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.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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"
RCSID("$tcsh: dotlock.c,v 3.4 2015/11/03 21:04:13 christos Exp $")
#include <stdio.h>
#ifndef O_SYNC
#define O_SYNC 0
#endif
#include "dotlock.h"
static int create_exclusive(const char *);
/*
* Create a unique file. O_EXCL does not really work over NFS so we follow
* the following trick: [Inspired by S.R. van den Berg]
*
* - make a mostly unique filename and try to create it.
* - link the unique filename to our target
* - get the link count of the target
* - unlink the mostly unique filename
* - if the link count was 2, then we are ok; else we've failed.
*/
static int
create_exclusive(const char *fname)
{
char path[MAXPATHLEN], hostname[MAXHOSTNAMELEN + 1];
const char *ptr;
struct timeval tv;
pid_t pid;
size_t ntries, cookie;
int fd, serrno;
struct stat st;
(void)gettimeofday(&tv, NULL);
(void)gethostname(hostname, sizeof(hostname));
hostname[sizeof(hostname) - 1] = '\0';
pid = getpid();
cookie = pid ^ tv.tv_usec;
/*
* We generate a semi-unique filename, from hostname.(pid ^ usec)
*/
if ((ptr = strrchr(fname, '/')) == NULL)
ptr = fname;
else
ptr++;
(void)snprintf(path, sizeof(path), "%.*s.%s.%lx",
(int)(ptr - fname), fname, hostname, (u_long)cookie);
/*
* We try to create the unique filename.
*/
for (ntries = 0; ntries < 5; ntries++) {
fd = open(path, O_WRONLY|O_CREAT|O_TRUNC|O_EXCL|O_SYNC, 0);
if (fd != -1) {
(void)close(fd);
break;
}
else if (errno == EEXIST)
continue;
else
return -1;
}
/*
* We link the path to the name
*/
if (link(path, fname) == -1)
goto bad;
/*
* Note that we stat our own exclusively created name, not the
* destination, since the destination can be affected by others.
*/
if (stat(path, &st) == -1)
goto bad;
(void)unlink(path);
/*
* If the number of links was two (one for the unique file and one
* for the lock), we've won the race
*/
if (st.st_nlink != 2) {
errno = EEXIST;
return -1;
}
return 0;
bad:
serrno = errno;
(void)unlink(path);
errno = serrno;
return -1;
}
/*
* fname -- Pathname to lock
* pollinterval -- Interval (miliseconds) to check for lock, -1 return
*/
int
dot_lock(const char *fname, int pollinterval)
{
char path[MAXPATHLEN];
sigset_t nset, oset;
int retval;
(void)sigemptyset(&nset);
(void)sigaddset(&nset, SIGHUP);
(void)sigaddset(&nset, SIGINT);
(void)sigaddset(&nset, SIGQUIT);
(void)sigaddset(&nset, SIGTERM);
(void)sigaddset(&nset, SIGTTIN);
(void)sigaddset(&nset, SIGTTOU);
(void)sigaddset(&nset, SIGTSTP);
(void)sigaddset(&nset, SIGCHLD);
(void)snprintf(path, sizeof(path), "%s.lock", fname);
retval = -1;
for (;;) {
handle_pending_signals();
(void)sigprocmask(SIG_BLOCK, &nset, &oset);
if (create_exclusive(path) != -1) {
(void)sigprocmask(SIG_SETMASK, &oset, NULL);
retval = 0;
break;
}
else
(void)sigprocmask(SIG_SETMASK, &oset, NULL);
if (errno != EEXIST)
break;
if (pollinterval) {
if (pollinterval == -1) {
errno = EEXIST;
break;
}
(void)usleep((unsigned int)pollinterval * 1000);
}
}
handle_pending_signals();
return retval;
}
void
dot_unlock(const char *fname)
{
char path[MAXPATHLEN];
(void)snprintf(path, sizeof(path), "%s.lock", fname);
(void)unlink(path);
}

35
dotlock.h Normal file
View File

@ -0,0 +1,35 @@
/*
* Copyright (c) 1996 Christos Zoulas. 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.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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 _DOTLOCK_H_
#define _DOTLOCK_H_ 1
/*
* fname -- Pathname to lock
* pollinterval -- Interval (miliseconds) to check for lock, -1 return
*/
int dot_lock(const char *fname, int pollinterval);
void dot_unlock(const char *fname);
#endif /* #ifndef _DOTLOCK_H_ */

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/ed.chared.c,v 3.98 2010/05/08 00:37:39 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/ed.chared.c,v 3.103 2015/08/19 14:29:55 christos Exp $ */
/*
* ed.chared.c: Character editing functions.
*/
@ -72,7 +72,7 @@
#include "sh.h"
RCSID("$tcsh: ed.chared.c,v 3.98 2010/05/08 00:37:39 christos Exp $")
RCSID("$tcsh: ed.chared.c,v 3.103 2015/08/19 14:29:55 christos Exp $")
#include "ed.h"
#include "tw.h"
@ -93,7 +93,7 @@ RCSID("$tcsh: ed.chared.c,v 3.98 2010/05/08 00:37:39 christos Exp $")
* from: Gert-Jan Vons <vons@cesar.crbca1.sinet.slb.com>
*/
#define C_CLASS_WHITE 1
#define C_CLASS_ALNUM 2
#define C_CLASS_WORD 2
#define C_CLASS_OTHER 3
static Char *InsertPos = InputBuf; /* Where insertion starts */
@ -290,7 +290,7 @@ c_preword(Char *p, Char *low, int n, Char *delim)
/*
* c_to_class() returns the class of the given character.
*
* This is used to make the c_prev_word() and c_next_word() functions
* This is used to make the c_prev_word(), c_next_word() and c_eword() functions
* work like vi's, which classify characters. A word is a sequence of
* characters belonging to the same class, classes being defined as
* follows:
@ -305,8 +305,8 @@ c_to_class(Char ch)
if (Isspace(ch))
return C_CLASS_WHITE;
if (Isdigit(ch) || Isalpha(ch) || ch == '_')
return C_CLASS_ALNUM;
if (isword(ch))
return C_CLASS_WORD;
return C_CLASS_OTHER;
}
@ -828,15 +828,24 @@ c_eword(Char *p, Char *high, int n)
p++;
while (n--) {
while ((p < high) && Isspace(*p))
p++;
int c_class;
if (isword(*p))
while ((p < high) && isword(*p))
p++;
else
while ((p < high) && !(Isspace(*p) || isword(*p)))
p++;
if (p >= high)
break;
/* scan until end of current word (may be all whitespace!) */
c_class = c_to_class(*p);
while ((p < high) && c_class == c_to_class(*p))
p++;
/* if this was a non_whitespace word, we're ready */
if (c_class != C_CLASS_WHITE)
continue;
/* otherwise, move to the end of the word just found */
c_class = c_to_class(*p);
while ((p < high) && c_class == c_to_class(*p))
p++;
}
p--;
@ -941,7 +950,7 @@ c_push_kill(Char *start, Char *end)
/* Save InputBuf etc in SavedBuf etc for restore after cmd exec */
static void
c_save_inputbuf()
c_save_inputbuf(void)
{
SavedBuf.len = 0;
Strbuf_append(&SavedBuf, InputBuf);
@ -953,7 +962,7 @@ c_save_inputbuf()
}
CCRETVAL
GetHistLine()
GetHistLine(void)
{
struct Hist *hp;
int h;
@ -3025,7 +3034,7 @@ e_uppercase(Char c)
/*ARGSUSED*/
CCRETVAL
e_capitolcase(Char c)
e_capitalcase(Char c)
{
Char *cp, *end;
@ -3387,7 +3396,7 @@ e_stuff_char(Char c)
(void) Cookedmode();
(void) xwrite(SHIN, "\n", 1);
len = one_wctomb(buf, c & CHAR);
len = one_wctomb(buf, c);
for (i = 0; i < len; i++)
(void) ioctl(SHIN, TIOCSTI, (ioctl_t) &buf[i]);

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/ed.decls.h,v 3.45 2008/10/17 20:25:00 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/ed.decls.h,v 3.46 2015/08/19 14:29:55 christos Exp $ */
/*
* ed.decls.h: Editor external definitions
*/
@ -142,7 +142,7 @@ extern CCRETVAL e_wordfwd (Char);
extern CCRETVAL v_wordbegnext (Char);
extern CCRETVAL e_uppercase (Char);
extern CCRETVAL e_lowercase (Char);
extern CCRETVAL e_capitolcase (Char);
extern CCRETVAL e_capitalcase (Char);
extern CCRETVAL e_cleardisp (Char);
extern CCRETVAL e_complete (Char);
extern CCRETVAL e_correct (Char);

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/ed.defns.c,v 3.46 2006/03/02 18:46:44 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/ed.defns.c,v 3.51 2016/02/14 15:44:18 christos Exp $ */
/*
* ed.defns.c: Editor function definitions and initialization
*/
@ -32,7 +32,7 @@
*/
#include "sh.h"
RCSID("$tcsh: ed.defns.c,v 3.46 2006/03/02 18:46:44 christos Exp $")
RCSID("$tcsh: ed.defns.c,v 3.51 2016/02/14 15:44:18 christos Exp $")
#include "ed.h"
@ -151,7 +151,7 @@ PFCmd CcFuncTbl[] = { /* table of available commands */
#define F_CASEUPPER 54
e_lowercase,
#define F_CASELOWER 55
e_capitolcase,
e_capitalcase,
#define F_CASECAPITAL 56
v_zero,
#define V_ZERO 57
@ -1801,27 +1801,27 @@ editinit(void)
void
CheckMaps(void)
{ /* check the size of the key maps */
int c1 = (NT_NUM_KEYS * sizeof(KEYCMD));
size_t c1 = NT_NUM_KEYS * sizeof(KEYCMD);
if ((sizeof(CcKeyMap)) != c1)
xprintf("CcKeyMap should be %d entries, but is %d.\r\n",
NT_NUM_KEYS, sizeof(CcKeyMap) / sizeof(KEYCMD)));
if (sizeof(CcKeyMap) != c1)
xprintf("CcKeyMap should be %u entries, but is %zu.\r\n",
NT_NUM_KEYS, sizeof(CcKeyMap) / sizeof(KEYCMD));
if ((sizeof(CcAltMap)) != c1)
xprintf("CcAltMap should be %d entries, but is %d.\r\n",
NT_NUM_KEYS, (sizeof(CcAltMap) / sizeof(KEYCMD)));
if (sizeof(CcAltMap) != c1)
xprintf("CcAltMap should be %u entries, but is %zu.\r\n",
NT_NUM_KEYS, sizeof(CcAltMap) / sizeof(KEYCMD));
if ((sizeof(CcEmacsMap)) != c1)
xprintf("CcEmacsMap should be %d entries, but is %d.\r\n",
NT_NUM_KEYS, (sizeof(CcEmacsMap) / sizeof(KEYCMD)));
if (sizeof(CcEmacsMap) != c1)
xprintf("CcEmacsMap should be %u entries, but is %zu.\r\n",
NT_NUM_KEYS, sizeof(CcEmacsMap) / sizeof(KEYCMD));
if ((sizeof(CcViMap)) != c1)
xprintf("CcViMap should be %d entries, but is %d.\r\n",
NT_NUM_KEYS, (sizeof(CcViMap) / sizeof(KEYCMD)));
if (sizeof(CcViMap) != c1)
xprintf("CcViMap should be %u entries, but is %zu.\r\n",
NT_NUM_KEYS, sizeof(CcViMap) / sizeof(KEYCMD));
if ((sizeof(CcViCmdMap)) != c1)
xprintf("CcViCmdMap should be %d entries, but is %d.\r\n",
NT_NUM_KEYS, (sizeof(CcViCmdMap) / sizeof(KEYCMD)));
if (sizeof(CcViCmdMap) != c1)
xprintf("CcViCmdMap should be %u entries, but is %zu.\r\n",
NT_NUM_KEYS, sizeof(CcViCmdMap) / sizeof(KEYCMD));
}
#endif
@ -1889,6 +1889,9 @@ ed_InitVIMaps(void)
int i;
VImode = 1;
setNS(STRvimode);
update_wordchars();
ResetXmap();
for (i = 0; i < NT_NUM_KEYS; i++) {
CcKeyMap[i] = CcViMap[i];
@ -1910,6 +1913,10 @@ ed_InitEmacsMaps(void)
cstr.len = 2;
VImode = 0;
if (adrof(STRvimode))
unsetv(STRvimode);
update_wordchars();
ResetXmap();
for (i = 0; i < NT_NUM_KEYS; i++) {
CcKeyMap[i] = CcEmacsMap[i];

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/ed.inputl.c,v 3.71 2010/12/22 17:26:04 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/ed.inputl.c,v 3.73 2012/10/19 15:23:32 christos Exp $ */
/*
* ed.inputl.c: Input line handling.
*/
@ -32,7 +32,7 @@
*/
#include "sh.h"
RCSID("$tcsh: ed.inputl.c,v 3.71 2010/12/22 17:26:04 christos Exp $")
RCSID("$tcsh: ed.inputl.c,v 3.73 2012/10/19 15:23:32 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_CUR_MAX == 1 &&
MB_LEN_MAX == 1 &&
#endif
!adrof(STRnokanji) && (*ch & META)) {
MetaNext = 0;
@ -800,17 +800,13 @@ GetNextChar(Char *cp)
return -1;
}
}
if (AsciiOnly) {
*cp = (unsigned char)*cbuf;
} else {
cbp++;
if (normal_mbtowc(cp, cbuf, cbp) == -1) {
reset_mbtowc();
if (cbp < MB_CUR_MAX)
continue; /* Maybe a partial character */
/* And drop the following bytes, if any */
*cp = (unsigned char)*cbuf | INVALID_BYTE;
}
cbp++;
if (normal_mbtowc(cp, cbuf, cbp) == -1) {
reset_mbtowc();
if (cbp < MB_CUR_MAX)
continue; /* Maybe a partial character */
/* And drop the following bytes, if any */
*cp = (unsigned char)*cbuf | INVALID_BYTE;
}
break;
}

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/ed.refresh.c,v 3.47 2011/02/27 00:14:51 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/ed.refresh.c,v 3.51 2015/06/06 21:19:07 christos Exp $ */
/*
* ed.refresh.c: Lower level screen refreshing functions
*/
@ -32,7 +32,7 @@
*/
#include "sh.h"
RCSID("$tcsh: ed.refresh.c,v 3.47 2011/02/27 00:14:51 christos Exp $")
RCSID("$tcsh: ed.refresh.c,v 3.51 2015/06/06 21:19:07 christos Exp $")
#include "ed.h"
/* #define DEBUG_UPDATE */
@ -46,7 +46,7 @@ static int vcursor_h, vcursor_v;
static int rprompt_h, rprompt_v;
static int MakeLiteral (Char *, int, Char);
static int Draw (Char *, int);
static int Draw (Char *, int, int);
static void Vdraw (Char, int);
static void RefreshPromptpart (Char *);
static void update_line (Char *, Char *, int);
@ -159,15 +159,44 @@ static int MakeLiteral(Char *str, int len, Char addlit)
return i | LITERAL;
}
/* draw char at cp, expand tabs, ctl chars */
static int
Draw(Char *cp, int nocomb) /* draw char at cp, expand tabs, ctl chars */
Draw(Char *cp, int nocomb, int drawPrompt)
{
int w, i, lv, lh;
Char c, attr;
#ifdef WIDE_STRINGS
if (!drawPrompt) { /* draw command-line */
attr = 0;
c = *cp;
} else { /* draw prompt */
/* prompt with attributes(UNDER,BOLD,STANDOUT) */
if (*cp & (UNDER | BOLD | STANDOUT)) { /* *cp >= STANDOUT */
/* example)
* We can't distinguish whether (*cp=)0x02ffffff is
* U+02FFFFFF or U+00FFFFFF|STANDOUT.
* We handle as U+00FFFFFF|STANDOUT, only when drawing prompt. */
attr = (*cp & ATTRIBUTES);
/* ~(UNDER | BOLD | STANDOUT) = 0xf1ffffff */
c = *cp & ~(UNDER | BOLD | STANDOUT);
/* if c is ctrl code, we handle *cp as havnig no attributes */
if ((c < 0x20 && c >= 0) || c == 0x7f) {
attr = 0;
c = *cp;
}
} else { /* prompt without attributes */
attr = 0;
c = *cp;
}
}
#else
attr = *cp & ~CHAR;
c = *cp & CHAR;
w = NLSClassify(c, nocomb);
#endif
w = NLSClassify(c, nocomb, drawPrompt);
switch (w) {
case NLSCLASS_NL:
Vdraw('\0', 0); /* assure end of line */
@ -201,10 +230,11 @@ Draw(Char *cp, int nocomb) /* draw char at cp, expand tabs, ctl chars */
case NLSCLASS_ILLEGAL2:
case NLSCLASS_ILLEGAL3:
case NLSCLASS_ILLEGAL4:
Vdraw('\\' | attr, 1);
Vdraw('U' | attr, 1);
Vdraw('+' | attr, 1);
for (i = 8 * NLSCLASS_ILLEGAL_SIZE(w) - 4; i >= 0; i -= 4)
case NLSCLASS_ILLEGAL5:
Vdraw('\\', 1);
Vdraw('U', 1);
Vdraw('+', 1);
for (i = 16 + 4 * (-w-5); i >= 0; i -= 4)
Vdraw("0123456789ABCDEF"[(c >> i) & 15] | attr, 1);
break;
case 0:
@ -302,7 +332,7 @@ RefreshPromptpart(Char *buf)
}
}
else
cp += Draw(cp, cp == buf);
cp += Draw(cp, cp == buf, 1);
}
}
@ -354,7 +384,7 @@ Refresh(void)
cur_v = vcursor_v;
Cursor = cp;
}
cp += Draw(cp, cp == InputBuf);
cp += Draw(cp, cp == InputBuf, 0);
}
if (cur_h == -1) { /* if I haven't been set yet, I'm at the end */
@ -1126,7 +1156,7 @@ RefCursor(void)
cp++;
continue;
}
w = NLSClassify(*cp & CHAR, cp == Prompt);
w = NLSClassify(*cp & CHAR, cp == Prompt, 0);
cp++;
switch(w) {
case NLSCLASS_NL:
@ -1158,7 +1188,7 @@ RefCursor(void)
}
for (cp = InputBuf; cp < Cursor;) { /* do input buffer to Cursor */
w = NLSClassify(*cp & CHAR, cp == InputBuf);
w = NLSClassify(*cp & CHAR, cp == InputBuf, 0);
cp++;
switch(w) {
case NLSCLASS_NL:
@ -1251,7 +1281,7 @@ RefPlusOne(int l)
}
cp = Cursor - l;
c = *cp & CHAR;
w = NLSClassify(c, cp == InputBuf);
w = NLSClassify(c, cp == InputBuf, 0);
switch(w) {
case NLSCLASS_CTRL:
PutPlusOne('^', 1);
@ -1299,7 +1329,7 @@ ClearDisp(void)
CursorV = 0; /* clear the display buffer */
CursorH = 0;
for (i = 0; i < TermV; i++)
(void) memset(Display[i], 0, TermH * sizeof(Display[0][0]));
(void) memset(Display[i], 0, (TermH + 1) * sizeof(Display[0][0]));
OldvcV = 0;
litlen = 0;
}

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/ed.screen.c,v 3.78 2011/02/27 00:14:38 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/ed.screen.c,v 3.82 2016/11/24 15:04:14 christos Exp $ */
/*
* ed.screen.c: Editor/termcap-curses interface
*/
@ -32,7 +32,7 @@
*/
#include "sh.h"
RCSID("$tcsh: ed.screen.c,v 3.78 2011/02/27 00:14:38 christos Exp $")
RCSID("$tcsh: ed.screen.c,v 3.82 2016/11/24 15:04:14 christos Exp $")
#include "ed.h"
#include "tc.h"
@ -994,14 +994,14 @@ SetAttributes(Char atr)
int highlighting = 0;
void
StartHighlight()
StartHighlight(void)
{
(void) tputs(Str(T_mr), 1, PUTPURE);
highlighting = 1;
}
void
StopHighlight()
StopHighlight(void)
{
(void) tputs(Str(T_me), 1, PUTPURE);
highlighting = 0;
@ -1437,7 +1437,8 @@ GetTermCaps(void)
if (i <= 0) {
if (i == -1) {
#if (SYSVREL == 0) || defined(IRIS3D)
xprintf(CGETS(7, 20, "%s: Cannot open /etc/termcap.\n"), progname);
xprintf(CGETS(7, 20,
"%s: The terminal database could not be opened.\n"), progname);
}
else if (i == 0) {
#endif /* SYSVREL */
@ -1563,13 +1564,13 @@ GetSize(int *lins, int *cols)
#endif /* SIG_WINDOW */
#ifdef KNOWsize
static void
static int
UpdateVal(const Char *tag, int value, Char *termcap, Char *backup)
{
Char *ptr, *p;
if ((ptr = Strstr(termcap, tag)) == NULL) {
(void)Strcpy(backup, termcap);
return;
return 0;
} else {
size_t len = (ptr - termcap) + Strlen(tag);
(void)Strncpy(backup, termcap, len);
@ -1580,6 +1581,7 @@ UpdateVal(const Char *tag, int value, Char *termcap, Char *backup)
ptr = Strchr(ptr, ':');
if (ptr)
(void) Strcat(backup, ptr);
return 1;
}
}
#endif
@ -1625,21 +1627,23 @@ ChangeSize(int lins, int cols)
if ((tptr = getenv("TERMCAP")) != NULL) {
/* Leave 64 characters slop in case we enlarge the termcap string */
Char termcap[TC_BUFSIZE+64], backup[TC_BUFSIZE+64], *ptr;
Char buf[4];
int changed;
ptr = str2short(tptr);
(void) Strncpy(termcap, ptr, TC_BUFSIZE);
termcap[TC_BUFSIZE-1] = '\0';
UpdateVal(STRco, Val(T_co), termcap, backup);
UpdateVal(STRli, Val(T_li), termcap, backup);
changed = UpdateVal(STRco, Val(T_co), termcap, backup);
changed |= UpdateVal(STRli, Val(T_li), termcap, backup);
/*
* Chop the termcap string at TC_BUFSIZE-1 characters to avoid
* core-dumps in the termcap routines
*/
termcap[TC_BUFSIZE - 1] = '\0';
tsetenv(STRTERMCAP, termcap);
if (changed) {
/*
* Chop the termcap string at TC_BUFSIZE-1 characters to avoid
* core-dumps in the termcap routines
*/
termcap[TC_BUFSIZE - 1] = '\0';
tsetenv(STRTERMCAP, termcap);
}
}
}
#endif /* KNOWsize */

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/ed.term.h,v 1.18 2007/07/05 14:13:06 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/ed.term.h,v 1.19 2015/03/25 19:53:16 christos Exp $ */
/*
* ed.term.h: Local terminal header
*/
@ -300,10 +300,18 @@
# endif /* masscomp */
#endif /* CBRK */
#ifndef CMIN
# define CMIN CEOF
# if VMIN == VEOF
# define CMIN CEOF
# else
# define CMIN 1
# endif
#endif /* CMIN */
#ifndef CTIME
# define CTIME CEOL
# if VTIME == VEOL
# define CTIME CEOL
# else
# define CTIME 0
# endif
#endif /* CTIME */
/*

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/ed.xmap.c,v 3.37 2009/06/25 21:15:37 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/ed.xmap.c,v 3.38 2015/06/06 21:19:07 christos Exp $ */
/*
* ed.xmap.c: This module contains the procedures for maintaining
* the extended-key map.
@ -88,7 +88,7 @@
*/
#include "sh.h"
RCSID("$tcsh: ed.xmap.c,v 3.37 2009/06/25 21:15:37 christos Exp $")
RCSID("$tcsh: ed.xmap.c,v 3.38 2015/06/06 21:19:07 christos Exp $")
#include "ed.h"
#include "ed.defns.h"
@ -743,7 +743,7 @@ unparsestring(const CStr *str, const Char *sep)
*b++ = (unsigned char) p;
}
else if (p == ' ' || (Isprint(p) && !Isspace(p)))
b += one_wctomb((char *)b, p & CHAR);
b += one_wctomb((char *)b, p);
else {
*b++ = '\\';
*b++ = ((p >> 6) & 7) + '0';

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/gethost.c,v 1.15 2012/01/15 17:14:54 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/gethost.c,v 1.19 2014/03/09 00:11:54 christos Exp $ */
/*
* gethost.c: Create version file from prototype
*/
@ -32,7 +32,7 @@
*/
#include "sh.h"
RCSID("$tcsh: gethost.c,v 1.15 2012/01/15 17:14:54 christos Exp $")
RCSID("$tcsh: gethost.c,v 1.19 2014/03/09 00:11:54 christos Exp $")
#ifdef SCO
# define perror __perror
@ -150,11 +150,17 @@ cat(const char *a, const char *b, size_t len)
char *r;
if (len == 0)
len = strlen(b);
l = strlen(a) + len + 1;
len = strlen(b) + 1;
if (a)
l = strlen(a) + len;
else
l = len;
if ((r = malloc(l)) == NULL)
abort();
snprintf(r, l, "%s%.*s", a, (int)len, b);
if (a)
snprintf(r, l, "%s%.*s", a, (int)len, b);
else
snprintf(r, l, "%.*s", (int)len, b);
return r;
}
@ -165,19 +171,22 @@ explode(const char *defs)
static char *buf;
size_t len;
const char *ptr, *bptr, *eptr = NULL, *name;
size_t buflen = 0;
if (strstr(defs, "#machine(" /* ) */))
return defs;
if (!strstr(defs, def))
return defs;
free(buf);
buf = strdup("("); /* ) */
buf = NULL;
for (ptr = defs; (bptr = strstr(ptr, def)) != NULL; ptr = eptr + 1) {
if (ptr != bptr)
buf = cat(buf, ptr, bptr - ptr);
buf = cat(buf, ptr, bptr - ptr + 1);
buf = cat(buf, "(", 0); /* ) */
if ((eptr = strchr(ptr + sizeof(def) - 1, ')')) == NULL) {
(void) fprintf(stderr, "%s: missing close paren `%s'\n",
pname, defs);
free(buf);
return defs;
}
buf = cat(buf, bptr, eptr - bptr + 1);
@ -186,26 +195,29 @@ explode(const char *defs)
if (len < 1) {
(void) fprintf(stderr, "%s: empty define `%s'\n",
pname, defs);
free(buf);
return defs;
}
if (*name != '_') {
if (*name != '_' && (*name != 'M' && name[1] != '_')) {
char *undername = malloc(len + 10);
buf = cat(buf, " || defined(", 0);
if (undername == NULL)
abort();
buf = cat(buf, ") || defined(", 0);
snprintf(undername, len + 10, "__%.*s__)", (int)len,
name);
buf = cat(buf, undername, len + 5);
buf = cat(buf, " || defined(", 0);
buf = cat(buf, ") || defined(", 0);
snprintf(undername, len + 10, "__%.*s)", (int)len,
name);
buf = cat(buf, undername, len + 3);
}
buf = cat(buf, "))", 0);
}
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;
}
@ -292,8 +304,8 @@ main(int argc, char *argv[])
pname, fname, lineno);
break;
}
(void) fprintf(stdout, "\n#if %s\n# define %s\n#endif\n\n", stmt,
defs);
(void) fprintf(stdout, "\n#if %s\n# define %s\n#endif\n\n",
explode(stmt), defs);
break;
case T_NONE:
@ -340,7 +352,7 @@ main(int argc, char *argv[])
#ifdef LINEDIRECTIVE
(void) fprintf(stdout, "# %d \"%s\"\n", lineno + 1, fname);
#endif /* LINEDIRECTIVE */
(void) fprintf(stdout, "#if %s\n", defs);
(void) fprintf(stdout, "#if (%s)\n", explode(defs));
inprocess = 1;
}
else {

6
glob.c
View File

@ -59,6 +59,11 @@ static char sccsid[] = "@(#)glob.c 5.12 (Berkeley) 6/24/91";
#include "sh.h"
#include "glob.h"
#ifndef HAVE_MBLEN
#undef mblen
#define mblen(_s,_n) mbrlen((_s),(_n),NULL)
#endif
#undef Char
#undef QUOTE
#undef TILDE
@ -433,6 +438,7 @@ glob(const char *pattern, int flags, int (*errfunc) (const char *, int),
dest = copy;
src = pattern;
while (*src != EOS) {
/* Don't interpret quotes. The spec does not say we should do */
if (*src == QUOTE) {
if (*++src == EOS)
--src;

123
host.defs
View File

@ -1,5 +1,5 @@
newcode :
/* $Header: /p/tcsh/cvsroot/tcsh/host.defs,v 1.55 2012/01/11 20:20:15 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/host.defs,v 1.61 2015/05/26 18:56:19 christos Exp $ */
/*
* host.defs: Hosttype/Machtype etc.
*/
@ -33,18 +33,19 @@ newcode :
*/
#include "sh.h"
RCSID("$tcsh: host.defs,v 1.55 2012/01/11 20:20:15 christos Exp $")
RCSID("$tcsh: host.defs,v 1.61 2015/05/26 18:56:19 christos Exp $")
endcode :
macro : M_mips64el : (defined(mips64) || defined(__mips64)) && (defined(MIPSEL) || defined(__MIPSEL))
macro : M_mips64eb : (defined(mips64) || defined(__mips64)) && (defined(MIPSEB) || defined(__MIPSEB))
macro : M_mipsel : (!defined(M_mips64el)) && (defined(mips) || defined(__mips)) && (defined(MIPSEL) || defined(__MIPSEL))
macro : M_mipseb : (!defined(M_mips64eb)) && (defined(mips) || defined(__mips)) && (defined(MIPSEB) || defined(__MIPSEB))
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_mips64el : (defined(mips64) && defined(MIPSEL))
macro : M_mips64eb : (defined(mips64) && defined(MIPSEB))
macro : M_mipsel : (!defined(M_mips64el) && defined(mips) && defined(MIPSEL))
macro : M_mipseb : (!defined(M_mips64eb) && defined(mips) && defined(MIPSEB))
macro : M_amd64: (defined(amd64) || defined(x86_64))
macro : M_i386 : defined(i386)
macro : M_i486 : defined(i486)
macro : M_i586 : defined(i586)
macro : M_i686 : defined(i686)
macro : M_intel : (defined(M_i386) || defined(M_i486) || defined(M_i586))
newdef : defined(ns32000)
@ -169,7 +170,7 @@ getconvex(void)
endcode :
enddef :
newdef : defined(__linux__) || defined(__CYGWIN__) || defined(__GNU__) || defined(__GLIBC__)
newdef : defined(linux) || defined(CYGWIN) || defined(GNU) || defined(GLIBC)
newcode :
# include "tw.h"
#include <sys/utsname.h>
@ -240,7 +241,7 @@ hosttype: : HOSTTYPE
enddef :
newdef : defined(__PARAGON__)
newdef : defined(PARAGON)
comment : Intel Paragon running OSF/1
vendor : : "intel"
hosttype: : "paragon"
@ -277,7 +278,7 @@ machtype: defined(vax) : "vax"
enddef :
newdef : defined(__hp_osf)
newdef : defined(hp_osf)
comment : Hewlett Packard running OSF/1
vendor : : "hp"
hosttype: defined(pa_risc) : "hp9000s700-osf1"
@ -300,7 +301,7 @@ machtype: defined(hp800) : "pa_risc"
enddef :
newdef : defined(hpux) || defined(__hpux)
newdef : defined(hpux)
comment : Hewlett Packard running HP/UX
vendor : : "hp"
hosttype: defined(hp9000s800) : "hp9000s800"
@ -325,14 +326,15 @@ machtype: : "m68k"
enddef :
newdef : defined(sun) || defined(__sun__)
newdef : 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)
vendor : : "sun"
hosttype: defined(M_i386) && !defined(__SVR4) : "sun386i"
hosttype: defined(M_i386) && defined(__SVR4) : "i86pc"
hosttype: defined(M_i386) && !defined(SVR4) : "sun386i"
hosttype: defined(M_i386) && defined(SVR4) : "i86pc"
hosttype: defined(M_amd64) : "i86pc"
hosttype: defined(mc68010) : "sun2"
hosttype: defined(mc68020) : "sun3"
hosttype: defined(sparc) : "sun4"
@ -345,6 +347,7 @@ machtype: defined(mc68020) : "m68k"
machtype: defined(sparcv9) : "sparcv9"
machtype: defined(sparc) : "sparc"
machtype: defined(M_i386) : "i386"
machtype: defined(M_amd64) : "amd64"
enddef :
@ -488,7 +491,7 @@ machtype: defined(M_i386) : "i386"
enddef :
newdef : defined(__gnu_hurd__)
newdef : defined(gnu_hurd)
comment : GNU/HURD
vendor : defined(M_intel) : "intel"
hosttype: defined(M_i686) : "i686"
@ -503,19 +506,19 @@ machtype: defined(M_i386) : "i386-pc-gnu"
enddef :
newdef : defined(linux) || defined(__GNU__) || defined(__GLIBC__)
newdef : defined(linux) || defined(GNU) || defined(GLIBC)
comment : Linus Torvalds's linux
vendor : defined(M_intel) : "intel"
hosttype: : gethost()
ostype : : getostype()
machtype: : getmach()
vendor : defined(__ANDROID__) : "linux"
vendor : defined(ANDROID) : "linux"
vendor : defined(alpha) : "dec"
vendor : defined(PPC) : "apple"
enddef :
newdef : defined(__EMX__)
newdef : defined(EMX)
comment : OS/2 EMX [unix emulation under OS/2]
vendor : defined(M_intel) : "intel"
hosttype: defined(M_i386) : "i386-emx"
@ -524,10 +527,10 @@ machtype: defined(M_i386) : "i386"
enddef :
newdef : defined(__NetBSD__)
newdef : defined(NetBSD)
comment : NetBSD
vendor : defined(algor) : "algoritmics"
vendor : defined(arm32) || defined(__arm__) : "acorn"
vendor : defined(arm32) || defined(arm) : "acorn"
vendor : defined(alpha) : "digital"
vendor : defined(amiga) : "commodore"
vendor : defined(atari) : "atari"
@ -543,13 +546,13 @@ vendor : defined(sparc) : "sun"
vendor : defined(sparc64) : "sun"
vendor : defined(sun3) : "sun"
vendor : defined(vax) : "digital"
vendor : defined(x86_64) : "amd"
vendor : defined(M_amd64) : "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(arm32) || defined(APCS_32) : "arm32"
machtype: defined(arm26) || defined(APCS_26) : "arm26"
machtype: defined(arm) : "arm"
machtype: defined(sparc) : "sparc"
machtype: defined(sparc64) : "sparc64"
@ -561,25 +564,57 @@ machtype: defined(mips) : "mips"
machtype: defined(pc532) : "pc532"
machtype: defined(powerpc) : "powerpc"
machtype: defined(vax) : "vax"
machtype: defined(x86_64) : "x86_64"
machtype: defined(M_amd64) : "x86_64"
enddef :
newdef : defined(OpenBSD)
comment : OpenBSD
vendor : defined(alpha) : "digital"
vendor : defined(M_amd64) : "amd"
vendor : defined(arm) : "arm"
vendor : defined(hppa) || defined(hppa64) : "hp"
vendor : defined(M_intel) : "intel"
vendor : defined(m68k) : "motorola"
vendor : defined(m88k) : "motorola"
vendor : defined(mips) && defined(sgi) : "sgi"
vendor : defined(powerpc) : "motorola"
vendor : defined(sh) : "io-data"
vendor : defined(sparc) || defined(sparc64) : "sun"
vendor : defined(vax) : "digital"
hosttype: : "OpenBSD"
ostype : : "OpenBSD"
machtype: defined(alpha) : "alpha"
machtype: defined(M_amd64) : "amd64"
machtype: defined(arm) : "arm"
machtype: defined(hppa) : "hppa"
machtype: defined(hppa64) : "hppa64"
machtype: defined(M_i386) : "i386"
machtype: defined(m68k) : "m68k"
machtype: defined(m88k) : "m88k"
machtype: defined(mips) : "mips"
machtype: defined(sh) : "sh"
machtype: defined(sparc64) : "sparc64"
machtype: defined(sparc) : "sparc"
machtype: defined(powerpc) : "powerpc"
machtype: defined(vax) : "vax"
enddef :
newdef : defined(__FreeBSD__)
newdef : defined(FreeBSD)
comment : FreeBSD
vendor : defined(alpha) : "digital"
vendor : defined(arm32) || defined(__arm__) : "acorn"
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"
vendor : defined(M_amd64) : "amd"
hosttype: : "FreeBSD"
ostype : : "FreeBSD"
machtype: defined(alpha) : "alpha"
machtype: defined(arm32) || defined(__APCS_32__) : "arm32"
machtype: defined(arm32) || defined(APCS_32) : "arm32"
machtype: defined(arm) : "arm"
machtype: defined(ia64) : "ia64"
machtype: defined(M_i386) : "i386"
@ -587,11 +622,11 @@ machtype: defined(mips) : "mips"
machtype: defined(powerpc) : "powerpc"
machtype: defined(sparc) : "sparc"
machtype: defined(sparc64) : "sparc64"
machtype: defined(x86_64) : "x86_64"
machtype: defined(M_amd64) : "x86_64"
enddef :
newdef : defined(__MidnightBSD__)
newdef : defined(MidnightBSD)
comment : MidnightBSD
vendor : defined(M_intel) : "intel"
hosttype: : "MidnightBSD"
@ -819,13 +854,15 @@ machtype: defined(sparc) : "sparc"
enddef :
newdef : defined(__APPLE__) && defined(__MACH__)
newdef : defined(APPLE) && defined(MACH)
comment : OS X
vendor : : "apple"
hosttype: defined(i386) : "intel-pc"
hosttype: defined(ppc) : "powermac"
hosttype: defined(M_amd64) : "amd"
ostype : : "darwin"
machtype: defined(i386) : "i386"
machtype: defined(M_amd64) : "x86_64"
machtype: defined(ppc) : "powerpc"
enddef :
@ -855,7 +892,7 @@ machtype: defined(mc68000) : "mc68000"
enddef :
newdef : defined(ultrix) || defined(__ultrix)
newdef : defined(ultrix)
comment : Digital's Ultrix
vendor : : "dec"
hosttype: defined(M_mipsel) : "decstation"
@ -917,7 +954,7 @@ hosttype: : "masscomp"
ostype : : "masscomp"
enddef :
newdef : defined(__MACHTEN__)
newdef : defined(MACHTEN)
comment : Machintosh
vendor : : "Tenon"
hosttype: : "Macintosh"
@ -1040,7 +1077,7 @@ hosttype: : "tekXD88"
enddef :
newdef : defined(__DGUX__)
newdef : defined(DGUX)
comment : Data-General AViiON running DGUX
hosttype: : "aviion"
ostype : : "dgux"
@ -1074,14 +1111,14 @@ machtype: : "m88k"
enddef :
newdef : defined(__clipper__)
newdef : defined(clipper)
comment : Clipper Chipset (Intergraph)
vendor : : "intergraph"
hosttype: : "clipper"
machtype: : "clipper"
enddef :
newdef : defined(__QNX__)
newdef : defined(QNX)
ostype : : "qnx"
enddef :
@ -1110,7 +1147,7 @@ machtype: #machine(sparc) : "sparc"
machtype: : "bs2000"
enddef :
newdef : defined(__MVS__)
newdef : defined(MVS)
comment : ibm uss s/390 (mainframe, EBCDIC)
vendor : : "ibm"
hosttype: : "s390"
@ -1134,7 +1171,7 @@ ostype : : "svr4"
machtype: defined(M_i386) : "i386"
enddef :
newdef : defined(__uxp__) || defined(__uxps__)
newdef : defined(uxp) || defined(uxps)
comment : FUJITSU DS/90 7000
vendor : : "fujitsu"
hosttype: : "ds90"
@ -1142,9 +1179,9 @@ ostype : : "sysv4"
machtype: : "sparc"
enddef :
newdef : defined(__CYGWIN__)
newdef : defined(CYGWIN)
comment : Cygwin
vendor : : "intel"
vendor : defined(M_intel) : "intel"
hosttype: : gethost()
ostype : : getostype()
machtype: : getmach()

View File

@ -1,4 +1,4 @@
$ $tcsh: set1,v 1.6 2006/03/02 18:46:45 christos Exp $
$ $tcsh: set1,v 1.7 2015/05/26 17:38:25 christos Exp $
$ Error messages
$set 1
1 Syntax Error
@ -8,7 +8,7 @@ $set 1
5 No file for $0
6 Incomplete [] modifier
7 $ expansion must end before ]
8 Bad : modifier in $ (%c)
8 Bad : modifier in $ '%c'
9 Subscript error
10 Badly formed number
11 No more words
@ -51,8 +51,8 @@ $set 1
48 Not in while/foreach
49 No more processes
50 No match
51 Missing %c
52 Unmatched %c
51 Missing '%c'
52 Unmatched '%c'
53 Out of memory
54 Can't make pipe
55 %s: %s
@ -93,7 +93,7 @@ $set 1
90 Bad substitute
91 No previous left hand side
92 Right hand side too long
93 Bad ! modifier: %c
93 Bad ! modifier: '%c'
94 Modifier failed
95 Substitution buffer overflow
96 Bad ! arg selector
@ -118,7 +118,7 @@ $set 1
115 Out of termcap string space
116 Usage: settc %s [yes|no]
117 Unknown capability `%s'
118 Unknown termcap parameter `%%%c'
118 Unknown termcap parameter '%%%c'
119 Too many arguments for `%s' (%d)
120 `%s' requires %d arguments
121 Usage: echotc [-v|-s] [<capability> [<args>]]
@ -137,4 +137,4 @@ $set 1
134 Usage: unlimit [-fh] [limits]
135 $%S is read-only
136 No such job
137 Unknown colorls variable `%c%c'
137 Unknown colorls variable '%c%c'

View File

@ -1,4 +1,4 @@
$ $tcsh: set20,v 1.3 2006/03/02 18:46:45 christos Exp $
$ $tcsh: set20,v 1.4 2015/08/13 08:54:04 christos Exp $
$ tc.bind.c
$set 20
1 Invalid key name `%S'\n
@ -19,7 +19,7 @@ $set 20
16 -c interpret COMMAND as a builtin or external command\n
17 -v bind all keys to vi bindings\n
18 -e bind all keys to emacs bindings\n
19 -d bind all keys to default editor's bindings\n
19 -d bind all keys to default editor's bindings (%s)\n
20 -l list editor commands with descriptions\n
21 -r remove KEY's binding\n
22 -k interpret KEY as a symbolic arrow-key name\n

View File

@ -1,4 +1,4 @@
$ $tcsh: set9,v 1.3 2006/03/02 18:46:45 christos Exp $
$ $tcsh: set9,v 1.4 2015/05/26 17:38:25 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 no input
8 Something must follow: %c\n
8 Something must follow: '%c'\n
9 Octal constant does not fit in a char.\n

View File

@ -1,4 +1,4 @@
# $tcsh: Makefile.in,v 1.13 2012/01/05 16:54:25 christos Exp $
# $tcsh: Makefile.in,v 1.16 2014/07/23 18:18:07 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
@ -19,7 +19,7 @@ all: ${CATALOGS}
INSTALLED+=${localedir}/C/LC_MESSAGES/tcsh.cat
${localedir}/C/LC_MESSAGES/tcsh.cat: C.cat
mkdir -p $(@D)
$(INSTALL) $< $@
$(INSTALL) $> $^ $@
C.cat: ${srcdir}/C/charset ${srcdir}/C/*set[0-9]*
@${CATGEN} $(GENCAT) $@ $^ $>
@ -27,7 +27,7 @@ C.cat: ${srcdir}/C/charset ${srcdir}/C/*set[0-9]*
INSTALLED+=${localedir}/et/LC_MESSAGES/tcsh.cat
${localedir}/et/LC_MESSAGES/tcsh.cat: et.cat
mkdir -p $(@D)
$(INSTALL) $< $@
$(INSTALL) $> $^ $@
et.cat: ${srcdir}/et/charset ${srcdir}/et/*set[0-9]*
@${CATGEN} $(GENCAT) $@ $^ $>
@ -35,7 +35,7 @@ et.cat: ${srcdir}/et/charset ${srcdir}/et/*set[0-9]*
INSTALLED+=${localedir}/fi/LC_MESSAGES/tcsh.cat
${localedir}/fi/LC_MESSAGES/tcsh.cat: finnish.cat
mkdir -p $(@D)
$(INSTALL) $< $@
$(INSTALL) $> $^ $@
finnish.cat: ${srcdir}/finnish/charset ${srcdir}/finnish/*set[0-9]*
@${CATGEN} $(GENCAT) $@ $^ $>
@ -43,7 +43,7 @@ finnish.cat: ${srcdir}/finnish/charset ${srcdir}/finnish/*set[0-9]*
INSTALLED+=${localedir}/fr/LC_MESSAGES/tcsh.cat
${localedir}/fr/LC_MESSAGES/tcsh.cat: french.cat
mkdir -p $(@D)
$(INSTALL) $< $@
$(INSTALL) $> $^ $@
french.cat: ${srcdir}/french/charset ${srcdir}/french/*set[0-9]*
@${CATGEN} $(GENCAT) $@ $^ $>
@ -51,7 +51,7 @@ french.cat: ${srcdir}/french/charset ${srcdir}/french/*set[0-9]*
INSTALLED+=${localedir}/de/LC_MESSAGES/tcsh.cat
${localedir}/de/LC_MESSAGES/tcsh.cat: german.cat
mkdir -p $(@D)
$(INSTALL) $< $@
$(INSTALL) $> $^ $@
german.cat: ${srcdir}/german/charset ${srcdir}/german/*set[0-9]*
@${CATGEN} $(GENCAT) $@ $^ $>
@ -59,7 +59,7 @@ german.cat: ${srcdir}/german/charset ${srcdir}/german/*set[0-9]*
INSTALLED+=${localedir}/gr/LC_MESSAGES/tcsh.cat
${localedir}/gr/LC_MESSAGES/tcsh.cat: greek.cat
mkdir -p $(@D)
$(INSTALL) $< $@
$(INSTALL) $> $^ $@
greek.cat: ${srcdir}/greek/charset ${srcdir}/greek/*set[0-9]*
@${CATGEN} $(GENCAT) $@ $^ $>
@ -67,7 +67,7 @@ greek.cat: ${srcdir}/greek/charset ${srcdir}/greek/*set[0-9]*
INSTALLED+=${localedir}/it/LC_MESSAGES/tcsh.cat
${localedir}/it/LC_MESSAGES/tcsh.cat: italian.cat
mkdir -p $(@D)
$(INSTALL) $< $@
$(INSTALL) $> $^ $@
italian.cat: ${srcdir}/italian/charset ${srcdir}/italian/*set[0-9]*
@${CATGEN} $(GENCAT) $@ $^ $>
@ -75,7 +75,7 @@ italian.cat: ${srcdir}/italian/charset ${srcdir}/italian/*set[0-9]*
INSTALLED+=${localedir}/ja/LC_MESSAGES/tcsh.cat
${localedir}/ja/LC_MESSAGES/tcsh.cat: ja.cat
mkdir -p $(@D)
$(INSTALL) $< $@
$(INSTALL) $> $^ $@
ja.cat: ${srcdir}/ja/charset ${srcdir}/ja/*set[0-9]*
@${CATGEN} $(GENCAT) $@ $^ $>
@ -83,7 +83,7 @@ ja.cat: ${srcdir}/ja/charset ${srcdir}/ja/*set[0-9]*
INSTALLED+=${localedir}/pl/LC_MESSAGES/tcsh.cat
${localedir}/pl/LC_MESSAGES/tcsh.cat: pl.cat
mkdir -p $(@D)
$(INSTALL) $< $@
$(INSTALL) $> $^ $@
pl.cat: ${srcdir}/pl/charset ${srcdir}/pl/*set[0-9]*
@${CATGEN} $(GENCAT) $@ $^ $>
@ -91,7 +91,7 @@ pl.cat: ${srcdir}/pl/charset ${srcdir}/pl/*set[0-9]*
INSTALLED+=${localedir}/ru/LC_MESSAGES/tcsh.cat
${localedir}/ru/LC_MESSAGES/tcsh.cat: russian.cat
mkdir -p $(@D)
$(INSTALL) $< $@
$(INSTALL) $> $^ $@
russian.cat: ${srcdir}/russian/charset ${srcdir}/russian/*set[0-9]*
@${CATGEN} $(GENCAT) $@ $^ $>
@ -99,15 +99,15 @@ russian.cat: ${srcdir}/russian/charset ${srcdir}/russian/*set[0-9]*
INSTALLED+=${localedir}/es/LC_MESSAGES/tcsh.cat
${localedir}/es/LC_MESSAGES/tcsh.cat: spanish.cat
mkdir -p $(@D)
$(INSTALL) $< $@
$(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
INSTALLED+=${localedir}/ru_UA/LC_MESSAGES/tcsh.cat
${localedir}/ru_UA/LC_MESSAGES/tcsh.cat: ukrainian.cat
mkdir -p $(@D)
$(INSTALL) $< $@
$(INSTALL) $> $^ $@
ukrainian.cat: ${srcdir}/ukrainian/charset ${srcdir}/ukrainian/*set[0-9]*
@${CATGEN} $(GENCAT) $@ $^ $>

View File

@ -3,10 +3,18 @@
TMP=/tmp/catgen.$$
trap "rm -f $TMP" 0 1 2 3 15
sortit() {
awk '/^\$set/ {print $2, FILENAME}' "$@" | sort -n | cut -d ' ' -f 2
}
GENCAT="$1"
shift
OUT="$1"
shift
cat "$@" > "$TMP"
CHARSET="$1"
shift
cat "${CHARSET}" $(sortit "$@") > "$TMP"
echo "$(basename "$OUT" .cat)"
"${GENCAT}" "$OUT" "$TMP"
exit 0

View File

@ -1,4 +1,4 @@
$ $tcsh: set1,v 1.4 2011/02/04 18:19:33 christos Exp $
$ $tcsh: set1,v 1.5 2015/05/26 17:38:25 christos Exp $
$ Error messages
$set 1
1 Süntaksi viga
@ -8,7 +8,7 @@ $set 1
5 $0 jaoks pole faili
6 Mittetäielik [] muutja
7 $ laiendus peab lõppema enne ]
8 Halb : täiendaja $ (%c)
8 Halb : täiendaja $ '%c'
9 Viga indeksis
10 Vigane number
11 Sõnad on otsas
@ -51,8 +51,8 @@ $set 1
48 Pole while/foreach sees
49 Protsessid on otsas
50 Ei leia
51 Puuduv %c
52 Ei leia sümbolit %c
51 Puuduv '%c'
52 Ei leia sümbolit '%c'
53 Mälu on otsas
54 Toru ei saa luua
55 %s: %s
@ -93,7 +93,7 @@ $set 1
90 Vigane asendamine
91 Eelmist vasakut poolt pole
92 Parem pool on liiga pikk
93 Vigane ! modifikaator: %c
93 Vigane ! modifikaator: '%c'
94 Modifikaator ebaõnnestus
95 Asenduse puhvri ületäitumine
96 Vigane ! argumendi valik
@ -118,7 +118,7 @@ $set 1
115 Termcap sõne on liiga pikk
116 Kasuta: settc %s [yes|no]
117 Tundmatu omadus `%s'
118 Tundmatu termcap parameeter `%%%c'
118 Tundmatu termcap parameeter '%%%c'
119 `%s' jaoks on liiga palju argumente (%d)
120 `%s' nõuab %d argumenti
121 Kasuta: echotc [-v|-s] [<omadus> [<argumendid>]]
@ -137,4 +137,4 @@ $set 1
134 Kasuta: unlimit [-fh] [limiidid]
135 $%S on ainult lugemiseks
136 Pole sellist tööd
137 Tundmatu colorls muutuja `%c%c'
137 Tundmatu colorls muutuja '%c%c'

View File

@ -1,4 +1,4 @@
$ $tcsh: set20,v 1.3 2011/02/04 18:19:33 christos Exp $
$ $tcsh: set20,v 1.4 2015/08/13 08:54:04 christos Exp $
$ tc.bind.c
$set 20
1 Vigane klahvi nimi `%S'\n
@ -19,7 +19,7 @@ $set 20
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
19 -d seo kõik klahvid vaikimisi toimeti seostega (%s)\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

View File

@ -1,4 +1,4 @@
$ $tcsh: set9,v 1.3 2011/02/04 18:19:34 christos Exp $
$ $tcsh: set9,v 1.4 2015/05/26 17:38:25 christos Exp $
$ ed.xmap.c
$set 9
1 AddXkey: Null pikkusega laiend-klahv ei ole lubatud.\n
@ -8,5 +8,5 @@ $set 9
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
8 Midagi peab järgnema: '%c'\n
9 kaheksand-konstant ei mahu sümbolisse.\n

View File

@ -1,4 +1,4 @@
$ $tcsh: set1,v 1.4 2011/02/04 18:19:34 christos Exp $
$ $tcsh: set1,v 1.5 2015/05/26 17:38:25 christos Exp $
$ Error messages
$set 1
1 Kielioppivirhe
@ -8,7 +8,7 @@ $set 1
5 Puuttuva tiedosto $0
6 Vajavainen [] muunnos
7 $ -laajennuksen on päätyttävä ennen ']'-merkkiä
8 Virheellinen : -muunnos $ (%c)
8 Virheellinen : -muunnos $ '%c'
9 Indeksivirhe
10 Virheellinen numero
11 Liian vähän sanoja
@ -51,8 +51,8 @@ $set 1
48 Silmukan (while/foreach) ulkopuolella
49 Lisää prosesseja ei voida luoda
50 Ei vastaavuuksia (match)
51 Puuttuva %c
52 Ylimääräinen/pariton %c
51 Puuttuva '%c'
52 Ylimääräinen/pariton '%c'
53 Muisti loppu
54 Putkea ei voida luoda
55 %s: %s
@ -93,7 +93,7 @@ $set 1
90 Virheellinen korvaava merkkijono
91 Edellistä vasemmanpuolista merkkijonoa ei ole
92 Oikeanpuolinen merkkijono on liian pitkä
93 Virheellinen ! -muunnos: %c
93 Virheellinen ! -muunnos: '%c'
94 Muunnos epäonnistui
95 Korvauspuskurin ylivuoto
96 Virheellinen ! argumenttivalitsin
@ -118,7 +118,7 @@ $set 1
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'
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>]]
@ -137,4 +137,4 @@ $set 1
134 Käyttö: unlimit [-fh] [rajoitteet (limits)]
135 Muuttujalle $%S ei voida asettaa arvoa
136 Viitattua työtä ei ole
137 Tuntematon colorls-muuttuja `%c%c'
137 Tuntematon colorls-muuttuja '%c%c'

View File

@ -1,4 +1,4 @@
$ $tcsh: set20,v 1.4 2011/02/04 18:19:34 christos Exp $
$ $tcsh: set20,v 1.5 2015/08/13 08:54:04 christos Exp $
$ tc.bind.c
$set 20
1 Invalid key name `%S'\n
@ -19,7 +19,7 @@ $set 20
16 -c interpret COMMAND as a builtin or external command\n
17 -v bind all keys to vi bindings\n
18 -e bind all keys to emacs bindings\n
19 -d bind all keys to default editor's bindings\n
19 -d bind all keys to default editor's bindings (%s)\n
20 -l list editor commands with descriptions\n
21 -r remove KEY's binding\n
22 -k interpret KEY as a symbolic arrow-key name\n

View File

@ -1,4 +1,4 @@
$ $tcsh: set3,v 1.4 2011/02/04 18:19:34 christos Exp $
$ $tcsh: set3,v 1.5 2015/09/01 14:08:28 kim Exp $
$ Editor function descriptions
$set 3
1 Siirry taaksepäin yksi merkki
@ -114,11 +114,11 @@ $set 3
111 Vi: peruuta muutos
112 Vi: siirry rivin alkuun
113 Suorita 'which' tälle komennolle
114 Liimaa/lisää leikkauspuskurin sisältö kursorin paikalle
114 Liitä 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
118 (WIN32 only) Convert each '/' in next word to '\\\\'
119 (WIN32 only) Convert each '/' in previous word to '\\\\'
120 (WIN32 only) Page visible console window up
121 (WIN32 only) Page visible console window down
116 (Vain WIN32) Kopioi leikkauspuskuri leikepöydälle
117 (Vain WIN32) Liitä leikepöydän sisältö kursorin paikalle
118 (Vain WIN32) Muuta jokainen '/' seuraavassa sanassa merkkijonoksi '\\\\'
119 (Vain WIN32) Muuta jokainen '/' edellisessä sanassa merkkijonoksi '\\\\'
120 (Vain WIN32) Näytä konsoli-ikkunan edellinen sivu
121 (Vain WIN32) Näytä konsoli-ikkunan seuraava sivu

View File

@ -1,12 +1,12 @@
$ $tcsh: set9,v 1.3 2011/02/04 18:19:34 christos Exp $
$ $tcsh: set9,v 1.5 2015/09/01 14:08:28 kim Exp $
$ ed.xmap.c
$set 9
1 AddXkey: Null extended-key not allowed.\n
1 AddXkey: Tyhjää laajennettua näppäintä ei sallita.\n
2 AddXkey: sequence-lead-in command not allowed\n
3 DeleteXkey: Null extended-key not allowed.\n
3 DeleteXkey: Tyhjää laajennettua näppäintä ei sallita.\n
4 Sitomaton laajennettu näppäin "%S"\n
5 Jotkin laajennetut näppäimet ovat liian pitkiä sisäiseen tulostuspuskurille
5 Jotkin laajennetut näppäimet ovat liian pitkiä sisäiselle tulostuspuskurille
6 Enumerate: VIKA!! Välitetty null-osoitin\n!
7 ei syötettä
8 Jotain on seurattava: %c\n
8 Jotain on seurattava: '%c'\n
9 Oktaalivakio ei mahdu char-tyypin muuttujaan.\n

View File

@ -1,4 +1,4 @@
$ $tcsh: set1,v 1.5 2011/02/04 18:19:35 christos Exp $
$ $tcsh: set1,v 1.6 2015/05/26 17:38:25 christos Exp $
$ Messages d 'erreur
$set 1
1 Erreur de syntaxe
@ -8,7 +8,7 @@ $set 1
5 Pas de fichier pour $0
6 Modificateur [] incomplet
7 $ l'expansion doit se terminer avant ]
8 Mauvais : modificateur dans $ (%c)
8 Mauvais : modificateur dans $ '%c'
9 Erreur d'indice
10 Numéro mal formé
11 Plus de mots
@ -51,8 +51,8 @@ $set 1
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
51 '%c' manquant
52 '%c' sans correspondance
53 Mémoire insuffisante
54 Impossible de créer un tube
55 %s: %s
@ -93,7 +93,7 @@ $set 1
90 Remplacement incorrect
91 Pas de partie gauche précédente
92 Partie droite trop longue
93 Modificateur ! incorrect: %c
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
@ -118,7 +118,7 @@ $set 1
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'
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>]]
@ -137,4 +137,4 @@ $set 1
134 Syntaxe: unlimit [-fh] [limites]
135 $%S est en lecture seule
136 Pas de travail de ce type
137 Unknown colorls variable `%c%c'
137 Unknown colorls variable '%c%c'

View File

@ -1,4 +1,4 @@
$ $tcsh: set20,v 1.3 2011/02/04 18:19:35 christos Exp $
$ $tcsh: set20,v 1.4 2015/08/13 08:54:04 christos Exp $
$ tc.bind.c
$set 20
1 Nom de touche incorrect `%S'\n
@ -19,7 +19,7 @@ $set 20
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
19 -d redéfinit toutes les touches pour de l'éditeur par defaut (%s)\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

View File

@ -1,4 +1,4 @@
$ $tcsh: set9,v 1.3 2011/02/04 18:19:36 christos Exp $
$ $tcsh: set9,v 1.4 2015/05/26 17:38:25 christos Exp $
$ ed.xmap.c
$set 9
1 AddXkey: touche d'extension nulle pas autorisé.\n
@ -8,5 +8,5 @@ $set 9
5 Certaines touches d'extension trop longues pour tampon d'impression interne
6 Enumerate: BUG!! Pointeur Null passé!\n
7 pas d'entrée
8 Quelque chose doit suivre: %c\n
8 Quelque chose doit suivre: '%c'\n
9 Une constante Octale ne peut pas tenir dans un caractère.\n

View File

@ -1,4 +1,4 @@
$ $tcsh: set1,v 1.7 2011/02/04 18:19:36 christos Exp $
$ $tcsh: set1,v 1.8 2015/05/26 17:38:25 christos Exp $
$ Error messages
$set 1
1 Syntaxfehler
@ -8,7 +8,7 @@ $set 1
5 Keine Datei für $0
6 Unvollständiger [] Modifizierer
7 $ Ausweitung muß vor ] enden
8 Falscher : Modifizierer in $ (%c)
8 Falscher : Modifizierer in $ '%c'
9 Indexfehler
10 Falsche Nummer
11 Keine Worte mehr
@ -51,8 +51,8 @@ $set 1
48 Nicht in while/foreach
49 Keine Prozesse mehr
50 Kein Treffer
51 Fehlendes %c
52 Überflüssiges %c
51 Fehlendes '%c'
52 Überflüssiges '%c'
53 Kein Speicher mehr
54 Kann keine Pipe erzeugen
55 %s: %s
@ -93,7 +93,7 @@ $set 1
90 Falsche Ersetzung
91 Keine vorhergehende linke Seite
92 Rechte Seite zu lang
93 Falscher ! Modifizierer: %c
93 Falscher ! Modifizierer: '%c'
94 Modifizierer fehlgeschlagen
95 Überlauf des Ersetzungspuffers
96 Falscher ! Argumentbezeichner
@ -118,7 +118,7 @@ $set 1
115 Kein Platz mehr für Termcap-Eintrag
116 Benutzung: settc %s [yes|no]
117 Unbekannte Fähigkeit `%s'
118 Unbekannter Termcap-Parameter `%%%c'
118 Unbekannter Termcap-Parameter '%%%c'
119 Zu viele Argumente für `%s' (%d)
120 `%s' erfordert %d Argumente
121 Benutzung: echotc [-v|-s] [<Fähigkeit> [<Argumente>]]
@ -137,4 +137,4 @@ $set 1
134 Benutzung: unlimit [-fh] [Grenzen]
135 $%S ist nur lesbar
136 Kein solcher Job
137 Unknown colorls variable `%c%c'
137 Unknown colorls variable '%c%c'

View File

@ -1,4 +1,4 @@
$ $tcsh: set20,v 1.4 2011/02/04 18:19:36 christos Exp $
$ $tcsh: set20,v 1.5 2015/08/13 08:54:04 christos Exp $
$ tc.bind.c
$set 20
1 Ungültiger Tastenname `%S'\n
@ -19,7 +19,7 @@ $set 20
16 -c belege einen Unix-Befehl anstelle eines Befehls\n
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
19 -d initialisiere Belegungen mit Standard-Belegungen (%s)\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

View File

@ -1,4 +1,4 @@
$ $tcsh: set9,v 1.5 2011/02/04 18:19:37 christos Exp $
$ $tcsh: set9,v 1.6 2015/05/26 17:38:25 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
8 Es muß noch etwas folgen: '%c'\n
9 Oktal-Konstante paßt nicht in ein Zeichen.\n

View File

@ -1,4 +1,4 @@
$ $tcsh: set1,v 1.5 2011/02/04 18:19:37 christos Exp $
$ $tcsh: set1,v 1.6 2015/05/26 17:38:25 christos Exp $
$ Error messages
$set 1
1 Λάθος σύνταξη
@ -8,7 +8,7 @@ $set 1
5 Δεν υπάρχει αρχείο γιά το $0
6 Ελλιπής μετατροπέας []
7 Η ανάπτυξη του $ πρέπει να τελειώνει πριν το ]
8 Λάθος μετατροπέας : στο $ (%c)
8 Λάθος μετατροπέας : στο $ '%c'
9 Λάθος όρισμα
10 Κακοσχηματισμένος αριθμός
11 Δεν υπάρχουν άλλες λέξεις
@ -51,8 +51,8 @@ $set 1
48 Εκτός while/foreach
49 Δεν υπάρχουν άλλες διεργασίες
50 Δεν υπάρχει ταίριασμα
51 Απόν %c
52 Μη ταιριασμένο %c
51 Απόν '%c'
52 Μη ταιριασμένο '%c'
53 Δεν υπάρχει άλλη μνήμη
54 Δεν μπορώ να δημιουργήσω pipe
55 %s: %s
@ -93,7 +93,7 @@ $set 1
90 Λάθος αντικατάσταση
91 Δεν υπάρχει προηγούμενο αριστερό μέρος
92 Tο δεξί μέρος είναι πολύ μεγάλο
93 Κακός μετατροπέας !: %c
93 Κακός μετατροπέας !: '%c'
94 Ο μετατροπέας απέτυχε
95 Υπερχείλιση του buffer αντικαταστάσεων
96 Λάθος επιλογέας ορίσματος !
@ -118,7 +118,7 @@ $set 1
115 Δεν υπάρχει χώρος γιά το termcap string
116 Χρήση: settc %s [yes|no]
117 Αγνωστη ικανότητα `%s'
118 Αγνωστη παράμετρος του termcap `%%%c'
118 Αγνωστη παράμετρος του termcap '%%%c'
119 Υπερβολικά πολλά ορίσματα γιά το `%s' (%d)
120 Tο `%s' απαιτεί %d ορίσματα
121 Χρήση: echotc [-v|-s] [<ικανότητα> [<ορίσματα>]]
@ -137,4 +137,4 @@ $set 1
134 Χρήση: unlimit [-fh] [όρια]
135 Tο $%S είναι μόνο γιά διάβασμα
136 Δεν υπάρχει τέτοια εργασία
137 Unknown colorls variable `%c%c'
137 Unknown colorls variable '%c%c'

View File

@ -1,4 +1,4 @@
$ $tcsh: set20,v 1.5 2011/02/04 18:19:37 christos Exp $
$ $tcsh: set20,v 1.6 2015/08/13 08:54:04 christos Exp $
$ tc.bind.c
$set 20
1 Ακυρο όνομα πλήκτρου `%S'\n
@ -19,7 +19,7 @@ $set 20
16 -c ερμηνεία ΕΝΤΟΛΗς ως εσωτερικής ή εξωτερικής εντολής\n
17 -v συσχέτιση όλων των πλήκτρων σε αντιστοιχία vi\n
18 -e συσχέτιση όλων των πλήκτρων σε αντιστοιχία emacs\n
19 -d συσχέτιση όλων των πλήκτρων στην default του editor\n
19 -d συσχέτιση όλων των πλήκτρων στην default του editor (%s)\n
20 -l εμφάνιση των εντολών του editor με περιγραφές\n
21 -r κατάργηση συσχέτισης του ΠΛΗΚΤΡΟυ\n
22 -k ερμηνεία ΠΛΗΚΤΡΟυ ως συμβολικό όνομα πλήκτρου βέλους\n

View File

@ -1,4 +1,4 @@
$ $tcsh: set9,v 1.4 2011/02/04 18:19:38 christos Exp $
$ $tcsh: set9,v 1.5 2015/05/26 17:38:25 christos Exp $
$ ed.xmap.c
$set 9
1 AddXkey: δεν επιτρέπεται μηδενικό extended-key.\n
@ -8,5 +8,5 @@ $set 9
5 Μερικά extended keys είναι πολύ μεγάλα γιά τον εσωτερικό print buffer
6 Enumerate: BUG!! Πέρασμα μηδενικού pointer!\n
7 δεν υπάρχει είσοδος
8 Κάτι πρέπει να ακολουθεί: %c\n
8 Κάτι πρέπει να ακολουθεί: '%c'\n
9 Η οκταδική σταθερά δε χωράει στο μέγεθος ενός char.\n

View File

@ -1,4 +1,4 @@
$ $tcsh: set1,v 1.3 2011/02/04 18:19:38 christos Exp $
$ $tcsh: set1,v 1.4 2015/05/26 17:38:25 christos Exp $
$ Error messages
$set 1
1 Errore di Sintassi
@ -8,7 +8,7 @@ $set 1
5 Nessun file per $0
6 Modificatore [] incompleto
7 L'espansione $ deve terminare prima di ]
8 Modificatore sbagliato in $ (%c)
8 Modificatore sbagliato in $ '%c'
9 Errore di indice
10 Numero non corretto
11 Sono senza parole
@ -51,8 +51,8 @@ $set 1
48 Non in un while/foreach
49 Ho finito i processi
50 Corrispondenza non esistente
51 %c mancante
52 %c non corrispondente
51 '%c' mancante
52 '%c' non corrispondente
53 Memoria esaurita
54 Non posso creare una pipe
55 %s: %s
@ -93,7 +93,7 @@ $set 1
90 Sostituzione sbagliata
91 Non esiste il precedente lato sinistro
92 Lato destro troppo lungo
93 Modificatore ! errato: %c
93 Modificatore ! errato: '%c'
94 Il modificatore non ha funzionato
95 Overflow di buffer nella sostituzione
96 Errato selettore ! di argomento
@ -118,7 +118,7 @@ $set 1
115 Al di fuori dello spazio stringa del termcap
116 Utilizzo: settc %s [yes|no]
117 Capacità `%s' sconosciuta
118 Parametro del termcap `%%%c' sconosciuto
118 Parametro del termcap '%%%c' sconosciuto
119 Troppi argomenti per `%s' (%d)
120 `%s' richiede %d argomenti
121 Utilizzo: echotc [-v|-s] [<capacità> [<argomenti>]]
@ -137,4 +137,4 @@ $set 1
134 Utilizzo: unlimit [-fh] [limiti]
135 $%S è a sola lettura
136 Non esiste il lavoro
137 Variabile `%c%c colorls' sconosciuta
137 Variabile '%c%c colorls' sconosciuta

View File

@ -1,4 +1,4 @@
$ $tcsh: set20,v 1.3 2011/02/04 18:19:39 christos Exp $
$ $tcsh: set20,v 1.4 2015/08/13 08:54:04 christos Exp $
$ tc.bind.c
$set 20
1 Nome di tasto non corretto `%S'\n
@ -19,7 +19,7 @@ $set 20
16 -c interpreta COMANDO come un comando interno o esterno\n
17 -v definisce tutti i tasti alla 'vi'\n
18 -e definisce tutti i tasti alla 'emacs'\n
19 -d definisce tutti i tasti in base all'editor di default\n
19 -d definisce tutti i tasti in base all'editor di default (%s)\n
20 -l elenca i comandi di modifica testo con relativa descrizione\n
21 -r rimuove la definizione per TASTO\n
22 -k interpreta TASTO come un nome simbolico di tasto freccia\n

View File

@ -1,4 +1,4 @@
$ $tcsh: set9,v 1.2 2006/03/02 18:46:47 christos Exp $
$ $tcsh: set9,v 1.3 2015/05/26 17:38:25 christos Exp $
$ ed.xmap.c
$set 9
1 AddXkey: tasto esteso nullo non ammesso.\n
@ -8,5 +8,5 @@ $set 9
5 Alcuni tasti estesi sono troppo grandi per il buffer interno di stampa
6 Enumerate: BACO!! ho ricevuto un puntatore nullo\n!
7 niente in ingresso
8 Qualcosa deve seguire: %c\n
8 Qualcosa deve seguire: '%c'\n
9 Costante ottale non adeguata per un char.\n

View File

@ -1,4 +1,4 @@
$ $tcsh: set1,v 1.6 2011/02/04 18:19:39 christos Exp $
$ $tcsh: set1,v 1.7 2015/05/26 17:38:25 christos Exp $
$ Error messages
$set 1
1 文法が間違っています
@ -8,7 +8,7 @@ $set 1
5 $0 用のファイルがありません
6 [] 修飾子が不完全です
7 $ 展開は ] の前に終わる必要があります
8 $ 内の : 修飾子が間違っています (%c)
8 $ 内の : 修飾子が間違っています '%c'
9 配列の添え字が間違っています
10 番号が正しい書式になっていません
11 文字列はもうありません
@ -51,8 +51,8 @@ $set 1
48 while/foreachの中ではありません
49 プロセスを生成できません
50 照合パターンに合いません
51 %c が欠けている箇所があります
52 %c が対応しません
51 '%c' が欠けている箇所があります
52 '%c' が対応しません
53 メモリが不足しています
54 パイプを作れません
55 %s: %s
@ -93,7 +93,7 @@ $set 1
90 不正な置換です
91 直前の左サイドがありません
92 右サイドが長過ぎます
93 間違った ! 修飾子です: %c
93 間違った ! 修飾子です: '%c'
94 修飾子の失敗です
95 置換バッファがオーバーフローしました
96 間違った ! 引数のセレクターです
@ -118,7 +118,7 @@ $set 1
115 termcapの文字列領域不足です
116 形式: settc %s [yes|no]
117 知らないcapability `%s'
118 知らないtermcapパラメタ `%%%c'
118 知らないtermcapパラメタ '%%%c'
119 `%s' に対する引数が多過ぎます (%d)
120 `%s' には %d 引数が必要です
121 形式: echotc [-v|-s] [<capability> [<args>]]
@ -137,4 +137,4 @@ $set 1
134 形式: unlimit [-fh] [limits]
135 $%S は読取専用です
136 jobが見つかりません
137 不明のcolorls変数です `%c%c'
137 不明のcolorls変数です '%c%c'

View File

@ -8,7 +8,7 @@ $set 1
5 Brak pliku dla $0
6 Niekompletny modyfikator []
7 ekspansja $ musi zakończyć się przed ]
8 Błąd : modyfikator w $ (%c)
8 Błąd : modyfikator w $ '%c'
9 Błąd subskrypcji
10 Źle stworzona liczba
11 Brak słów
@ -51,8 +51,8 @@ $set 1
48 Nie w while/foreach
49 Brak innych procesów
50 Brak pasujących
51 Brakuje %c
52 Niedopasowany %c
51 Brakuje '%c'
52 Niedopasowany '%c'
53 Brak pamięci
54 Nie mogę stworzyć potoku
55 %s: %s
@ -93,7 +93,7 @@ $set 1
90 Złe dopasowanie
91 No previous left hand side
92 Right hand side too long
93 Zły modyfikator ! : %c
93 Zły modyfikator ! : '%c'
94 Modyfikator zawiódł
95 Przepełnienie bufora dopasowania
96 Zły ! selektor argumentów
@ -118,7 +118,7 @@ $set 1
115 Brak miejsc w łańcuchu termcap
116 Użycie: settc %s [yes|no]
117 Nieznana zdolność `%s'
118 Nieznany parametr termcap `%%%c'
118 Nieznany parametr termcap '%%%c'
119 Zbyt wiele argumentów dla `%s' (%d)
120 `%s' requires %d arguments
121 Użycie: echotc [-v|-s] [<zdolność> [<argumenty>]]
@ -137,4 +137,4 @@ $set 1
134 Użycie: unlimit [-fh] [limity]
135 $%S jest tylko-do-odczytu
136 Brak takiej pracy
137 Nieznana zmienna colorls `%c%c'
137 Nieznana zmienna colorls '%c%c'

View File

@ -19,7 +19,7 @@ $set 20
16 -c interpret COMMAND as a builtin or external command\n
17 -v bind all keys to vi bindings\n
18 -e bind all keys to emacs bindings\n
19 -d bind all keys to default editor's bindings\n
19 -d bind all keys to default editor's bindings (%s)\n
20 -l list editor commands with descriptions\n
21 -r remove KEY's binding\n
22 -k interpret KEY as a symbolic arrow-key name\n

View File

@ -8,5 +8,5 @@ $set 9
5 Some extended keys too long for internal print buffer
6 Enumerate: BUG!! Null ptr passed\n!
7 no input
8 Something must follow: %c\n
8 Something must follow: '%c'\n
9 Octal constant does not fit in a char.\n

View File

@ -1,4 +1,4 @@
$ $tcsh: set1,v 1.5 2011/02/04 18:19:41 christos Exp $
$ $tcsh: set1,v 1.6 2015/05/26 17:38:25 christos Exp $
$ Error messages
$set 1
1 Синтаксическая ошибка
@ -8,7 +8,7 @@ $set 1
5 Нет файла для $0
6 Незавершённый модификатор []
7 $ расширение должно оканчиваться перед ]
8 Плохой модификатор в $ (%c)
8 Плохой модификатор в $ '%c'
9 Ошибка подпрограммы
10 Неправильно сформированное число
11 Нет больше слов
@ -51,8 +51,8 @@ $set 1
48 Не внутри while/foreach
49 Нет больше процессов
50 Нет соответствий
51 Отсутствует %c
52 Нет соответствия для %c
51 Отсутствует '%c'
52 Нет соответствия для '%c'
53 Нет памяти
54 Не могу создать неименованный канал
55 %s: %s
@ -93,7 +93,7 @@ $set 1
90 Плохая подстановка
91 Отсутствует предыдущая левая сторона
92 Правая сторона слишком длинная
93 Плохой модификатор !: %c
93 Плохой модификатор !: '%c'
94 Ошибка модификатора
95 Переполнение буфера подстановки
96 Плохой селектор для аргумента !
@ -118,7 +118,7 @@ $set 1
115 Переполнение строки termcap
116 Использование: settc %s [yes|no]
117 Неизвестная capability `%s'
118 Неизвестный параметр termcap `%%%c'
118 Неизвестный параметр termcap '%%%c'
119 Слишком много аргументов для `%s' (%d)
120 `%s' требует %d аргументов
121 Использование: echotc [-v|-s] [<capability> [<аргументы>]]
@ -137,4 +137,4 @@ $set 1
134 Использование: unlimit [-fh] [пределы]
135 $%S только для чтения
136 Нет такого задания
137 Неизвестное значение `%c%c' переменной colorls
137 Неизвестное значение '%c%c' переменной colorls

View File

@ -1,4 +1,4 @@
$ $tcsh: set20,v 1.6 2011/02/04 18:19:42 christos Exp $
$ $tcsh: set20,v 1.7 2015/08/13 08:54:04 christos Exp $
$ tc.bind.c
$set 20
1 Неверное имя клавиши `%S'\n
@ -19,7 +19,7 @@ $set 20
16 -c воспринимать КОМАНДу как встроенную или внешнюю команду\n
17 -v привязать все клавиши в соответствии с редактором vi\n
18 -e привязать все клавиши в соответствии с редактором emacs\n
19 -d привязать все клавиши в соответствии с редактором по умолчанию\n
19 -d привязать все клавиши в соответствии с редактором по умолчанию (%s)\n
20 -l вывести список команд редактора и их описания\n
21 -r удалить привязку КЛАВИШи\n
22 -k воспринимать КЛАВИШу как явное название управляющей клавиши\n

View File

@ -1,4 +1,4 @@
$ $tcsh: set9,v 1.4 2011/02/04 18:19:42 christos Exp $
$ $tcsh: set9,v 1.5 2015/05/26 17:38:25 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!! Передан нулевой указатель!\n
7 нет вводимых данных
8 Something must follow: %c\n
8 Something must follow: '%c'\n
9 Восьмеричная константа не умещается в char.\n

View File

@ -1,4 +1,4 @@
$ $tcsh: set1,v 1.4 2011/02/04 18:19:42 christos Exp $
$ $tcsh: set1,v 1.5 2015/05/26 17:38:25 christos Exp $
$ Mensajes de Error
$set 1
1 Error de sintaxis
@ -8,7 +8,7 @@ $set 1
5 No hay fichero para $0
6 Modificador [] incompleto
7 $ expansión debe terminar antes de ]
8 Modificador erróneo : en $ (%c)
8 Modificador erróneo : en $ '%c'
9 Error de índice
10 Número erróneamente formado
11 No hay más palabras
@ -51,8 +51,8 @@ $set 1
48 No se encuentra en bucle while/foreach
49 No hay más procesos
50 No existe correspondencia
51 Falta %c
52 No se ha hallado correspondencia con %c
51 Falta '%c'
52 No se ha hallado correspondencia con '%c'
53 Memoria insuficiente
54 No se puede crear la tubería
55 %s: %s
@ -93,7 +93,7 @@ $set 1
90 Sustituto erróneo
91 No existe `lado izquierdo' previo
92 Valor de asignación demasiado largo
93 Modificador de ! incorrecto: %c
93 Modificador de ! incorrecto: '%c'
94 Error de modificador
95 Desborde el el buffer de sustitución
96 Selector de argumento de ! erróneo
@ -118,7 +118,7 @@ $set 1
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
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>]]
@ -137,4 +137,4 @@ $set 1
134 Uso: unlimit [-fh] [límites]
135 $%S es de sólo-lectura
136 No existe ese trabajo
137 Unknown colorls variable `%c%c'
137 Unknown colorls variable '%c%c'

View File

@ -1,4 +1,4 @@
$ $tcsh: set20,v 1.4 2011/02/04 18:19:43 christos Exp $
$ $tcsh: set20,v 1.5 2015/08/13 08:54:04 christos Exp $
$ tc.bind.c
$set 20
1 Nombre de tecla no válido `%S'\n
@ -19,7 +19,7 @@ $set 20
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
19 -d usa las definiciones del editor por defecto (%s)\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

View File

@ -1,4 +1,4 @@
$ $tcsh: set9,v 1.3 2011/02/04 18:19:43 christos Exp $
$ $tcsh: set9,v 1.4 2015/05/26 17:38:25 christos Exp $
$ ed.xmap.c
$set 9
1 AddXkey: No se permite una tecla extendida nula.\n
@ -8,5 +8,5 @@ $set 9
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
8 Falta algo a continuación: '%c'\n
9 Una constante octal no cabe en un carácter.\n

View File

@ -1,4 +1,4 @@
$ $tcsh: set1,v 1.4 2011/02/04 18:19:44 christos Exp $
$ $tcsh: set1,v 1.5 2015/05/26 17:38:25 christos Exp $
$ Error messages
$set 1
1 Синтаксична помилка
@ -8,7 +8,7 @@ $set 1
5 Немає файлу для $0
6 Неповний модифікатор []
7 Розширення $ має бути перед ]
8 Поганий модифікатор : в $ (%c)
8 Поганий модифікатор : в $ '%c'
9 Помилковий індекс
10 Число погано сформоване
11 Не можна більше слів
@ -51,8 +51,8 @@ $set 1
48 Не у while/foreach
49 Не можна більше процесів
50 Немає співпадань
51 Пропущено %c
52 Відсутній відповідник до %c
51 Пропущено '%c'
52 Відсутній відповідник до '%c'
53 Мало пам'яті
54 Не можу створити канал
55 %s: %s
@ -93,7 +93,7 @@ $set 1
90 Погана підстановка
91 No previous left hand side
92 Right hand side too long
93 Поганий модифікатор !: %c
93 Поганий модифікатор !: '%c'
94 Невдача модифікатора
95 Переповнення буферу підстановки
96 Bad ! arg selector
@ -118,7 +118,7 @@ $set 1
115 Out of termcap string space
116 Використання: settc %s [yes|no]
117 Unknown capability `%s'
118 Невідомий параметр termcap `%%%c'
118 Невідомий параметр termcap '%%%c'
119 Забагато аргументів для `%s' (%d)
120 `%s' вимагає %d аргумент(ів)
121 Використання: echotc [-v|-s] [<capability> [<args>]]
@ -137,4 +137,4 @@ $set 1
134 Використання: unlimit [-fh] [ліміти]
135 $%S лише для читання
136 Немає такої задачі
137 Невідоме значення змінної colorls: `%c%c'
137 Невідоме значення змінної colorls: '%c%c'

View File

@ -1,4 +1,4 @@
$ $tcsh: set20,v 1.4 2011/02/04 18:19:44 christos Exp $
$ $tcsh: set20,v 1.5 2015/08/13 08:54:04 christos Exp $
$ tc.bind.c
$set 20
1 Invalid key name `%S'\n
@ -19,7 +19,7 @@ $set 20
16 -c interpret COMMAND as a builtin or external command\n
17 -v bind all keys to vi bindings\n
18 -e bind all keys to emacs bindings\n
19 -d bind all keys to default editor's bindings\n
19 -d bind all keys to default editor's bindings (%s)\n
20 -l list editor commands with descriptions\n
21 -r remove KEY's binding\n
22 -k interpret KEY as a symbolic arrow-key name\n

View File

@ -1,4 +1,4 @@
$ $tcsh: set9,v 1.4 2011/02/04 18:19:45 christos Exp $
$ $tcsh: set9,v 1.5 2015/05/26 17:38:25 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: ПОМИЛКА!! Null ptr passed\n!
7 no input
8 Something must follow: %c\n
8 Something must follow: '%c'\n
9 Octal constant does not fit in a char.\n

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/patchlevel.h,v 3.180 2012/02/13 16:33:50 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/patchlevel.h,v 3.187 2016/11/24 15:04:52 christos Exp $ */
/*
* patchlevel.h: Our life story.
*/
@ -7,8 +7,8 @@
#define ORIGIN "Astron"
#define REV 6
#define VERS 18
#define PATCHLEVEL 1
#define DATE "2012-02-14"
#define VERS 20
#define PATCHLEVEL 00
#define DATE "2016-11-24"
#endif /* _h_patchlevel */

55
sh.c
View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/sh.c,v 3.174 2011/11/29 18:38:54 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/sh.c,v 3.189 2016/09/12 16:33: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.174 2011/11/29 18:38:54 christos Exp $")
RCSID("$tcsh: sh.c,v 3.189 2016/09/12 16:33:54 christos Exp $")
#include "tc.h"
#include "ed.h"
@ -78,7 +78,8 @@ extern int NLSMapsAreInited;
* ported to Apple Unix (TM) (OREO) 26 -- 29 Jun 1987
*/
jmp_buf_t reslab;
jmp_buf_t reslab IZERO_STRUCT;
struct wordent paraml IZERO_STRUCT;
static const char tcshstr[] = "tcsh";
@ -250,10 +251,11 @@ main(int argc, char **argv)
int osetintr;
struct sigaction oparintr;
(void)memset(&reslab, 0, sizeof(reslab));
#ifdef WINNT_NATIVE
nt_init();
#endif /* WINNT_NATIVE */
(void)memset(&reslab, 0, sizeof(reslab));
#if defined(NLS_CATALOGS) && defined(LC_MESSAGES)
(void) setlocale(LC_MESSAGES, "");
#endif /* NLS_CATALOGS && LC_MESSAGES */
@ -272,6 +274,7 @@ main(int argc, char **argv)
#endif
nlsinit();
initlex(&paraml);
#ifdef MALLOC_TRACE
mal_setstatsfile(fdopen(dmove(xopen("/tmp/tcsh.trace",
@ -343,6 +346,7 @@ main(int argc, char **argv)
# endif
#endif
STR_WORD_CHARS = SAVE(WORD_CHARS);
STR_WORD_CHARS_VI = SAVE(WORD_CHARS_VI);
HIST = '!';
HISTSUB = '^';
@ -355,6 +359,7 @@ main(int argc, char **argv)
/* Default history size to 100 */
setcopy(STRhistory, str2short("100"), VAR_READWRITE);
sethistory(100);
tempv = argv;
ffile = SAVE(tempv[0]);
@ -477,6 +482,9 @@ main(int argc, char **argv)
*/
initdesc();
cdtohome = 1;
setv(STRcdtohome, SAVE(""), VAR_READWRITE);
/*
* Get and set the tty now
*/
@ -493,6 +501,7 @@ main(int argc, char **argv)
}
else
setv(STRtty, cp = SAVE(""), VAR_READWRITE);
/*
* Initialize the shell variables. ARGV and PROMPT are initialized later.
* STATUS is also munged in several places. CHILD is munged when
@ -588,19 +597,22 @@ main(int argc, char **argv)
*/
shlvl(1);
#ifdef __ANDROID__
/* On Android, $HOME either isn't set or set to /data, a R/O location.
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". Eventually
override $HOME so the environment is on the same page. */
if (((tcp = getenv("HOME")) != NULL && strcmp (tcp, "/data") != 0)
|| (tcp = getenv("EXTERNAL_STORAGE")) != NULL) {
cp = quote(SAVE(tcp));
} else
cp = quote(SAVE("/sdcard"));
tsetenv(STRKHOME, cp);
#else
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
@ -797,9 +809,12 @@ main(int argc, char **argv)
#ifdef COLOR_LS_F
if ((tcp = getenv("LS_COLORS")) != NULL)
parseLS_COLORS(str2short(tcp));
if ((tcp = getenv("LSCOLORS")) != NULL)
parseLSCOLORS(str2short(tcp));
#endif /* COLOR_LS_F */
doldol = putn((tcsh_number_t)getpid()); /* For $$ */
mainpid = getpid();
doldol = putn((tcsh_number_t)mainpid); /* For $$ */
#ifdef WINNT_NATIVE
{
char *tmp;
@ -818,7 +833,7 @@ main(int argc, char **argv)
#else /* !WINNT_NATIVE */
#ifdef HAVE_MKSTEMP
{
char *tmpdir = getenv ("TMPDIR");
const char *tmpdir = getenv ("TMPDIR");
if (!tmpdir)
tmpdir = "/tmp";
shtemp = Strspl(SAVE(tmpdir), SAVE("/sh" TMP_TEMPLATE)); /* For << */
@ -1215,14 +1230,14 @@ main(int argc, char **argv)
#ifdef NeXT
/* NeXT 2.0 /usr/etc/rlogind, does not set our process group! */
if (shpgrp == 0) {
if (f != -1 && shpgrp == 0) {
shpgrp = getpid();
(void) setpgid(0, shpgrp);
(void) tcsetpgrp(f, shpgrp);
}
#endif /* NeXT */
#ifdef BSDJOBS /* if we have tty job control */
if (grabpgrp(f, shpgrp) != -1) {
if (f != -1 && grabpgrp(f, shpgrp) != -1) {
/*
* Thanks to Matt Day for the POSIX references, and to
* Paul Close for the SGI clarification.
@ -1904,6 +1919,8 @@ pintr1(int wantnl)
{
(void) Cookedmode();
GettingInput = 0;
if (evalvec)
doneinp = 1;
}
drainoline();
#ifdef HAVE_GETPWENT
@ -2037,6 +2054,7 @@ process(int catch)
*/
if (setintr)
pintr_push_enable(&old_pintr_disabled);
freelex(&paraml);
hadhist = lex(&paraml);
if (setintr)
cleanup_until(&old_pintr_disabled);
@ -2178,6 +2196,7 @@ dosource(Char **t, struct command *c)
cleanup_push(file, xfree);
xfree(f);
t = glob_all_or_error(t);
cleanup_push(t, blk_cleanup);
if ((!srcfile(file, 0, hflg, t)) && (!hflg) && (!bequiet))
stderror(ERR_SYSTEM, file, strerror(errno));
cleanup_until(file);

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/sh.char.h,v 3.36 2010/05/08 00:36:02 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/sh.char.h,v 3.37 2014/05/09 19:22:49 christos Exp $ */
/*
* sh.char.h: Table for spotting special characters quickly
* Makes for very obscure but efficient coding.
@ -167,15 +167,15 @@ extern tcshuc _cmap_lower[], _cmap_upper[];
#define iscmdmeta(c) cmap((c), _CMD)
#ifdef WIDE_STRINGS
#define letter(c) (((c) & QUOTE) ? 0 : \
(iswalpha((tcshuc) (c)) || (c) == '_'))
(iswalpha((c)) || (c) == '_'))
#define alnum(c) (((c) & QUOTE) ? 0 : \
(iswalnum((tcshuc) (c)) || (c) == '_'))
(iswalnum((c)) || (c) == '_'))
#else
#define letter(c) (((Char)(c) & QUOTE) ? 0 : \
((isalpha((tcshuc) (c)) && !(cmap((c), _PUN))) \
((isalpha((c)) && !(cmap((c), _PUN))) \
|| (c) == '_'))
#define alnum(c) (((Char)(c) & QUOTE) ? 0 : \
((isalnum((tcshuc) (c)) && !(cmap((c), _PUN))) \
((isalnum((c)) && !(cmap((c), _PUN))) \
|| (c) == '_'))
#endif

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/sh.decls.h,v 3.62 2011/02/25 23:58:34 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/sh.decls.h,v 3.68 2016/08/01 16:21:09 christos Exp $ */
/*
* sh.decls.h External declarations from sh*.c
*/
@ -78,6 +78,7 @@ extern void loaddirs (Char *);
extern void Dfix (struct command *);
extern Char *Dfix1 (Char *);
extern void heredoc (Char *);
extern Char *randsuf (void);
/*
* sh.err.c
@ -184,6 +185,7 @@ extern void unalias (Char **, struct command *);
extern void wfree (void);
extern void dobuiltins (Char **, struct command *);
extern void reexecute (struct command *);
extern int getYN (const char *);
/*
* sh.glob.c
@ -221,6 +223,7 @@ extern char *fmthist (int, ptr_t);
extern void rechist (Char *, int);
extern void loadhist (Char *, int);
extern void displayHistStats(const char *);
extern void sethistory (int);
/*
* sh.init.c
@ -236,6 +239,7 @@ extern void btell (struct Ain *);
extern void btoeof (void);
extern void copylex (struct wordent *, struct wordent *);
extern Char *domod (Char *, Char);
extern void initlex (struct wordent *);
extern void freelex (struct wordent *);
extern int lex (struct wordent *);
extern void lex_cleanup (void *);
@ -243,6 +247,7 @@ extern void prlex (struct wordent *);
extern eChar readc (int);
extern void settell (void);
extern void unreadc (Char);
extern ssize_t wide_read (int, Char *, size_t, int);
/*
@ -397,6 +402,7 @@ extern void autoset_dspmbyte (const Char *);
#if defined(AUTOSET_KANJI)
extern void autoset_kanji (void);
#endif
extern void update_wordchars (void);
/*
* sh.time.c

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/sh.dir.c,v 3.82 2011/10/16 16:25:05 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/sh.dir.c,v 3.85 2016/04/08 16:10:52 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.82 2011/10/16 16:25:05 christos Exp $")
RCSID("$tcsh: sh.dir.c,v 3.85 2016/04/08 16:10:52 christos Exp $")
/*
* C Shell - directory management
@ -501,7 +501,9 @@ dochngd(Char **v, struct command *c)
cp = (dflag & DIR_OLD) ? varval(STRowd) : *v;
if (cp == NULL) {
if ((cp = varval(STRhome)) == STRNULL || *cp == 0)
if (!cdtohome)
stderror(ERR_NAME | ERR_TOOFEW);
else if ((cp = varval(STRhome)) == STRNULL || *cp == 0)
stderror(ERR_NAME | ERR_NOHOMEDIR);
if (chdir(short2str(cp)) < 0)
stderror(ERR_NAME | ERR_CANTCHANGE);
@ -674,6 +676,7 @@ dfollow(Char *cp, int old)
cleanup_until(cp);
return dgoto(cp);
}
xfree(dp);
}
xfree(buf.s);
}

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/sh.dol.c,v 3.83 2011/01/25 20:10:46 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/sh.dol.c,v 3.87 2014/08/13 23:39:34 amold Exp $ */
/*
* sh.dol.c: Variable substitutions
*/
@ -32,7 +32,7 @@
*/
#include "sh.h"
RCSID("$tcsh: sh.dol.c,v 3.83 2011/01/25 20:10:46 christos Exp $")
RCSID("$tcsh: sh.dol.c,v 3.87 2014/08/13 23:39:34 amold Exp $")
/*
* C shell
@ -825,9 +825,8 @@ setDolp(Char *cp)
(void) Strcpy(np + diff, rhsub);
(void) Strcpy(np + diff + rhlen, dp + lhlen);
dp = np + diff + 1;
xfree(cp);
cp = np;
dp = cp = np;
cp[--len] = '\0';
didmod = 1;
if (diff >= (ssize_t)len)
@ -920,6 +919,19 @@ inheredoc_cleanup(void *dummy)
inheredoc = 0;
}
Char *
randsuf(void) {
#ifndef WINNT_NATIVE
struct timeval tv;
(void) gettimeofday(&tv, NULL);
return putn((((tcsh_number_t)tv.tv_sec) ^
((tcsh_number_t)tv.tv_usec) ^
((tcsh_number_t)getpid())) & 0x00ffffff);
#else
return putn(getpid());
#endif
}
/*
* Form a shell temporary file (in unit 0) from the words
* of the shell input up to EOF or a line the same as "term".
@ -950,7 +962,6 @@ heredoc(Char *term)
#else /* !HAVE_MKSTEMP */
char *tmp;
# ifndef WINNT_NATIVE
struct timeval tv;
again:
# endif /* WINNT_NATIVE */
@ -966,11 +977,8 @@ heredoc(Char *term)
# ifndef WINNT_NATIVE
if (errno == EEXIST) {
if (unlink(tmp) == -1) {
(void) gettimeofday(&tv, NULL);
xfree(shtemp);
mbp = putn((((tcsh_number_t)tv.tv_sec) ^
((tcsh_number_t)tv.tv_usec) ^
((tcsh_number_t)getpid())) & 0x00ffffff);
mbp = randsuf();
shtemp = Strspl(STRtmpsh, mbp);
xfree(mbp);
}

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/sh.err.c,v 3.55 2011/02/25 23:58:34 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/sh.err.c,v 3.57 2015/05/26 17:32:45 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.55 2011/02/25 23:58:34 christos Exp $")
RCSID("$tcsh: sh.err.c,v 3.57 2015/05/26 17:32:45 christos Exp $")
/*
* C Shell
@ -218,7 +218,7 @@ errinit(void)
elst[ERR_DOLZERO] = CSAVS(1, 5, "No file for $0");
elst[ERR_INCBR] = CSAVS(1, 6, "Incomplete [] modifier");
elst[ERR_EXPORD] = CSAVS(1, 7, "$ expansion must end before ]");
elst[ERR_BADMOD] = CSAVS(1, 8, "Bad : modifier in $ (%c)");
elst[ERR_BADMOD] = CSAVS(1, 8, "Bad : modifier in $ '%c'");
elst[ERR_SUBSCRIPT] = CSAVS(1, 9, "Subscript error");
elst[ERR_BADNUM] = CSAVS(1, 10, "Badly formed number");
elst[ERR_NOMORE] = CSAVS(1, 11, "No more words");
@ -262,8 +262,8 @@ errinit(void)
elst[ERR_NOTWHILE] = CSAVS(1, 48, "Not in while/foreach");
elst[ERR_NOPROC] = CSAVS(1, 49, "No more processes");
elst[ERR_NOMATCH] = CSAVS(1, 50, "No match");
elst[ERR_MISSING] = CSAVS(1, 51, "Missing %c");
elst[ERR_UNMATCHED] = CSAVS(1, 52, "Unmatched %c");
elst[ERR_MISSING] = CSAVS(1, 51, "Missing '%c'");
elst[ERR_UNMATCHED] = CSAVS(1, 52, "Unmatched '%c'");
elst[ERR_NOMEM] = CSAVS(1, 53, "Out of memory");
elst[ERR_PIPE] = CSAVS(1, 54, "Can't make pipe");
elst[ERR_SYSTEM] = CSAVS(1, 55, "%s: %s");
@ -309,7 +309,7 @@ errinit(void)
elst[ERR_BADSUBST] = CSAVS(1, 90, "Bad substitute");
elst[ERR_LHS] = CSAVS(1, 91, "No previous left hand side");
elst[ERR_RHSLONG] = CSAVS(1, 92, "Right hand side too long");
elst[ERR_BADBANGMOD] = CSAVS(1, 93, "Bad ! modifier: %c");
elst[ERR_BADBANGMOD] = CSAVS(1, 93, "Bad ! modifier: '%c'");
elst[ERR_MODFAIL] = CSAVS(1, 94, "Modifier failed");
elst[ERR_SUBOVFL] = CSAVS(1, 95, "Substitution buffer overflow");
elst[ERR_BADBANGARG] = CSAVS(1, 96, "Bad ! arg selector");
@ -335,7 +335,7 @@ errinit(void)
elst[ERR_TCNOSTR] = CSAVS(1, 115, "Out of termcap string space");
elst[ERR_SETTCUS] = CSAVS(1, 116, "Usage: settc %s [yes|no]");
elst[ERR_TCCAP] = CSAVS(1, 117, "Unknown capability `%s'");
elst[ERR_TCPARM] = CSAVS(1, 118, "Unknown termcap parameter `%%%c'");
elst[ERR_TCPARM] = CSAVS(1, 118, "Unknown termcap parameter '%%%c'");
elst[ERR_TCARGS] = CSAVS(1, 119, "Too many arguments for `%s' (%d)");
elst[ERR_TCNARGS] = CSAVS(1, 120, "`%s' requires %d arguments");
elst[ERR_TCUSAGE] = CSAVS(1, 121,
@ -365,7 +365,7 @@ errinit(void)
elst[ERR_ULIMUS] = CSAVS(1, 134, "Usage: unlimit [-fh] [limits]");
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_BADCOLORVAR] = CSAVS(1, 137, "Unknown colorls variable '%c%c'");
elst[ERR_EOF] = CSAVS(1, 138, "Unexpected end of file");
}
@ -380,10 +380,10 @@ struct cleanup_entry
#endif
};
static struct cleanup_entry *cleanup_stack; /* = NULL; */
static size_t cleanup_sp; /* = 0; Next free entry */
static size_t cleanup_mark; /* = 0; Last entry to handle before unwinding */
static size_t cleanup_stack_size; /* = 0 */
static struct cleanup_entry *cleanup_stack INIT_ZERO; /* = NULL; */
static size_t cleanup_sp INIT_ZERO; /* = 0; Next free entry */
static size_t cleanup_mark INIT_ZERO; /* = 0; Last entry to handle before unwinding */
static size_t cleanup_stack_size INIT_ZERO; /* = 0 */
/* fn() will be run with all signals blocked, so it should not do anything
risky. */

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/sh.exec.c,v 3.79 2011/02/25 23:58:34 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/sh.exec.c,v 3.81 2016/09/12 16:33:54 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.79 2011/02/25 23:58:34 christos Exp $")
RCSID("$tcsh: sh.exec.c,v 3.81 2016/09/12 16:33:54 christos Exp $")
#include "tc.h"
#include "tw.h"
@ -606,9 +606,10 @@ execash(Char **t, struct command *kp)
cleanup_push(&state, execash_cleanup);
/*
* Decrement the shell level
* Decrement the shell level, if not in a subshell
*/
shlvl(-1);
if (mainpid == getpid())
shlvl(-1);
#ifdef WINNT_NATIVE
__nt_really_exec=1;
#endif /* WINNT_NATIVE */
@ -1070,6 +1071,9 @@ dowhere(Char **v, struct command *c)
{
int found = 1;
USE(c);
if (adrof(STRautorehash))
dohash(NULL, NULL);
for (v++; *v; v++)
found &= find_cmd(*v, 1);
/* Make status nonzero if any command is not found. */
@ -1166,7 +1170,11 @@ find_cmd(Char *cmd, int prt)
return rval;
}
}
if (adrof(STRautorehash) && !rehashed && havhash) {
/*
* If we are printing, we are being called from dowhere() which it
* has rehashed already
*/
if (!prt && adrof(STRautorehash) && !rehashed && havhash) {
dohash(NULL, NULL);
rehashed = 1;
goto retry;

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/sh.exp.c,v 3.58 2011/12/25 15:21:50 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/sh.exp.c,v 3.63 2015/12/09 17:17:43 christos Exp $ */
/*
* sh.exp.c: Expression evaluations
*/
@ -32,7 +32,7 @@
*/
#include "sh.h"
RCSID("$tcsh: sh.exp.c,v 3.58 2011/12/25 15:21:50 christos Exp $")
RCSID("$tcsh: sh.exp.c,v 3.63 2015/12/09 17:17:43 christos Exp $")
#include "tw.h"
@ -172,6 +172,7 @@ sh_access(const Char *fname, int mode)
mode <<= 3;
break;
}
xfree(groups);
}
}
# endif /* NGROUPS_MAX */
@ -322,7 +323,7 @@ exp2c(Char ***vp, int ignore)
cleanup_push(p2, xfree);
etracc("exp2c p2", p2, vp);
if (!(ignore & TEXP_IGNORE))
switch (i) {
switch ((int)i) {
case EQEQ:
i = eq(p1, p2);
@ -367,7 +368,7 @@ exp3(Char ***vp, int ignore)
cleanup_push(p2, xfree);
etracc("exp3 p2", p2, vp);
if (!(ignore & TEXP_IGNORE))
switch (i) {
switch ((int)i) {
case GTR:
i = egetn(p1) > egetn(p2);
@ -632,7 +633,7 @@ filetest(Char *cp, Char ***vp, int ignore)
int altout = 0;
Char *ft = cp, *dp, *ep, *strdev, *strino, *strF, *str, valtest = '\0',
*errval = STR0;
char *string, string0[22 + MB_LEN_MAX + 1]; // space for 64 bit octal
char *string, string0[22 + MB_LEN_MAX + 1]; /* space for 64 bit octal */
time_t footime;
struct passwd *pw;
struct group *gr;
@ -954,8 +955,7 @@ evalav(Char **v)
struct wordent *wdp = hp;
setcopy(STRstatus, STR0, VAR_READWRITE);
hp->prev = hp->next = hp;
hp->word = STRNULL;
initlex(hp);
while (*v) {
struct wordent *new = xcalloc(1, sizeof *wdp);

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/sh.file.c,v 3.37 2010/02/09 20:21:49 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/sh.file.c,v 3.40 2016/04/16 14:08:14 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.37 2010/02/09 20:21:49 christos Exp $")
RCSID("$tcsh: sh.file.c,v 3.40 2016/04/16 14:08:14 christos Exp $")
#if defined(FILEC) && defined(TIOCSTI)
@ -231,7 +231,7 @@ pushback(const Char *string)
# ifdef POSIX
(void) tcgetattr(SHOUT, &tty);
# else
(void) ioctl(SHOUT, TCSETAW, (ioctl_t) &tty);
(void) ioctl(SHOUT, TCGETA, (ioctl_t) &tty);
# endif /* POSIX */
tty_normal = tty;
tty.c_lflag &= ~(ECHOKE | ECHO | ECHOE | ECHOK | ECHONL |
@ -249,7 +249,7 @@ pushback(const Char *string)
char buf[MB_LEN_MAX];
size_t i, len;
len = one_wctomb(buf, *p & CHAR);
len = one_wctomb(buf, *p);
for (i = 0; i < len; i++)
(void) ioctl(SHOUT, TIOCSTI, (ioctl_t) &buf[i]);
}
@ -564,7 +564,7 @@ tsearch(Char *word, COMMAND command, size_t max_word_length)
}
if (looking_for_lognames) {
#ifndef HAVE_GETPWENT
#ifdef HAVE_GETPWENT
(void) endpwent();
#endif
} else

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/sh.func.c,v 3.162 2011/02/26 00:07:06 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/sh.func.c,v 3.176 2016/10/18 17:26:42 christos Exp $ */
/*
* sh.func.c: csh builtin functions
*/
@ -32,7 +32,7 @@
*/
#include "sh.h"
RCSID("$tcsh: sh.func.c,v 3.162 2011/02/26 00:07:06 christos Exp $")
RCSID("$tcsh: sh.func.c,v 3.176 2016/10/18 17:26:42 christos Exp $")
#include "ed.h"
#include "tw.h"
@ -799,8 +799,16 @@ search(int type, int level, Char *goal)
break;
case TC_IF:
while (getword(&word))
while (getword(&word)) {
if (intty) {
histent->word = Strsave(word.s);
histent->next = xmalloc(sizeof(*histent));
histent->next->prev = histent;
histent = histent->next;
}
continue;
}
if ((type == TC_IF || type == TC_ELSE) &&
eq(word.s, STRthen))
level++;
@ -893,7 +901,7 @@ search(int type, int level, Char *goal)
static struct wordent *
histgetword(struct wordent *histent)
{
int found = 0, first;
int first;
eChar c, d;
int e;
struct Strbuf *tmp;
@ -917,7 +925,6 @@ histgetword(struct wordent *histent)
if (c == '\n')
goto nl;
unreadc(c);
found = 1;
first = 1;
do {
e = (c == '\\');
@ -1038,6 +1045,17 @@ getword(struct Strbuf *wp)
goto past;
if (wp)
Strbuf_append1(wp, (Char) c);
if (!d && c == ')') {
if (!first && wp) {
goto past_word_end;
} else {
if (wp) {
wp->len = 1;
Strbuf_terminate(wp);
}
return found;
}
}
if (!first && !d && c == '(') {
if (wp)
goto past_word_end;
@ -1381,7 +1399,7 @@ dosetenv(Char **v, struct command *c)
stderror(ERR_NAME | ERR_VARBEGIN);
do {
lp++;
} while (alnum(*lp));
} while (alnum(*lp) || *lp == '.');
if (*lp != '\0')
stderror(ERR_NAME | ERR_VARALNUM);
@ -1543,6 +1561,11 @@ dosetenv(Char **v, struct command *c)
cleanup_until(lp);
return;
}
if (eq(vp, STRLSCOLORS)) {
parseLSCOLORS(lp);
cleanup_until(lp);
return;
}
#endif /* COLOR_LS_F */
#ifdef SIG_WINDOW
@ -1670,6 +1693,8 @@ dounsetenv(Char **v, struct command *c)
#ifdef COLOR_LS_F
else if (eq(name, STRLS_COLORS))
parseLS_COLORS(n);
else if (eq(name, STRLSCOLORS))
parseLSCOLORS(n);
#endif /* COLOR_LS_F */
#ifdef NLS_CATALOGS
else if (eq(name, STRNLSPATH)) {
@ -1927,6 +1952,14 @@ struct limits limits[] =
{ RLIMIT_NOFILE, "descriptors", 1, "" },
# endif /* RLIMIT_NOFILE */
# ifdef RLIMIT_NPTS
{ RLIMIT_NPTS, "pseudoterminals", 1, "" },
# endif /* RLIMIT_NPTS */
# ifdef RLIMIT_KQUEUES
{ RLIMIT_KQUEUES, "kqueues", 1, "" },
# endif /* RLIMIT_KQUEUES */
# ifdef RLIMIT_CONCUR
{ RLIMIT_CONCUR, "concurrency", 1, "thread(s)" },
# endif /* RLIMIT_CONCUR */
@ -1939,6 +1972,10 @@ struct limits limits[] =
{ RLIMIT_NPROC, "maxproc", 1, "" },
# endif /* RLIMIT_NPROC */
# ifdef RLIMIT_NTHR
{ RLIMIT_NTHR, "maxthread", 1, "" },
# endif /* RLIMIT_NTHR */
# if defined(RLIMIT_OFILE) && !defined(RLIMIT_NOFILE)
{ RLIMIT_OFILE, "openfiles", 1, "" },
# endif /* RLIMIT_OFILE && !defined(RLIMIT_NOFILE) */
@ -1955,6 +1992,10 @@ struct limits limits[] =
{ RLIMIT_LOCKS, "maxlocks", 1, "" },
# endif /* RLIMIT_LOCKS */
# ifdef RLIMIT_POSIXLOCKS
{ RLIMIT_POSIXLOCKS,"posixlocks", 1, "" },
# endif /* RLIMIT_POSIXLOCKS */
# ifdef RLIMIT_SIGPENDING
{ RLIMIT_SIGPENDING,"maxsignal", 1, "" },
# endif /* RLIMIT_SIGPENDING */
@ -2407,12 +2448,20 @@ doeval_cleanup(void *xstate)
didcch = state->didcch;
#endif /* CLOSE_ON_EXEC */
didfds = state->didfds;
xclose(SHIN);
xclose(SHOUT);
xclose(SHDIAG);
if (state->saveIN != SHIN)
xclose(SHIN);
if (state->saveOUT != SHOUT)
xclose(SHOUT);
if (state->saveDIAG != SHDIAG)
xclose(SHDIAG);
close_on_exec(SHIN = dmove(state->saveIN, state->SHIN), 1);
close_on_exec(SHOUT = dmove(state->saveOUT, state->SHOUT), 1);
close_on_exec(SHDIAG = dmove(state->saveDIAG, state->SHDIAG), 1);
if (didfds) {
close_on_exec(dcopy(SHIN, 0), 1);
close_on_exec(dcopy(SHOUT, 1), 1);
close_on_exec(dcopy(SHDIAG, 2), 1);
}
}
static Char **Ggv;
@ -2681,3 +2730,20 @@ nlsclose(void)
}
#endif /* NLS_CATALOGS */
}
int
getYN(const char *prompt)
{
int doit, c;
xprintf("%s", prompt);
flush();
(void) force_read(SHIN, &c, 1);
/*
* Perhaps we should use the yesexpr from the
* actual locale
*/
doit = (strchr(CGETS(22, 14, "Yy"), c) != NULL);
while (c != '\n' && force_read(SHIN, &c, 1) == 1)
continue;
return doit;
}

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/sh.glob.c,v 3.82 2011/02/27 00:15:17 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/sh.glob.c,v 3.95 2016/08/01 16:21:09 christos Exp $ */
/*
* sh.glob.c: Regular expression expansion
*/
@ -32,7 +32,7 @@
*/
#include "sh.h"
RCSID("$tcsh: sh.glob.c,v 3.82 2011/02/27 00:15:17 christos Exp $")
RCSID("$tcsh: sh.glob.c,v 3.95 2016/08/01 16:21:09 christos Exp $")
#include "tc.h"
#include "tw.h"
@ -594,8 +594,13 @@ trim(Char **t)
Char *p;
while ((p = *t++) != '\0')
while (*p)
*p++ &= TRIM;
while (*p) {
#if INVALID_BYTE != 0
if ((*p & INVALID_BYTE) != INVALID_BYTE) /* *p < INVALID_BYTE */
#endif
*p &= TRIM;
p++;
}
}
int
@ -699,11 +704,15 @@ backeval(struct blk_buf *bb, struct Strbuf *word, Char *cp, int literal)
int hadnl;
int pvec[2], quoted;
Char *fakecom[2], ibuf[BUFSIZE];
char tibuf[BUFSIZE];
hadnl = 0;
icnt = 0;
quoted = (literal || (cp[0] & QUOTE)) ? QUOTE : 0;
if (!literal) {
for (ip = cp; (*ip & QUOTE) != 0; ip++)
continue;
quoted = *ip == '\0';
} else
quoted = literal;
faket.t_dtyp = NODE_COMMAND;
faket.t_dflg = F_BACKQ;
faket.t_dlef = 0;
@ -760,6 +769,9 @@ backeval(struct blk_buf *bb, struct Strbuf *word, Char *cp, int literal)
omark = cleanup_push_mark();
getexit(osetexit);
for (;;) {
struct wordent paraml1;
initlex(&paraml1);
(void) setexit();
justpr = 0;
@ -775,19 +787,19 @@ backeval(struct blk_buf *bb, struct Strbuf *word, Char *cp, int literal)
seterr = NULL;
}
(void) lex(&paraml);
cleanup_push(&paraml, lex_cleanup);
freelex(&paraml1);
(void) lex(&paraml1);
cleanup_push(&paraml1, lex_cleanup);
if (seterr)
stderror(ERR_OLD);
alias(&paraml);
t = syntax(paraml.next, &paraml, 0);
if (t == NULL)
return;
alias(&paraml1);
t = syntax(paraml1.next, &paraml1, 0);
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 (t)
t->t_dflg = F_BACKQ|F_NOFORK;
if (seterr)
stderror(ERR_OLD);
#ifdef SIGTSTP
@ -801,7 +813,7 @@ backeval(struct blk_buf *bb, struct Strbuf *word, Char *cp, int literal)
#endif
execute(t, -1, NULL, NULL, TRUE);
cleanup_until(&paraml);
cleanup_until(&paraml1);
}
}
cleanup_until(&pvec[1]);
@ -809,45 +821,13 @@ backeval(struct blk_buf *bb, struct Strbuf *word, Char *cp, int literal)
ip = NULL;
do {
ssize_t cnt = 0;
char *tmp;
tmp = tibuf;
for (;;) {
while (icnt == 0) {
int i, eof;
if (icnt == 0) {
ip = ibuf;
icnt = xread(pvec[0], tmp, tibuf + BUFSIZE - tmp);
eof = 0;
if (icnt <= 0) {
if (tmp == tibuf)
goto eof;
icnt = 0;
eof = 1;
}
icnt += tmp - tibuf;
i = 0;
tmp = tibuf;
while (tmp < tibuf + icnt) {
int len;
len = normal_mbtowc(&ip[i], tmp, tibuf + icnt - tmp);
if (len == -1) {
reset_mbtowc();
if (!eof && (size_t)(tibuf + icnt - tmp) < MB_CUR_MAX) {
break; /* Maybe a partial character */
}
ip[i] = (unsigned char) *tmp | INVALID_BYTE; /* Error */
}
if (len <= 0)
len = 1;
i++;
tmp += len;
}
if (tmp != tibuf)
memmove (tibuf, tmp, tibuf + icnt - tmp);
tmp = tibuf + (tibuf + icnt - tmp);
icnt = i;
icnt = wide_read(pvec[0], ibuf, BUFSIZE, 0);
if (icnt <= 0)
goto eof;
}
if (hadnl)
break;
@ -870,7 +850,9 @@ backeval(struct blk_buf *bb, struct Strbuf *word, Char *cp, int literal)
if (!quoted && (c == ' ' || c == '\t'))
break;
cnt++;
Strbuf_append1(word, c | quoted);
if (c == '\\' || quoted)
c |= QUOTE;
Strbuf_append1(word, c);
}
/*
* Unless at end-of-file, we will form a new word here if there were

68
sh.h
View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/sh.h,v 3.165 2011/04/14 18:25:25 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/sh.h,v 3.178 2016/09/12 16:33:54 christos Exp $ */
/*
* sh.h: Catch it all globals and includes file!
*/
@ -127,6 +127,11 @@ typedef int eChar;
#if !defined(__inline) && !defined(__GNUC__) && !defined(_MSC_VER)
#define __inline
#endif
#ifdef _MSC_VER
#define TCSH_PTRDIFF_T_FMT "I"
#else
#define TCSH_PTRDIFF_T_FMT "t"
#endif
/* Elide unused argument warnings */
#define USE(a) (void) (a)
#define TCSH_IGNORE(a) tcsh_ignore((intptr_t)a)
@ -188,6 +193,11 @@ static __inline void tcsh_ignore(intptr_t a)
# endif /* SYSVREL */
#endif /* ECHO_STYLE */
/* values for noclobber */
#define NOCLOBBER_DEFAULT 1
#define NOCLOBBER_NOTEMPTY 2
#define NOCLOBBER_ASK 4
/*
* The shell moves std in/out/diag and the old std input away from units
* 0, 1, and 2 so that it is easy to set up these standards for invoked
@ -428,9 +438,7 @@ typedef long tcsh_number_t;
# if (defined(_SS_SIZE) || defined(_SS_MAXSIZE)) && defined(HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY)
# if !defined(__APPLE__) /* Damnit, where is getnameinfo() folks? */
# if !defined(sgi)
# if !defined(__CYGWIN__)
# define INET6
# endif /* __CYGWIN__ */
# define INET6
# endif /* sgi */
# endif /* __APPLE__ */
# endif
@ -440,21 +448,7 @@ typedef long tcsh_number_t;
#ifdef PURIFY
/* exit normally, allowing purify to trace leaks */
# define _exit exit
typedef int pret_t;
#else /* !PURIFY */
/*
* If your compiler complains, then you can either
* throw it away and get gcc or, use the following define
* and get rid of the typedef.
* [The 4.2/3BSD vax compiler does not like that]
* Both MULTIFLOW and PCC compilers exhbit this bug. -- sterling@netcom.com
*/
# if (defined(vax) || defined(uts) || defined(MULTIFLOW) || defined(PCC)) && !defined(__GNUC__)
# define pret_t void
# else /* !((vax || uts || MULTIFLOW || PCC) && !__GNUC__) */
typedef void pret_t;
# endif /* (vax || uts || MULTIFLOW || PCC) && !__GNUC__ */
#endif /* PURIFY */
#endif /* !PURIFY */
/*
* ASCII vs. EBCDIC
@ -573,7 +567,7 @@ 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 handle_interrupt 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 */
@ -585,8 +579,10 @@ EXTERN int isdiagatty IZERO;/* is SHDIAG a tty */
EXTERN int is1atty IZERO; /* is file descriptor 1 a tty (didfds mode) */
EXTERN int is2atty IZERO; /* is file descriptor 2 a tty (didfds mode) */
EXTERN int arun IZERO; /* Currently running multi-line-aliases */
EXTERN int implicit_cd IZERO;/* implicit cd enabled?(1=enabled,2=verbose) */
EXTERN int implicit_cd IZERO;/* implicit cd enabled?(1=enabled,2=verbose) */
EXTERN int cdtohome IZERO; /* cd without args goes home */
EXTERN int inheredoc IZERO; /* Currently parsing a heredoc */
EXTERN int no_clobber IZERO; /* no clobber enabled? 1=yes 2=notempty, 4=ask*/
/* We received a window change event */
EXTERN volatile sig_atomic_t windowchg IZERO;
#if defined(KANJI) && defined(SHORT_STRINGS) && defined(DSPMBYTE)
@ -635,9 +631,11 @@ EXTERN time_t seconds0;
/*
* Miscellany
*/
EXTERN pid_t mainpid; /* pid of the main shell ($$) */
EXTERN Char *doldol; /* Character pid for $$ */
EXTERN pid_t backpid; /* pid of the last background job */
/*
* Ideally these should be uid_t, gid_t, pid_t. I cannot do that right now
* cause pid's could be unsigned and that would break our -1 flag, and
@ -717,14 +715,21 @@ extern struct sigaction parterm; /* Parents terminate catch */
#define ASCII 0177
#ifdef WIDE_STRINGS /* Implies SHORT_STRINGS */
/* 31st char bit used for 'ing (not 32nd, we want all values nonnegative) */
# define QUOTE 0x40000000
# define TRIM 0x3FFFFFFF /* Mask to strip quote bit */
/*
* Notice
*
* By fix for handling unicode name file, 32nd bit is used.
* We need use '&' instead of '> or <' when comparing with INVALID_BYTE etc..
* Cast to uChar is not recommended,
* becase Char is 4bytes but uChar is 8bytes on I32LP64. */
# define QUOTE 0x80000000
# define TRIM 0x7FFFFFFF /* Mask to strip quote bit */
# define UNDER 0x08000000 /* Underline flag */
# define BOLD 0x04000000 /* Bold flag */
# define STANDOUT 0x02000000 /* Standout flag */
# define LITERAL 0x01000000 /* Literal character flag */
# define ATTRIBUTES 0x0F000000 /* The bits used for attributes */
# define INVALID_BYTE 0x00800000 /* Invalid character on input */
# define INVALID_BYTE 0xF0000000 /* Invalid character on input */
# ifdef SOLARIS2
# define CHAR 0x30FFFFFF /* Mask to mask out the character */
# else
@ -753,6 +758,8 @@ extern struct sigaction parterm; /* Parents terminate catch */
#endif
#define CHAR_DBWIDTH (LITERAL|(LITERAL-1))
# define MAX_UTF32 0x7FFFFFFF /* max UTF32 is U+7FFFFFFF */
EXTERN int AsciiOnly; /* If set only 7 bits expected in characters */
/*
@ -1020,10 +1027,6 @@ EXTERN Char **alvec IZERO_STRUCT,
* Filename/command name expansion variables
*/
#ifdef __CYGWIN__
# undef MAXPATHLEN
#endif /* __CYGWIN__ */
#ifndef MAXPATHLEN
# ifdef PATH_MAX
# define MAXPATHLEN PATH_MAX
@ -1065,7 +1068,7 @@ EXTERN struct Hist {
unsigned Hhash; /* hash value of command line */
} Histlist IZERO_STRUCT;
EXTERN struct wordent paraml; /* Current lexical word list */
extern struct wordent paraml; /* Current lexical word list */
EXTERN int eventno; /* Next events number */
EXTERN int lastev; /* Last event reference (default) */
@ -1166,12 +1169,14 @@ extern struct mesg {
const char *pname; /* print name */
} mesg[];
/* word_chars is set by default to WORD_CHARS but can be overridden by
the worchars variable--if unset, reverts to WORD_CHARS */
/* word_chars is set by default to WORD_CHARS (or WORD_CHARS_VI) but can
be overridden by the wordchars variable--if unset, reverts to
WORD_CHARS (or WORD_CHARS_VI) */
EXTERN Char *word_chars;
#define WORD_CHARS "*?_-.[]~=" /* default chars besides alnums in words */
#define WORD_CHARS_VI "_" /* default chars besides alnums in words */
EXTERN Char *STR_SHELLPATH;
@ -1179,6 +1184,7 @@ EXTERN Char *STR_SHELLPATH;
EXTERN Char *STR_BSHELL;
#endif
EXTERN Char *STR_WORD_CHARS;
EXTERN Char *STR_WORD_CHARS_VI;
EXTERN Char **STR_environ IZERO;
extern int dont_free; /* Tell free that we are in danger if we free */

136
sh.hist.c
View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/sh.hist.c,v 3.53 2011/01/24 18:10:26 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/sh.hist.c,v 3.61 2015/06/06 21:19:08 christos Exp $ */
/*
* sh.hist.c: Shell history expansions and substitutions
*/
@ -32,10 +32,12 @@
*/
#include "sh.h"
RCSID("$tcsh: sh.hist.c,v 3.53 2011/01/24 18:10:26 christos Exp $")
RCSID("$tcsh: sh.hist.c,v 3.61 2015/06/06 21:19:08 christos Exp $")
#include <stdio.h> /* for rename(2), grr. */
#include <assert.h>
#include "tc.h"
#include "dotlock.h"
extern int histvalid;
extern struct Strbuf histline;
@ -68,12 +70,12 @@ static void hfree (struct Hist *);
static const int fastMergeErase = 1;
static unsigned histCount = 0; /* number elements on history list */
static int histlen = 0;
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)
@ -107,7 +109,7 @@ hremove(struct Hist *hp)
/* Prune length of history list to specified size by history variable. */
PG_STATIC void
discardExcess(int histlen)
discardExcess(int hlen)
{
struct Hist *hp, *np;
if (histTail == NULL) {
@ -117,23 +119,23 @@ discardExcess(int histlen)
/* 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)
while (histCount > (unsigned)hlen && (np = Histlist.Hnext)) {
if (eventno - np->Href >= hlen || hlen == 0)
hremove(np), hfree(np);
else
break;
}
while (histCount > (unsigned)histlen && (np = histTail) != &Histlist) {
if (eventno - np->Href >= histlen || histlen == 0)
while (histCount > (unsigned)hlen && (np = histTail) != &Histlist) {
if (eventno - np->Href >= hlen || hlen == 0)
hremove(np), hfree(np);
else
break;
}
if (histCount - (histlen >> 4) <= (unsigned)histlen)
if (histCount - (hlen >> 4) <= (unsigned)hlen)
return; /* don't bother doing the full scan */
for (hp = &Histlist; histCount > (unsigned)histlen &&
for (hp = &Histlist; histCount > (unsigned)hlen &&
(np = hp->Hnext) != NULL;)
if (eventno - np->Href >= histlen || histlen == 0)
if (eventno - np->Href >= hlen || hlen == 0)
hremove(np), hfree(np);
else
hp = np;
@ -145,20 +147,9 @@ savehist(
struct wordent *sp,
int mflg) /* true if -m (merge) specified */
{
int histlen = 0;
Char *cp;
/* throw away null lines */
if (sp && sp->next->word[0] == '\n')
return;
cp = varval(STRhistory);
while (*cp) {
if (!Isdigit(*cp)) {
histlen = 0;
break;
}
histlen = histlen * 10 + *cp++ - '0';
}
if (sp)
(void) enthist(++eventno, sp, 1, mflg, histlen);
discardExcess(histlen);
@ -711,9 +702,9 @@ discardHistHashTable(void)
/* Computes a new hash table size, when the current one is too small. */
static unsigned
getHashTableSize(int histlen)
getHashTableSize(int hlen)
{
unsigned target = histlen * 2;
unsigned target = hlen * 2;
unsigned e = 5;
unsigned size;
while ((size = 1<<e) < target)
@ -729,17 +720,16 @@ getHashTableSize(int histlen)
/* Create the hash table or resize, if necessary. */
static void
createHistHashTable(int histlen)
createHistHashTable(int hlen)
{
if (histlen == 0) {
if (hlen == 0) {
discardHistHashTable();
return;
}
if (histlen < 0) {
histlen = getn(varval(STRhistory));
if (histlen == 0)
if (hlen < 0) {
if (histlen <= 0)
return; /* no need for hash table */
assert(histlen > 0);
hlen = histlen;
}
if (histHashTable != NULL) {
if (histCount < histHashTableLength * 3 / 4)
@ -747,7 +737,7 @@ createHistHashTable(int histlen)
discardHistHashTable(); /* too small */
}
histHashTableLength = getHashTableSize(
histlen > (int)histCount ? histlen : (int)histCount);
hlen > (int)histCount ? hlen : (int)histCount);
histHashTable = xmalloc(histHashTableLength * sizeof(struct Hist *));
memset(histHashTable, 0, histHashTableLength * sizeof(struct Hist *));
assert(histHashTable[0] == emptyHTE);
@ -934,7 +924,7 @@ enthist(
struct wordent *lp,
int docopy,
int mflg, /* true if merge requested */
int histlen) /* -1 if unknown */
int hlen) /* -1 if unknown */
{
struct Hist *p = NULL, *pp = &Histlist, *pTime = NULL;
struct Hist *np;
@ -944,7 +934,7 @@ enthist(
if ((dp = varval(STRhistdup)) != STRNULL) {
if (eq(dp, STRerase)) {
/* masaoki@akebono.tky.hp.com (Kobayashi Masaoki) */
createHistHashTable(histlen);
createHistHashTable(hlen);
lpHash = hashhist(lp);
assert(lpHash != 0);
p = findHistHashTable(lp, lpHash);
@ -963,7 +953,7 @@ enthist(
}
}
else if (eq(dp, STRall)) {
createHistHashTable(histlen);
createHistHashTable(hlen);
lpHash = hashhist(lp);
assert(lpHash != 0);
p = findHistHashTable(lp, lpHash);
@ -1031,7 +1021,7 @@ enthist(
else
pp = &Histlist; /* insert at beginning of history */
hinsert(np, pp);
if (lpHash && histlen != 0) /* erase & all modes use hash table */
if (lpHash && hlen != 0) /* erase & all modes use hash table */
insertHistHashTable(np, lpHash);
else
discardHistHashTable();
@ -1053,6 +1043,8 @@ hfree(struct Hist *hp)
PG_STATIC void
phist(struct Hist *hp, int hflg)
{
if (hp->Href < 0)
return;
if (hflg & HIST_ONLY) {
int old_output_raw;
@ -1207,7 +1199,7 @@ fmthist(int fmt, ptr_t ptr)
buf = xmalloc(Strlen(istr) * MB_LEN_MAX + 1);
for (p = buf, ip = istr; *ip != '\0'; ip++)
p += one_wctomb(p, CHAR & *ip);
p += one_wctomb(p, *ip);
*p = '\0';
xfree(istr);
@ -1220,13 +1212,21 @@ fmthist(int fmt, ptr_t ptr)
}
}
static void
dotlock_cleanup(void* lockpath)
{
dot_unlock((char*)lockpath);
}
/* Save history before exiting the shell. */
void
rechist(Char *fname, int ref)
{
Char *snum;
Char *snum, *rs;
int fp, ftmp, oldidfds;
struct varent *shist;
char path[MAXPATHLEN];
struct stat st;
static Char *dumphist[] = {STRhistory, STRmhT, 0, 0};
if (fname == NULL && !ref)
@ -1255,12 +1255,14 @@ rechist(Char *fname, int ref)
* with numerous shells being in simultaneous use. Imagine
* any kind of window system. All these shells 'share' the same
* ~/.history file for recording their command line history.
* Currently the automatic merge can only succeed when the shells
* nicely quit one after another.
* We try to handle the case of multiple shells trying to merge
* histories at the same time, by creating semi-unique filenames
* and saving the history there first and then trying to rename
* them in the proper history file.
*
* Users that like to nuke their environment require here an atomic
* loadhist-creat-dohist(dumphist)-close
* sequence.
* loadhist-creat-dohist(dumphist)-close sequence which is given
* by optional lock parameter to savehist.
*
* jw.
*/
@ -1271,16 +1273,49 @@ rechist(Char *fname, int ref)
*/
oldidfds = didfds;
didfds = 0;
if ((shist = adrof(STRsavehist)) != NULL && shist->vec != NULL)
if (shist->vec[1] && eq(shist->vec[1], STRmerge))
loadhist(fname, 1);
if ((shist = adrof(STRsavehist)) != NULL && shist->vec != NULL) {
size_t i;
int merge = 0, lock = 0;
fp = xcreat(short2str(fname), 0600);
cleanup_until(fname);
for (i = 1; shist->vec[i]; i++) {
if (eq(shist->vec[i], STRmerge))
merge++;
if (eq(shist->vec[i], STRlock))
lock++;
}
if (merge) {
if (lock) {
#ifndef WINNT_NATIVE
char *lockpath = strsave(short2str(fname));
cleanup_push(lockpath, xfree);
/* Poll in 100 miliseconds interval to obtain the lock. */
if ((dot_lock(lockpath, 100) == 0))
cleanup_push(lockpath, dotlock_cleanup);
#endif
}
loadhist(fname, 1);
}
}
rs = randsuf();
xsnprintf(path, sizeof(path), "%S.%S", fname, rs);
xfree(rs);
fp = xcreat(path, 0600);
if (fp == -1) {
didfds = oldidfds;
cleanup_until(fname);
return;
}
/* Try to preserve ownership and permissions of the original history file */
#ifndef WINNT_NATIVE
if (stat(short2str(fname), &st) != -1) {
TCSH_IGNORE(fchown(fp, st.st_uid, st.st_gid));
TCSH_IGNORE(fchmod(fp, st.st_mode));
}
#else
UNREFERENCED_PARAMETER(st);
#endif
ftmp = SHOUT;
SHOUT = fp;
dumphist[2] = snum;
@ -1288,6 +1323,8 @@ rechist(Char *fname, int ref)
xclose(fp);
SHOUT = ftmp;
didfds = oldidfds;
(void)rename(path, short2str(fname));
cleanup_until(fname);
}
@ -1317,3 +1354,10 @@ loadhist(Char *fname, int mflg)
hp->Hnum = hp->Href = n--;
}
}
void
sethistory(int n)
{
histlen = n;
discardExcess(histlen);
}

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/sh.init.c,v 3.63 2006/08/23 01:49:32 mitr Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/sh.init.c,v 3.64 2013/02/11 13:51:16 christos Exp $ */
/*
* sh.init.c: Function and signal tables
*/
@ -32,7 +32,7 @@
*/
#include "sh.h"
RCSID("$tcsh: sh.init.c,v 3.63 2006/08/23 01:49:32 mitr Exp $")
RCSID("$tcsh: sh.init.c,v 3.64 2013/02/11 13:51:16 christos Exp $")
#include "ed.h"
#include "tw.h"
@ -214,7 +214,7 @@ int nsrchn = sizeof srchn / sizeof *srchn;
*/
/* We define NUMSIG to avoid changing NSIG or MAXSIG */
#if defined(POSIX) && !defined(__CYGWIN__)
#if defined(POSIX) && (!defined(__CYGWIN__) || defined (__x86_64__))
# define NUMSIG 65
#else /* !POSIX */
# define NUMSIG 33

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/sh.lex.c,v 3.87 2011/01/24 17:48:15 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/sh.lex.c,v 3.91 2016/08/01 16:21:09 christos Exp $ */
/*
* sh.lex.c: Lexical analysis into tokens
*/
@ -32,7 +32,7 @@
*/
#include "sh.h"
RCSID("$tcsh: sh.lex.c,v 3.87 2011/01/24 17:48:15 christos Exp $")
RCSID("$tcsh: sh.lex.c,v 3.91 2016/08/01 16:21:09 christos Exp $")
#include "ed.h"
@ -66,7 +66,6 @@ static int getsel (int *, int *, int);
static struct wordent *getsub (struct wordent *);
static Char *subword (Char *, Char, int *, size_t *);
static struct wordent *dosub (Char, struct wordent *, int);
static ssize_t wide_read (int, Char *, size_t, int);
/*
* Peekc is a peek character for getC, peekread for readc.
@ -257,6 +256,14 @@ copylex(struct wordent *hp, struct wordent *fp)
} while (wdp->word[0] != '\n');
}
void
initlex(struct wordent *vp)
{
vp->word = STRNULL;
vp->prev = vp;
vp->next = vp;
}
void
freelex(struct wordent *vp)
{
@ -378,7 +385,7 @@ word(int parsehtime)
*/
c |= QUOTE;
ungetC(c);
c = '\\';
c = '\\' | QUOTE;
}
}
}
@ -1539,7 +1546,7 @@ balloc(int buf)
}
}
static ssize_t
ssize_t
wide_read(int fildes, Char *buf, size_t nchars, int use_fclens)
{
char cbuf[BUFSIZE + 1];

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/sh.misc.c,v 3.46 2010/05/08 00:41:58 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/sh.misc.c,v 3.50 2015/06/06 21:19:08 christos Exp $ */
/*
* sh.misc.c: Miscelaneous functions
*/
@ -32,7 +32,7 @@
*/
#include "sh.h"
RCSID("$tcsh: sh.misc.c,v 3.46 2010/05/08 00:41:58 christos Exp $")
RCSID("$tcsh: sh.misc.c,v 3.50 2015/06/06 21:19:08 christos Exp $")
static int renum (int, int);
static Char **blkend (Char **);
@ -450,8 +450,13 @@ strip(Char *cp)
if (!cp)
return (cp);
while ((*dp++ &= TRIM) != '\0')
continue;
while (*dp != '\0') {
#if INVALID_BYTE != 0
if ((*dp & INVALID_BYTE) != INVALID_BYTE) /* *dp < INVALID_BYTE */
#endif
*dp &= TRIM;
dp++;
}
return (cp);
}
@ -462,8 +467,17 @@ quote(Char *cp)
if (!cp)
return (cp);
while (*dp != '\0')
*dp++ |= QUOTE;
while (*dp != '\0') {
#ifdef WIDE_STRINGS
if ((*dp & 0xffffff80) == 0) /* *dp < 0x80 */
#elif defined SHORT_STRINGS
if ((*dp & 0xff80) == 0) /* *dp < 0x80 */
#else
if ((*dp & 0x80) == 0) /* *dp < 0x80 */
#endif
*dp |= QUOTE;
dp++;
}
return (cp);
}
@ -533,14 +547,16 @@ xclose(int fildes)
if (fildes < 0)
return;
while (close(fildes) == -1 && errno == EINTR)
handle_pending_signals();
if (handle_pending_signals())
break;
}
void
xclosedir(DIR *dirp)
{
while (closedir(dirp) == -1 && errno == EINTR)
handle_pending_signals();
if (handle_pending_signals())
break;
}
int
@ -549,7 +565,8 @@ xcreat(const char *path, mode_t mode)
int res;
while ((res = creat(path, mode)) == -1 && errno == EINTR)
handle_pending_signals();
if (handle_pending_signals())
break;
return res;
}
@ -560,7 +577,8 @@ xdup2(int fildes, int fildes2)
int res;
while ((res = dup2(fildes, fildes2)) == -1 && errno == EINTR)
handle_pending_signals();
if (handle_pending_signals())
break;
return res;
}
#endif
@ -572,7 +590,8 @@ xgetgrgid(gid_t xgid)
errno = 0;
while ((res = getgrgid(xgid)) == NULL && errno == EINTR) {
handle_pending_signals();
if (handle_pending_signals())
break;
errno = 0;
}
return res;
@ -585,7 +604,8 @@ xgetpwnam(const char *name)
errno = 0;
while ((res = getpwnam(name)) == NULL && errno == EINTR) {
handle_pending_signals();
if (handle_pending_signals())
break;
errno = 0;
}
return res;
@ -598,7 +618,8 @@ xgetpwuid(uid_t xuid)
errno = 0;
while ((res = getpwuid(xuid)) == NULL && errno == EINTR) {
handle_pending_signals();
if (handle_pending_signals())
break;
errno = 0;
}
return res;
@ -611,7 +632,8 @@ xopen(const char *path, int oflag, ...)
if ((oflag & O_CREAT) == 0) {
while ((res = open(path, oflag)) == -1 && errno == EINTR)
handle_pending_signals();
if (handle_pending_signals())
break;
} else {
va_list ap;
mode_t mode;
@ -623,7 +645,8 @@ xopen(const char *path, int oflag, ...)
mode = va_arg(ap, int);
va_end(ap);
while ((res = open(path, oflag, mode)) == -1 && errno == EINTR)
handle_pending_signals();
if (handle_pending_signals())
break;
}
return res;
}
@ -636,7 +659,8 @@ xread(int fildes, void *buf, size_t nbyte)
/* This is where we will be blocked most of the time, so handle signals
that didn't interrupt any system call. */
do
handle_pending_signals();
if (handle_pending_signals())
break;
while ((res = read(fildes, buf, nbyte)) == -1 && errno == EINTR);
return res;
}
@ -649,7 +673,8 @@ xtcsetattr(int fildes, int optional_actions, const struct termios *termios_p)
while ((res = tcsetattr(fildes, optional_actions, termios_p)) == -1 &&
errno == EINTR)
handle_pending_signals();
if (handle_pending_signals())
break;
return res;
}
#endif
@ -662,7 +687,8 @@ xwrite(int fildes, const void *buf, size_t nbyte)
/* This is where we will be blocked most of the time, so handle signals
that didn't interrupt any system call. */
do
handle_pending_signals();
if (handle_pending_signals())
break;
while ((res = write(fildes, buf, nbyte)) == -1 && errno == EINTR);
return res;
}

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/sh.print.c,v 3.36 2011/05/25 20:17:20 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/sh.print.c,v 3.37 2015/05/10 13:29:28 christos Exp $ */
/*
* sh.print.c: Primitive Output routines.
*/
@ -32,7 +32,7 @@
*/
#include "sh.h"
RCSID("$tcsh: sh.print.c,v 3.36 2011/05/25 20:17:20 christos Exp $")
RCSID("$tcsh: sh.print.c,v 3.37 2015/05/10 13:29:28 christos Exp $")
#include "ed.h"
@ -231,13 +231,13 @@ flush(void)
return;
if (GettingInput && !Tty_raw_mode && linp < &linbuf[sizeof linbuf - 10])
return;
if (handle_intr)
exitset = 1;
if (handle_interrupt)
exitset = 1;
if (interrupted) {
interrupted = 0;
linp = linbuf; /* avoid recursion as stderror calls flush */
if (handle_intr)
if (handle_interrupt)
fixerror();
else
stderror(ERR_SILENT);
@ -298,11 +298,11 @@ flush(void)
case EDQUOT:
#endif
/* Nothing to do, but die */
if (handle_intr == 0)
if (handle_interrupt == 0)
xexit(1);
/*FALLTHROUGH*/
default:
if (handle_intr)
if (handle_interrupt)
fixerror();
else
stderror(ERR_SILENT);

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/sh.proc.c,v 3.121 2012/01/25 15:34:41 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/sh.proc.c,v 3.134 2016/09/23 19:17:28 christos Exp $ */
/*
* sh.proc.c: Job manipulations
*/
@ -32,7 +32,7 @@
*/
#include "sh.h"
RCSID("$tcsh: sh.proc.c,v 3.121 2012/01/25 15:34:41 christos Exp $")
RCSID("$tcsh: sh.proc.c,v 3.134 2016/09/23 19:17:28 christos Exp $")
#include "ed.h"
#include "tc.h"
@ -47,11 +47,9 @@ RCSID("$tcsh: sh.proc.c,v 3.121 2012/01/25 15:34:41 christos Exp $")
# define HZ 16
#endif /* aiws */
#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 */
#if defined(_BSD) || (defined(IRIS4D) && __STDC__) || defined(__lucid)
# define BSDWAIT
#endif /* _BSD || (IRIS4D && __STDC__) || __lucid */
#ifndef WTERMSIG
# define WTERMSIG(w) (((union wait *) &(w))->w_termsig)
# ifndef BSDWAIT
@ -191,8 +189,13 @@ pchild(void)
# 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__)
#ifdef __ANDROID__ /* no wait3, only wait4 */
pid = wait4(-1, &w,
(setintr && (intty || insource) ? WNOHANG | WUNTRACED : WNOHANG), &ru);
#else
pid = wait3(&w,
(setintr && (intty || insource) ? WNOHANG | WUNTRACED : WNOHANG), &ru);
#endif /* __ANDROID__ */
# else /* BSDWAIT */
pid = wait3(&w.w_status,
(setintr && (intty || insource) ? WNOHANG | WUNTRACED : WNOHANG), &ru);
@ -507,6 +510,7 @@ pjwait(struct process *pp)
cleanup_push(&oset, sigprocmask_cleanup);
pause_mask = oset;
sigdelset(&pause_mask, SIGCHLD);
sigaddset(&pause_mask, SIGINT);
for (;;) {
(void)handle_pending_signals();
jobflags = 0;
@ -593,22 +597,44 @@ void
dowait(Char **v, struct command *c)
{
struct process *pp;
/* the current block mask to be able to restore */
sigset_t old_mask;
/* block mask for critical section: OLD_MASK U {SIGCHLD} */
sigset_t block_mask;
/* ignore those during blocking sigsuspend:
OLD_MASK / {SIGCHLD, possibly(SIGINT)} */
sigset_t pause_mask;
int opintr_disabled, gotsig;
USE(c);
USE(v);
pjobs++;
sigprocmask(SIG_BLOCK, NULL, &pause_mask);
sigdelset(&pause_mask, SIGCHLD);
if (setintr)
sigdelset(&pause_mask, SIGINT);
/* critical section, block also SIGCHLD */
sigprocmask(SIG_BLOCK, NULL, &block_mask);
sigaddset(&block_mask, SIGCHLD);
sigprocmask(SIG_BLOCK, &block_mask, &old_mask);
/* detect older SIGCHLDs and remove PRUNNING flag from proclist */
(void)handle_pending_signals();
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) {
(void)handle_pending_signals();
/* wait for (or pick up alredy blocked) SIGCHLD */
sigsuspend(&pause_mask);
/* make the 'wait' interuptable by CTRL-C */
opintr_disabled = pintr_disabled;
pintr_disabled = 0;
gotsig = handle_pending_signals();
@ -618,6 +644,8 @@ dowait(Char **v, struct command *c)
goto loop;
}
pjobs = 0;
sigprocmask(SIG_SETMASK, &old_mask, NULL);
}
/*
@ -963,6 +991,7 @@ pprint(struct process *pp, int flag)
struct process *tp;
int jobflags, pstatus, pcond;
const char *format;
int ohaderr;
#ifdef BACKPIPE
struct process *pipehead = NULL, *pipetail = NULL, *pmarker = NULL;
@ -978,6 +1007,9 @@ pprint(struct process *pp, int flag)
tp = pp;
status = reason = -1;
jobflags = 0;
ohaderr = haderr;
/* Print status to stderr, except for jobs built-in */
haderr = !(flag & JOBLIST);
do {
#ifdef BACKPIPE
/*
@ -1186,6 +1218,7 @@ pprint(struct process *pp, int flag)
xprintf(" ");
ptprint(tp);
}
haderr = ohaderr;
return (jobflags);
}
@ -1284,7 +1317,7 @@ void
dojobs(Char **v, struct command *c)
{
struct process *pp;
int flag = NUMBER | NAME | REASON;
int flag = NUMBER | NAME | REASON | JOBLIST;
int i;
USE(c);
@ -1833,12 +1866,12 @@ pfork(struct command *t, int wanttty)
(void) signal(SIGHUP, SIG_IGN);
if (t->t_dflg & F_NICE) {
int nval = SIGN_EXTEND_CHAR(t->t_nice);
#ifdef HAVE_SETPRIORITY
#if defined(HAVE_SETPRIORITY) && defined(PRIO_PROCESS)
if (setpriority(PRIO_PROCESS, 0, nval) == -1 && errno)
stderror(ERR_SYSTEM, "setpriority", strerror(errno));
#else /* !HAVE_SETPRIORITY */
#else /* !HAVE_SETPRIORITY || !PRIO_PROCESS */
(void) nice(nval);
#endif /* !HAVE_SETPRIORITY */
#endif /* HAVE_SETPRIORITY && PRIO_PROCESS */
}
#ifdef F_VER
if (t->t_dflg & F_VER) {

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/sh.proc.h,v 3.15 2011/04/14 18:25:25 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/sh.proc.h,v 3.16 2016/05/24 17:41:12 christos Exp $ */
/*
* sh.proc.h: Process data structures and variables
*/
@ -106,14 +106,15 @@ struct process {
#define PBRACE (1<<18) /* Process is {} evaluation */
/* defines for arguments to pprint */
#define NUMBER 01
#define NAME 02
#define REASON 04
#define AMPERSAND 010
#define FANCY 020
#define SHELLDIR 040 /* print shell's dir if not the same */
#define JOBDIR 0100 /* print job's dir if not the same */
#define AREASON 0200
#define NUMBER 0x001
#define NAME 0x002
#define REASON 0x004
#define AMPERSAND 0x008
#define FANCY 0x010
#define SHELLDIR 0x020 /* print shell's dir if not the same */
#define JOBDIR 0x040 /* print job's dir if not the same */
#define AREASON 0x080
#define JOBLIST 0x100
EXTERN struct process proclist IZERO_STRUCT;/* list head of all processes */

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/sh.sem.c,v 3.86 2011/02/25 23:24:19 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/sh.sem.c,v 3.90 2015/10/31 18:54:42 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.86 2011/02/25 23:24:19 christos Exp $")
RCSID("$tcsh: sh.sem.c,v 3.90 2015/10/31 18:54:42 christos Exp $")
#include "tc.h"
#include "tw.h"
@ -212,8 +212,14 @@ execute(struct command *t, volatile int wanttty, int *pipein, int *pipeout,
* If noexec then this is all we do.
*/
if (t->t_dflg & F_READ) {
int old_pintr_disabled;
xclose(0);
if (setintr)
pintr_push_enable(&old_pintr_disabled);
heredoc(t->t_dlef);
if (setintr)
cleanup_until(&old_pintr_disabled);
if (noexec)
xclose(0);
}
@ -346,10 +352,6 @@ execute(struct command *t, volatile int wanttty, int *pipein, int *pipeout,
* not pipedout, niced, nohupped, or &'d. It would be nice(?) to not
* fork in some of these cases.
*/
/*
* Prevent forking cd, pushd, popd, chdir cause this will cause the
* shell not to change dir!
*/
#ifdef BACKPIPE
/*
* Can't have NOFORK for the tail of a pipe - because it is not the
@ -358,11 +360,26 @@ execute(struct command *t, volatile int wanttty, int *pipein, int *pipeout,
*/
if (t->t_dflg & F_PIPEIN)
t->t_dflg &= ~(F_NOFORK);
#else
/*
* "command | builtin" may cause major misbehaviour as noted in
* in the BUGS file entry
* Subject: Redirected input to built-in functions misbehaves badly
* forking when the builtin is the end of the pipe corrects the
* problem.
*/
if (bifunc && (t->t_dflg & F_PIPEIN))
t->t_dflg &= ~(F_NOFORK);
#endif /* BACKPIPE */
/*
* Prevent forking cd, pushd, popd, chdir cause this will cause the
* shell not to change dir! (XXX: but only for nice?)
*/
if (bifunc && (bifunc->bfunct == (bfunc_t)dochngd ||
bifunc->bfunct == (bfunc_t)dopushd ||
bifunc->bfunct == (bfunc_t)dopopd))
t->t_dflg &= ~(F_NICE);
if (((t->t_dflg & F_TIME) || ((t->t_dflg & F_NOFORK) == 0 &&
(!bifunc || t->t_dflg &
(F_PIPEOUT | F_AMPERSAND | F_NICE | F_NOHUP | F_HUP)))) ||
@ -560,13 +577,13 @@ execute(struct command *t, volatile int wanttty, int *pipein, int *pipeout,
(void) signal(SIGHUP, SIG_DFL);
if (t->t_dflg & F_NICE) {
int nval = SIGN_EXTEND_CHAR(t->t_nice);
# ifdef HAVE_SETPRIORITY
# if defined(HAVE_SETPRIORITY) && defined(PRIO_PROCESS)
if (setpriority(PRIO_PROCESS, 0, nval) == -1 && errno)
stderror(ERR_SYSTEM, "setpriority",
strerror(errno));
# else /* !HAVE_SETPRIORITY */
# else /* !HAVE_SETPRIORITY || !PRIO_PROCESS */
(void) nice(nval);
# endif /* HAVE_SETPRIORITY */
# endif /* HAVE_SETPRIORITY && PRIO_PROCESS */
}
# ifdef F_VER
if (t->t_dflg & F_VER) {
@ -898,7 +915,7 @@ doio(struct command *t, int *pipein, int *pipeout)
else
fd = 0;
if ((flags & F_APPEND) == 0 || fd == -1) {
if (!(flags & F_OVERWRITE) && adrof(STRnoclobber)) {
if (!(flags & F_OVERWRITE) && no_clobber) {
if (flags & F_APPEND)
stderror(ERR_SYSTEM, tmp, strerror(errno));
chkclob(tmp);
@ -970,5 +987,13 @@ chkclob(const char *cp)
return;
if (S_ISCHR(stb.st_mode))
return;
if (no_clobber & NOCLOBBER_NOTEMPTY && stb.st_size == 0)
return;
if (no_clobber & NOCLOBBER_ASK) {
if (getYN(CGETS(22, 15,
"Do you really want to overwrite an existing file? [N/y] ")))
return;
}
stderror(ERR_EXISTS, cp);
}

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/sh.set.c,v 3.83 2012/01/15 17:15:28 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/sh.set.c,v 3.89 2015/09/08 15:49:53 christos Exp $ */
/*
* sh.set.c: Setting and Clearing of variables
*/
@ -32,7 +32,7 @@
*/
#include "sh.h"
RCSID("$tcsh: sh.set.c,v 3.83 2012/01/15 17:15:28 christos Exp $")
RCSID("$tcsh: sh.set.c,v 3.89 2015/09/08 15:49:53 christos Exp $")
#include "ed.h"
#include "tw.h"
@ -55,6 +55,7 @@ static struct varent *madrof (Char *, struct varent *);
static void unsetv1 (struct varent *);
static void exportpath (Char **);
static void balance (struct varent *, int, int);
static int set_noclobber (Char **);
/*
* C Shell
@ -72,6 +73,13 @@ update_vars(Char *vp)
dohash(NULL, NULL);
}
}
else if (eq(vp, STRnoclobber)) {
struct varent *p = adrof(STRnoclobber);
if (p == NULL)
stderror(ERR_NAME | ERR_UNDVAR);
else
no_clobber = set_noclobber(p->vec);
}
else if (eq(vp, STRhistchars)) {
Char *pn = varval(vp);
@ -165,6 +173,10 @@ update_vars(Char *vp)
noediting = 0;
/* PWP: add more stuff in here later */
}
else if (eq(vp, STRvimode)) {
VImode = 1;
update_wordchars();
}
else if (eq(vp, STRshlvl)) {
tsetenv(STRKSHLVL, varval(vp));
}
@ -195,6 +207,9 @@ update_vars(Char *vp)
else if (eq(vp, STRkillring)) {
SetKillRing((int)getn(varval(vp)));
}
else if (eq(vp, STRhistory)) {
sethistory((int)getn(varval(vp)));
}
#ifndef HAVENOUTMP
else if (eq(vp, STRwatch)) {
resetwatch();
@ -203,6 +218,9 @@ update_vars(Char *vp)
else if (eq(vp, STRimplicitcd)) {
implicit_cd = ((eq(varval(vp), STRverbose)) ? 2 : 1);
}
else if (eq(vp, STRcdtohome)) {
cdtohome = 1;
}
#ifdef COLOR_LS_F
else if (eq(vp, STRcolor)) {
set_color_context();
@ -762,6 +780,8 @@ unset(Char **v, struct command *c)
PRCH = tcsh ? '>' : '%';
PRCHROOT = '#';
}
if (adrof(STRnoclobber) == 0)
no_clobber = 0;
if (adrof(STRhistlit) == 0)
HistLit = 0;
if (adrof(STRloginsh) == 0)
@ -780,12 +800,18 @@ unset(Char **v, struct command *c)
symlinks = 0;
if (adrof(STRimplicitcd) == 0)
implicit_cd = 0;
if (adrof(STRcdtohome) == 0)
cdtohome = 0;
if (adrof(STRkillring) == 0)
SetKillRing(0);
if (did_edit && noediting && adrof(STRedit) == 0)
noediting = 0;
if (adrof(STRvimode) == 0)
VImode = 0;
if (did_roe && adrof(STRrecognize_only_executables) == 0)
tw_cmd_free();
if (adrof(STRhistory) == 0)
sethistory(0);
#ifdef COLOR_LS_F
if (adrof(STRcolor) == 0)
set_color_context();
@ -793,6 +819,7 @@ unset(Char **v, struct command *c)
#if defined(KANJI) && defined(SHORT_STRINGS) && defined(DSPMBYTE)
update_dspmbyte_vars();
#endif
update_wordchars();
#ifdef NLS_CATALOGS
nlsclose();
nlsinit();
@ -920,6 +947,28 @@ exportpath(Char **val)
cleanup_until(exppath);
}
static int
set_noclobber(Char **val)
{
Char *option;
int nc = NOCLOBBER_DEFAULT;
if (val == NULL)
return nc;
while (*val) {
if (*val == 0 || eq(*val, STRRparen))
return nc;
option = *val++;
if (eq(option, STRnotempty))
nc |= NOCLOBBER_NOTEMPTY;
else if (eq(option, STRask))
nc |= NOCLOBBER_ASK;
}
return nc;
}
#ifndef lint
/*
* Lint thinks these have null effect
@ -1301,3 +1350,11 @@ autoset_kanji(void)
}
#endif
#endif
void
update_wordchars(void)
{
if ((word_chars == STR_WORD_CHARS) || (word_chars == STR_WORD_CHARS_VI)) {
word_chars = (VImode ? STR_WORD_CHARS_VI : STR_WORD_CHARS);
}
}

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/sh.time.c,v 3.35 2010/12/09 15:39:29 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/sh.time.c,v 3.37 2016/07/09 00:45: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.35 2010/12/09 15:39:29 christos Exp $")
RCSID("$tcsh: sh.time.c,v 3.37 2016/07/09 00:45:29 christos Exp $")
#ifdef SUNOS4
# include <machine/param.h>
@ -158,12 +158,12 @@ donice(Char **v, struct command *c)
nval = 4;
else if (*v == 0 && any("+-", cp[0]))
nval = getn(cp);
#ifdef HAVE_SETPRIORITY
#if defined(HAVE_SETPRIORITY) && defined(PRIO_PROCESS)
if (setpriority(PRIO_PROCESS, 0, nval) == -1 && errno)
stderror(ERR_SYSTEM, "setpriority", strerror(errno));
#else /* !HAVE_SETPRIORITY */
#else /* !HAVE_SETPRIORITY || !PRIO_PROCESS */
(void) nice(nval);
#endif /* HAVE_SETPRIORITY */
#endif /* HAVE_SETPRIORITY && PRIO_PROCESS */
}
#ifdef BSDTIMES
@ -293,6 +293,7 @@ prusage(struct tms *bs, struct tms *es, clock_t e, clock_t b)
# endif /* _SEQUENT_ */
#endif /* BSDTIMES */
{
int ohaderr = haderr;
#ifdef BSDTIMES
time_t t =
(r1->ru_utime.tv_sec - r0->ru_utime.tv_sec) * 100 +
@ -334,12 +335,14 @@ prusage(struct tms *bs, struct tms *es, clock_t e, clock_t b)
((e->tv_sec - b->tv_sec) * 100 + (e->tv_usec - b->tv_usec) / 10000);
cp = "%Uu %Ss %E %P %X+%Dk %I+%Oio %Fpf+%Ww";
haderr = 0;
#else /* !BSDTIMES */
# ifdef _SEQUENT_
int ms = (int)
((e->tv_sec - b->tv_sec) * 100 + (e->tv_usec - b->tv_usec) / 10000);
cp = "%Uu %Ss %E %P %I+%Oio %Fpf+%Ww";
haderr = 0;
# else /* !_SEQUENT_ */
# ifndef POSIX
time_t ms = ((time_t)((e - b) / HZ) * 100) +
@ -350,6 +353,7 @@ prusage(struct tms *bs, struct tms *es, clock_t e, clock_t b)
# endif /* POSIX */
cp = "%Uu %Ss %E %P";
haderr = 0;
/*
* the tms stuff is not very precise, so we fudge it.
@ -678,6 +682,7 @@ prusage(struct tms *bs, struct tms *es, clock_t e, clock_t b)
break;
}
xputchar('\n');
haderr = ohaderr;
}
#if defined(BSDTIMES) || defined(_SEQUENT_)

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/tc.alloc.c,v 3.50 2011/12/30 20:55:24 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/tc.alloc.c,v 3.56 2016/03/08 12:47:43 christos Exp $ */
/*
* tc.alloc.c (Caltech) 2/21/82
* Chris Kingsley, kingsley@cit-20.
@ -42,8 +42,11 @@
#ifdef HAVE_MALLINFO
#include <malloc.h>
#endif
#if defined(HAVE_SBRK) && !defined(__APPLE__)
#define USE_SBRK
#endif
RCSID("$tcsh: tc.alloc.c,v 3.50 2011/12/30 20:55:24 christos Exp $")
RCSID("$tcsh: tc.alloc.c,v 3.56 2016/03/08 12:47:43 christos Exp $")
#define RCHECK
#define DEBUG
@ -66,7 +69,7 @@ out_of_memory (void)
{
static const char msg[] = "Out of memory\n";
write(didfds ? 2 : SHDIAG, msg, strlen(msg));
TCSH_IGNORE(write(didfds ? 2 : SHDIAG, msg, strlen(msg)));
_exit(1);
}
#endif
@ -131,7 +134,11 @@ union overhead {
#endif
#ifdef _LP64
#define ROUNDUP 15
#else
#define ROUNDUP 7
#endif
/*
* nextf[i] is the pointer to the next free block of size 2^(i+3). The
@ -345,10 +352,13 @@ calloc(size_t i, size_t j)
{
#ifndef lint
char *cp;
volatile size_t k;
i *= j;
cp = xmalloc(i);
memset(cp, 0, i);
/* Stop gcc 5.x from optimizing malloc+memset = calloc */
k = i;
memset(cp, 0, k);
return ((memalign_t) cp);
#else
@ -459,7 +469,7 @@ 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);
return 1 << (op->ov_index + 3);
else
return 0;
}
@ -513,19 +523,19 @@ smalloc(size_t n)
n = n ? n : 1;
#ifdef HAVE_SBRK
#ifdef USE_SBRK
if (membot == NULL)
membot = sbrk(0);
#endif /* HAVE_SBRK */
#endif /* USE_SBRK */
if ((ptr = malloc(n)) == NULL)
out_of_memory();
#ifndef HAVE_SBRK
#ifndef USE_SBRK
if (memtop < ((char *) ptr) + n)
memtop = ((char *) ptr) + n;
if (membot == NULL)
membot = ptr;
#endif /* !HAVE_SBRK */
#endif /* !USE_SBRK */
return ((memalign_t) ptr);
}
@ -536,19 +546,19 @@ srealloc(ptr_t p, size_t n)
n = n ? n : 1;
#ifdef HAVE_SBRK
#ifdef USE_SBRK
if (membot == NULL)
membot = sbrk(0);
#endif /* HAVE_SBRK */
#endif /* USE_SBRK */
if ((ptr = (p ? realloc(p, n) : malloc(n))) == NULL)
out_of_memory();
#ifndef HAVE_SBRK
#ifndef USE_SBRK
if (memtop < ((char *) ptr) + n)
memtop = ((char *) ptr) + n;
if (membot == NULL)
membot = ptr;
#endif /* !HAVE_SBRK */
#endif /* !USE_SBRK */
return ((memalign_t) ptr);
}
@ -560,22 +570,22 @@ scalloc(size_t s, size_t n)
n *= s;
n = n ? n : 1;
#ifdef HAVE_SBRK
#ifdef USE_SBRK
if (membot == NULL)
membot = sbrk(0);
#endif /* HAVE_SBRK */
#endif /* USE_SBRK */
if ((ptr = malloc(n)) == NULL)
out_of_memory();
memset (ptr, 0, n);
#ifndef HAVE_SBRK
#ifndef USE_SBRK
if (memtop < ((char *) ptr) + n)
memtop = ((char *) ptr) + n;
if (membot == NULL)
membot = ptr;
#endif /* !HAVE_SBRK */
#endif /* !USE_SBRK */
return ((memalign_t) ptr);
}
@ -625,9 +635,9 @@ showall(Char **v, struct command *c)
(unsigned long) sbrk(0));
#else /* SYSMALLOC */
#ifndef HAVE_MALLINFO
#ifdef HAVE_SBRK
#ifdef USE_SBRK
memtop = sbrk(0);
#endif /* HAVE_SBRK */
#endif /* USE_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));

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/tc.bind.c,v 3.45 2009/06/25 21:15:37 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/tc.bind.c,v 3.46 2015/08/13 08:54:04 christos Exp $ */
/*
* tc.bind.c: Key binding functions
*/
@ -32,7 +32,7 @@
*/
#include "sh.h"
RCSID("$tcsh: tc.bind.c,v 3.45 2009/06/25 21:15:37 christos Exp $")
RCSID("$tcsh: tc.bind.c,v 3.46 2015/08/13 08:54:04 christos Exp $")
#include "ed.h"
#include "ed.defns.h"
@ -506,8 +506,14 @@ bindkey_usage(void)
" -v bind all keys to vi bindings\n"));
xprintf("%s", CGETS(20, 18,
" -e bind all keys to emacs bindings\n"));
xprintf("%s", CGETS(20, 19,
" -d bind all keys to default editor's bindings\n"));
xprintf(CGETS(20, 19,
" -d bind all keys to default editor's bindings (%s)\n"),
#ifdef VIDEFAULT
"vi"
#else /* EMACSDEFAULT */
"emacs"
#endif /* VIDEFAULT */
);
xprintf("%s", CGETS(20, 20,
" -l list editor commands with descriptions\n"));
xprintf("%s", CGETS(20, 21,

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/tc.const.c,v 3.98 2011/04/14 18:25:26 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/tc.const.c,v 3.107 2015/09/08 15:49:53 christos Exp $ */
/*
* sh.const.c: String constants for tcsh.
*/
@ -32,7 +32,7 @@
*/
#include "sh.h"
RCSID("$tcsh: tc.const.c,v 3.98 2011/04/14 18:25:26 christos Exp $")
RCSID("$tcsh: tc.const.c,v 3.107 2015/09/08 15:49:53 christos Exp $")
Char STRlogout[] = { 'l', 'o', 'g', 'o', 'u', 't', '\0' };
Char STRautologout[] = { 'a', 'u', 't', 'o', 'l', 'o', 'g', 'o', 'u', 't',
@ -85,6 +85,8 @@ Char STRVENDOR[] = { 'V', 'E', 'N', 'D', 'O', 'R', '\0' };
Char STRMACHTYPE[] = { 'M', 'A', 'C', 'H', 'T', 'Y', 'P', 'E', '\0' };
Char STROSTYPE[] = { 'O', 'S', 'T', 'Y', 'P', 'E', '\0' };
Char STRedit[] = { 'e', 'd', 'i', 't', '\0' };
Char STReditors[] = { 'e', 'd', 'i', 't', 'o', 'r', 's', '\0' };
Char STRvimode[] = { 'v', 'i', 'm', 'o', 'd', 'e', '\0' };
Char STRaddsuffix[] = { 'a', 'd', 'd', 's', 'u', 'f', 'f', 'i', 'x',
'\0' };
Char STRcsubstnonl[] = { 'c', 's', 'u', 'b', 's', 't', 'n', 'o', 'n', 'l',
@ -113,6 +115,7 @@ Char STRmhT[] = { '-', 'h', 'T', '\0' };
Char STRmm[] = { '-', 'm', '\0' };
Char STRmr[] = { '-', 'r', '\0' };
Char STRmerge[] = { 'm', 'e', 'r', 'g', 'e', '\0' };
Char STRlock[] = { 'l', 'o', 'c', 'k', '\0' };
Char STRtildothist[] = { '~', '/', '.', 'h', 'i', 's', 't', 'o', 'r',
'y', '\0' };
@ -369,6 +372,8 @@ Char STRsldotcshrc[] = { '/', '.', 'c', 's', 'h', 'r', 'c', '\0' };
Char STRsldotlogin[] = { '/', '.', 'l', 'o', 'g', 'i', 'n', '\0' };
Char STRignoreeof[] = { 'i', 'g', 'n', 'o', 'r', 'e', 'e', 'o', 'f', '\0' };
Char STRnoclobber[] = { 'n', 'o', 'c', 'l', 'o', 'b', 'b', 'e', 'r', '\0' };
Char STRnotempty[] = { 'n', 'o', 't', 'e', 'm', 'p', 't', 'y', '\0' };
Char STRask[] = { 'a', 's', 'k', '\0' };
Char STRhelpcommand[] = { 'h', 'e', 'l', 'p', 'c', 'o', 'm', 'm', 'a', 'n',
'd', '\0' };
Char STRfignore[] = { 'f', 'i', 'g', 'n', 'o', 'r', 'e', '\0' };
@ -430,8 +435,9 @@ Char STRrmstar[] = { 'r', 'm', 's', 't', 'a', 'r', '\0' };
Char STRrm[] = { 'r', 'm', '\0' };
Char STRhighlight[] = { 'h', 'i', 'g', 'h', 'l', 'i', 'g', 'h', 't', '\0' };
Char STRimplicitcd[] = { 'i', 'm', 'p', 'l', 'i', 'c', 'i', 't',
'c', 'd', '\0' };
Char STRimplicitcd[] = { 'i', 'm', 'p', 'l', 'i', 'c', 'i', 't',
'c', 'd', '\0' };
Char STRcdtohome[] = { 'c', 'd', 't', 'o', 'h', 'o', 'm', 'e', '\0' };
Char STRkillring[] = { 'k', 'i', 'l', 'l', 'r', 'i', 'n', 'g', '\0' };
Char STRkilldup[] = { 'k', 'i', 'l', 'l', 'd', 'u', 'p', '\0' };
Char STRshlvl[] = { 's', 'h', 'l', 'v', 'l', '\0' };
@ -450,12 +456,12 @@ Char STRLC_MONETARY[] = { 'L', 'C', '_', 'M', 'O', 'N', 'E', 'T', 'A',
'R', 'Y', '\0' };
Char STRNOREBIND[] = { 'N', 'O', 'R', 'E', 'B', 'I', 'N', 'D', '\0' };
#if defined(SIG_WINDOW) || defined (_VMS_POSIX)
#if defined(SIG_WINDOW) || defined(SIGWINCH) || defined(SIGWINDOW) || defined (_VMS_POSIX) || defined(_SIGWINCH)
/* atp - problem with declaration of str{lines,columns} in sh.func.c (1277) */
Char STRLINES[] = { 'L', 'I', 'N', 'E', 'S', '\0'};
Char STRCOLUMNS[] = { 'C', 'O', 'L', 'U', 'M', 'N', 'S', '\0'};
Char STRTERMCAP[] = { 'T', 'E', 'R', 'M', 'C', 'A', 'P', '\0'};
#endif /* SIG_WINDOW || _VMS_POSIX */
#endif /* SIG_WINDOW || SIGWINCH || SIGWINDOW || _VMS_POSIX */
#if defined (_OSD_POSIX) /* BS2000 needs this variable set to "SHELL" */
Char STRPROGRAM_ENVIRONMENT[] = { 'P', 'R', 'O', 'G', 'R', 'A', 'M',
@ -491,6 +497,7 @@ Char STRmmcolormauto[] = { '-', 'G', '\0' };
Char STRmmcolormauto[] = { '-', '-', 'c', 'o', 'l', 'o', 'r', '=', 'a', 'u', 't', 'o', '\0' };
#endif /* BSD_STYLE_COLORLS */
Char STRLS_COLORS[] = { 'L', 'S', '_', 'C', 'O', 'L', 'O', 'R', 'S', '\0' };
Char STRLSCOLORS[] = { 'L', 'S', 'C', 'O', 'L', 'O', 'R', 'S', '\0' };
#endif /* COLOR_LS_F */
Char STRls[] = { 'l', 's', '\0' };

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/tc.decls.h,v 3.65 2010/02/09 20:26:13 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/tc.decls.h,v 3.66 2012/06/21 18:49:11 christos Exp $ */
/*
* tc.decls.h: Function declarations from all the tcsh modules
*/
@ -226,15 +226,15 @@ extern int getv (Char *);
#ifndef __GNUC__
#define __attribute__(a)
#endif
extern pret_t xprintf (const char *, ...)
extern int xprintf (const char *, ...)
__attribute__((__format__(__printf__, 1, 2)));
extern pret_t xsnprintf (char *, size_t, const char *, ...)
extern int xsnprintf (char *, size_t, const char *, ...)
__attribute__((__format__(__printf__, 3, 4)));
extern char *xasprintf (const char *, ...)
__attribute__((__format__(__printf__, 1, 2)));
extern pret_t xvprintf (const char *, va_list)
extern int xvprintf (const char *, va_list)
__attribute__((__format__(__printf__, 1, 0)));
extern pret_t xvsnprintf (char *, size_t, const char *, va_list)
extern int xvsnprintf (char *, size_t, const char *, va_list)
__attribute__((__format__(__printf__, 3, 0)));
extern char *xvasprintf (const char *, va_list)
__attribute__((__format__(__printf__, 1, 0)));

117
tc.func.c
View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/tc.func.c,v 3.148 2011/12/14 16:36:44 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/tc.func.c,v 3.158 2016/05/13 15:08:12 christos Exp $ */
/*
* tc.func.c: New tcsh builtins.
*/
@ -32,7 +32,7 @@
*/
#include "sh.h"
RCSID("$tcsh: tc.func.c,v 3.148 2011/12/14 16:36:44 christos Exp $")
RCSID("$tcsh: tc.func.c,v 3.158 2016/05/13 15:08:12 christos Exp $")
#include "ed.h"
#include "ed.defns.h" /* for the function names */
@ -120,11 +120,17 @@ expand_lex(const struct wordent *sp0, int from, int to)
if ((*s & QUOTE)
&& (((*s & TRIM) == HIST && HIST != '\0') ||
(((*s & TRIM) == '\'') && (prev_c != '\\')) ||
(((*s & TRIM) == '\"') && (prev_c != '\\')) ||
(((*s & TRIM) == '\\') && (prev_c != '\\')))) {
(((*s & TRIM) == '\"') && (prev_c != '\\')))) {
Strbuf_append1(&buf, '\\');
}
#if INVALID_BYTE != 0
if ((*s & INVALID_BYTE) != INVALID_BYTE) /* *s < INVALID_BYTE */
Strbuf_append1(&buf, *s & TRIM);
else
Strbuf_append1(&buf, *s);
#else
Strbuf_append1(&buf, *s & TRIM);
#endif
prev_c = *s;
}
Strbuf_append1(&buf, ' ');
@ -193,7 +199,7 @@ void
dolist(Char **v, struct command *c)
{
Char **globbed;
int i, k;
int i, k, ret = 0;
struct stat st;
USE(c);
@ -333,8 +339,11 @@ dolist(Char **v, struct command *c)
xputchar('\n');
print_by_column(STRNULL, &v[i], k - i, FALSE);
}
haderr = 1;
xprintf("%S: %s.\n", tmp, strerror(err));
haderr = 0;
i = k + 1;
ret = 1;
}
else if (S_ISDIR(st.st_mode)) {
Char *cp;
@ -372,6 +381,8 @@ dolist(Char **v, struct command *c)
xputchar('\n');
print_by_column(STRNULL, &v[i], k - i, FALSE);
}
if (ret)
stderror(ERR_SILENT);
}
cleanup_until(globbed);
@ -481,6 +492,19 @@ dowhich(Char **v, struct command *c)
setcopy(STRstatus, STR1, VAR_READWRITE);
}
static int
findvv(Char **vv, const char *cp)
{
for (; vv && *vv; vv++) {
size_t i;
for (i = 0; (*vv)[i] && (*vv)[i] == cp[i]; i++)
continue;
if ((*vv)[i] == '\0' && cp[i] == '\0')
return 1;
}
return 0;
}
/* PWP: a hack to start up your stopped editor on a single keystroke */
/* jbs - fixed hack so it worked :-) 3/28/89 */
@ -488,33 +512,42 @@ struct process *
find_stop_ed(void)
{
struct process *pp, *retp;
const char *ep, *vp;
const char *ep = NULL, *vp = NULL;
char *cp, *p;
size_t epl, vpl;
size_t epl = 0, vpl = 0;
int pstatus;
if ((ep = getenv("EDITOR")) != NULL) { /* if we have a value */
if ((p = strrchr(ep, '/')) != NULL) /* if it has a path */
ep = p + 1; /* then we want only the last part */
}
else
ep = "ed";
if ((vp = getenv("VISUAL")) != NULL) { /* if we have a value */
if ((p = strrchr(vp, '/')) != NULL) /* and it has a path */
vp = p + 1; /* then we want only the last part */
}
else
vp = "vi";
for (vpl = 0; vp[vpl] && !isspace((unsigned char)vp[vpl]); vpl++)
continue;
for (epl = 0; ep[epl] && !isspace((unsigned char)ep[epl]); epl++)
continue;
struct varent *varp;
Char **vv;
if (pcurrent == NULL) /* see if we have any jobs */
return NULL; /* nope */
if ((varp = adrof(STReditors)) != NULL)
vv = varp->vec;
else
vv = NULL;
if (! vv) {
if ((ep = getenv("EDITOR")) != NULL) { /* if we have a value */
if ((p = strrchr(ep, '/')) != NULL) /* if it has a path */
ep = p + 1; /* then we want only the last part */
}
else
ep = "ed";
if ((vp = getenv("VISUAL")) != NULL) { /* if we have a value */
if ((p = strrchr(vp, '/')) != NULL) /* and it has a path */
vp = p + 1; /* then we want only the last part */
}
else
vp = "vi";
for (vpl = 0; vp[vpl] && !isspace((unsigned char)vp[vpl]); vpl++)
continue;
for (epl = 0; ep[epl] && !isspace((unsigned char)ep[epl]); epl++)
continue;
}
retp = NULL;
for (pp = proclist.p_next; pp; pp = pp->p_next)
if (pp->p_procid == pp->p_jobid) {
@ -540,10 +573,13 @@ find_stop_ed(void)
else
cp = p; /* else we get all of it */
/* if we find either in the current name, fg it */
if (strncmp(ep, cp, epl) == 0 ||
strncmp(vp, cp, vpl) == 0) {
/*
* If we find the current name in the $editors array (if set)
* or as $EDITOR or $VISUAL (if $editors not set), fg it.
*/
if ((vv && findvv(vv, cp)) ||
(epl && strncmp(ep, cp, epl) == 0 && cp[epl] == '\0') ||
(vpl && strncmp(vp, cp, vpl) == 0 && cp[vpl] == '\0')) {
/*
* If there is a choice, then choose the current process if
* available, or the previous process otherwise, or else
@ -733,7 +769,7 @@ auto_lock(void)
pp = xgetpass("Password:");
crpp = XCRYPT(pw, pp, srpp);
if ((strcmp(crpp, srpp) == 0)
if ((crpp && strcmp(crpp, srpp) == 0)
#ifdef AFS
|| (ka_UserAuthenticateGeneral(KA_USERAUTH_VERSION,
afsname, /* name */
@ -1108,8 +1144,7 @@ rmstar(struct wordent *cp)
Char *tag;
#endif /* RMDEBUG */
Char *charac;
char c;
int ask, doit, star = 0, silent = 0;
int ask, doit, star = 0, silent = 0, opintr_disabled;
if (!adrof(STRrmstar))
return;
@ -1119,6 +1154,8 @@ rmstar(struct wordent *cp)
we = cp->next;
while (*we->word == ';' && we != cp)
we = we->next;
opintr_disabled = pintr_disabled;
pintr_disabled = 0;
while (we != cp) {
#ifdef RMDEBUG
if (*tag)
@ -1139,17 +1176,8 @@ rmstar(struct wordent *cp)
if (!Strcmp(args->word, STRstar))
star = 1;
if (ask && star) {
xprintf("%s", CGETS(22, 8,
"Do you really want to delete all files? [n/y] "));
flush();
(void) force_read(SHIN, &c, 1);
/*
* Perhaps we should use the yesexpr from the
* actual locale
*/
doit = (strchr(CGETS(22, 14, "Yy"), c) != NULL);
while (c != '\n' && force_read(SHIN, &c, 1) == 1)
continue;
doit = getYN(CGETS(22, 8,
"Do you really want to delete all files? [N/y] "));
if (!doit) {
/* remove the command instead */
#ifdef RMDEBUG
@ -1195,6 +1223,7 @@ rmstar(struct wordent *cp)
xprintf("%S ", we->word);
}
#endif /* RMDEBUG */
pintr_disabled = opintr_disabled;
return;
}

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/tc.nls.c,v 3.23 2010/02/12 22:17:20 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/tc.nls.c,v 3.27 2016/07/17 15:02:44 christos Exp $ */
/*
* tc.nls.c: NLS handling
*/
@ -32,7 +32,7 @@
*/
#include "sh.h"
RCSID("$tcsh: tc.nls.c,v 3.23 2010/02/12 22:17:20 christos Exp $")
RCSID("$tcsh: tc.nls.c,v 3.27 2016/07/17 15:02:44 christos Exp $")
#ifdef WIDE_STRINGS
@ -64,7 +64,11 @@ NLSWidth(Char c)
{
# ifdef HAVE_WCWIDTH
int l;
#if INVALID_BYTE != 0
if ((c & INVALID_BYTE) == INVALID_BYTE) /* c >= INVALID_BYTE */
#else
if (c & INVALID_BYTE)
#endif
return 1;
l = xwcwidth((wchar_t) c);
return l >= 0 ? l : 0;
@ -116,14 +120,29 @@ NLSChangeCase(const Char *p, int mode)
}
int
NLSClassify(Char c, int nocomb)
NLSClassify(Char c, int nocomb, int drawPrompt)
{
int w;
if (c & INVALID_BYTE)
#ifndef SHORT_STRINGS
if ((c & 0x80) != 0) /* c >= 0x80 */
return NLSCLASS_ILLEGAL;
w = NLSWidth(c);
if ((w > 0 && !(Iscntrl(c) && (c & CHAR) < 0x100)) || (Isprint(c) && !nocomb))
return w;
#endif
if (!drawPrompt) { /* draw command-line */
#if INVALID_BYTE != 0
if ((c & INVALID_BYTE) == INVALID_BYTE) /* c >= INVALID_BYTE */
return NLSCLASS_ILLEGAL;
if ((c & INVALID_BYTE) == QUOTE && (c & 0x80) == 0) /* c >= QUOTE */
return 1;
if (c >= 0x10000000) /* U+10000000 = FC 90 80 80 80 80 */
return NLSCLASS_ILLEGAL5;
if (c >= 0x1000000) /* U+1000000 = F9 80 80 80 80 */
return NLSCLASS_ILLEGAL4;
if (c >= 0x100000) /* U+100000 = F4 80 80 80 */
return NLSCLASS_ILLEGAL3;
#endif
if (c >= 0x10000) /* U+10000 = F0 90 80 80 */
return NLSCLASS_ILLEGAL2;
}
if (Iscntrl(c) && (c & CHAR) < 0x100) {
if (c == '\n')
return NLSCLASS_NL;
@ -131,13 +150,14 @@ NLSClassify(Char c, int nocomb)
return NLSCLASS_TAB;
return NLSCLASS_CTRL;
}
#ifdef WIDE_STRINGS
if (c >= 0x1000000)
return NLSCLASS_ILLEGAL4;
if (c >= 0x10000)
return NLSCLASS_ILLEGAL3;
#endif
if (c >= 0x100)
return NLSCLASS_ILLEGAL2;
w = NLSWidth(c);
if (drawPrompt) { /* draw prompt */
if (w > 0)
return w;
if (w == 0)
return 1;
}
if ((w > 0 && !(Iscntrl(c) && (c & CHAR) < 0x100)) || (Isprint(c) && !nocomb))
return w;
return NLSCLASS_ILLEGAL;
}

View File

@ -1,4 +1,4 @@
/* $Header: /p/tcsh/cvsroot/tcsh/tc.nls.h,v 3.14 2011/02/25 23:57:21 christos Exp $ */
/* $Header: /p/tcsh/cvsroot/tcsh/tc.nls.h,v 3.17 2015/06/06 21:19:08 christos Exp $ */
/*
* tc.nls.h: NLS support
*
@ -43,7 +43,7 @@ extern int NLSStringWidth (const Char *);
#endif
extern Char *NLSChangeCase (const Char *, int);
extern int NLSClassify (Char, int);
extern int NLSClassify (Char, int, int);
#define NLSCLASS_CTRL (-1)
#define NLSCLASS_TAB (-2)
@ -52,6 +52,7 @@ extern int NLSClassify (Char, int);
#define NLSCLASS_ILLEGAL2 (-5)
#define NLSCLASS_ILLEGAL3 (-6)
#define NLSCLASS_ILLEGAL4 (-7)
#define NLSCLASS_ILLEGAL5 (-8)
#define NLSCLASS_ILLEGAL_SIZE(x) (-(x) - (-(NLSCLASS_ILLEGAL) - 1))

Some files were not shown because too many files have changed in this diff Show More