ref: 3c75d277b5d0bdbaff7de7d7c3a9c07a6638b75e
dir: /src/libc/stdlib/atol.c/
#include <ctype.h> #include <stdlib.h> #include "../libc.h" #undef atol long atol(const char *s) { int d, sign = -1; long n; while (isspace(*s)) ++s; switch (*s) { case '-': sign = 1; case '+': ++s; } /* Compute n as a negative number to avoid overflow on LONG_MIN */ for (n = 0; (d = _dtoi(*s)) < 10; ++s) n = n*10 - d; return sign * n; }