148116Sbostic /*- 2*62203Sbostic * Copyright (c) 1980, 1993 3*62203Sbostic * The Regents of the University of California. All rights reserved. 448116Sbostic * 548116Sbostic * %sccs.include.redist.c% 621952Sdist */ 7744Speter 814727Sthien #ifndef lint 9*62203Sbostic static char sccsid[] = "@(#)ato.c 8.1 (Berkeley) 06/06/93"; 1048116Sbostic #endif /* not lint */ 11744Speter 12744Speter #include "whoami.h" 13744Speter #include "0.h" 14744Speter 15744Speter long a8tol(cp)16744Spetera8tol(cp) 17744Speter char *cp; 18744Speter { 19744Speter int err; 20744Speter long l; 21744Speter register CHAR c; 22744Speter 23744Speter l = 0; 24744Speter err = 0; 25744Speter while ((c = *cp++) != '\0') { 26744Speter if (c == '8' || c == '9') 27744Speter if (err == 0) { 28744Speter error("8 or 9 in octal number"); 29744Speter err++; 30744Speter } 31744Speter c -= '0'; 323072Smckusic if ((l & 016000000000L) != 0) 33744Speter if (err == 0) { 34744Speter error("Number too large for this implementation"); 35744Speter err++; 36744Speter } 37744Speter l = (l << 3) | c; 38744Speter } 39744Speter return (l); 40744Speter } 41744Speter 42744Speter /* 43744Speter * Note that the version of atof 44744Speter * used in this compiler does not 45744Speter * (sadly) complain when floating 46744Speter * point numbers are too large. 47744Speter */ 48