diff --git a/.gitignore b/.gitignore index ea60d43..301af94 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/sources b/sources index e819b14..af5fece 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -c47de903e3d52f6824c8dd0c91eeb477 tcsh-6.17.00.tar.gz +ee9b3aa36fb38d32eab6a37a34e4c341 tcsh-6.18.00.tar.gz diff --git a/tcsh-6.14.00-set.patch b/tcsh-6.14.00-set.patch deleted file mode 100644 index d583c3e..0000000 --- a/tcsh-6.14.00-set.patch +++ /dev/null @@ -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 diff --git a/tcsh-6.15.00-ca-color.patch b/tcsh-6.15.00-ca-color.patch deleted file mode 100644 index a4f1f85..0000000 --- a/tcsh-6.15.00-ca-color.patch +++ /dev/null @@ -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 { diff --git a/tcsh-6.15.00-rs-color.patch b/tcsh-6.15.00-rs-color.patch deleted file mode 100644 index 709fa9b..0000000 --- a/tcsh-6.15.00-rs-color.patch +++ /dev/null @@ -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 { diff --git a/tcsh-6.17.00-avoid-infinite-loop-pendjob-xprintf.patch b/tcsh-6.17.00-avoid-infinite-loop-pendjob-xprintf.patch deleted file mode 100644 index b762421..0000000 --- a/tcsh-6.17.00-avoid-infinite-loop-pendjob-xprintf.patch +++ /dev/null @@ -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); diff --git a/tcsh-6.17.00-avoid-null-cwd.patch b/tcsh-6.17.00-avoid-null-cwd.patch deleted file mode 100644 index 44ee1e1..0000000 --- a/tcsh-6.17.00-avoid-null-cwd.patch +++ /dev/null @@ -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); diff --git a/tcsh-6.17.00-dont-print-history-on-verbose.patch b/tcsh-6.17.00-dont-print-history-on-verbose.patch deleted file mode 100644 index 8e9b42a..0000000 --- a/tcsh-6.17.00-dont-print-history-on-verbose.patch +++ /dev/null @@ -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; diff --git a/tcsh-6.17.00-dont-set-empty-remotehost.patch b/tcsh-6.17.00-dont-set-empty-remotehost.patch deleted file mode 100644 index 8fa96c8..0000000 --- a/tcsh-6.17.00-dont-set-empty-remotehost.patch +++ /dev/null @@ -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)); - } diff --git a/tcsh-6.17.00-extrafork.patch b/tcsh-6.17.00-extrafork.patch deleted file mode 100644 index 206d94a..0000000 --- a/tcsh-6.17.00-extrafork.patch +++ /dev/null @@ -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(¶ml); - t = syntax(paraml.next, ¶ml, 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 diff --git a/tcsh-6.17.00-handle-signals-before-flush.patch b/tcsh-6.17.00-handle-signals-before-flush.patch deleted file mode 100644 index 2fdbfc9..0000000 --- a/tcsh-6.17.00-handle-signals-before-flush.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 466297a90d3520d5521c9ca6858a5b7981b3edb8 Mon Sep 17 00:00:00 2001 -From: "Vojtech Vitek (V-Teq)" -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 - diff --git a/tcsh-6.17.00-history.patch b/tcsh-6.17.00-history.patch deleted file mode 100644 index fef47fb..0000000 --- a/tcsh-6.17.00-history.patch +++ /dev/null @@ -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"); diff --git a/tcsh-6.17.00-mh-color.patch b/tcsh-6.17.00-mh-color.patch deleted file mode 100644 index 693a686..0000000 --- a/tcsh-6.17.00-mh-color.patch +++ /dev/null @@ -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 { diff --git a/tcsh-6.17.00-negative_jobs.patch b/tcsh-6.17.00-negative_jobs.patch deleted file mode 100644 index 7037115..0000000 --- a/tcsh-6.17.00-negative_jobs.patch +++ /dev/null @@ -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); diff --git a/tcsh-6.17.00-printexitvalue.patch b/tcsh-6.17.00-printexitvalue.patch deleted file mode 100644 index d9d4f31..0000000 --- a/tcsh-6.17.00-printexitvalue.patch +++ /dev/null @@ -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(¶ml); - t = syntax(paraml.next, ¶ml, 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; diff --git a/tcsh-6.17.00-status-pipeline-backquote-list-of-cmds.patch b/tcsh-6.17.00-status-pipeline-backquote-list-of-cmds.patch deleted file mode 100644 index a9b4f92..0000000 --- a/tcsh-6.17.00-status-pipeline-backquote-list-of-cmds.patch +++ /dev/null @@ -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. - ]) - diff --git a/tcsh-6.17.00-testsuite.patch b/tcsh-6.17.00-testsuite.patch deleted file mode 100644 index aff70ef..0000000 --- a/tcsh-6.17.00-testsuite.patch +++ /dev/null @@ -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. diff --git a/tcsh-6.17.00-variable-names.patch b/tcsh-6.17.00-variable-names.patch deleted file mode 100644 index febf984..0000000 --- a/tcsh-6.17.00-variable-names.patch +++ /dev/null @@ -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; - diff --git a/tcsh-6.17.00-wait-intr.patch b/tcsh-6.17.00-wait-intr.patch deleted file mode 100644 index 4b4ff01..0000000 --- a/tcsh-6.17.00-wait-intr.patch +++ /dev/null @@ -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; */ diff --git a/tcsh-6.17.00-history-file-locking.patch b/tcsh-6.18.00-history-file-locking.patch similarity index 77% rename from tcsh-6.17.00-history-file-locking.patch rename to tcsh-6.18.00-history-file-locking.patch index c30271a..1df5f78 100644 --- a/tcsh-6.17.00-history-file-locking.patch +++ b/tcsh-6.18.00-history-file-locking.patch @@ -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)" -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) 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*/ @@ -80,7 +80,7 @@ index da818fb..283af06 100644 + + if (flg & (FD_WRLCK | FD_RDLCK)) { + struct flock fl; -+ ++ + fl.l_type = (flg & FD_WRLCK) ? F_WRLCK : F_RDLCK; + fl.l_whence = SEEK_SET; + fl.l_start = 0; @@ -99,15 +99,15 @@ index da818fb..283af06 100644 + cleanup_until(unit); /* open_cleanup */ + cleanup_until(unit); /* xfree */ + } -+ ++ + return -1; /* Invalid file descriptor. */ + } -+ ++ + return *unit; } -@@ -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); @@ -172,17 +172,17 @@ index da818fb..283af06 100644 - stderror(ERR_SYSTEM, file, strerror(errno)); - cleanup_until(file); + fd = srcfile(file, 0, (hflg | flg), t); -+ ++ + /* Postpone fd cleanup, which is on the top of cleaning stack. */ + cleanup_ignore(file); + xfree(file); -+ ++ + return fd; /* File descriptor or -1. */ } /* 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 @@ -250,12 +250,12 @@ index 279c7b8..9759d72 100644 + struct flock fl; + + ptr = xptr; -+ ++ + fl.l_type = F_UNLCK; + fl.l_whence = SEEK_SET; + fl.l_start = 0; + fl.l_len = 0; -+ ++ + fcntl(*ptr, F_SETLK, &fl); +} + @@ -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 @@ @@ -275,7 +275,7 @@ index 83a3e93..c05870f 100644 +#include +/* + * Source flags (representing -h or -m). -+ * ++ * + * File locking flags. + * - shared and exclusive (read and write) access to a file + * - currently used in sh.c and sh.hist.c files while acessing @@ -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) . @@ -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 diff --git a/tcsh.spec b/tcsh.spec index fdfe2f6..1baca73 100644 --- a/tcsh.spec +++ b/tcsh.spec @@ -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) - 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) - 6.17-19 - Handle pending signals before flush so that the the .history file does not get truncated (#653054)