1*37da2899SCharles.Forsyth #include <lib9.h> 2*37da2899SCharles.Forsyth 3*37da2899SCharles.Forsyth long atol(char * s)4*37da2899SCharles.Forsythatol(char *s) 5*37da2899SCharles.Forsyth { 6*37da2899SCharles.Forsyth long n; 7*37da2899SCharles.Forsyth int f; 8*37da2899SCharles.Forsyth 9*37da2899SCharles.Forsyth n = 0; 10*37da2899SCharles.Forsyth f = 0; 11*37da2899SCharles.Forsyth while(*s == ' ' || *s == '\t') 12*37da2899SCharles.Forsyth s++; 13*37da2899SCharles.Forsyth if(*s == '-' || *s == '+') { 14*37da2899SCharles.Forsyth if(*s++ == '-') 15*37da2899SCharles.Forsyth f = 1; 16*37da2899SCharles.Forsyth while(*s == ' ' || *s == '\t') 17*37da2899SCharles.Forsyth s++; 18*37da2899SCharles.Forsyth } 19*37da2899SCharles.Forsyth if(s[0]=='0' && s[1]){ 20*37da2899SCharles.Forsyth if(s[1]=='x' || s[1]=='X'){ 21*37da2899SCharles.Forsyth s += 2; 22*37da2899SCharles.Forsyth for(;;){ 23*37da2899SCharles.Forsyth if(*s >= '0' && *s <= '9') 24*37da2899SCharles.Forsyth n = n*16 + *s++ - '0'; 25*37da2899SCharles.Forsyth else if(*s >= 'a' && *s <= 'f') 26*37da2899SCharles.Forsyth n = n*16 + *s++ - 'a' + 10; 27*37da2899SCharles.Forsyth else if(*s >= 'A' && *s <= 'F') 28*37da2899SCharles.Forsyth n = n*16 + *s++ - 'A' + 10; 29*37da2899SCharles.Forsyth else 30*37da2899SCharles.Forsyth break; 31*37da2899SCharles.Forsyth } 32*37da2899SCharles.Forsyth } else 33*37da2899SCharles.Forsyth while(*s >= '0' && *s <= '7') 34*37da2899SCharles.Forsyth n = n*8 + *s++ - '0'; 35*37da2899SCharles.Forsyth } else 36*37da2899SCharles.Forsyth while(*s >= '0' && *s <= '9') 37*37da2899SCharles.Forsyth n = n*10 + *s++ - '0'; 38*37da2899SCharles.Forsyth if(f) 39*37da2899SCharles.Forsyth n = -n; 40*37da2899SCharles.Forsyth return n; 41*37da2899SCharles.Forsyth } 42*37da2899SCharles.Forsyth atoi(char * s)43*37da2899SCharles.Forsythatoi(char *s) 44*37da2899SCharles.Forsyth { 45*37da2899SCharles.Forsyth 46*37da2899SCharles.Forsyth return atol(s); 47*37da2899SCharles.Forsyth } 48