diff --git a/libc/Android.mk b/libc/Android.mk
index e183fb0..f4f9141 100644
--- a/libc/Android.mk
+++ b/libc/Android.mk
@@ -69,8 +69,6 @@
     bionic/sigblock.c \
     bionic/siginterrupt.c \
     bionic/sigsetmask.c \
-    bionic/strntoimax.c \
-    bionic/strntoumax.c \
     bionic/system_properties_compat.c \
     bionic/unlockpt.c \
     stdio/findfp.c \
diff --git a/libc/bionic/ndk_cruft.cpp b/libc/bionic/ndk_cruft.cpp
index 7826651..2fed492 100644
--- a/libc/bionic/ndk_cruft.cpp
+++ b/libc/bionic/ndk_cruft.cpp
@@ -116,4 +116,72 @@
   return s;
 }
 
+static inline int digitval(int ch) {
+  unsigned d;
+
+  d = (unsigned)(ch - '0');
+  if (d < 10) return (int)d;
+
+  d = (unsigned)(ch - 'a');
+  if (d < 6) return (int)(d+10);
+
+  d = (unsigned)(ch - 'A');
+  if (d < 6) return (int)(d+10);
+
+  return -1;
+}
+
+// This non-standard function was in our <inttypes.h> for some reason.
+extern "C" uintmax_t strntoumax(const char *nptr, char **endptr, int base, size_t n) {
+  const unsigned char*  p   = (const unsigned char *)nptr;
+  const unsigned char*  end = p + n;
+  int                   minus = 0;
+  uintmax_t             v = 0;
+  int                   d;
+
+  while (p < end && isspace(*p)) {
+    p++;
+  }
+
+  if (p < end) {
+    char c = p[0];
+    if (c == '-' || c == '+') {
+      minus = (c == '-');
+      p++;
+    }
+  }
+
+  if (base == 0) {
+    if (p+2 < end && p[0] == '0' && (p[1] == 'x' || p[1] == 'X')) {
+      p += 2;
+      base = 16;
+    } else if (p+1 < end && p[0] == '0') {
+      p   += 1;
+      base = 8;
+    } else {
+      base = 10;
+    }
+  } else if (base == 16) {
+    if (p+2 < end && p[0] == '0' && (p[1] == 'x' || p[1] == 'X')) {
+      p += 2;
+    }
+  }
+
+  while (p < end && (d = digitval(*p)) >= 0 && d < base) {
+    v = v*base + d;
+    p += 1;
+  }
+
+  if (endptr) {
+    *endptr = (char*) p;
+  }
+
+  return minus ? -v : v;
+}
+
+// This non-standard function was in our <inttypes.h> for some reason.
+extern "C" intmax_t strntoimax(const char* nptr, char** endptr, int base, size_t n) {
+  return (intmax_t) strntoumax(nptr, endptr, base, n);
+}
+
 #endif
diff --git a/libc/include/inttypes.h b/libc/include/inttypes.h
index 2fd2415..5199e4d 100644
--- a/libc/include/inttypes.h
+++ b/libc/include/inttypes.h
@@ -261,9 +261,6 @@
 intmax_t	strtoimax(const char *, char **, int);
 uintmax_t	strtoumax(const char *, char **, int);
 
-intmax_t	strntoimax(const char *nptr, char **endptr, int base, size_t n);
-uintmax_t	strntoumax(const char *nptr, char **endptr, int base, size_t n);
-
 __END_DECLS
 
 #endif /* _INTTYPES_H_ */
