From 14231691e15744c0aac39224e9aa0d84835313fe Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Tue, 18 Nov 2008 10:07:31 +0000 Subject: 26061: fix clash between process subst and numeric glob 26062: additional compmatch change, missed from 26047 --- Src/Zle/compmatch.c | 3 +-- Src/lex.c | 4 ++-- Src/parse.c | 9 +++++---- Src/subst.c | 5 +++-- Src/zsh.h | 19 ++++++++++--------- 5 files changed, 21 insertions(+), 19 deletions(-) (limited to 'Src') diff --git a/Src/Zle/compmatch.c b/Src/Zle/compmatch.c index 77dc5958d..c4523ae47 100644 --- a/Src/Zle/compmatch.c +++ b/Src/Zle/compmatch.c @@ -1812,7 +1812,6 @@ bld_line(Cmatcher mp, ZLE_STRING_T line, char *mword, char *word, /* we now reuse mp, lpat, wpat for the global matchers */ MB_METACHARINIT(); while (llen && wlen) { - convchar_t wchr; int wmtp; convchar_t *wp; Cpattern tmpgenpat; @@ -1835,7 +1834,7 @@ bld_line(Cmatcher mp, ZLE_STRING_T line, char *mword, char *word, if (curgenpat->tp == CPAT_CHAR) lchr = curgenpat->u.chr; else - lchr = wchr; + lchr = *wp; if (sfx) *--line = lchr; diff --git a/Src/lex.c b/Src/lex.c index f5999d798..b66630acc 100644 --- a/Src/lex.c +++ b/Src/lex.c @@ -33,7 +33,7 @@ /* tokens */ /**/ -mod_export char ztokens[] = "#$^*()$=|{}[]`<>?~`,'\"\\\\"; +mod_export char ztokens[] = "#$^*()$=|{}[]`<>>?~`,'\"\\\\"; /* parts of the current token */ @@ -1160,7 +1160,7 @@ gettokstr(int c, int sub) lexstop = 0; goto brk; } - add(Outang); + add(OutangProc); if (skipcomm()) { peek = LEXERR; goto brk; diff --git a/Src/parse.c b/Src/parse.c index 6ff73a831..722809a78 100644 --- a/Src/parse.c +++ b/Src/parse.c @@ -1574,7 +1574,7 @@ par_simple(int *complex, int nr) * we need process handling. */ if (p[1] == Inpar && - (*p == Equals || *p == Inang || *p == Outang)) { + (*p == Equals || *p == Inang || *p == OutangProc)) { *complex = 1; break; } @@ -1833,7 +1833,7 @@ par_redir(int *rp, char *idstring) } case REDIR_WRITE: case REDIR_WRITENOW: - if (tokstr[0] == Outang && tokstr[1] == Inpar) + if (tokstr[0] == OutangProc && tokstr[1] == Inpar) /* > >(...) */ type = REDIR_OUTPIPE; else if (tokstr[0] == Inang && tokstr[1] == Inpar) @@ -1843,11 +1843,12 @@ par_redir(int *rp, char *idstring) if (tokstr[0] == Inang && tokstr[1] == Inpar) /* < <(...) */ type = REDIR_INPIPE; - else if (tokstr[0] == Outang && tokstr[1] == Inpar) + else if (tokstr[0] == OutangProc && tokstr[1] == Inpar) YYERROR(ecused); break; case REDIR_READWRITE: - if ((tokstr[0] == Inang || tokstr[0] == Outang) && tokstr[1] == Inpar) + if ((tokstr[0] == Inang || tokstr[0] == OutangProc) && + tokstr[1] == Inpar) type = tokstr[0] == Inang ? REDIR_INPIPE : REDIR_OUTPIPE; break; } diff --git a/Src/subst.c b/Src/subst.c index a8f894c68..42f880965 100644 --- a/Src/subst.c +++ b/Src/subst.c @@ -152,12 +152,13 @@ stringsubst(LinkList list, LinkNode node, int ssub, int asssub) char *str = str3, c; while (!errflag && (c = *str)) { - if (((c = *str) == Inang || c == Outang || (str == str3 && c == Equals)) + if (((c = *str) == Inang || c == OutangProc || + (str == str3 && c == Equals)) && str[1] == Inpar) { char *subst, *rest, *snew, *sptr; int str3len = str - str3, sublen, restlen; - if (c == Inang || c == Outang) + if (c == Inang || c == OutangProc) subst = getproc(str, &rest); /* <(...) or >(...) */ else subst = getoutputfile(str, &rest); /* =(...) */ diff --git a/Src/zsh.h b/Src/zsh.h index 12dee443f..36755c719 100644 --- a/Src/zsh.h +++ b/Src/zsh.h @@ -147,28 +147,29 @@ struct mathfunc { #define Tick ((char) 0x91) #define Inang ((char) 0x92) #define Outang ((char) 0x93) -#define Quest ((char) 0x94) -#define Tilde ((char) 0x95) -#define Qtick ((char) 0x96) -#define Comma ((char) 0x97) +#define OutangProc ((char) 0x94) +#define Quest ((char) 0x95) +#define Tilde ((char) 0x96) +#define Qtick ((char) 0x97) +#define Comma ((char) 0x98) /* * Null arguments: placeholders for single and double quotes * and backslashes. */ -#define Snull ((char) 0x98) -#define Dnull ((char) 0x99) -#define Bnull ((char) 0x9a) +#define Snull ((char) 0x99) +#define Dnull ((char) 0x9a) +#define Bnull ((char) 0x9b) /* * Backslash which will be returned to "\" instead of being stripped * when we turn the string into a printable format. */ -#define Bnullkeep ((char) 0x9b) +#define Bnullkeep ((char) 0x9c) /* * Null argument that does not correspond to any character. * This should be last as it does not appear in ztokens and * is used to initialise the IMETA type in inittyptab(). */ -#define Nularg ((char) 0x9c) +#define Nularg ((char) 0x9d) /* * Take care to update the use of IMETA appropriately when adding -- cgit 1.4.1