diff --git a/tcsh-6.19.00-009-fix-parsing-of-if-statement.patch b/tcsh-6.19.00-009-fix-parsing-of-if-statement.patch new file mode 100644 index 0000000..6c34020 --- /dev/null +++ b/tcsh-6.19.00-009-fix-parsing-of-if-statement.patch @@ -0,0 +1,145 @@ +From 132f9f91a87e313d3702aaa3ac85bdf060207564 Mon Sep 17 00:00:00 2001 +From: christos +Date: Mon, 6 Jul 2015 21:52:45 +0000 +Subject: [PATCH] Fix parsing of if statement with a missing space after + the if closing parenthesis (Fridolin Pokorny) + +--- + Fixes | 1 + + Makefile.in | 4 ++-- + sh.func.c | 11 +++++++++ + tests/parenthesis.at | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + tests/testsuite.at | 1 + + 5 files changed, 78 insertions(+), 2 deletions(-) + create mode 100644 tests/parenthesis.at + +diff --git a/Fixes b/Fixes +index aa779b1..07afe71 100644 +--- a/Fixes ++++ b/Fixes +@@ -1,3 +1,4 @@ ++ 3. Fix parsing of 'if (cond)then' (Fridolin Pokorny) + 2. PR/437: Fix handling of invalid unicode characters. + 1. PR/451: Fix error messages containing %c to be always '%c' + +diff --git a/Makefile.in b/Makefile.in +index bfe51b6..6d1f964 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -415,8 +415,8 @@ AVSRCS= Fixes MAKEDIFFS MAKESHAR NewThings README FAQ \ + tests/testsuite.at aclocal.m4 + TESTFILES= tests/aliases.at tests/arguments.at tests/commands.at \ + tests/expr.at tests/lexical.at tests/mb-eucjp.at \ +- tests/mb-utf8.at tests/noexec.at tests/syntax.at tests/subst.at \ +- tests/variables.at tests/sh.dol.at ++ tests/mb-utf8.at tests/noexec.at tests/parenthesis.at tests/syntax.at \ ++ tests/subst.at tests/variables.at tests/sh.dol.at + + VHSRCS=${PVSRCS} ${AVSRCS} + +diff --git a/sh.func.c b/sh.func.c +index 7b70760..bb670b8 100644 +--- a/sh.func.c ++++ b/sh.func.c +@@ -1045,6 +1045,17 @@ getword(struct Strbuf *wp) + goto past; + if (wp) + Strbuf_append1(wp, (Char) c); ++ if (!d && c == ')') { ++ if (!first && wp) { ++ goto past_word_end; ++ } else { ++ if (wp) { ++ wp->len = 1; ++ Strbuf_terminate(wp); ++ } ++ return found; ++ } ++ } + if (!first && !d && c == '(') { + if (wp) + goto past_word_end; +diff --git a/tests/parenthesis.at b/tests/parenthesis.at +new file mode 100644 +index 0000000..2832b50 +--- /dev/null ++++ b/tests/parenthesis.at +@@ -0,0 +1,63 @@ ++# Parenthesis handling ++ ++AT_SETUP([Parenthesis no space]) ++AT_DATA([no-space.csh], ++[[ ++if(1 == 1) then ++ echo 1 ++else ++ if (2 == 22 )then ++ echo 2 ++ endif ++ echo 3 ++endif ++]]) ++AT_CHECK([tcsh -f < no-space.csh], ,[1 ++]) ++ ++AT_CLEANUP ++ ++AT_SETUP([Parenthesis space]) ++AT_DATA([space.csh], ++[[ ++if (1 == 1) then ++ echo 1 ++else ++ if (2 == 22 ) then ++ echo 2 ++ endif ++ echo 3 ++endif ++]]) ++AT_CHECK([tcsh -f < space.csh], ,[1 ++]) ++ ++AT_CLEANUP ++ ++AT_SETUP([Parenthesis space escaped]) ++AT_DATA([space-escaped.csh], ++[[ ++if (1 == 1) then ++ echo 1 ++else ++ if (2 == 22 )\ then ++ echo 2 ++ endif ++ echo 3 ++endif ++]]) ++AT_CHECK([tcsh -f < space-escaped.csh], ,[1 ++]) ++AT_CLEANUP ++ ++AT_SETUP([Parenthesis escaped]) ++AT_DATA([parenthesis-escaped.csh], ++[[ ++if ( ')' == \) ) then ++ echo 1 ++endif ++]]) ++AT_CHECK([tcsh -f < parenthesis-escaped.csh], ,[1 ++]) ++AT_CLEANUP ++ +diff --git a/tests/testsuite.at b/tests/testsuite.at +index fd1d7b9..d358a7f 100644 +--- a/tests/testsuite.at ++++ b/tests/testsuite.at +@@ -18,6 +18,7 @@ m4_include([expr.at]) + m4_include([lexical.at]) + m4_include([mb-eucjp.at]) + m4_include([mb-utf8.at]) ++m4_include([parenthesis.at]) + m4_include([subst.at]) + m4_include([syntax.at]) + m4_include([variables.at]) +-- +2.5.5 + diff --git a/tcsh.spec b/tcsh.spec index 8a294a8..f94cef3 100644 --- a/tcsh.spec +++ b/tcsh.spec @@ -37,6 +37,7 @@ Patch005: tcsh-6.19.00-005-ge0-is-always-true-for-unsigned.patch Patch006: tcsh-6.19.00-006-_SIGWINCH-added.patch Patch007: tcsh-6.19.00-007-fix-handling-of-invalid-unicode-characters.patch Patch008: tcsh-6.19.00-008-fix-ln-1-completion.patch +Patch009: tcsh-6.19.00-009-fix-parsing-of-if-statement.patch # Downstream patches -- these should be always included when doing rebase: @@ -166,6 +167,7 @@ fi tcsh-6.19.00-006-_SIGWINCH-added.patch tcsh-6.19.00-007-fix-handling-of-invalid-unicode-characters.patch tcsh-6.19.00-008-fix-ln-1-completion.patch + tcsh-6.19.00-009-fix-parsing-of-if-statement.patch * Thu Apr 21 2016 David Kaspar [Dee'Kej] - 6.19.00-6 - Drop tcsh-6.15.00-closem.patch - issue not reproducible, patch not accepted by upstream