tcsh/tcsh-6.17.02.dif
2011-11-16 11:14:31 +00:00

840 lines
23 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--- .pkgextract
+++ .pkgextract 2006-04-25 12:58:31.000000000 +0000
@@ -0,0 +1,6 @@
+patch -p0 -s --suffix=.spell < ../tcsh-6.15.00-spelling.dif
+patch -p0 -s --suffix=.utf8 < ../tcsh-6.15.00-utf8.dif
+patch -p0 -s --suffix=.pipe < ../tcsh-6.15.00-pipe.dif
+patch -p0 -s --suffix=.longjmp < ../tcsh-6.15.00-longjmp.dif
+patch -p0 -s --suffix=.normcmd < ../tcsh-6.15.00-norm-cmd.dif
+patch -p0 -s --suffix=.history < ../tcsh-6.15.00-history.dif
--- Makefile.in
+++ Makefile.in 2006-04-25 12:58:31.000000000 +0000
@@ -591,12 +591,12 @@ vgrind:
@vgrind -t -x -h Index index >/crp/bill/csh/index.t
install-strip: install
+ -strip ${DESTBIN}/tcsh$(EXEEXT)
install: tcsh$(EXEEXT)
-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.man: tcsh.man
--- config/linux
+++ config/linux 2007-07-13 11:22:07.000000000 +0000
@@ -70,7 +70,7 @@
*
* Note: Linux should work with any SYSVREL < 3.
*/
-#define SYSVREL 0
+#define SYSVREL 2
/*
* YPBUGS Work around Sun YP bugs that cause expansion of ~username
@@ -86,21 +86,40 @@
*/
#define __STRICT_ANSI__
-#define _BSD_SOURCE
-#define _SVID_SOURCE
-#define _POSIX_SOURCE
-#define _XOPEN_SOURCE 500
-#define _GNU_SOURCE
+#ifndef _BSD_SOURCE
+# define _BSD_SOURCE
+#endif
+#ifndef _SVID_SOURCE
+# define _SVID_SOURCE
+#endif
+#ifndef _POSIX_SOURCE
+# define _POSIX_SOURCE
+#endif
+#ifndef _XOPEN_SOURCE
+# define _XOPEN_SOURCE 500
+#endif
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE
+#endif
/*
* Large file support from <features.h>
*/
-#define _LARGEFILE_SOURCE
-#define _LARGEFILE64_SOURCE
-#define _FILE_OFFSET_BITS 64
+#ifndef _LARGEFILE_SOURCE
+# define _LARGEFILE_SOURCE
+#endif
+#ifndef _LARGEFILE64_SOURCE
+# define _LARGEFILE64_SOURCE
+#endif
+#ifndef _FILE_OFFSET_BITS
+# define _FILE_OFFSET_BITS 64
+#endif
/****************** local defines *********************/
+#if !defined(PW_SHADOW)
+# define PW_SHADOW
+#endif
#ifndef _PATH_TCSHELL
#define _PATH_TCSHELL "/bin/tcsh"
#endif
@@ -108,4 +127,17 @@
#define NLS_CATALOGS
+#if !defined(SYSMALLOC)
+# define SYSMALLOC
+#endif
+#if !defined(NISPLUS)
+# define NISPLUS
+#endif
+#if !defined(POSIX)
+# define POSIX
+#endif
+
+#define SuSE
+#define MCLoadBySet NL_CAT_LOCALE
+
#endif /* _h_config */
--- config_f.h
+++ config_f.h 2007-07-13 10:47:30.000000000 +0000
@@ -37,7 +37,7 @@
*/
#ifndef _h_config_f
#define _h_config_f
-
+#include <features.h>
/*
* SHORT_STRINGS Use at least 16 bit characters instead of 8 bit chars
* This fixes up quoting problems and eases implementation
@@ -66,12 +66,19 @@
*/
#if defined (NLS) && defined (HAVE_CATGETS)
# define NLS_CATALOGS
+#else
+# error No NLS Catalogs
#endif
/*
* LOGINFIRST Source ~/.login before ~/.cshrc
*/
-#undef LOGINFIRST
+#define LOGINFIRST
+
+/*
+ * USERLOGINFIRST Source ~/.login before ~/.cshrc
+ */
+#undef USERLOGINFIRST
/*
* VIDEFAULT Make the VI mode editor the default
@@ -146,7 +153,7 @@
* This can be much slower and no memory statistics will be
* provided.
*/
-#if defined(__MACHTEN__) || defined(PURIFY) || defined(MALLOC_TRACE) || defined(_OSD_POSIX) || defined(__MVS__)
+#if defined(__MACHTEN__) || defined(PURIFY) || defined(MALLOC_TRACE) || defined(_OSD_POSIX) || defined(__MVS__) || defined(__GLIBC__)
# define SYSMALLOC
#else
# undef SYSMALLOC
@@ -165,7 +172,7 @@
* successful, set $REMOTEHOST to the name or address of the
* host
*/
-#define REMOTEHOST
+#undef REMOTEHOST
/*
* COLOR_LS_F Do you want to use builtin color ls-F ?
@@ -188,7 +195,7 @@
* RCSID This defines if we want rcs strings in the binary or not
*
*/
-#if !defined(lint) && !defined(SABER) && !defined(__CLCC__)
+#if !defined(lint) && !defined(SABER) && !defined(__CLCC__) && !defined(__linux__)
# ifndef __GNUC__
# define RCSID(id) static char *rcsid = (id);
# else
--- configure
+++ configure 2011-11-16 10:49:20.387146641 +0000
@@ -3750,7 +3750,7 @@ return tgetent ();
return 0;
}
_ACEOF
-for ac_lib in '' termlib termcap curses ncurses; do
+for ac_lib in '' termlib termcap tinfo curses ncurses; do
if test -z "$ac_lib"; then
ac_res="none required"
else
--- configure.in
+++ configure.in 2011-11-16 10:49:08.663146282 +0000
@@ -296,7 +296,7 @@ fi
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 tinfo curses ncurses)
AC_SEARCH_LIBS(gethostbyname, nsl)
AC_SEARCH_LIBS(connect, socket)
AC_SEARCH_LIBS(catgets, catgets)
--- glob.h
+++ glob.h 2006-04-25 12:58:31.000000000 +0000
@@ -72,6 +72,7 @@ typedef struct {
#define GLOB_NOSYS (-4) /* Implementation does not support function. */
/* #if !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE) */
+#if (!defined _POSIX_C_SOURCE || _POSIX_C_SOURCE < 2 || defined _BSD_SOURCE || defined _GNU_SOURCE)
#define GLOB_ALTDIRFUNC 0x0040 /* Use alternately specified directory funcs. */
#define GLOB_BRACE 0x0080 /* Expand braces ala csh. */
#define GLOB_MAGCHAR 0x0100 /* Pattern had globbing characters. */
@@ -84,7 +85,7 @@ typedef struct {
#define GLOB_DOT 0x8000 /* don't skip dotfiles (except . and ..) */
#define GLOB_ABEND GLOB_ABORTED /* source compatibility */
-/* #endif */
+#endif
int glob (const char *, int, int (*)(const char *, int), glob_t *);
void globfree (glob_t *);
--- host.defs
+++ host.defs 2007-07-13 12:05:58.000000000 +0000
@@ -110,7 +110,7 @@ newcode :
/*
* On convex, find the current machine type via the getsysinfo() syscall
*/
-#include <sys/sysinfo.h>
+# include <sys/sysinfo.h>
/* From: fox@convex.com (David DeSimone) */
static char *
@@ -168,6 +168,30 @@ getconvex(void)
endcode :
enddef :
+newdef : defined(linux) || defined(__GNU__) || defined(__GLIBC__)
+comment : Linus Torvalds's linux
+newcode :
+# include <sys/utsname.h>
+char * getmach(void)
+{
+ static char* mach = "unknown";
+ struct utsname uts;
+ if (uname(&uts) == 0)
+ mach = uts.machine;
+ return mach;
+}
+char * gethost(void)
+{
+ static char host[256];
+ struct utsname uts;
+ if (uname(&uts) == 0)
+ xsnprintf(host, sizeof(host), "%s-linux", uts.machine);
+ else
+ xsnprintf(host, sizeof(host), "unknown-linux");
+ return host;
+}
+endcode :
+enddef :
newcode :
void
@@ -450,26 +474,29 @@ machtype: defined(M_i386) : "i386-pc-
enddef :
-newdef : defined(linux) || defined(__GNU__) || defined(__GLIBC__)
-comment : Linus Torvalds's linux
+vendor : defined(SuSE) : "suse"
vendor : defined(M_intel) : "intel"
hosttype: defined(__ia64__) : "ia64-linux"
hosttype: defined(__powerpc64__) : "powerpc64-linux"
hosttype: defined(__s390x__) : "s390x-linux"
hosttype: defined(__s390__) : "s390-linux"
hosttype: defined(__x86_64__) : "x86_64-linux"
-hosttype: defined(M_i586) : "i586-linux"
-hosttype: defined(M_i486) : "i486-linux"
+hosttype: defined(M_i686) : "i686-linux"
+hosttype: defined(M_i586) : "i586-linux"
+hosttype: defined(M_i486) : "i486-linux"
hosttype: defined(M_i386) : "i386-linux"
+hosttype: : gethost()
ostype : : "linux"
machtype: defined(__ia64__) : "ia64"
machtype: defined(__powerpc64__) : "powerpc64"
machtype: defined(__s390x__) : "s390x"
machtype: defined(__s390__) : "s390"
machtype: defined(__x86_64__) : "x86_64"
-machtype: defined(M_i586) : "i586"
-machtype: defined(M_i486) : "i486"
+machtype: defined(M_i686) : "i686"
+machtype: defined(M_i586) : "i586"
+machtype: defined(M_i486) : "i486"
machtype: defined(M_i386) : "i386"
+machtype: : getmach()
vendor : defined(__alpha) : "dec"
vendor : defined(PPC) : "apple"
hosttype: defined(__alpha) : "alpha"
@@ -480,6 +507,7 @@ machtype: defined(M_mipsel) : "mipsel
machtype: defined(M_mipseb) : "mipseb"
machtype: defined(M_mips64el) : "mips64el"
machtype: defined(M_mips64eb) : "mips64eb"
+machtype: : getmach()
enddef :
--- nls/C/set1
+++ nls/C/set1 2006-04-25 12:58:31.000000000 +0000
@@ -1,5 +1,6 @@
$ $tcsh: set1,v 1.6 2006/03/02 18:46:45 christos Exp $
$ Error messages
+$ codeset=ANSI_X3.4-1968
$set 1
1 Syntax Error
2 %s is not allowed
--- nls/et/set1
+++ nls/et/set1 2006-04-25 12:58:31.000000000 +0000
@@ -1,5 +1,6 @@
$ $tcsh: set1,v 1.3 2006/03/02 18:46:45 christos Exp $
$ Error messages
+$ codeset=ISO-8859-1
$set 1
1 S<>ntaksi viga
2 %s ei ole lubatud
--- nls/finnish/set1
+++ nls/finnish/set1 2006-04-25 12:58:31.000000000 +0000
@@ -1,5 +1,6 @@
$ $tcsh: set1,v 1.3 2006/03/02 18:46:46 christos Exp $
$ Error messages
+$ codeset=ISO-8859-1
$set 1
1 Kielioppivirhe
2 %s ei ole sallittu
--- nls/french/set1
+++ nls/french/set1 2006-04-25 12:58:31.000000000 +0000
@@ -1,5 +1,6 @@
$ $tcsh: set1,v 1.4 2006/03/02 18:46:46 christos Exp $
$ Messages d 'erreur
+$ codeset=ISO-8859-1
$set 1
1 Erreur de syntaxe
2 %s n'est pas autoris<69>
--- nls/german/set1
+++ nls/german/set1 2006-04-25 12:58:31.000000000 +0000
@@ -1,5 +1,6 @@
$ $tcsh: set1,v 1.6 2006/03/02 18:46:46 christos Exp $
$ Error messages
+$ codeset=ISO-8859-1
$set 1
1 Syntaxfehler
2 %s nicht erlaubt
--- nls/greek/set1
+++ nls/greek/set1 2006-04-25 12:58:31.000000000 +0000
@@ -1,5 +1,6 @@
$ $tcsh: set1,v 1.4 2006/03/02 18:46:46 christos Exp $
$ Error messages
+$ codeset=ISO-8859-7
$set 1
1 <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2 T<> %s <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
--- nls/italian/set1
+++ nls/italian/set1 2006-04-25 12:58:31.000000000 +0000
@@ -1,5 +1,6 @@
$ $tcsh: set1,v 1.2 2006/03/02 18:46:47 christos Exp $
$ Error messages
+$ codeset=ISO-8859-1
$set 1
1 Errore di Sintassi
2 %s non <20> permesso
--- nls/ja/set1
+++ nls/ja/set1 2006-04-25 12:58:31.000000000 +0000
@@ -1,5 +1,6 @@
$ $tcsh: set1,v 1.5 2006/03/02 18:46:47 christos Exp $
$ Error messages
+$ codeset=EUC-JP
$set 1
1 ʸˡ<CAB8><CBA1><EFBFBD>ְ<EFBFBD><D6B0>äƤ<C3A4><C6A4>ޤ<EFBFBD>
2 %s <20>ϳ<EFBFBD><CFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><C6A4><EFBFBD><EFBFBD>Ƥ<EFBFBD><C6A4>ޤ<EFBFBD><DEA4><EFBFBD>
--- nls/pl/set1
+++ nls/pl/set1 2006-04-25 12:58:31.000000000 +0000
@@ -1,5 +1,6 @@
$ $tcsh: set1,v 1.5 1998/06/27 12:27:55 christos Exp $
$ Error messages
+$ codeset=ISO-8859-2
$set 1
1 B<><42>d sk<73>adni
2 %s jest niedozwolone
--- nls/russian/set1
+++ nls/russian/set1 2006-04-25 12:58:31.000000000 +0000
@@ -1,5 +1,6 @@
$ $tcsh: set1,v 1.4 2006/03/02 18:46:47 christos Exp $
$ Error messages
+$ codeset=KOI8-R
$set 1
1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2 %s <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
--- nls/spanish/set1
+++ nls/spanish/set1 2006-04-25 12:58:31.000000000 +0000
@@ -1,5 +1,6 @@
$ $tcsh: set1,v 1.3 2006/03/02 18:46:48 christos Exp $
$ Mensajes de Error
+$ codeset=ISO-8859-1
$set 1
1 Error de sintaxis
2 %s no est<73> permitido
--- nls/ukrainian/set1
+++ nls/ukrainian/set1 2006-04-25 12:58:31.000000000 +0000
@@ -1,5 +1,6 @@
$ $tcsh: set1,v 1.3 2006/03/02 18:46:48 christos Exp $
$ Error messages
+$ codeset=KOI8-U
$set 1
1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2 %s <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѥ<EFBFBD><D1A4><EFBFBD><EFBFBD>
--- pathnames.h
+++ pathnames.h 2006-04-25 12:58:31.000000000 +0000
@@ -33,7 +33,7 @@
#ifndef _h_pathnames
#define _h_pathnames
-#ifdef BSD4_4
+#if defined(BSD4_4) || defined(linux)
# include <paths.h>
#endif
@@ -84,7 +84,7 @@
# endif /* !_PATH_DOTLOGIN */
#endif /* sgi || OREO || cray || AMIX || CDC */
-#if (defined(_CRAYCOM) || defined(Lynx)) && !defined(_PATH_TCSHELL)
+#if (defined(_CRAYCOM) || defined(Lynx) || defined(linux)) && !defined(_PATH_TCSHELL)
# define _PATH_TCSHELL "/bin/tcsh" /* 1st class shell */
#endif /* _CRAYCOM && !_PATH_TCSHELL */
--- sh.c
+++ sh.c 2010-12-10 16:10:45.000000000 +0000
@@ -501,7 +501,8 @@ main(int argc, char **argv)
if (loginsh || (uid == 0)) {
if (*cp) {
/* only for login shells or root and we must have a tty */
- if ((cp2 = Strrchr(cp, (Char) '/')) != NULL) {
+ if (((cp2 = Strrchr(cp, (Char) '/')) != NULL) &&
+ (Strncmp(cp, STRptssl, 3) != 0)) {
cp2 = cp2 + 1;
}
else
@@ -768,7 +769,16 @@ main(int argc, char **argv)
xfree(tmp2);
}
#else /* !WINNT_NATIVE */
+#if defined(__GLIBC__) && __GLIBC__ >= 2
+ {
+ char *tmpdir = getenv ("TMPDIR");
+ if (!tmpdir)
+ tmpdir = "/tmp";
+ shtemp = Strspl(SAVE(tmpdir), SAVE("/sh.XXXXXX")); /* For << */
+ }
+#else
shtemp = Strspl(STRtmpsh, doldol); /* For << */
+#endif /* __GLIBC__ */
#endif /* WINNT_NATIVE */
/*
@@ -792,9 +802,9 @@ main(int argc, char **argv)
/* PATCH IDEA FROM Issei.Suzuki VERY THANKS */
#if defined(DSPMBYTE)
#if defined(NLS) && defined(LC_CTYPE)
- if (((tcp = setlocale(LC_CTYPE, NULL)) != NULL || (tcp = getenv("LANG")) != NULL) && !adrof(CHECK_MBYTEVAR))
+ if (((tcp = setlocale(LC_CTYPE, NULL)) != NULL || (tcp = getenv("LANG")) != NULL))
#else
- if ((tcp = getenv("LANG")) != NULL && !adrof(CHECK_MBYTEVAR))
+ if ((tcp = getenv("LANG")) != NULL)
#endif
{
autoset_dspmbyte(str2short(tcp));
@@ -1303,6 +1313,9 @@ main(int argc, char **argv)
setintr = osetintr;
parintr = oparintr;
}
+#ifndef USERLOGINFIRST
+# undef LOGINFIRST
+#endif
#ifdef LOGINFIRST
if (loginsh)
(void) srccat(varval(STRhome), STRsldotlogin);
--- sh.dol.c
+++ sh.dol.c 2007-07-13 11:51:58.000000000 +0000
@@ -30,6 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
+#include <features.h>
#include "sh.h"
RCSID("$tcsh: sh.dol.c,v 3.80 2010/05/12 15:02:47 christos Exp $")
@@ -938,6 +939,31 @@ heredoc(Char *term)
Char *lbp, *obp, *mbp;
Char **vp;
int quoted;
+//#undef __GLIBC__
+#if defined(__GLIBC__) && __GLIBC__ >= 2
+ char *tmp = short2str(shtemp);
+ char *dot = strrchr(tmp, '.');
+ int fd;
+
+ if (!dot)
+ stderror(ERR_NAME | ERR_NOMATCH);
+ strcpy(dot, ".XXXXXX");
+
+ if ((fd = mkstemp(tmp)) < 0)
+ stderror(ERR_SYSTEM, tmp, strerror(errno));
+ xclose(fd);
+
+# ifndef O_TEMPORARY
+# define O_TEMPORARY 0
+# endif
+ xclose(0);
+ if (xopen(tmp, O_RDWR|O_TEMPORARY) == -1) {
+ int oerrno = errno;
+ (void) unlink(tmp);
+ errno = oerrno;
+ stderror(ERR_SYSTEM, tmp, strerror(errno));
+ }
+#else /* !__GLIBC__ */
char *tmp;
#ifndef WINNT_NATIVE
struct timeval tv;
@@ -978,6 +1004,7 @@ again:
errno = oerrno;
stderror(ERR_SYSTEM, tmp, strerror(errno));
}
+#endif /* !__GLIBC__ */
(void) unlink(tmp); /* 0 0 inode! */
Dv[0] = term;
Dv[1] = NULL;
--- sh.func.c
+++ sh.func.c 2010-12-09 09:15:06.000000000 +0000
@@ -1401,14 +1401,6 @@ dosetenv(Char **v, struct command *c)
}
#endif /* apollo */
- /* dspkanji/dspmbyte autosetting */
- /* PATCH IDEA FROM Issei.Suzuki VERY THANKS */
-#if defined(DSPMBYTE)
- if(eq(vp, STRLANG) && !adrof(CHECK_MBYTEVAR)) {
- autoset_dspmbyte(lp);
- }
-#endif
-
if (islocale_var(vp)) {
#ifdef NLS
int k;
@@ -1434,6 +1426,13 @@ dosetenv(Char **v, struct command *c)
nlsclose();
nlsinit();
# endif /* NLS_CATALOGS */
+# if defined(DSPMBYTE)
+ /* dspkanji/dspmbyte autosetting */
+ /* PATCH IDEA FROM Issei.Suzuki VERY THANKS */
+ if (eq(vp, STRLANG)) {
+ autoset_dspmbyte(lp);
+ }
+# endif
# ifdef SETLOCALEBUG
dont_free = 0;
# endif /* SETLOCALEBUG */
--- sh.h
+++ sh.h 2007-07-13 11:07:44.000000000 +0000
@@ -284,7 +284,7 @@ typedef long tcsh_number_t;
# else
# include <termio.h>
# endif /* _UWIN */
-# if SYSVREL > 3
+# if SYSVREL > 3 || defined(linux)
# undef TIOCGLTC /* we don't need those, since POSIX has them */
# undef TIOCSLTC
# undef CSWTCH
@@ -338,6 +338,12 @@ typedef long tcsh_number_t;
#if !((defined(SUNOS4) || defined(_MINIX) /* || defined(DECOSF1) */) && defined(TERMIO))
# if !defined(_VMS_POSIX) && !defined(WINNT_NATIVE)
# include <sys/ioctl.h>
+# if SYSVREL > 3 || defined(linux)
+# undef TIOCGLTC /* we don't need those, since POSIX has them */
+# undef TIOCSLTC
+# undef CSWTCH
+# define CSWTCH _POSIX_VDISABLE /* So job control works */
+# endif /* SYSVREL > 3 */
# endif
#endif
@@ -1203,9 +1209,7 @@ extern char **environ;
# ifdef NLS_CATALOGS
# if defined(linux) || defined(__GNU__) || defined(__GLIBC__)
# include <locale.h>
-# ifdef notdef
-# include <localeinfo.h> /* Has this changed ? */
-# endif
+# include <langinfo.h>
# include <features.h>
# endif
# ifdef SUNOS4
--- sh.sem.c
+++ sh.sem.c 2006-04-25 12:58:31.000000000 +0000
@@ -629,10 +629,19 @@ execute(struct command *t, volatile int
* possible stopping
*/
if (bifunc) {
- func(t, bifunc);
- if (forked)
+ if (forked) {
+ func(t, bifunc);
exitstat();
- else {
+ } else {
+ jmp_buf_t oldexit;
+ int ohaderr = haderr;
+
+ getexit(oldexit);
+ if (setexit() == 0)
+ func(t, bifunc);
+ resexit(oldexit);
+ haderr = ohaderr;
+
if (adrof(STRprintexitvalue)) {
int rv = getn(varval(STRstatus));
if (rv != 0)
--- sh.set.c
+++ sh.set.c 2010-12-09 11:07:56.000000000 +0000
@@ -1115,11 +1115,11 @@ update_dspmbyte_vars(void)
dstr1 = vp->vec[0];
if(eq (dstr1, STRsjis))
iskcode = 1;
- else if (eq(dstr1, STReuc))
+ else if (eq(dstr1, STReuc) || eq(dstr1, STReucjp) || eq(dstr1, STRGB2312))
iskcode = 2;
else if (eq(dstr1, STRbig5))
iskcode = 3;
- else if (eq(dstr1, STRutf8))
+ else if (eq(dstr1, STRutf8) || eq(dstr1, STRutfx8))
iskcode = 4;
else if ((dstr1[0] - '0') >= 0 && (dstr1[0] - '0') <= 3) {
iskcode = 0;
@@ -1203,7 +1203,7 @@ update_dspmbyte_vars(void)
_enable_mbdisp = 0;
dspmbyte_ls = 0;
}
-#ifdef MBYTEDEBUG /* Sorry, use for beta testing */
+# ifdef MBYTEDEBUG /* Sorry, use for beta testing */
{
Char mbmapstr[300];
for (lp = 0; lp < 256; lp++)
@@ -1211,7 +1211,7 @@ update_dspmbyte_vars(void)
mbmapstr[lp] = 0;
setcopy(STRmbytemap, mbmapstr, VAR_READWRITE);
}
-#endif /* MBYTEMAP */
+# endif /* MBYTEMAP */
}
/* dspkanji/dspmbyte autosetting */
@@ -1220,6 +1220,7 @@ void
autoset_dspmbyte(const Char *pcp)
{
int i;
+ struct varent *vp;
static const struct dspm_autoset_Table {
Char *n;
Char *v;
@@ -1242,13 +1243,18 @@ autoset_dspmbyte(const Char *pcp)
#if defined(HAVE_NL_LANGINFO) && defined(CODESET)
static const struct dspm_autoset_Table dspmc[] = {
{ STRstarutfstar8, STRutf8 },
+ { STRutfx8, STRutf8 },
{ STReuc, STReuc },
+ { STReucjp, STReuc },
{ STRGB2312, STReuc },
{ STRLANGBIG5, STRbig5 },
{ NULL, NULL }
};
Char *codeset;
+ if ((vp = adrof(CHECK_MBYTEVAR)))
+ unsetv1(vp);
+
codeset = str2short(nl_langinfo(CODESET));
if (*codeset != '\0') {
for (i = 0; dspmc[i].n; i++) {
--- tc.alloc.c
+++ tc.alloc.c 2006-04-25 12:58:31.000000000 +0000
@@ -486,7 +486,7 @@ smalloc(size_t n)
{
ptr_t ptr;
- n = n ? n : 1;
+ n = n ? n+1 : 1;
#ifdef HAVE_SBRK
if (membot == NULL)
@@ -509,7 +509,7 @@ srealloc(ptr_t p, size_t n)
{
ptr_t ptr;
- n = n ? n : 1;
+ n = n ? n+1 : 1;
#ifdef HAVE_SBRK
if (membot == NULL)
@@ -533,7 +533,7 @@ scalloc(size_t s, size_t n)
ptr_t ptr;
n *= s;
- n = n ? n : 1;
+ n = n ? n+1 : 1;
#ifdef HAVE_SBRK
if (membot == NULL)
@@ -558,8 +558,10 @@ scalloc(size_t s, size_t n)
void
sfree(ptr_t p)
{
- if (p && !dont_free)
+ if (p && !dont_free) {
free(p);
+ p = (ptr_t)NULL;
+ }
}
#endif /* SYSMALLOC */
--- tc.const.c
+++ tc.const.c 2006-04-25 12:58:31.000000000 +0000
@@ -129,10 +129,12 @@ Char STRmmliteral[] = { '-', 'G', '\0' }
Char STRmmliteral[] = { '-', '-', 'l', 'i', 't', 'e', 'r', 'a', 'l', '\0' };
# endif
Char STReuc[] = { 'e', 'u', 'c', '\0' };
+Char STReucjp[] = { 'e', 'u', 'c', '-', 'j', 'p', '\0' };
Char STRsjis[] = { 's', 'j', 'i', 's', '\0' };
Char STRbig5[] = { 'b', 'i', 'g', '5', '\0' };
Char STRutf8[] = { 'u', 't', 'f', '8', '\0' };
Char STRstarutfstar8[] = { '*', 'u', 't', 'f', '*', '8', '\0' };
+Char STRutfx8[] = { 'u', 't', 'f', '-', '8', '\0' };
Char STRGB2312[] = { 'g', 'b', '2', '3', '1', '2', '\0' };
# ifdef MBYTEDEBUG /* Sorry, use for beta testing */
Char STRmbytemap[] = { 'm', 'b', 'y', 't', 'e', 'm', 'a', 'p', '\0' };
@@ -436,7 +438,7 @@ Char STRkilldup[] = { 'k', 'i', 'l', 'l
Char STRshlvl[] = { 's', 'h', 'l', 'v', 'l', '\0' };
Char STRKSHLVL[] = { 'S', 'H', 'L', 'V', 'L', '\0' };
Char STRLANG[] = { 'L', 'A', 'N', 'G', '\0' };
-Char STRLC_ALL[] = { 'L', 'C', '_', 'A', 'L', 'L', '\0' };
+Char STRLC_ALL[] = { 'L', 'C', '_', 'A', 'L', 'L', '\0' };
Char STRLC_CTYPE[] = { 'L', 'C', '_', 'C', 'T', 'Y', 'P', 'E' ,'\0' };
Char STRLC_NUMERIC[] = { 'L', 'C', '_', 'N', 'U', 'M', 'E', 'R', 'I',
'C', '\0' };
--- tc.func.c
+++ tc.func.c 2007-07-13 11:15:03.000000000 +0000
@@ -689,9 +689,13 @@ auto_lock(void)
handle_pending_signals();
errno = 0;
}
- if (spw != NULL) /* shadowed passwd */
+ if (spw != NULL) /* shadowed passwd */
srpp = spw->sp_pwdp;
+ else
+ srpp = pw->pw_passwd; /* nis extended passwd? */
}
+ endspent();
+ endpwent();
#else
@@ -1902,7 +1906,7 @@ getremotehost(int dest_fd)
* have not caught up yet.
*/
addr.s_addr = inet_addr(name);
- if (addr.s_addr != (unsigned int)~0)
+ if (addr.s_addr != ~0U)
host = name;
else {
if (sptr != name) {
--- tc.str.c
+++ tc.str.c 2006-04-25 12:58:31.000000000 +0000
@@ -335,7 +335,7 @@ s_strlen(const Char *str)
{
size_t n;
- for (n = 0; *str++; n++)
+ for (n = 0; str && *str; n++, str++)
continue;
return (n);
}
--- tc.who.c
+++ tc.who.c 2006-04-25 12:58:31.000000000 +0000
@@ -260,6 +260,9 @@ watch_login(int force)
}
stlast = sta.st_mtime;
#ifdef HAVE_GETUTENT
+# ifndef HAVE_UTMPX_H
+ utmpname( _PATH_UTMP );
+# endif
setutent();
#else
if ((utmpfd = xopen(TCSH_PATH_UTMP, O_RDONLY|O_LARGEFILE)) < 0) {
--- tcsh.man
+++ tcsh.man 2006-04-25 12:58:31.000000000 +0000
@@ -578,7 +578,7 @@ Repeating \fIdabbrev-expand\fR without a
changes to the next previous word etc., skipping identical matches
much like \fIhistory-search-backward\fR does.
.TP 8
-.B delete-char \fR(not bound)
+.B delete-char \fR(bound to `Del' if using the standard \fI/etc/csh.cshrc\fR)
Deletes the character under the cursor.
See also \fIdelete-char-or-list-or-eof\fR.
.TP 8
--- tw.color.c
+++ tw.color.c 2007-07-13 11:18:16.000000000 +0000
@@ -177,7 +177,7 @@ parseLS_COLORS(const Char *value)
size_t i, len;
const Char *v; /* pointer in value */
char *c; /* pointer in colors */
- Extension *volatile e; /* pointer in extensions */
+ static Extension *volatile e; /* pointer in extensions */
jmp_buf_t osetexit;
size_t omark;
@@ -302,12 +302,13 @@ print_color(const Char *fname, size_t le
break;
}
if (i == nvariables) {
- for (i = 0; i < nextensions; i++)
- if (len >= extensions[i].extension.len
- && strncmp(last - extensions[i].extension.len,
- extensions[i].extension.s,
- extensions[i].extension.len) == 0) {
- color = &extensions[i].color;
+ int j;
+ for (j = 0; j < nextensions; j++)
+ if (len >= extensions[j].extension.len
+ && strncmp(last - extensions[j].extension.len,
+ extensions[j].extension.s,
+ extensions[j].extension.len) == 0) {
+ color = &extensions[j].color;
break;
}
}
--- tw.h
+++ tw.h 2006-04-25 12:58:31.000000000 +0000
@@ -33,6 +33,10 @@
#ifndef _h_tw
#define _h_tw
+#ifndef _h_sh
+# include "sh.h"
+#endif
+
#define TW_PATH 0x1000
#define TW_ZERO 0x0fff