13e12c5d1SDavid du Colombier #include <u.h> 23e12c5d1SDavid du Colombier #include <libc.h> 33e12c5d1SDavid du Colombier 43e12c5d1SDavid du Colombier long atol(char * s)53e12c5d1SDavid du Colombieratol(char *s) 63e12c5d1SDavid du Colombier { 73e12c5d1SDavid du Colombier long n; 8*59cc4ca5SDavid du Colombier int f, c; 93e12c5d1SDavid du Colombier 103e12c5d1SDavid du Colombier n = 0; 113e12c5d1SDavid du Colombier f = 0; 123e12c5d1SDavid du Colombier while(*s == ' ' || *s == '\t') 133e12c5d1SDavid du Colombier s++; 143e12c5d1SDavid du Colombier if(*s == '-' || *s == '+') { 153e12c5d1SDavid du Colombier if(*s++ == '-') 163e12c5d1SDavid du Colombier f = 1; 173e12c5d1SDavid du Colombier while(*s == ' ' || *s == '\t') 183e12c5d1SDavid du Colombier s++; 193e12c5d1SDavid du Colombier } 203e12c5d1SDavid du Colombier if(s[0]=='0' && s[1]) { 213e12c5d1SDavid du Colombier if(s[1]=='x' || s[1]=='X'){ 223e12c5d1SDavid du Colombier s += 2; 233e12c5d1SDavid du Colombier for(;;) { 24*59cc4ca5SDavid du Colombier c = *s; 25*59cc4ca5SDavid du Colombier if(c >= '0' && c <= '9') 26*59cc4ca5SDavid du Colombier n = n*16 + c - '0'; 27*59cc4ca5SDavid du Colombier else 28*59cc4ca5SDavid du Colombier if(c >= 'a' && c <= 'f') 29*59cc4ca5SDavid du Colombier n = n*16 + c - 'a' + 10; 30*59cc4ca5SDavid du Colombier else 31*59cc4ca5SDavid du Colombier if(c >= 'A' && c <= 'F') 32*59cc4ca5SDavid du Colombier n = n*16 + c - 'A' + 10; 333e12c5d1SDavid du Colombier else 343e12c5d1SDavid du Colombier break; 35*59cc4ca5SDavid du Colombier s++; 363e12c5d1SDavid du Colombier } 373e12c5d1SDavid du Colombier } else 383e12c5d1SDavid du Colombier while(*s >= '0' && *s <= '7') 393e12c5d1SDavid du Colombier n = n*8 + *s++ - '0'; 403e12c5d1SDavid du Colombier } else 413e12c5d1SDavid du Colombier while(*s >= '0' && *s <= '9') 423e12c5d1SDavid du Colombier n = n*10 + *s++ - '0'; 433e12c5d1SDavid du Colombier if(f) 443e12c5d1SDavid du Colombier n = -n; 453e12c5d1SDavid du Colombier return n; 463e12c5d1SDavid du Colombier } 473e12c5d1SDavid du Colombier 487dd7cddfSDavid du Colombier int atoi(char * s)493e12c5d1SDavid du Colombieratoi(char *s) 503e12c5d1SDavid du Colombier { 513e12c5d1SDavid du Colombier 523e12c5d1SDavid du Colombier return atol(s); 533e12c5d1SDavid du Colombier } 54