summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Raiskup <praiskup@redhat.com>2014-07-28 16:01:23 +0200
committerPavel Raiskup <praiskup@redhat.com>2014-07-28 16:15:40 +0200
commit53a4623885a7801f5c6771b03a623801402c4352 (patch)
tree8194fc26eb22231cd24529e18658db179524192e
parentde6fcbdb464b70b4b826bf9716e550e5c4a08c0d (diff)
downloadtcsh-rebase-6.19.00-53a4623885a7801f5c6771b03a623801402c4352.tar.gz
tcsh-rebase-6.19.00-53a4623885a7801f5c6771b03a623801402c4352.tar.xz
tcsh-rebase-6.19.00-53a4623885a7801f5c6771b03a623801402c4352.zip
tcsh: reintroduce $anyerror variableHEADmaster
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.patch123
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