1744Speter /* Copyright (c) 1979 Regents of the University of California */ 2744Speter 3*14727Sthien #ifndef lint 4*14727Sthien static char sccsid[] = "@(#)ato.c 1.3 08/19/83"; 5*14727Sthien #endif 6744Speter 7744Speter #include "whoami.h" 8744Speter #include "0.h" 9744Speter 10744Speter long 11744Speter a8tol(cp) 12744Speter char *cp; 13744Speter { 14744Speter int err; 15744Speter long l; 16744Speter register CHAR c; 17744Speter 18744Speter l = 0; 19744Speter err = 0; 20744Speter while ((c = *cp++) != '\0') { 21744Speter if (c == '8' || c == '9') 22744Speter if (err == 0) { 23744Speter error("8 or 9 in octal number"); 24744Speter err++; 25744Speter } 26744Speter c -= '0'; 273072Smckusic if ((l & 016000000000L) != 0) 28744Speter if (err == 0) { 29744Speter error("Number too large for this implementation"); 30744Speter err++; 31744Speter } 32744Speter l = (l << 3) | c; 33744Speter } 34744Speter return (l); 35744Speter } 36744Speter 37744Speter /* 38744Speter * Note that the version of atof 39744Speter * used in this compiler does not 40744Speter * (sadly) complain when floating 41744Speter * point numbers are too large. 42744Speter */ 43