1 /* Copyright (c) 1979 Regents of the University of California */ 2 3 static char sccsid[] = "@(#)ato.c 1.1 08/27/80"; 4 5 #include "whoami.h" 6 #include "0.h" 7 8 long 9 a8tol(cp) 10 char *cp; 11 { 12 int err; 13 long l; 14 register CHAR c; 15 16 l = 0; 17 err = 0; 18 while ((c = *cp++) != '\0') { 19 if (c == '8' || c == '9') 20 if (err == 0) { 21 error("8 or 9 in octal number"); 22 err++; 23 } 24 c -= '0'; 25 if ((l & 0160000000000L) != 0) 26 if (err == 0) { 27 error("Number too large for this implementation"); 28 err++; 29 } 30 l = (l << 3) | c; 31 } 32 return (l); 33 } 34 35 /* 36 * Note that the version of atof 37 * used in this compiler does not 38 * (sadly) complain when floating 39 * point numbers are too large. 40 */ 41