diff options
Diffstat (limited to 'contrib/syslinux/syslinux-4.03/com32/lib/strntoumax.c')
-rw-r--r-- | contrib/syslinux/syslinux-4.03/com32/lib/strntoumax.c | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/contrib/syslinux/syslinux-4.03/com32/lib/strntoumax.c b/contrib/syslinux/syslinux-4.03/com32/lib/strntoumax.c deleted file mode 100644 index d8bc73b..0000000 --- a/contrib/syslinux/syslinux-4.03/com32/lib/strntoumax.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * strntoumax.c - * - * The strntoumax() function and associated - */ - -#include <stddef.h> -#include <stdint.h> -#include <ctype.h> - -static inline int digitval(int ch) -{ - if (ch >= '0' && ch <= '9') { - return ch - '0'; - } else if (ch >= 'A' && ch <= 'Z') { - return ch - 'A' + 10; - } else if (ch >= 'a' && ch <= 'z') { - return ch - 'a' + 10; - } else { - return -1; - } -} - -uintmax_t strntoumax(const char *nptr, char **endptr, int base, size_t n) -{ - int minus = 0; - uintmax_t v = 0; - int d; - - while (n && isspace((unsigned char)*nptr)) { - nptr++; - n--; - } - - /* Single optional + or - */ - if (n && *nptr == '-') { - minus = 1; - nptr++; - n--; - } else if (n && *nptr == '+') { - nptr++; - } - - if (base == 0) { - if (n >= 2 && nptr[0] == '0' && (nptr[1] == 'x' || nptr[1] == 'X')) { - n -= 2; - nptr += 2; - base = 16; - } else if (n >= 1 && nptr[0] == '0') { - n--; - nptr++; - base = 8; - } else { - base = 10; - } - } else if (base == 16) { - if (n >= 2 && nptr[0] == '0' && (nptr[1] == 'x' || nptr[1] == 'X')) { - n -= 2; - nptr += 2; - } - } - - while (n && (d = digitval(*nptr)) >= 0 && d < base) { - v = v * base + d; - n--; - nptr++; - } - - if (endptr) - *endptr = (char *)nptr; - - return minus ? -v : v; -} |