*X-seq*: zsh-workers 519*From*: pws@xxxxxx (Peter William Stephenson)*To*: zsh-workers@xxxxxxxxxxxxxxx (Zsh hackers list)*Subject*: Octal interpretation*Date*: Fri, 3 Nov 1995 10:01:46 +0100 (MET)

I am heartily sick of being told my stack is unbalanced because the time happens to be 12:08. Based on the following two facts, 1) No valid octal number ever starts 08 or 09 2) 08 and 09 are the only two digit numbers evaluated incorrectly I would like to propose that zstrtol explicitly checks for an 8 or a 9 following the 0 and if there is one evaluates it in decimal. This will mean times can be handled properly --- what I mainly use arithmetic in zsh for anyway --- while real octal numbers won't be affected. Anybody writing scripts for users where this may matter should in any case be stripping leading 0's as a matter of course. If that's a big problem, we should simply remove octal handling. (What's wrong with 8#77 etc. anyway? Isn't this just why ksh introduced that syntax?) *** Src/utils.c.oct Wed Nov 1 11:12:11 1995 --- Src/utils.c Fri Nov 3 09:45:49 1995 *************** *** 1104,1112 **** base = 10; else if (*++s == 'x' || *s == 'X') base = 16, s++; else base = 8; ! if (base <= 10) for (; *s >= '0' && *s < ('0' + base); s++) ret = ret * base + *s - '0'; --- 1104,1114 ---- base = 10; else if (*++s == 'x' || *s == 'X') base = 16, s++; + else if (*s == '8' || *s == '9') + base = 10; else base = 8; ! if (base <= 10) for (; *s >= '0' && *s < ('0' + base); s++) ret = ret * base + *s - '0'; *** Doc/zshmisc.1.oct Sun Oct 29 11:52:06 1995 --- Doc/zshmisc.1 Fri Nov 3 09:46:30 1995 *************** *** 732,739 **** .BR let . Evaluations are performed using .I long ! arithmetic. Constants with a leading 0 are interpreted as octal numbers. ! A leading \fI0x\fP or \fI0X\fP denotes hexadecimal. Otherwise, numbers are of the form [\fIbase\fB#\^\fR]\fIn\^\fP where --- 732,741 ---- .BR let . Evaluations are performed using .I long ! arithmetic. Constants with a leading 0 are interpreted as octal ! numbers, except in the special case that the 0 is immediately followed ! by an 8 or 9 (this allows processing of sections of time strings such ! as "12:08"). A leading \fI0x\fP or \fI0X\fP denotes hexadecimal. Otherwise, numbers are of the form [\fIbase\fB#\^\fR]\fIn\^\fP where -- Peter Stephenson <pws@xxxxxx> Tel: +49 33762 77366 WWW: http://www.ifh.de/~pws/ Fax: +49 33762 77330 Deutches Electronen-Synchrotron --- Institut fuer Hochenergiephysik Zeuthen DESY-IfH, 15735 Zeuthen, Germany.

**Follow-Ups**:**Re: Octal interpretation***From:*Richard Coleman

Messages sorted by: Reverse Date, Date, Thread, Author