Message ID | 20100827054937.7409.91773.stgit@FreeLancer (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
diff --git a/lib/string.c b/lib/string.c index acac3c0..1f19f5c 100644 --- a/lib/string.c +++ b/lib/string.c @@ -30,3 +30,34 @@ void *memset(void *s, int c, size_t n) return s; } + +long atol(const char *ptr) +{ + long acc = 0; + const char *s = ptr; + int neg, c; + + while (*s == ' ' || *s == '\t') + s++; + if (*s == '-'){ + neg = 1; + s++; + } else { + neg = 0; + if (*s == '+') + s++; + } + + while (*s) { + if (*s < '0' || *s > '9') + break; + c = *s - '0'; + acc = acc * 10 + c; + s++; + } + + if (neg) + acc = -acc; + + return acc; +}