summaryrefslogtreecommitdiffstats
path: root/contrib/tcsh
diff options
context:
space:
mode:
authormp <mp@FreeBSD.org>2007-10-15 15:23:07 +0000
committermp <mp@FreeBSD.org>2007-10-15 15:23:07 +0000
commit7932b1362619e94f8cf27c1c6f79ad49ecc39a3b (patch)
tree35061d37a02346eb49986c0acdfe36b69d17be1b /contrib/tcsh
parent637c0444dc574ef343005895e3cfe1143c674c53 (diff)
downloadFreeBSD-src-7932b1362619e94f8cf27c1c6f79ad49ecc39a3b.zip
FreeBSD-src-7932b1362619e94f8cf27c1c6f79ad49ecc39a3b.tar.gz
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
Diffstat (limited to 'contrib/tcsh')
-rw-r--r--contrib/tcsh/sh.c4
-rw-r--r--contrib/tcsh/sh.proc.c13
-rw-r--r--contrib/tcsh/tc.const.c2
3 files changed, 9 insertions, 10 deletions
diff --git a/contrib/tcsh/sh.c b/contrib/tcsh/sh.c
index 57b1bef..89056f5 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 bf6fb3a..a8ebc74 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 e7c92f4..d63de6f 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' };
OpenPOWER on IntegriCloud