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