From 5c3ede8519468d479b1c07173978240bbb2e85d1 Mon Sep 17 00:00:00 2001 From: Mark Peek Date: Mon, 15 Oct 2007 15:23:07 +0000 Subject: [PATCH] Import two vendor fixes from tcsh-6.15.01 for MFC to 7.0. The fixes are: - Fix pty detection for autologout setting - kill `foo` got stuck because sigchld was disabled too soon Requested by: re --- contrib/tcsh/sh.c | 4 ++-- contrib/tcsh/sh.proc.c | 13 ++++++------- contrib/tcsh/tc.const.c | 2 +- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/contrib/tcsh/sh.c b/contrib/tcsh/sh.c index 57b1befcc39a..89056f5cb53f 100644 --- a/contrib/tcsh/sh.c +++ b/contrib/tcsh/sh.c @@ -457,12 +457,12 @@ main(int argc, char **argv) if (*cp) { /* only for login shells or root and we must have a tty */ if ((cp2 = Strrchr(cp, (Char) '/')) != NULL) { - cp = cp2 + 1; + cp2 = cp2 + 1; } else cp2 = cp; if (!(((Strncmp(cp2, STRtty, 3) == 0) && Isalpha(cp2[3])) || - ((Strncmp(cp, STRpts, 3) == 0) && cp[3] == '/'))) { + Strstr(cp, STRslptssl) != NULL)) { if (getenv("DISPLAY") == NULL) { /* NOT on X window shells */ setcopy(STRautologout, STRdefautologout, VAR_READWRITE); diff --git a/contrib/tcsh/sh.proc.c b/contrib/tcsh/sh.proc.c index bf6fb3a56180..a8ebc746c870 100644 --- a/contrib/tcsh/sh.proc.c +++ b/contrib/tcsh/sh.proc.c @@ -1428,13 +1428,6 @@ pkill(Char **v, int signum) pid_t pid; Char *cp, **vp, **globbed; - pchild_disabled++; - cleanup_push(&pchild_disabled, disabled_cleanup); - if (setintr) { - pintr_disabled++; - cleanup_push(&pintr_disabled, disabled_cleanup); - } - /* Avoid globbing %?x patterns */ for (vp = v; vp && *vp; vp++) if (**vp == '%') @@ -1444,6 +1437,12 @@ pkill(Char **v, int signum) globbed = v; cleanup_push(globbed, blk_cleanup); + pchild_disabled++; + cleanup_push(&pchild_disabled, disabled_cleanup); + if (setintr) { + pintr_disabled++; + cleanup_push(&pintr_disabled, disabled_cleanup); + } while (v && (cp = *v)) { if (*cp == '%') { diff --git a/contrib/tcsh/tc.const.c b/contrib/tcsh/tc.const.c index e7c92f442383..d63de6fb9e8b 100644 --- a/contrib/tcsh/tc.const.c +++ b/contrib/tcsh/tc.const.c @@ -46,7 +46,7 @@ Char STRautomatic[] = { 'a', 'u', 't', 'o', 'm', 'a', 't', 'i', 'c', Char STRhangup[] = { 'h', 'a', 'n', 'g', 'u', 'p', '\0' }; Char STRaout[] = { 'a', '.', 'o', 'u', 't', '\0' }; Char STRtty[] = { 't', 't', 'y', '\0' }; -Char STRpts[] = { 'p', 't', 's', '\0' }; +Char STRslptssl[] = { '/', 'p', 't', 's', '/', '\0' }; Char STRany[] = { 'a', 'n', 'y', '\0' }; Char STRstatus[] = { 's', 't', 'a', 't', 'u', 's', '\0' }; Char STR0[] = { '0', '\0' };