Subject: Re: Arithmetic, octal and leading zeroes in sh
To: None <netbsd-users@netbsd.org>
From: Christos Zoulas <christos@astron.com>
List: netbsd-users
Date: 10/13/2005 12:10:30
In article <Pine.NEB.4.61.0510131023410.13958@ugly.precedence.co.uk>,
Stephen Borrill  <netbsd@precedence.co.uk> wrote:
>sh (at least between 2.0.2 and 3.0 - 1.6.1 is OK) doesn't seem to like 
>leading zeros on 8 and 9, but is OK with all other numbers:
>
># echo $((05+1))
>6
># echo $((06+1))
>7
># echo $((07+1))
>8
># echo $((08+1))
>arithmetic expression: syntax error: "08+1"
># echo $((09+1))
>arithmetic expression: syntax error: "09+1"
># echo $((10+1))
>11
>
>This is down to the following in arity_lex.l rev 1.11 and later:
>0x[0-9a-fA-F]+  { yylval = strtol(yytext, 0, 16); return(ARITH_NUM); }
>0[0-7]*         { yylval = strtol(yytext, 0, 8); return(ARITH_NUM); }
>[1-9][0-9]*     { yylval = strtol(yytext, 0, 10); return(ARITH_NUM); }
>
>I see from the 1.11 commit this is to recognise octal and hex, but must a 
>leading zero always indicate octal?

Yes. Otherwise what is 017? Decimal 17 or 15?

christos