xref: /aosp_15_r20/external/musl/src/stdlib/atoi.c (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker #include <stdlib.h>
2*c9945492SAndroid Build Coastguard Worker #include <ctype.h>
3*c9945492SAndroid Build Coastguard Worker 
atoi(const char * s)4*c9945492SAndroid Build Coastguard Worker int atoi(const char *s)
5*c9945492SAndroid Build Coastguard Worker {
6*c9945492SAndroid Build Coastguard Worker 	int n=0, neg=0;
7*c9945492SAndroid Build Coastguard Worker 	while (isspace(*s)) s++;
8*c9945492SAndroid Build Coastguard Worker 	switch (*s) {
9*c9945492SAndroid Build Coastguard Worker 	case '-': neg=1;
10*c9945492SAndroid Build Coastguard Worker 	case '+': s++;
11*c9945492SAndroid Build Coastguard Worker 	}
12*c9945492SAndroid Build Coastguard Worker 	/* Compute n as a negative number to avoid overflow on INT_MIN */
13*c9945492SAndroid Build Coastguard Worker 	while (isdigit(*s))
14*c9945492SAndroid Build Coastguard Worker 		n = 10*n - (*s++ - '0');
15*c9945492SAndroid Build Coastguard Worker 	return neg ? n : -n;
16*c9945492SAndroid Build Coastguard Worker }
17