From: Rob Landley Date: Tue, 7 Jun 2005 02:43:52 +0000 (-0000) Subject: Patch from Dmitry Zakharov: X-Git-Tag: 1_1_0~963 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=ed830e8693941b8e54869ef4e68353ca2d71224e;p=oweals%2Fbusybox.git Patch from Dmitry Zakharov: Charlie Brady wrote: > Here's another awk parsing problem - unary post increment - pre is fine: > >bash-2.05a$ echo 2,3 | gawk -F , '{ $2++ }' >bash-2.05a$ echo 2,3 | /tmp/busybox/busybox awk -F , '{ $2++ }' >awk: cmd. line:1: Unexpected token > Here's a fix for this. There is another problem with constructions like "print (A+B) ++C", I don't know whether somebody uses such constructions (fixing both these problems would require very serious change in awk code). --- diff --git a/editors/awk.c b/editors/awk.c index c1cb2a2e2..ed8b0f20f 100644 --- a/editors/awk.c +++ b/editors/awk.c @@ -1084,7 +1084,7 @@ static node *parse_expr(unsigned long iexp) { cn->a.n = vn; xtc = TC_OPERAND | TC_UOPPRE | TC_REGEXP; if (tc & (TC_OPERAND | TC_REGEXP)) { - xtc = TC_UOPPRE | TC_BINOP | TC_OPERAND | iexp; + xtc = TC_UOPPRE | TC_UOPPOST | TC_BINOP | TC_OPERAND | iexp; /* one should be very careful with switch on tclass - * only simple tclasses should be used! */ switch (tc) { @@ -1101,7 +1101,6 @@ static node *parse_expr(unsigned long iexp) { cn->info |= xS; cn->r.n = parse_expr(TC_ARRTERM); } - xtc = TC_UOPPOST | TC_UOPPRE | TC_BINOP | TC_OPERAND | iexp; break; case TC_NUMBER: