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