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