]> granicus.if.org Git - python/commitdiff
Issue #17173: Remove uses of locale-dependent C functions (isalpha() etc.) in the...
authorAntoine Pitrou <solipsis@pitrou.net>
Sat, 9 Feb 2013 22:11:27 +0000 (23:11 +0100)
committerAntoine Pitrou <solipsis@pitrou.net>
Sat, 9 Feb 2013 22:11:27 +0000 (23:11 +0100)
I've left a couple of them in: zlib (third-party lib), getaddrinfo.c
(doesn't include Python.h, and probably obsolete), _sre.c (legitimate
use for the re.LOCALE flag).

Misc/NEWS
Modules/_struct.c
Modules/binascii.c
Modules/posixmodule.c
Modules/socketmodule.c
Objects/longobject.c
Objects/stringlib/formatter.h
Python/ast.c
Python/dynload_aix.c
Python/getargs.c
Python/mystrtoul.c

index a24b3dece269b0d5d8ea9956d4f6531cf194ed86..8fe5e16d22d50b312b5d8ad8ea18c3f90bb7dd49 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,9 @@ What's New in Python 3.2.4
 Core and Builtins
 -----------------
 
+- Issue #17173: Remove uses of locale-dependent C functions (isalpha() etc.)
+  in the interpreter.
+
 - Issue #17043: The unicode-internal decoder no longer read past the end of
   input buffer.
 
index edbe9b9884b5a90ce3f74d6fd85ad31fdc877f2f..3f20518d9fb452ee6346d84b3968dbc3412c04be 100644 (file)
@@ -1184,7 +1184,7 @@ prepare_s(PyStructObject *self)
     size = 0;
     len = 0;
     while ((c = *s++) != '\0') {
-        if (isspace(Py_CHARMASK(c)))
+        if (Py_ISSPACE(Py_CHARMASK(c)))
             continue;
         if ('0' <= c && c <= '9') {
             num = c - '0';
@@ -1249,7 +1249,7 @@ prepare_s(PyStructObject *self)
     s = fmt;
     size = 0;
     while ((c = *s++) != '\0') {
-        if (isspace(Py_CHARMASK(c)))
+        if (Py_ISSPACE(Py_CHARMASK(c)))
             continue;
         if ('0' <= c && c <= '9') {
             num = c - '0';
index 19681b415cc270770d9b816b46137378e740925c..74db73955e5163ac3e04562239e6f37347d28d3d 100644 (file)
@@ -1099,7 +1099,7 @@ This function is also available as \"hexlify()\".");
 static int
 to_int(int c)
 {
-    if (isdigit(c))
+    if (Py_ISDIGIT(c))
         return c - '0';
     else {
         if (Py_ISUPPER(c))
index 4179c0ef0746500f04f11c94a84c7d635b442c62..67bff25980431b437602b3bf1ad5e252fdd95c60 100644 (file)
@@ -695,7 +695,7 @@ os2_formatmsg(char *msgbuf, int msglen, char *reason)
     if (strlen(msgbuf) > 0) { /* If Non-Empty Msg, Trim CRLF */
         char *lastc = &msgbuf[ strlen(msgbuf)-1 ];
 
-        while (lastc > msgbuf && isspace(Py_CHARMASK(*lastc)))
+        while (lastc > msgbuf && Py_ISSPACE(Py_CHARMASK(*lastc)))
             *lastc-- = '\0'; /* Trim Trailing Whitespace (CRLF) */
     }
 
index bc3372f3e8e1342bdfcabe7db89f5f738b471972..e02762502425a19db1b361f51c9249b3107867c7 100644 (file)
@@ -519,7 +519,7 @@ set_error(void)
                 /* If non-empty msg, trim CRLF */
                 char *lastc = &outbuf[ strlen(outbuf)-1 ];
                 while (lastc > outbuf &&
-                       isspace(Py_CHARMASK(*lastc))) {
+                       Py_ISSPACE(Py_CHARMASK(*lastc))) {
                     /* Trim trailing whitespace (CRLF) */
                     *lastc-- = '\0';
                 }
index 9ca7b6506e632a3bced13163cfeb70e29616798c..e2a4ef9c5efa35df281d5e8caedd55ce9c56512e 100644 (file)
@@ -1887,7 +1887,7 @@ PyLong_FromString(char *str, char **pend, int base)
                         "int() arg 2 must be >= 2 and <= 36");
         return NULL;
     }
-    while (*str != '\0' && isspace(Py_CHARMASK(*str)))
+    while (*str != '\0' && Py_ISSPACE(Py_CHARMASK(*str)))
         str++;
     if (*str == '+')
         ++str;
@@ -2131,7 +2131,7 @@ digit beyond the first.
         goto onError;
     if (sign < 0)
         Py_SIZE(z) = -(Py_SIZE(z));
-    while (*str && isspace(Py_CHARMASK(*str)))
+    while (*str && Py_ISSPACE(Py_CHARMASK(*str)))
         str++;
     if (*str != '\0')
         goto onError;
index 139b56cd8e03e0668b76bf58e7364d3f0d86c82b..be0d897a914119b98638d7e41f52c020932c410e 100644 (file)
@@ -414,7 +414,7 @@ parse_number(STRINGLIB_CHAR *ptr, Py_ssize_t len,
     STRINGLIB_CHAR *end = ptr + len;
     STRINGLIB_CHAR *remainder;
 
-    while (ptr<end && isdigit(*ptr))
+    while (ptr<end && Py_ISDIGIT(*ptr))
         ++ptr;
     remainder = ptr;
 
index d2f063bb5ba61db8c7754ef7caf5359459934453..e395c5aa788e2697137afb1c16cbe5b9976ae0e2 100644 (file)
@@ -3305,7 +3305,7 @@ parsestr(struct compiling *c, const node *n, int *bytesmode)
     int quote = Py_CHARMASK(*s);
     int rawmode = 0;
     int need_encoding;
-    if (isalpha(quote)) {
+    if (Py_ISALPHA(quote)) {
         if (quote == 'b' || quote == 'B') {
             quote = *++s;
             *bytesmode = 1;
index 149990d799507f99a65663947b013abf3183e163..b025cd357d22e61843730451769b44f002bcd86c 100644 (file)
@@ -4,7 +4,6 @@
 #include "Python.h"
 #include "importdl.h"
 
-#include <ctype.h>      /*  for isdigit()         */
 #include <errno.h>      /*  for global errno      */
 #include <string.h>     /*  for strerror()        */
 #include <stdlib.h>     /*  for malloc(), free()  */
@@ -144,7 +143,7 @@ aix_loaderror(const char *pathname)
             if (nerr == load_errtab[j].errNo && load_errtab[j].errstr)
             ERRBUF_APPEND(load_errtab[j].errstr);
         }
-        while (isdigit(Py_CHARMASK(*message[i]))) message[i]++ ;
+        while (Py_ISDIGIT(Py_CHARMASK(*message[i]))) message[i]++ ;
         ERRBUF_APPEND(message[i]);
         ERRBUF_APPEND("\n");
     }
index a77bb05529d2c36f2d38ec0531e194ac06830d4c..d588102e8bc16ae4106b3ff9800a2381441ab8e6 100644 (file)
@@ -288,7 +288,7 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags)
             if (level == 0) {
                 if (c == 'O')
                     max++;
-                else if (isalpha(Py_CHARMASK(c))) {
+                else if (Py_ISALPHA(Py_CHARMASK(c))) {
                     if (c != 'e') /* skip encoded */
                         max++;
                 } else if (c == '|')
@@ -378,7 +378,7 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags)
         }
     }
 
-    if (*format != '\0' && !isalpha(Py_CHARMASK(*format)) &&
+    if (*format != '\0' && !Py_ISALPHA(Py_CHARMASK(*format)) &&
         *format != '(' &&
         *format != '|' && *format != ':' && *format != ';') {
         PyErr_Format(PyExc_SystemError,
@@ -471,7 +471,7 @@ converttuple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
         }
         else if (c == ':' || c == ';' || c == '\0')
             break;
-        else if (level == 0 && isalpha(Py_CHARMASK(c)))
+        else if (level == 0 && Py_ISALPHA(Py_CHARMASK(c)))
             n++;
     }
 
index 52502cba46b82bec7235161fb7438fcb5dc168e1..8a54cbf403726d031daad6e3a2f9254229980edb 100644 (file)
@@ -99,7 +99,7 @@ PyOS_strtoul(register char *str, char **ptr, int base)
     register int ovlimit;       /* required digits to overflow */
 
     /* skip leading white space */
-    while (*str && isspace(Py_CHARMASK(*str)))
+    while (*str && Py_ISSPACE(Py_CHARMASK(*str)))
         ++str;
 
     /* check for leading 0b, 0o or 0x for auto-base or base 16 */
@@ -138,7 +138,7 @@ PyOS_strtoul(register char *str, char **ptr, int base)
                 /* skip all zeroes... */
                 while (*str == '0')
                     ++str;
-                while (isspace(Py_CHARMASK(*str)))
+                while (Py_ISSPACE(Py_CHARMASK(*str)))
                     ++str;
                 if (ptr)
                     *ptr = str;
@@ -266,7 +266,7 @@ PyOS_strtol(char *str, char **ptr, int base)
     unsigned long uresult;
     char sign;
 
-    while (*str && isspace(Py_CHARMASK(*str)))
+    while (*str && Py_ISSPACE(Py_CHARMASK(*str)))
         str++;
 
     sign = *str;