github.com/afumu/libc@v0.0.6/musl/src/stdlib/atol.c (about)

     1  #include <stdlib.h>
     2  #include <ctype.h>
     3  
     4  long atol(const char *s)
     5  {
     6  	long n=0;
     7  	int neg=0;
     8  	while (isspace(*s)) s++;
     9  	switch (*s) {
    10  	case '-': neg=1;
    11  	case '+': s++;
    12  	}
    13  	/* Compute n as a negative number to avoid overflow on LONG_MIN */
    14  	while (isdigit(*s))
    15  		n = 10*n - (*s++ - '0');
    16  	return neg ? n : -n;
    17  }