diff options
author | Pavel Raiskup <praiskup@redhat.com> | 2014-07-28 16:01:23 +0200 |
---|---|---|
committer | Pavel Raiskup <praiskup@redhat.com> | 2014-07-28 16:15:40 +0200 |
commit | 53a4623885a7801f5c6771b03a623801402c4352 (patch) | |
tree | 8194fc26eb22231cd24529e18658db179524192e | |
parent | de6fcbdb464b70b4b826bf9716e550e5c4a08c0d (diff) | |
download | tcsh-rebase-6.19.00-master.tar.gz tcsh-rebase-6.19.00-master.tar.xz tcsh-rebase-6.19.00-master.zip |
This is needed for compatibility with upstram-vanilla tcsh of
version 6.17.06+. From now we support (still downstream)
tcsh_posix_status and anyerror.
Related: #759132, #1025703, #1123854
Version: 6.18.02-1
-rw-r--r-- | tcsh-6.18.02-posix-exit-status-value.patch | 123 |
1 files changed, 50 insertions, 73 deletions
diff --git a/tcsh-6.18.02-posix-exit-status-value.patch b/tcsh-6.18.02-posix-exit-status-value.patch index 581e825..e83e2e0 100644 --- a/tcsh-6.18.02-posix-exit-status-value.patch +++ b/tcsh-6.18.02-posix-exit-status-value.patch @@ -1,124 +1,101 @@ -From cf6b60106ad8cf3e058cda48249d6379dab3a846 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jarom=C3=ADr=20Kon=C4=8Dick=C3=BD?= <jkoncick@redhat.com> -Date: Fri, 25 Jul 2014 11:41:22 +0200 -Subject: [PATCH 8/8] Changed 'anyerror' variable to 'tcsh_posix_status' +From f86082e548082ec2c3cac8920cd39dd2da0b70c4 Mon Sep 17 00:00:00 2001 +From: Pavel Raiskup <praiskup@redhat.com> +Date: Mon, 28 Jul 2014 14:47:33 +0200 +Subject: [PATCH] implement variable tcsh_posix_status -(with opposite meaning) +This patch partially reverts the dist-git commit e0b2d458fda4 +because we _don't_ really want drop upstream-supported 'anyerror' +variable. And we can not drop tcsh_posix_status neither, as we +already support that in RHEL5+ downstream. + +So from now, if "!defined(anyerror) || +defined(tcsh_posix_status)", tcsh behaves, with regards to +pipelines, same way as POSIX-like shells. + +Related: #759132 --- - sh.c | 2 -- - sh.h | 2 +- - sh.proc.c | 6 +++--- - sh.set.c | 8 ++++---- - tc.const.c | 2 +- - tcsh.man | 12 ++++-------- - 6 files changed, 13 insertions(+), 19 deletions(-) + sh.c | 2 ++ + sh.h | 1 + + sh.proc.c | 2 +- + sh.set.c | 5 +++++ + tc.const.c | 2 ++ + 5 files changed, 11 insertions(+), 1 deletion(-) diff --git a/sh.c b/sh.c -index 518d610..a9235b0 100644 +index 518d610..3d627b1 100644 --- a/sh.c +++ b/sh.c -@@ -350,8 +350,6 @@ main(int argc, char **argv) - PRCHROOT = '#'; /* likewise for root */ - word_chars = STR_WORD_CHARS; - bslash_quote = 0; /* PWP: do tcsh-style backslash quoting? */ -- anyerror = 1; /* for compatibility */ -- setcopy(STRanyerror, STRNULL, VAR_READWRITE); +@@ -353,6 +353,8 @@ main(int argc, char **argv) + anyerror = 1; /* for compatibility */ + setcopy(STRanyerror, STRNULL, VAR_READWRITE); ++ tcsh_posix_status = 0; ++ /* Default history size to 100 */ setcopy(STRhistory, str2short("100"), VAR_READWRITE); + sethistory(100); diff --git a/sh.h b/sh.h -index 503da25..273751a 100644 +index 503da25..6281260 100644 --- a/sh.h +++ b/sh.h -@@ -562,7 +562,7 @@ EXTERN int havhash IZERO; /* path hashing is available */ - EXTERN int editing IZERO; /* doing filename expansion and line editing */ +@@ -563,6 +563,7 @@ EXTERN int editing IZERO; /* doing filename expansion and line editing */ EXTERN int noediting IZERO; /* initial $term defaulted to noedit */ EXTERN int bslash_quote IZERO;/* PWP: tcsh-style quoting? (in sh.c) */ --EXTERN int anyerror IZERO; /* propagate errors from pipelines/backq */ -+EXTERN int tcsh_posix_status IZERO; /* POSIX-like error $status behaviour */ + EXTERN int anyerror IZERO; /* propagate errors from pipelines/backq */ ++EXTERN int tcsh_posix_status IZERO; /* negation for anyerror */ EXTERN int compat_expr IZERO;/* csh-style expressions? */ EXTERN int isoutatty IZERO; /* is SHOUT a tty */ EXTERN int isdiagatty IZERO;/* is SHDIAG a tty */ diff --git a/sh.proc.c b/sh.proc.c -index afcf0b9..ef25400 100644 +index afcf0b9..3c565f2 100644 --- a/sh.proc.c +++ b/sh.proc.c -@@ -559,9 +559,9 @@ pjwait(struct process *pp) - reason = 0; - fp = pp; +@@ -561,7 +561,7 @@ pjwait(struct process *pp) do { -- /* In case of pipelines only the result of the last -- * command should be taken in account */ + /* In case of pipelines only the result of the last + * command should be taken in account */ - if (!anyerror && !(fp->p_flags & PBRACE) -+ /* In case of POSIX-like behaviour, only the result of the last -+ * command in pipeline/backq should be taken in account */ -+ if (tcsh_posix_status && !(fp->p_flags & PBRACE) ++ if ((!anyerror || tcsh_posix_status) && !(fp->p_flags & PBRACE) && ((fp->p_flags & PPOU) || (fp->p_flags & PBACKQ))) continue; if (fp->p_reason) diff --git a/sh.set.c b/sh.set.c -index b2c44b1..c740d6a 100644 +index b2c44b1..ceff8cf 100644 --- a/sh.set.c +++ b/sh.set.c -@@ -106,8 +106,8 @@ update_vars(Char *vp) - else if (eq(vp, STRloginsh)) { - loginsh = 1; +@@ -109,6 +109,9 @@ update_vars(Char *vp) + else if (eq(vp, STRanyerror)) { + anyerror = 1; } -- else if (eq(vp, STRanyerror)) { -- anyerror = 1; + else if (eq(vp, STRtcsh_posix_status)) { + tcsh_posix_status = 1; - } ++ } else if (eq(vp, STRsymlinks)) { Char *pn = varval(vp); -@@ -769,8 +769,8 @@ unset(Char **v, struct command *c) - HistLit = 0; - if (adrof(STRloginsh) == 0) + +@@ -771,6 +774,8 @@ unset(Char **v, struct command *c) loginsh = 0; -- if (adrof(STRanyerror) == 0) -- anyerror = 0; + if (adrof(STRanyerror) == 0) + anyerror = 0; + if (adrof(STRtcsh_posix_status) == 0) + tcsh_posix_status = 0; if (adrof(STRwordchars) == 0) word_chars = STR_WORD_CHARS; if (adrof(STRedit) == 0) diff --git a/tc.const.c b/tc.const.c -index e49f05a..1361da7 100644 +index e49f05a..88b1d69 100644 --- a/tc.const.c +++ b/tc.const.c -@@ -43,7 +43,7 @@ Char STRrootdefautologout[] = { '1', '5', '\0' }; - #endif +@@ -44,6 +44,8 @@ Char STRrootdefautologout[] = { '1', '5', '\0' }; Char STRautomatic[] = { 'a', 'u', 't', 'o', 'm', 'a', 't', 'i', 'c', '\0' }; --Char STRanyerror[] = { 'a', 'n', 'y', 'e', 'r', 'r', 'o', 'r', '\0' }; -+Char STRtcsh_posix_status[] = { 't', 'c', 's', 'h', '_', 'p', 'o', 's', 'i', 'x', '_', 's', 't', 'a', 't', 'u', 's', '\0' }; + Char STRanyerror[] = { 'a', 'n', 'y', 'e', 'r', 'r', 'o', 'r', '\0' }; ++Char STRtcsh_posix_status[] = {'t', 'c', 's', 'h', '_', 'p', 'o', 's', 'i', 'x', ++ '_', 's', 't', 'a', 't', 'u', 's', '\0' }; Char STRhangup[] = { 'h', 'a', 'n', 'g', 'u', 'p', '\0' }; Char STRaout[] = { 'a', '.', 'o', 'u', 't', '\0' }; Char STRtty[] = { 't', 't', 'y', '\0' }; -diff --git a/tcsh.man b/tcsh.man -index 94de311..c10655b 100644 ---- a/tcsh.man -+++ b/tcsh.man -@@ -4383,14 +4383,10 @@ Reset to 1 in login shells. - See also \fBloginsh\fR. - .TP 8 - .B status --The status returned by the last command, unless the variable --.B anyerror --is set, and any error in a pipeline or a backquote expansion will be --propagated (this is the default --.B csh --behavior, and the current --.B tcsh --default). If it terminated -+The status of any error in a pipeline or a backquote expansion that is -+propagated as a result `status', unless `tcsh_posix_status' -+variable is set, and only the last command status is taken in account -+(the latter is default behaviour in POSIX-like shells). If it terminated - abnormally, then 0200 is added to the status. Builtin commands - which fail return exit status `1', all other builtin commands - return status `0'. -- 1.9.3 |