1*21952Sdist /* 2*21952Sdist * Copyright (c) 1980 Regents of the University of California. 3*21952Sdist * All rights reserved. The Berkeley software License Agreement 4*21952Sdist * specifies the terms and conditions for redistribution. 5*21952Sdist */ 6744Speter 714727Sthien #ifndef lint 8*21952Sdist static char sccsid[] = "@(#)ato.c 5.1 (Berkeley) 06/04/85"; 9*21952Sdist #endif not lint 10744Speter 11744Speter #include "whoami.h" 12744Speter #include "0.h" 13744Speter 14744Speter long 15744Speter a8tol(cp) 16744Speter char *cp; 17744Speter { 18744Speter int err; 19744Speter long l; 20744Speter register CHAR c; 21744Speter 22744Speter l = 0; 23744Speter err = 0; 24744Speter while ((c = *cp++) != '\0') { 25744Speter if (c == '8' || c == '9') 26744Speter if (err == 0) { 27744Speter error("8 or 9 in octal number"); 28744Speter err++; 29744Speter } 30744Speter c -= '0'; 313072Smckusic if ((l & 016000000000L) != 0) 32744Speter if (err == 0) { 33744Speter error("Number too large for this implementation"); 34744Speter err++; 35744Speter } 36744Speter l = (l << 3) | c; 37744Speter } 38744Speter return (l); 39744Speter } 40744Speter 41744Speter /* 42744Speter * Note that the version of atof 43744Speter * used in this compiler does not 44744Speter * (sadly) complain when floating 45744Speter * point numbers are too large. 46744Speter */ 47