diff options
Diffstat (limited to 'Src/lex.c')
-rw-r--r-- | Src/lex.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/Src/lex.c b/Src/lex.c index 2c19c097e..ccd04b2d9 100644 --- a/Src/lex.c +++ b/Src/lex.c @@ -642,7 +642,18 @@ gettok(void) return DOUTPAR; } else if (idigit(c)) { /* handle 1< foo */ d = hgetc(); - if (d == '>' || d == '<') { + if(d == '&') { + d = hgetc(); + if(d == '>') { + peekfd = c - '0'; + hungetc('>'); + c = '&'; + } else { + hungetc(d); + lexstop = 0; + hungetc('&'); + } + } else if (d == '>' || d == '<') { peekfd = c - '0'; c = d; } else { @@ -702,6 +713,7 @@ gettok(void) else if (d == '!' || d == '|') return AMPERBANG; else if (d == '>') { + tokfd = peekfd; d = hgetc(); if (d == '!' || d == '|') return OUTANGAMPBANG; @@ -715,7 +727,6 @@ gettok(void) } hungetc(d); lexstop = 0; - tokfd = -1; return AMPOUTANG; } hungetc(d); |