Author: greatlrd Date: Sat Jun 30 21:47:14 2007 New Revision: 27347
URL: http://svn.reactos.org/svn/reactos?rev=27347&view=rev Log: forget adding this file sprry I broken the build thx HeisSpiter See issue #2314 for more details.
Added: trunk/reactos/lib/sdk/libcntpr/string/strtoull.c (with props)
Added: trunk/reactos/lib/sdk/libcntpr/string/strtoull.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/libcntpr/string/str... ============================================================================== --- trunk/reactos/lib/sdk/libcntpr/string/strtoull.c (added) +++ trunk/reactos/lib/sdk/libcntpr/string/strtoull.c Sat Jun 30 21:47:14 2007 @@ -1,0 +1,71 @@ +#include <string.h> +#include <errno.h> +#include <fcntl.h> +#include <limits.h> +#include <ctype.h> + + +unsigned long long +strtoull(const char *nptr, char **endptr, int base) +{ + const char *s = nptr; + unsigned long long acc; + int c; + unsigned long long cutoff; + int neg = 0, any, cutlim; + + /* + * See strtol for comments as to the logic used. + */ + do { + c = *s++; + } while (isspace(c)); + if (c == '-') + { + neg = 1; + c = *s++; + } + else if (c == '+') + c = *s++; + if ((base == 0 || base == 16) && + c == '0' && (*s == 'x' || *s == 'X')) + { + c = s[1]; + s += 2; + base = 16; + } + if (base == 0) + base = c == '0' ? 8 : 10; + cutoff = (unsigned long long)ULLONG_MAX / (unsigned long long)base; + cutlim = (unsigned long long)ULLONG_MAX % (unsigned long long)base; + for (acc = 0, any = 0;; c = *s++) + { + if (isdigit(c)) + c -= '0'; + else if (isalpha(c)) + c -= isupper(c) ? 'A' - 10 : 'a' - 10; + else + break; + if (c >= base) + break; + if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim)) + any = -1; + else { + any = 1; + acc *= base; + acc += c; + } + } + if (any < 0) + { + acc = ULLONG_MAX; + + } + else if (neg) + acc = -acc; + if (endptr != 0) + *endptr = any ? (char *)((size_t)(s - 1)) : (char *)((size_t)nptr); + return acc; +} + +
Propchange: trunk/reactos/lib/sdk/libcntpr/string/strtoull.c ------------------------------------------------------------------------------ svn:eol-style = native