blob: 4e8a4d05669f4da007afd8399deafdf5433c8369 [file] [log] [blame]
Damien Georgefbea8102014-11-28 14:58:25 +00001#include <stdlib.h>
2
3// assumes endptr != NULL
4// doesn't check for sign
5// doesn't check for base-prefix
6long long int strtoll(const char *nptr, char **endptr, int base) {
7 long long val = 0;
8
9 for (; *nptr; nptr++) {
10 int v = *nptr;
11 if ('0' <= v && v <= '9') {
12 v -= '0';
13 } else if ('A' <= v && v <= 'Z') {
14 v -= 'A' - 10;
15 } else if ('a' <= v && v <= 'z') {
16 v -= 'a' - 10;
17 } else {
18 break;
19 }
20 if (v >= base) {
21 break;
22 }
23 val = val * base + v;
24 }
25
26 *endptr = (char*)nptr;
27
28 return val;
29}