diff --git a/libc/bionic/strtol.cpp b/libc/bionic/strtol.cpp
index f6005fa..63ac102 100644
--- a/libc/bionic/strtol.cpp
+++ b/libc/bionic/strtol.cpp
@@ -27,13 +27,12 @@
  * SUCH DAMAGE.
  */
 
+#include <ctype.h>
 #include <errno.h>
 #include <inttypes.h>
 #include <limits.h>
 #include <stdlib.h>
 
-#include <private/bionic_ctype.h>
-
 template <typename T, T Min, T Max> T StrToI(const char* nptr, char** endptr, int base) {
   // Ensure that base is between 2 and 36 inclusive, or the special value of 0.
   if (base < 0 || base == 1 || base > 36) {
@@ -49,7 +48,7 @@
   int c;
   do {
     c = *s++;
-  } while (IsSpace(c));
+  } while (isspace(c));
   int neg;
   if (c == '-') {
     neg = 1;
@@ -58,8 +57,7 @@
     neg = 0;
     if (c == '+') c = *s++;
   }
-  if ((base == 0 || base == 16) && c == '0' &&
-      (*s == 'x' || *s == 'X') && IsXDigit(s[1])) {
+  if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X') && isxdigit(s[1])) {
     c = s[1];
     s += 2;
     base = 16;
@@ -74,10 +72,10 @@
   int any = 0;
   T acc = 0;
   for (; ; c = *s++) {
-    if (IsDigit(c)) {
+    if (isdigit(c)) {
       c -= '0';
-    } else if (IsAlpha(c)) {
-      c -= IsUpper(c) ? 'A' - 10 : 'a' - 10;
+    } else if (isalpha(c)) {
+      c -= isupper(c) ? 'A' - 10 : 'a' - 10;
     } else {
       break;
     }
@@ -116,7 +114,7 @@
   int c;
   do {
     c = *s++;
-  } while (IsSpace(c));
+  } while (isspace(c));
   int neg;
   if (c == '-') {
     neg = 1;
@@ -125,8 +123,7 @@
     neg = 0;
     if (c == '+') c = *s++;
   }
-  if ((base == 0 || base == 16) && c == '0' &&
-      (*s == 'x' || *s == 'X') && IsXDigit(s[1])) {
+  if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X') && isxdigit(s[1])) {
     c = s[1];
     s += 2;
     base = 16;
@@ -138,10 +135,10 @@
   T acc = 0;
   int any = 0;
   for (; ; c = *s++) {
-    if (IsDigit(c)) {
+    if (isdigit(c)) {
       c -= '0';
-    } else if (IsAlpha(c)) {
-      c -= IsUpper(c) ? 'A' - 10 : 'a' - 10;
+    } else if (isalpha(c)) {
+      c -= isupper(c) ? 'A' - 10 : 'a' - 10;
     } else {
       break;
     }
