summaryrefslogtreecommitdiffstats
path: root/contrib/syslinux/syslinux-4.03/dos/strntoumax.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/syslinux/syslinux-4.03/dos/strntoumax.c')
-rw-r--r--contrib/syslinux/syslinux-4.03/dos/strntoumax.c73
1 files changed, 0 insertions, 73 deletions
diff --git a/contrib/syslinux/syslinux-4.03/dos/strntoumax.c b/contrib/syslinux/syslinux-4.03/dos/strntoumax.c
deleted file mode 100644
index d8bc73b..0000000
--- a/contrib/syslinux/syslinux-4.03/dos/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;
-}