Update to tcsh-6.18.00 - update sources & remove obsolte patches

- Remove obsolete patches: tcsh-6.15.00-ca-color.patch,
  tcsh-6.17.00-tc-color.patch, tcsh-6.17.00-mh-color.patch,
  tcsh-6.17.00-history.patch, tcsh-6.17.00-printexitvalue.patch,
  tcsh-6.17.00-testsuite.patch, tcsh-6.17.00-negative_jobs.patch,
  tcsh-6.17.00-wait-intr.patch, tcsh-6.17.00-dont-set-empty-remotehost.patch,
  tcsh-6.17.00-dont-print-history-on-verbose.patch, tcsh-6.14.00-set.patch,
  tcsh-6.17.00-extrafork.patch, tcsh-6.17.00-avoid-null-cwd.patch,
  tcsh-6.17.00-avoid-infinite-loop-pendjob-xprintf.patch,
  tcsh-6.17.00-variable-names.patch,
  tcsh-6.17.00-handle-signals-before-flush.patch
  tcsh-6.17.00-status-pipeline-backquote-list-of-cmds.patch (reverted!)
This commit is contained in:
Vojtech Vitek (V-Teq) 2012-03-20 17:49:12 +01:00
parent a1b402c44a
commit 66fbce9c1e
21 changed files with 100 additions and 741 deletions

1
.gitignore vendored
View File

@ -2,3 +2,4 @@ tcsh-6.14.00.tar.gz
tcsh-6.15.00.tar.gz
tcsh-6.16.00.tar.gz
tcsh-6.17.00.tar.gz
/tcsh-6.18.00.tar.gz

View File

@ -1 +1 @@
c47de903e3d52f6824c8dd0c91eeb477 tcsh-6.17.00.tar.gz
ee9b3aa36fb38d32eab6a37a34e4c341 tcsh-6.18.00.tar.gz

View File

@ -1,11 +0,0 @@
diff -up tcsh-6.15.00/tcsh.man.set tcsh-6.15.00/tcsh.man
--- tcsh-6.15.00/tcsh.man.set 2008-09-03 11:43:55.000000000 +0200
+++ tcsh-6.15.00/tcsh.man 2008-09-03 11:43:55.000000000 +0200
@@ -3213,7 +3213,6 @@ The fifth form sets the \fIindex\fR'th c
this component must already exist.
The sixth form lists only the names of all shell variables that are read-only.
The seventh form makes \fIname\fR read-only, whether or not it has a value.
-The second form sets \fIname\fR to the null string.
The eighth form is the same as the third form, but
make \fIname\fR read-only at the same time.
.PD

View File

@ -1,11 +0,0 @@
diff -up tcsh-6.17.00/tw.color.c_old tcsh-6.17.00/tw.color.c
--- tcsh-6.17.00/tw.color.c_old 2009-07-20 14:35:59.000000000 +0200
+++ tcsh-6.17.00/tw.color.c 2009-07-20 14:36:54.000000000 +0200
@@ -86,6 +86,7 @@ static Variable variables[] = {
VAR(NOS, "ow", ""), /* Other writable dir (o+w) but not sticky */
VAR(NOS, "st", ""), /* Sticky dir (+t) but not other writable */
VAR(NOS, "rs", "0"), /* Reset to normal color */
+ VAR(NOS, "ca", ""), /* file with capability */
};
enum FileType {

View File

@ -1,11 +0,0 @@
diff -up tcsh-6.17.00/tw.color.c_old tcsh-6.17.00/tw.color.c
--- tcsh-6.17.00/tw.color.c_old 2009-07-20 15:14:22.000000000 +0200
+++ tcsh-6.17.00/tw.color.c 2009-07-20 15:15:26.000000000 +0200
@@ -87,6 +87,7 @@ static Variable variables[] = {
VAR(NOS, "st", ""), /* Sticky dir (+t) but not other writable */
VAR(NOS, "rs", "0"), /* Reset to normal color */
VAR(NOS, "ca", ""), /* file with capability */
+ VAR(NOS, "hl", ""), /* Hardlink */
};
enum FileType {

View File

@ -1,10 +0,0 @@
--- tcsh-6.17.00/sh.proc.c.orig 2011-02-03 12:31:14.000000000 -0700
+++ tcsh-6.17.00/sh.proc.c 2011-02-03 12:32:00.000000000 -0700
@@ -910,6 +910,7 @@
if (pcurrjob && (pcurrjob->p_flags & (PFOREGND | PSTOPPED)) == 0) {
pp = pcurrjob;
+ pcurrjob = 0;
while (pp->p_procid != pp->p_jobid)
pp = pp->p_friends;
xprintf("[%d]", pp->p_index);

View File

@ -1,12 +0,0 @@
diff -up tcsh-6.17.00/sh.proc.c.bz607368 tcsh-6.17.00/sh.proc.c
--- tcsh-6.17.00/sh.proc.c.bz607368 2011-04-28 14:14:24.000000000 +0900
+++ tcsh-6.17.00/sh.proc.c 2011-04-28 14:14:55.000000000 +0900
@@ -367,7 +367,7 @@ found:
#ifdef notdef
jobflags & PAEXITED ||
#endif /* notdef */
- !eq(dcwd->di_name, fp->p_cwd->di_name))) {
+ fp->p_cwd == NULL || !eq(dcwd->di_name, fp->p_cwd->di_name))) {
/* PWP: print a newline after ^C */
if (jobflags & PINTERRUPTED) {
xputchar('\r' | QUOTE);

View File

@ -1,23 +0,0 @@
diff -u -p -r3.40 -r3.41
--- tcsh-6.17.00/sh.hist.c 1 Mar 2007 17:14:51 -0000 3.40
+++ tcsh-6.17.00/sh.hist.c 6 May 2010 14:16:24 -0000 3.41
@@ -422,8 +422,18 @@ rechist(Char *fname, int ref)
oldidfds = didfds;
didfds = 0;
if ((shist = adrof(STRsavehist)) != NULL && shist->vec != NULL)
- if (shist->vec[1] && eq(shist->vec[1], STRmerge))
+ if (shist->vec[1] && eq(shist->vec[1], STRmerge)) {
+ /*
+ * Unset verbose while we read the history file. From:
+ * jbastian@redhat.com (Jeffrey Bastian)
+ */
+ Char *verb = varval(STRverbose);
+ if (verb != STRNULL)
+ unsetv(STRverbose);
loadhist(fname, 1);
+ if (verb != STRNULL)
+ setv(STRverbose, verb, VAR_READWRITE);
+ }
fp = xcreat(short2str(fname), 0600);
if (fp == -1) {
didfds = oldidfds;

View File

@ -1,18 +0,0 @@
--- tcsh-6.17.00-orig/tc.func.c 2009-06-25 23:15:38.000000000 +0200
+++ tcsh-6.17.00/tc.func.c 2011-01-14 12:48:54.959051220 +0100
@@ -2025,12 +2025,13 @@ remotehost(void)
}
wait_options = 0;
done:
+ cleanup_push(&hostname, strbuf_cleanup);
xclose(fds[0]);
while ((wait_res = waitpid(pid, &status, wait_options)) == -1
&& errno == EINTR)
handle_pending_signals();
- cleanup_push(&hostname, strbuf_cleanup);
- if (wait_res == pid && WIFEXITED(status) && WEXITSTATUS(status) == 0) {
+ if (hostname.len > 0 && wait_res == pid && WIFEXITED(status)
+ && WEXITSTATUS(status) == 0) {
strbuf_terminate(&hostname);
tsetenv(STRREMOTEHOST, str2short(hostname.s));
}

View File

@ -1,18 +0,0 @@
diff -up tcsh-6.17.00/sh.glob.c.orig tcsh-6.17.00/sh.glob.c
--- tcsh-6.17.00/sh.glob.c.orig 2010-10-06 10:27:21.015893878 +0200
+++ tcsh-6.17.00/sh.glob.c 2010-10-06 10:28:17.503914951 +0200
@@ -881,11 +881,13 @@ backeval(struct blk_buf *bb, struct Strb
stderror(ERR_OLD);
alias(&paraml);
t = syntax(paraml.next, &paraml, 0);
+ if (t == NULL)
+ return;
cleanup_push(t, syntax_cleanup);
/* The F_BACKQ flag must set so the job output is correct if
* printexitvalue is set. If it's not set, the job output
* will have "Exit N" appended where N is the exit status. */
- t->t_dflg = F_BACKQ;
+ t->t_dflg = F_BACKQ|F_NOFORK;
if (seterr)
stderror(ERR_OLD);
#ifdef SIGTSTP

View File

@ -1,36 +0,0 @@
From 466297a90d3520d5521c9ca6858a5b7981b3edb8 Mon Sep 17 00:00:00 2001
From: "Vojtech Vitek (V-Teq)" <vvitek@redhat.com>
Date: Thu, 10 Nov 2011 17:33:01 +0100
Subject: [PATCH 1/2] Handle pending signals before flush so that the the
history file does not get truncated. (Ted Anderson)
Patch adapted from upstream patch in tcsh V6.17.01 - 20100506
http://mx.gw.com/pipermail/tcsh/2010-May/004066.html
---
sh.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/sh.c b/sh.c
index 73b6d7f..da818fb 100644
--- a/sh.c
+++ b/sh.c
@@ -1288,6 +1288,8 @@ main(int argc, char **argv)
*/
process(setintr);
+ /* Take care of these (especially HUP) here instead of inside flush. */
+ handle_pending_signals();
/*
* Mop-up.
*/
@@ -2018,6 +2020,7 @@ process(int catch)
cleanup_pop_mark(omark);
resexit(osetexit);
exitset--;
+ handle_pending_signals();
}
/*ARGSUSED*/
--
1.7.6.2

View File

@ -1,12 +0,0 @@
diff -up tcsh-6.17.00/sh.c_old tcsh-6.17.00/sh.c
--- tcsh-6.17.00/sh.c_old 2009-10-19 17:18:01.000000000 +0200
+++ tcsh-6.17.00/sh.c 2009-10-19 17:18:50.000000000 +0200
@@ -1291,6 +1291,8 @@ main(int argc, char **argv)
/*
* Mop-up.
*/
+ /* Take care of these (especially HUP) here instead of inside flush. */
+ handle_pending_signals();
if (intty) {
if (loginsh) {
xprintf("logout\n");

View File

@ -1,12 +0,0 @@
diff -up tcsh-6.17.00/tw.color.c_old tcsh-6.17.00/tw.color.c
--- tcsh-6.17.00/tw.color.c_old 2009-08-26 13:29:05.000000000 +0200
+++ tcsh-6.17.00/tw.color.c 2009-08-26 13:52:51.000000000 +0200
@@ -88,6 +88,8 @@ static Variable variables[] = {
VAR(NOS, "rs", "0"), /* Reset to normal color */
VAR(NOS, "ca", ""), /* file with capability */
VAR(NOS, "hl", ""), /* Hardlink */
+ VAR(NOS, "mh", ""), /* MULTIHARDLINK */
+ VAR(NOS, "cl", ""), /* CLRTOEOL */
};
enum FileType {

View File

@ -1,13 +0,0 @@
diff -up tcsh-6.17.00/tc.prompt.c.orig tcsh-6.17.00/tc.prompt.c
--- tcsh-6.17.00/tc.prompt.c.orig 2010-06-17 12:40:40.422571577 +0200
+++ tcsh-6.17.00/tc.prompt.c 2010-06-17 12:41:28.628519727 +0200
@@ -526,6 +526,9 @@ tprintf(int what, const Char *fmt, const
int njobs = -1;
struct process *pp;
+ if (!proclist.p_next)
+ njobs++;
+
for (pp = proclist.p_next; pp; pp = pp->p_next)
njobs++;
p = Itoa(njobs, 1, attributes);

View File

@ -1,82 +0,0 @@
diff -up tcsh-6.17.00/sh.glob.c_old tcsh-6.17.00/sh.glob.c
--- tcsh-6.17.00/sh.glob.c_old 2009-12-15 12:38:48.000000000 +0100
+++ tcsh-6.17.00/sh.glob.c 2009-12-15 12:40:52.000000000 +0100
@@ -882,6 +882,10 @@ backeval(struct blk_buf *bb, struct Strb
alias(&paraml);
t = syntax(paraml.next, &paraml, 0);
cleanup_push(t, syntax_cleanup);
+ /* The F_BACKQ flag must set so the job output is correct if
+ * printexitvalue is set. If it's not set, the job output
+ * will have "Exit N" appended where N is the exit status. */
+ t->t_dflg = F_BACKQ;
if (seterr)
stderror(ERR_OLD);
#ifdef SIGTSTP
diff -up tcsh-6.17.00/sh.sem.c_old tcsh-6.17.00/sh.sem.c
--- tcsh-6.17.00/sh.sem.c_old 2009-12-15 12:41:03.000000000 +0100
+++ tcsh-6.17.00/sh.sem.c 2009-12-15 12:57:49.000000000 +0100
@@ -664,31 +664,31 @@ execute(struct command *t, volatile int
#endif /* !CLOSE_ON_EXEC */
didfds = 0;
wanttty = -1;
- t->t_dspr->t_dflg |= t->t_dflg & F_NOINTERRUPT;
+ t->t_dspr->t_dflg |= t->t_dflg & (F_NOINTERRUPT | F_BACKQ);
execute(t->t_dspr, wanttty, NULL, NULL, do_glob);
exitstat();
case NODE_PIPE:
#ifdef BACKPIPE
t->t_dcdr->t_dflg |= F_PIPEIN | (t->t_dflg &
- (F_PIPEOUT | F_AMPERSAND | F_NOFORK | F_NOINTERRUPT));
+ (F_PIPEOUT | F_AMPERSAND | F_NOFORK | F_NOINTERRUPT | F_BACKQ));
execute(t->t_dcdr, wanttty, pv, pipeout, do_glob);
t->t_dcar->t_dflg |= F_PIPEOUT |
- (t->t_dflg & (F_PIPEIN | F_AMPERSAND | F_STDERR | F_NOINTERRUPT));
+ (t->t_dflg & (F_PIPEIN | F_AMPERSAND | F_STDERR | F_NOINTERRUPT | F_BACKQ));
execute(t->t_dcar, wanttty, pipein, pv, do_glob);
#else /* !BACKPIPE */
t->t_dcar->t_dflg |= F_PIPEOUT |
- (t->t_dflg & (F_PIPEIN | F_AMPERSAND | F_STDERR | F_NOINTERRUPT));
+ (t->t_dflg & (F_PIPEIN | F_AMPERSAND | F_STDERR | F_NOINTERRUPT | F_BACKQ));
execute(t->t_dcar, wanttty, pipein, pv, do_glob);
t->t_dcdr->t_dflg |= F_PIPEIN | (t->t_dflg &
- (F_PIPEOUT | F_AMPERSAND | F_NOFORK | F_NOINTERRUPT));
+ (F_PIPEOUT | F_AMPERSAND | F_NOFORK | F_NOINTERRUPT | F_BACKQ));
execute(t->t_dcdr, wanttty, pv, pipeout, do_glob);
#endif /* BACKPIPE */
break;
case NODE_LIST:
if (t->t_dcar) {
- t->t_dcar->t_dflg |= t->t_dflg & F_NOINTERRUPT;
+ t->t_dcar->t_dflg |= t->t_dflg & (F_NOINTERRUPT | F_BACKQ);
execute(t->t_dcar, wanttty, NULL, NULL, do_glob);
/*
* In strange case of A&B make a new job after A
@@ -699,7 +699,7 @@ execute(struct command *t, volatile int
}
if (t->t_dcdr) {
t->t_dcdr->t_dflg |= t->t_dflg &
- (F_NOFORK | F_NOINTERRUPT);
+ (F_NOFORK | F_NOINTERRUPT | F_BACKQ);
execute(t->t_dcdr, wanttty, NULL, NULL, do_glob);
}
break;
@@ -707,7 +707,7 @@ execute(struct command *t, volatile int
case NODE_OR:
case NODE_AND:
if (t->t_dcar) {
- t->t_dcar->t_dflg |= t->t_dflg & F_NOINTERRUPT;
+ t->t_dcar->t_dflg |= t->t_dflg & (F_NOINTERRUPT | F_BACKQ);
execute(t->t_dcar, wanttty, NULL, NULL, do_glob);
if ((getn(varval(STRstatus)) == 0) !=
(t->t_dtyp == NODE_AND)) {
@@ -716,7 +716,7 @@ execute(struct command *t, volatile int
}
if (t->t_dcdr) {
t->t_dcdr->t_dflg |= t->t_dflg &
- (F_NOFORK | F_NOINTERRUPT);
+ (F_NOFORK | F_NOINTERRUPT | F_BACKQ);
execute(t->t_dcdr, wanttty, NULL, NULL, do_glob);
}
break;

View File

@ -1,141 +0,0 @@
diff -u -r3.164 -r3.165
--- tcsh-6.17.00/sh.h 5 Feb 2011 16:14:20 -0000 3.164
+++ tcsh-6.17.00/sh.h 14 Apr 2011 18:25:25 -0000 3.165
@@ -578,6 +578,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 compat_expr IZERO;/* csh-style expressions? */
EXTERN int isoutatty IZERO; /* is SHOUT a tty */
EXTERN int isdiagatty IZERO;/* is SHDIAG a tty */
diff -u -r3.118 -r3.119
--- tcsh-6.17.00/sh.proc.c 24 Mar 2011 14:06:59 -0000 3.118
+++ tcsh-6.17.00/sh.proc.c 14 Apr 2011 18:25:25 -0000 3.119
@@ -557,6 +557,11 @@
reason = 0;
fp = pp;
do {
+ /* In case of pipelines only the result of the last
+ * command should be taken in account */
+ if (!anyerror && !(fp->p_flags & PBRACE)
+ && ((fp->p_flags & PPOU) || (fp->p_flags & PBACKQ)))
+ continue;
if (fp->p_reason)
reason = fp->p_flags & (PSIGNALED | PINTERRUPTED) ?
fp->p_reason | META : fp->p_reason;
@@ -734,6 +739,8 @@
pp->p_flags |= PBACKQ;
if (t->t_dflg & F_HUP)
pp->p_flags |= PHUP;
+ if (t->t_dcom && t->t_dcom[0] && (*t->t_dcom[0] == '{'))
+ pp->p_flags |= PBRACE;
if (cmdmax == 0)
morecommand(CMD_INIT);
cmdp = cmdstr;
diff -u -r3.14 -r3.15
--- tcsh-6.17.00/sh.proc.h 7 May 2010 18:16:07 -0000 3.14
+++ tcsh-6.17.00/sh.proc.h 14 Apr 2011 18:25:25 -0000 3.15
@@ -103,6 +103,7 @@
#define PNEEDNOTE (1<<15) /* notify as soon as practical */
#define PBACKQ (1<<16) /* Process is `` evaluation */
#define PHUP (1<<17) /* Process is marked for SIGHUP on exit */
+#define PBRACE (1<<18) /* Process is {} evaluation */
/* defines for arguments to pprint */
#define NUMBER 01
diff -u -r3.81 -r3.82
--- tcsh-6.17.00/sh.set.c 4 Feb 2011 18:00:26 -0000 3.81
+++ tcsh-6.17.00/sh.set.c 14 Apr 2011 18:25:25 -0000 3.82
@@ -106,6 +106,9 @@
else if (eq(vp, STRloginsh)) {
loginsh = 1;
}
+ else if (eq(vp, STRanyerror)) {
+ anyerror = 1;
+ }
else if (eq(vp, STRsymlinks)) {
Char *pn = varval(vp);
@@ -763,6 +766,8 @@
HistLit = 0;
if (adrof(STRloginsh) == 0)
loginsh = 0;
+ if (adrof(STRanyerror) == 0)
+ anyerror = 0;
if (adrof(STRwordchars) == 0)
word_chars = STR_WORD_CHARS;
if (adrof(STRedit) == 0)
diff -u -r3.97 -r3.98
--- tcsh-6.17.00/tc.const.c 27 Feb 2011 00:14:38 -0000 3.97
+++ tcsh-6.17.00/tc.const.c 14 Apr 2011 18:25:26 -0000 3.98
@@ -43,6 +43,7 @@
#endif
Char STRautomatic[] = { 'a', 'u', 't', 'o', 'm', 'a', 't', 'i', 'c',
'\0' };
+Char STRanyerror[] = { 'a', 'n', 'y', 'e', 'r', 'r', 'o', 'r', '\0' };
Char STRhangup[] = { 'h', 'a', 'n', 'g', 'u', 'p', '\0' };
Char STRaout[] = { 'a', '.', 'o', 'u', 't', '\0' };
Char STRtty[] = { 't', 't', 'y', '\0' };
diff -u -r3.226 -r3.227
--- tcsh-6.17.00/tcsh.man 1 Feb 2011 19:56:50 -0000 3.226
+++ tcsh-6.17.00/tcsh.man 14 Apr 2011 18:25:26 -0000 3.227
@@ -4352,7 +4352,12 @@
See also \fBloginsh\fR.
.TP 8
.B status
-The status returned by the last command. If it terminated
+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 was the default
+.B csh
+behavior). 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'.
diff -u -r1.6 -r1.7
--- tcsh-6.17.00/tests/lexical.at 6 May 2010 14:36:10 -0000 1.6
+++ tcsh-6.17.00/tests/lexical.at 14 Apr 2011 18:25:26 -0000 1.7
@@ -57,7 +57,7 @@
set verbose
echo `&|;<>()&||<<>>space tab end`
]])
-AT_CHECK([tcsh -f nosplit.csh], 1,
+AT_CHECK([tcsh -f nosplit.csh], 0,
[&|;<>()&||<<>>space tab end
&|;<>()&||<<>>space tab end
&|;<>()&||<<>>space tab end
@@ -132,7 +132,7 @@
AT_CHECK([tcsh -f -c 'echo "$OK"'], 1, , [OK: Undefined variable.
])
-AT_CHECK([tcsh -f -c 'echo "`OK`"'], 1, [
+AT_CHECK([tcsh -f -c 'echo "`OK`"'], 0, [
],
[OK: Command not found.
])
diff -u -r1.2 -r1.3
--- tcsh-6.17.00/tests/subst.at 16 Feb 2006 03:12:00 -0000 1.2
+++ tcsh-6.17.00/tests/subst.at 14 Apr 2011 18:25:26 -0000 1.3
@@ -14,7 +14,7 @@
echo `echo 1; \\
echo 2`
]])
-AT_CHECK([tcsh -f backq.csh], 1,
+AT_CHECK([tcsh -f backq.csh], 0,
[4
2
1 2
diff -u -r1.2 -r1.3
--- tcsh-6.17.00/tests/syntax.at 16 Feb 2006 03:12:00 -0000 1.2
+++ tcsh-6.17.00/tests/syntax.at 14 Apr 2011 18:25:26 -0000 1.3
@@ -156,7 +156,7 @@
[OK
])
-AT_CHECK([tcsh -f -c '(echo $this_does_not_exist) |& cat'], 1,
+AT_CHECK([tcsh -f -c '(echo $this_does_not_exist) |& cat'], 0,
[this_does_not_exist: Undefined variable.
])

View File

@ -1,49 +0,0 @@
diff -up tcsh-6.17.00/tests/lexical.at.testsuite tcsh-6.17.00/tests/lexical.at
--- tcsh-6.17.00/tests/lexical.at.testsuite 2008-10-17 21:56:59.000000000 +0200
+++ tcsh-6.17.00/tests/lexical.at 2010-04-08 16:27:27.286413600 +0200
@@ -30,15 +30,15 @@ AT_CLEANUP
AT_SETUP([Comments])
-AT_CHECK([echo 'echo OK#comment' | tcsh -f], , [OK
+AT_CHECK([echo 'echo OK@%:@comment' | tcsh -f], , [OK
])
-AT_CHECK([tcsh -f -c 'echo #no comment'], ,
-[#no comment
+AT_CHECK([tcsh -f -c 'echo @%:@no comment'], ,
+[@%:@no comment
])
AT_DATA([comment2.csh],
-[[echo testing...#\
+[[echo testing...@%:@\
OK
]])
AT_CHECK([tcsh -f comment2.csh], ,
@@ -194,7 +194,7 @@ AT_DATA([nohist.csh],
[[echo ! space ! tab != "!(" newline !
]])
AT_CHECK([tcsh -f nohist.csh], ,
-[! space ! tab != !( newline !
+[! space ! tab != !@{:@ newline !
])
AT_CLEANUP
@@ -230,14 +230,14 @@ AT_CHECK([tcsh -f -q -i < negative.csh],
[echo 1
])
-AT_CHECK([echo 'echo !#:0' | tcsh -f -q -i], ,
+AT_CHECK([echo 'echo !@%:@:0' | tcsh -f -q -i], ,
[> echo
> exit
],
[echo echo
])
-AT_CHECK([echo 'echo !#:1' | tcsh -f -q -i], 1,
+AT_CHECK([echo 'echo !@%:@:1' | tcsh -f -q -i], 1,
[> > exit
],
[Bad ! arg selector.

View File

@ -1,92 +0,0 @@
--- tcsh-6.17.00-orig/sh.func.c 2009-06-25 23:15:37.000000000 +0200
+++ tcsh-6.17.00/sh.func.c 2011-01-17 12:19:47.477051757 +0100
@@ -520,12 +520,13 @@ doforeach(Char **v, struct command *c)
USE(c);
v++;
- sp = cp = strip(*v);
- if (!letter(*sp))
+ cp = sp = strip(*v);
+ if (!letter(*cp))
stderror(ERR_NAME | ERR_VARBEGIN);
- while (*cp && alnum(*cp))
+ do {
cp++;
- if (*cp)
+ } while (alnum(*cp));
+ if (*cp != '\0')
stderror(ERR_NAME | ERR_VARALNUM);
cp = *v++;
if (v[0][0] != '(' || v[blklen(v) - 1][0] != ')')
@@ -1376,13 +1364,16 @@ dosetenv(Char **v, struct command *c)
}
vp = *v++;
-
lp = vp;
-
- for (; *lp != '\0' ; lp++) {
- if (*lp == '=')
- stderror(ERR_NAME | ERR_SYNTAX);
- }
+
+ if (!letter(*lp))
+ stderror(ERR_NAME | ERR_VARBEGIN);
+ do {
+ lp++;
+ } while (alnum(*lp));
+ if (*lp != '\0')
+ stderror(ERR_NAME | ERR_VARALNUM);
+
if ((lp = *v++) == 0)
lp = STRNULL;
--- tcsh-6.17.00-orig/sh.set.c 2007-09-28 23:02:03.000000000 +0200
+++ tcsh-6.17.00/sh.set.c 2011-01-17 15:02:42.785021782 +0100
@@ -222,7 +222,7 @@ void
doset(Char **v, struct command *c)
{
Char *p;
- Char *vp, op;
+ Char *vp;
Char **vecp;
int hadsub;
int subscr;
@@ -262,27 +262,26 @@ doset(Char **v, struct command *c)
do {
hadsub = 0;
vp = p;
- if (letter(*p))
- for (; alnum(*p); p++)
- continue;
- if (vp == p || !letter(*vp))
+ if (!letter(*p))
stderror(ERR_NAME | ERR_VARBEGIN);
+ do {
+ p++;
+ } while (alnum(*p));
if (*p == '[') {
hadsub++;
p = getinx(p, &subscr);
}
- if ((op = *p) != 0) {
- *p++ = 0;
- if (*p == 0 && *v && **v == '(')
+ if (*p != '\0' && *p != '=')
+ stderror(ERR_NAME | ERR_VARALNUM);
+ if (*p == '=') {
+ *p++ = '\0';
+ if (*p == '\0' && *v != NULL && **v == '(')
p = *v++;
}
else if (*v && eq(*v, STRequal)) {
- op = '=', v++;
- if (*v)
+ if (*++v != NULL)
p = *v++;
}
- if (op && op != '=')
- stderror(ERR_NAME | ERR_SYNTAX);
if (eq(p, STRLparen)) {
Char **e = v;

View File

@ -1,34 +0,0 @@
--- tcsh-6.17.00/sh.proc.c 2009-06-25 23:15:37.000000000 +0200
+++ sh.proc.c 2010-11-25 17:36:16.500751242 +0100
@@ -596,6 +596,10 @@ loop:
pp->p_flags & PRUNNING) {
handle_pending_signals();
sigsuspend(&pause_mask);
+ if (pintr_pending) {
+ handle_pending_signals();
+ break;
+ }
handle_pending_signals();
goto loop;
}
--- tcsh-6.17.00/sh.h 2009-06-25 23:27:37.000000000 +0200
+++ sh.h 2010-11-26 11:42:16.160119671 +0100
@@ -533,6 +533,7 @@ typedef union {
* Global flags
*/
EXTERN int chkstop IZERO; /* Warned of stopped jobs... allow exit */
+EXTERN volatile sig_atomic_t pintr_pending; /* Interrupted by SIGINT */
#if (defined(FIOCLEX) && defined(FIONCLEX)) || defined(F_SETFD)
# define CLOSE_ON_EXEC
--- tcsh-6.17.00/tc.sig.c 2006-08-24 22:56:31.000000000 +0200
+++ tc.sig.c 2010-11-26 11:40:09.779223509 +0100
@@ -55,7 +55,7 @@ sigset_interrupting(int sig, void (*fn)
static volatile sig_atomic_t alrmcatch_pending; /* = 0; */
static volatile sig_atomic_t pchild_pending; /* = 0; */
static volatile sig_atomic_t phup_pending; /* = 0; */
-static volatile sig_atomic_t pintr_pending; /* = 0; */
+volatile sig_atomic_t pintr_pending; /* = 0; */
int alrmcatch_disabled; /* = 0; */
int phup_disabled; /* = 0; */
int pchild_disabled; /* = 0; */

View File

@ -1,8 +1,8 @@
From c0612dbd1c6d78668f46910c20cb801a5c67780b Mon Sep 17 00:00:00 2001
From d73747f08a9576f360e0e0b6c5f537547c30c5fa Mon Sep 17 00:00:00 2001
From: "Vojtech Vitek (V-Teq)" <vvitek@redhat.com>
Date: Thu, 10 Nov 2011 18:19:57 +0100
Subject: [PATCH 2/2] Implement .history file locking - shared readers,
exclusive writer
Date: Thu, 15 Mar 2012 03:13:01 +0100
Subject: [PATCH] Implement .history file locking - shared readers, exclusive
writer
Originally reported at Red Hat Bugzilla:
https://bugzilla.redhat.com/show_bug.cgi?id=648592
@ -15,13 +15,13 @@ Patch by Vojtech Vitek (V-Teq) <vvitek@redhat.com>
sh.dol.c | 2 +-
sh.err.c | 16 ++++++++++
sh.h | 17 +++++++++++
sh.hist.c | 83 +++++++++++++++++++++++++++++-------------------------
sh.hist.c | 62 +++++++++++++++++++++++------------------
sh.lex.c | 8 ++--
sh.sem.c | 2 +-
9 files changed, 154 insertions(+), 72 deletions(-)
9 files changed, 145 insertions(+), 60 deletions(-)
diff --git a/sh.c b/sh.c
index da818fb..283af06 100644
index dcd9116..aaf32bc 100644
--- a/sh.c
+++ b/sh.c
@@ -140,6 +140,7 @@ struct saved_state {
@ -32,7 +32,7 @@ index da818fb..283af06 100644
};
static int srccat (Char *, Char *);
@@ -1251,7 +1252,7 @@ main(int argc, char **argv)
@@ -1369,7 +1370,7 @@ main(int argc, char **argv)
/*
* Source history before .login so that it is available in .login
*/
@ -41,7 +41,7 @@ index da818fb..283af06 100644
#ifndef LOGINFIRST
if (loginsh)
(void) srccat(varval(STRhome), STRsldotlogin);
@@ -1404,20 +1405,52 @@ static int
@@ -1522,20 +1523,52 @@ static int
#else
int
#endif /*WINNT_NATIVE*/
@ -107,7 +107,7 @@ index da818fb..283af06 100644
}
@@ -1475,10 +1508,14 @@ st_save(struct saved_state *st, int unit, int hflg, Char **al, Char **av)
@@ -1593,10 +1626,14 @@ st_save(struct saved_state *st, int unit, int hflg, Char **al, Char **av)
st->onelflg = onelflg;
st->enterhist = enterhist;
st->justpr = justpr;
@ -123,7 +123,7 @@ index da818fb..283af06 100644
st->cantell = cantell;
cpybin(st->B, B);
@@ -1550,7 +1587,8 @@ st_restore(void *xst)
@@ -1668,7 +1705,8 @@ st_restore(void *xst)
}
cpybin(B, st->B);
@ -133,7 +133,7 @@ index da818fb..283af06 100644
insource = st->insource;
SHIN = st->SHIN;
@@ -2024,24 +2062,25 @@ process(int catch)
@@ -2153,24 +2191,25 @@ process(int catch)
}
/*ARGSUSED*/
@ -164,7 +164,7 @@ index da818fb..283af06 100644
}
f = globone(*t++, G_ERROR);
@@ -2049,9 +2088,13 @@ dosource(Char **t, struct command *c)
@@ -2178,9 +2217,13 @@ dosource(Char **t, struct command *c)
cleanup_push(file, xfree);
xfree(f);
t = glob_all_or_error(t);
@ -182,7 +182,7 @@ index da818fb..283af06 100644
/*
diff --git a/sh.decls.h b/sh.decls.h
index 70f76a4..806ae3a 100644
index db90288..d4332f3 100644
--- a/sh.decls.h
+++ b/sh.decls.h
@@ -37,7 +37,7 @@
@ -194,7 +194,7 @@ index 70f76a4..806ae3a 100644
extern void exitstat (void);
extern void goodbye (Char **, struct command *);
extern void importpath (Char *);
@@ -97,6 +97,7 @@ extern void cleanup_until_mark(void);
@@ -98,6 +98,7 @@ extern void cleanup_until_mark(void);
extern size_t cleanup_push_mark(void);
extern void cleanup_pop_mark(size_t);
extern void open_cleanup(void *);
@ -202,20 +202,20 @@ index 70f76a4..806ae3a 100644
extern void opendir_cleanup(void *);
extern void sigint_cleanup(void *);
extern void sigprocmask_cleanup(void *);
@@ -216,7 +217,7 @@ extern struct Hist *enthist (int, struct wordent *, int, int);
@@ -219,7 +220,7 @@ extern struct Hist *enthist (int, struct wordent *, int, int, int);
extern void savehist (struct wordent *, int);
extern char *fmthist (int, ptr_t);
extern void rechist (Char *, int);
-extern void loadhist (Char *, int);
+extern int loadhist (Char *, int);
extern void displayHistStats(const char *);
/*
* sh.init.c
diff --git a/sh.dir.c b/sh.dir.c
index 9f72951..b75c366 100644
index ab89855..4bfe430 100644
--- a/sh.dir.c
+++ b/sh.dir.c
@@ -1336,7 +1336,7 @@ loaddirs(Char *fname)
@@ -1342,7 +1342,7 @@ loaddirs(Char *fname)
loaddirs_cmd[1] = fname;
else
loaddirs_cmd[1] = STRtildotdirs;
@ -225,10 +225,10 @@ index 9f72951..b75c366 100644
}
diff --git a/sh.dol.c b/sh.dol.c
index bafb971..b9fe82a 100644
index 45b10e0..02dfe98 100644
--- a/sh.dol.c
+++ b/sh.dol.c
@@ -1099,6 +1099,6 @@ again:
@@ -1110,6 +1110,6 @@ again:
*obp = 0;
tmp = short2str(obuf);
(void) xwrite(0, tmp, strlen (tmp));
@ -237,10 +237,10 @@ index bafb971..b9fe82a 100644
cleanup_until(&inheredoc);
}
diff --git a/sh.err.c b/sh.err.c
index 279c7b8..9759d72 100644
index e157d6a..29d41c3 100644
--- a/sh.err.c
+++ b/sh.err.c
@@ -505,6 +505,22 @@ open_cleanup(void *xptr)
@@ -514,6 +514,22 @@ open_cleanup(void *xptr)
}
void
@ -264,7 +264,7 @@ index 279c7b8..9759d72 100644
{
DIR *dir;
diff --git a/sh.h b/sh.h
index 83a3e93..c05870f 100644
index 691add3..558b093 100644
--- a/sh.h
+++ b/sh.h
@@ -50,6 +50,23 @@
@ -292,10 +292,10 @@ index 83a3e93..c05870f 100644
typedef unsigned long intptr_t;
#endif
diff --git a/sh.hist.c b/sh.hist.c
index 2863d5c..f0583cb 100644
index 6a12737..7df84e5 100644
--- a/sh.hist.c
+++ b/sh.hist.c
@@ -255,7 +255,7 @@ dohist(Char **vp, struct command *c)
@@ -1173,7 +1173,7 @@ dohist(Char **vp, struct command *c)
}
if (hflg & (HIST_LOAD | HIST_MERGE))
@ -304,7 +304,7 @@ index 2863d5c..f0583cb 100644
else if (hflg & HIST_SAVE)
rechist(*vp, 1);
else {
@@ -374,8 +374,8 @@ fmthist(int fmt, ptr_t ptr)
@@ -1224,8 +1224,8 @@ fmthist(int fmt, ptr_t ptr)
void
rechist(Char *fname, int ref)
{
@ -315,7 +315,15 @@ index 2863d5c..f0583cb 100644
struct varent *shist;
static Char *dumphist[] = {STRhistory, STRmhT, 0, 0};
@@ -405,15 +405,12 @@ rechist(Char *fname, int ref)
@@ -1239,7 +1239,6 @@ rechist(Char *fname, int ref)
((snum = varval(STRhistory)) == STRNULL))
snum = STRmaxint;
-
if (fname == NULL) {
if ((fname = varval(STRhistfile)) == STRNULL)
fname = Strspl(varval(STRhome), &STRtildothist[1]);
@@ -1255,15 +1254,12 @@ rechist(Char *fname, int ref)
* with numerous shells being in simultaneous use. Imagine
* any kind of window system. All these shells 'share' the same
* ~/.history file for recording their command line history.
@ -325,10 +333,9 @@ index 2863d5c..f0583cb 100644
- * Users that like to nuke their environment require here an atomic
- * loadhist-creat-dohist(dumphist)-close
- * sequence.
- *
*
- * jw.
- */
+ *
+ * Atomic merge loadhist-creat/ftrunc-dohist(dumphist)-close
+ * implemented using fcntl (shared readers, exclusive writer)
+ * by Vojtech Vitek (V-Teq) <vvitek@redhat.com>.
@ -337,59 +344,28 @@ index 2863d5c..f0583cb 100644
/*
* We need the didfds stuff before loadhist otherwise
* exec in a script will fail to print if merge is set.
@@ -421,41 +418,49 @@ rechist(Char *fname, int ref)
@@ -1271,22 +1267,34 @@ rechist(Char *fname, int ref)
*/
oldidfds = didfds;
didfds = 0;
- if ((shist = adrof(STRsavehist)) != NULL && shist->vec != NULL)
- if (shist->vec[1] && eq(shist->vec[1], STRmerge)) {
- /*
- * Unset verbose while we read the history file. From:
- * jbastian@redhat.com (Jeffrey Bastian)
- */
- Char *verb = varval(STRverbose);
- if (verb != STRNULL)
- unsetv(STRverbose);
- if (shist->vec[1] && eq(shist->vec[1], STRmerge))
- loadhist(fname, 1);
- if (verb != STRNULL)
- setv(STRverbose, verb, VAR_READWRITE);
-
- fp = xcreat(short2str(fname), 0600);
- cleanup_until(fname);
- if (fp == -1) {
- didfds = oldidfds;
- return;
+ if ((shist = adrof(STRsavehist)) != NULL && shist->vec != NULL
+ && shist->vec[1] && eq(shist->vec[1], STRmerge)) {
+ /*
+ * Unset verbose while we read the history file. From:
+ * jbastian@redhat.com (Jeffrey Bastian)
+ */
+ Char *verb = varval(STRverbose);
+ if (verb != STRNULL)
+ unsetv(STRverbose);
+ /* Read .history file, leave it's fd open for writing. */
+ fd = loadhist(fname, SRC_MFLAG|FD_WRLCK|FD_LEAVE_OPEN|FD_LEAVE_LCKD);
+ if (fd != -1) {
+ /* Truncate the .history file. */
+ (void) ftruncate(fd, 0);
+ (void) lseek(fd, 0, SEEK_SET);
}
- fp = xcreat(short2str(fname), 0600);
- if (fp == -1) {
- didfds = oldidfds;
- cleanup_until(fname);
- return;
+ if (verb != STRNULL)
+ setv(STRverbose, verb, VAR_READWRITE);
+ }
+ if (fd == -1) {
+ /* Open .history file for writing (if not open yet). */
+ fd = xopen(short2str(fname), O_LARGEFILE|O_CREAT|O_WRONLY|O_TRUNC, 0600);
+ if (fd != -1)
+ cleanup_push(&fd, open_cleanup);
+ }
+ if (fd != -1) {
+ ftmp = SHOUT;
+ SHOUT = fd;
+ dumphist[2] = snum;
+ /* Write history to the .history file. */
+ dohist(dumphist, NULL);
+ SHOUT = ftmp;
+ }
}
- ftmp = SHOUT;
- SHOUT = fp;
@ -397,34 +373,32 @@ index 2863d5c..f0583cb 100644
- dohist(dumphist, NULL);
- xclose(fp);
- SHOUT = ftmp;
+
+ /* Open .history file for writing (if not open yet). */
+ if (fd == -1) {
+ fd = xopen(short2str(fname), O_LARGEFILE|O_CREAT|O_WRONLY|O_TRUNC, 0600);
+ cleanup_until(fname);
+ if (fd != -1)
+ cleanup_push(&fd, open_cleanup);
+ }
+
+ if (fd != -1) {
+ ftmp = SHOUT;
+ SHOUT = fd;
+ dumphist[2] = snum;
+ /* Write history to the .history file. */
+ dohist(dumphist, NULL);
+ SHOUT = ftmp;
+ }
+
didfds = oldidfds;
cleanup_until(fname);
}
-void
-loadhist(Char *fname, int mflg)
+int
+loadhist(Char *fname, int flg)
{
static Char *loadhist_cmd[] = {STRsource, NULL, NULL, NULL};
- loadhist_cmd[1] = mflg ? STRmm : STRmh;
+ loadhist_cmd[1] = (flg & SRC_MFLAG) ? STRmm : STRmh;
if (fname != NULL)
loadhist_cmd[2] = fname;
@@ -464,5 +469,5 @@ loadhist(Char *fname, int mflg)
else
loadhist_cmd[2] = STRtildothist;
- dosource(loadhist_cmd, NULL);
+ return dosource(loadhist_cmd, NULL, flg);
}
diff --git a/sh.lex.c b/sh.lex.c
index 536097e..2543552 100644
index 80643f7..e128789 100644
--- a/sh.lex.c
+++ b/sh.lex.c
@@ -1589,7 +1589,7 @@ wide_read(int fildes, Char *buf, size_t nchars, int use_fclens)
@@ -1595,7 +1595,7 @@ wide_read(int fildes, Char *buf, size_t nchars, int use_fclens)
/* Throwing away possible partial multibyte characters on error if the
stream is not seekable */
err = errno;
@ -433,7 +407,7 @@ index 536097e..2543552 100644
errno = err;
return res != 0 ? res : r;
}
@@ -1604,7 +1604,7 @@ bgetc(void)
@@ -1610,7 +1610,7 @@ bgetc(void)
if (cantell) {
if (fseekp < fbobp || fseekp > feobp) {
fbobp = feobp = fseekp;
@ -442,7 +416,7 @@ index 536097e..2543552 100644
}
if (fseekp == feobp) {
#ifdef WIDE_STRINGS
@@ -1808,7 +1808,7 @@ btell(struct Ain *l)
@@ -1814,7 +1814,7 @@ btell(struct Ain *l)
void
btoeof(void)
{
@ -451,7 +425,7 @@ index 536097e..2543552 100644
aret = TCSH_F_SEEK;
fseekp = feobp;
alvec = NULL;
@@ -1826,7 +1826,7 @@ settell(void)
@@ -1832,7 +1832,7 @@ settell(void)
cantell = 0;
if (arginp || onelflg || intty)
return;
@ -461,10 +435,10 @@ index 536097e..2543552 100644
fbuf = xcalloc(2, sizeof(Char **));
fblocks = 1;
diff --git a/sh.sem.c b/sh.sem.c
index 7c5511a..b8eee96 100644
index c880974..765bf50 100644
--- a/sh.sem.c
+++ b/sh.sem.c
@@ -879,7 +879,7 @@ doio(struct command *t, int *pipein, int *pipeout)
@@ -892,7 +892,7 @@ doio(struct command *t, int *pipein, int *pipeout)
fd = xopen(tmp, O_WRONLY|O_APPEND|O_LARGEFILE);
#else /* !O_APPEND */
fd = xopen(tmp, O_WRONLY|O_LARGEFILE);
@ -474,5 +448,5 @@ index 7c5511a..b8eee96 100644
}
else
--
1.7.6.2
1.7.6.5

View File

@ -2,48 +2,20 @@
Summary: An enhanced version of csh, the C shell
Name: tcsh
Version: 6.17
Release: 19%{?dist}
Version: 6.18.00
Release: 1%{?dist}
License: BSD
Group: System Environment/Shells
Source: ftp://ftp.astron.com/pub/tcsh/%{name}-%{version}.00.tar.gz
Source: http://ftp.funet.fi/pub/unix/shells/tcsh/%{name}-%{version}.tar.gz
Patch1: tcsh-6.15.00-closem.patch
Patch2: tcsh-6.14.00-tinfo.patch
Patch3: tcsh-6.14.00-unprintable.patch
Patch4: tcsh-6.15.00-hist-sub.patch
Patch6: tcsh-6.15.00-ca-color.patch
Patch7: tcsh-6.14.00-set.patch
Patch8: tcsh-6.14.00-syntax.patch
Patch9: tcsh-6.13.00-memoryuse.patch
Patch11: tcsh-6.14.00-order.patch
Patch12: tcsh-6.15.00-rs-color.patch
Patch13: tcsh-6.17.00-mh-color.patch
# Accepted by upstream:
Patch14: tcsh-6.17.00-history.patch
# Accepted by upstream:
Patch15: tcsh-6.17.00-printexitvalue.patch
Patch16: tcsh-6.17.00-testsuite.patch
# Proposed to upstream (http://bugs.gw.com/view.php?id=149):
Patch17: tcsh-6.17.00-negative_jobs.patch
# Accepted by upstream (tcsh-6.17.03b http://bugs.gw.com/view.php?id=109):
Patch19: tcsh-6.17.00-wait-intr.patch
# Accepted by upstream (tcsh-6.17.03b http://bugs.gw.com/view.php?id=112):
Patch21: tcsh-6.17.00-dont-set-empty-remotehost.patch
# Patch by upstream (tcsh-6.17.01b http://mx.gw.com/pipermail/tcsh-bugs/2010-May/000673.html):
Patch22: tcsh-6.17.00-dont-print-history-on-verbose.patch
# Accepted by upstream:
Patch23: tcsh-6.17.00-extrafork.patch
# Proposed to upstream (http://bugs.gw.com/view.php?id=122):
Patch24: tcsh-6.17.00-avoid-null-cwd.patch
# Accepted by upstream (tcsh-6.17.05b http://mx.gw.com/pipermail/tcsh-bugs/2011-March/000727.html):
Patch25: tcsh-6.17.00-avoid-infinite-loop-pendjob-xprintf.patch
# Accepted by upstream (tcsh-6.17.03b http://bugs.gw.com/view.php?id=113):
Patch26: tcsh-6.17.00-variable-names.patch
# Accepted by upstream (tcsh-6.17.06b http://bugs.gw.com/view.php?id=110)
Patch27: tcsh-6.17.00-status-pipeline-backquote-list-of-cmds.patch
# Proposed to upstream (http://bugs.gw.com/view.php?id=121)
Patch28: tcsh-6.17.00-manpage-spelling.patch
Patch30: tcsh-6.17.00-handle-signals-before-flush.patch
Patch31: tcsh-6.17.00-history-file-locking.patch
Provides: csh = %{version}
@ -62,32 +34,15 @@ spelling correction, a history mechanism, job control and a C language
like syntax.
%prep
%setup -q -n %{name}-%{version}.00
%setup -q -n %{name}-%{version}
%patch1 -p1 -b .closem
%patch2 -p1 -b .tinfo
%patch3 -p1 -b .unprintable
%patch4 -p1 -b .hist-sub
%patch6 -p1 -b .ca-color
%patch7 -p1 -b .set
%patch8 -p1 -b .syntax
%patch9 -p1 -b .memoryuse
%patch11 -p1 -b .order
%patch12 -p1 -b .rs-color
%patch13 -p1 -b .mh-color
%patch14 -p1 -b .history
%patch15 -p1 -b .printexitvalue
%patch16 -p1 -b .testsuite
%patch17 -p1 -b .negative_jobs
%patch19 -p1 -b .wait-intr
%patch21 -p1 -b .dont-set-empty-remotehost
%patch22 -p1 -b .dont-print-history-on-verbose
%patch23 -p1 -b .extrafork
%patch24 -p1 -b .avoid-null-cwd
%patch25 -p1 -b .avoid-infinite-loop-pendjob-xprintf
%patch26 -p1 -b .variable-names
%patch27 -p1 -b .status-pipeline-backquote-list-of-cmds
%patch28 -p1 -b .manpage-spelling
%patch30 -p1 -b .handle-signals-before-flush
%patch31 -p1 -b .history-file-locking
for i in Fixes WishList; do
@ -162,6 +117,20 @@ fi
%{_mandir}/man1/*.1*
%changelog
* Thu Mar 15 2012 Vojtech Vitek (V-Teq) <vvitek@redhat.com> - 6.18.00-1
- Update to tcsh-6.18.00
- Remove obsolete patches: tcsh-6.15.00-ca-color.patch,
tcsh-6.17.00-tc-color.patch, tcsh-6.17.00-mh-color.patch,
tcsh-6.17.00-history.patch, tcsh-6.17.00-printexitvalue.patch,
tcsh-6.17.00-testsuite.patch, tcsh-6.17.00-negative_jobs.patch,
tcsh-6.17.00-wait-intr.patch, tcsh-6.17.00-dont-set-empty-remotehost.patch,
tcsh-6.17.00-dont-print-history-on-verbose.patch, tcsh-6.14.00-set.patch,
tcsh-6.17.00-extrafork.patch, tcsh-6.17.00-avoid-null-cwd.patch,
tcsh-6.17.00-avoid-infinite-loop-pendjob-xprintf.patch,
tcsh-6.17.00-variable-names.patch,
tcsh-6.17.00-handle-signals-before-flush.patch
tcsh-6.17.00-status-pipeline-backquote-list-of-cmds.patch (reverted!)
* Thu Feb 16 2012 Vojtech Vitek (V-Teq) <vvitek@redhat.com> - 6.17-19
- Handle pending signals before flush so that the the .history file
does not get truncated (#653054)