configure: add gettid() test
[fio.git] / lib / strntol.c
1 #include <string.h>
2 #include <stdlib.h>
3 #include <limits.h>
4
5 #include "strntol.h"
6
7 long strntol(const char *str, size_t sz, char **end, int base)
8 {
9         /* Expect that digit representation of LONG_MAX/MIN
10          * not greater than this buffer */
11         char buf[24];
12         long ret;
13         const char *beg = str;
14
15         /* Catch up leading spaces */
16         for (; beg && sz && *beg == ' '; beg++, sz--)
17                 ;
18
19         if (!sz || sz >= sizeof(buf)) {
20                 if (end)
21                         *end = (char *)str;
22                 return 0;
23         }
24
25         memcpy(buf, beg, sz);
26         buf[sz] = '\0';
27         ret = strtol(buf, end, base);
28         if (ret == LONG_MIN || ret == LONG_MAX)
29                 return ret;
30         if (end)
31                 *end = (char *)beg + (*end - buf);
32         return ret;
33 }