]> granicus.if.org Git - python/commitdiff
Use the new Unicode API
authorVictor Stinner <victor.stinner@haypocalc.com>
Tue, 22 Nov 2011 01:27:30 +0000 (02:27 +0100)
committerVictor Stinner <victor.stinner@haypocalc.com>
Tue, 22 Nov 2011 01:27:30 +0000 (02:27 +0100)
 * Replace PyUnicode_FromUnicode(NULL, 0) by PyUnicode_New(0, 0)
 * Replce PyUnicode_FromUnicode(str, len) by PyUnicode_FromWideChar(str, len)
 * Replace Py_UNICODE by wchar_t
 * posix_putenv() uses PyUnicode_FromFormat() to create the string, instead
   of PyUnicode_FromUnicode() + _snwprintf()

Modules/_ctypes/_ctypes.c
Modules/posixmodule.c
Modules/socketmodule.c
Objects/abstract.c
PC/_msi.c
PC/_subprocess.c
PC/msvcrtmodule.c
PC/winreg.c
PC/winsound.c
Python/dynload_win.c

index b45eea9ca3cdbf408591d85cb90c7307527482ee..31906bf22bfd7ac5eca6180faebeb75ccbf5fd94 100644 (file)
@@ -4255,7 +4255,7 @@ Array_subscript(PyObject *_self, PyObject *item)
             wchar_t *dest;
 
             if (slicelen <= 0)
-                return PyUnicode_FromUnicode(NULL, 0);
+                return PyUnicode_New(0, 0);
             if (step == 1) {
                 return PyUnicode_FromWideChar(ptr + start,
                                               slicelen);
@@ -4930,7 +4930,7 @@ Pointer_subscript(PyObject *_self, PyObject *item)
             wchar_t *dest;
 
             if (len <= 0)
-                return PyUnicode_FromUnicode(NULL, 0);
+                return PyUnicode_New(0, 0);
             if (step == 1) {
                 return PyUnicode_FromWideChar(ptr + start,
                                               len);
index 078010b8f003ccc5b9ef2b2ccecb824de5ed4dab..975cd9afb82875e3c2a47a5d95ed7334821da06a 100644 (file)
@@ -2599,7 +2599,7 @@ posix_listdir(PyObject *self, PyObject *args)
             /* Skip over . and .. */
             if (wcscmp(wFileData.cFileName, L".") != 0 &&
                 wcscmp(wFileData.cFileName, L"..") != 0) {
-                v = PyUnicode_FromUnicode(wFileData.cFileName, wcslen(wFileData.cFileName));
+                v = PyUnicode_FromWideChar(wFileData.cFileName, wcslen(wFileData.cFileName));
                 if (v == NULL) {
                     Py_DECREF(d);
                     d = NULL;
@@ -2967,7 +2967,7 @@ posix__getfullpathname(PyObject *self, PyObject *args)
             result = GetFullPathNameW(wpath, result, woutbufp, &wtemp);
         }
         if (result)
-            v = PyUnicode_FromUnicode(woutbufp, wcslen(woutbufp));
+            v = PyUnicode_FromWideChar(woutbufp, wcslen(woutbufp));
         else
             v = win32_error_object("GetFullPathNameW", po);
         if (woutbufp != woutbuf)
@@ -3054,7 +3054,7 @@ posix__getfinalpathname(PyObject *self, PyObject *args)
         return win32_error_object("CloseHandle", po);
 
     target_path[result_length] = 0;
-    result = PyUnicode_FromUnicode(target_path, result_length);
+    result = PyUnicode_FromWideChar(target_path, result_length);
     free(target_path);
     return result;
 
@@ -7750,7 +7750,7 @@ static PyObject *
 posix_putenv(PyObject *self, PyObject *args)
 {
 #ifdef MS_WINDOWS
-    wchar_t *s1, *s2;
+    PyObject *s1, *s2;
     wchar_t *newenv;
 #else
     PyObject *os1, *os2;
@@ -7762,7 +7762,7 @@ posix_putenv(PyObject *self, PyObject *args)
 
 #ifdef MS_WINDOWS
     if (!PyArg_ParseTuple(args,
-                          "uu:putenv",
+                          "UU:putenv",
                           &s1, &s2))
         return NULL;
 #else
@@ -7799,26 +7799,26 @@ posix_putenv(PyObject *self, PyObject *args)
     /* len includes space for a trailing \0; the size arg to
        PyBytes_FromStringAndSize does not count that */
 #ifdef MS_WINDOWS
-    len = wcslen(s1) + wcslen(s2) + 2;
-    newstr = PyUnicode_FromUnicode(NULL, (int)len - 1);
-#else
-    len = PyBytes_GET_SIZE(os1) + PyBytes_GET_SIZE(os2) + 2;
-    newstr = PyBytes_FromStringAndSize(NULL, (int)len - 1);
-#endif
+    newstr = PyUnicode_FromFormat("%U=%U", s1, s2);
     if (newstr == NULL) {
         PyErr_NoMemory();
         goto error;
     }
-#ifdef MS_WINDOWS
     newenv = PyUnicode_AsUnicode(newstr);
     if (newenv == NULL)
         goto error;
-    _snwprintf(newenv, len, L"%s=%s", s1, s2);
     if (_wputenv(newenv)) {
         posix_error();
         goto error;
     }
 #else
+    len = PyBytes_GET_SIZE(os1) + PyBytes_GET_SIZE(os2) + 2;
+    newstr = PyBytes_FromStringAndSize(NULL, (int)len - 1);
+    if (newstr == NULL) {
+        PyErr_NoMemory();
+        goto error;
+    }
+
     newenv = PyBytes_AS_STRING(newstr);
     PyOS_snprintf(newenv, len, "%s=%s", s1, s2);
     if (putenv(newenv)) {
index 4742b44b7b96f43e546d3aa1e61d3ee4b0019832..40a18ed3c1d0f5763a539e14377c38c91ecb224b 100644 (file)
@@ -3900,7 +3900,7 @@ socket_gethostname(PyObject *self, PyObject *unused)
     PyObject *result;
 
     if (GetComputerNameExW(ComputerNamePhysicalDnsHostname, buf, &size))
-        return PyUnicode_FromUnicode(buf, size);
+        return PyUnicode_FromWideChar(buf, size);
 
     if (GetLastError() != ERROR_MORE_DATA)
         return PyErr_SetFromWindowsErr(0);
index bce97947c062b01250d389e95245a06bc65e8383..39f1a26138eb88fd1611cf2017cd1c247ea48caa 100644 (file)
@@ -701,7 +701,7 @@ PyObject_Format(PyObject *obj, PyObject *format_spec)
 
     /* If no format_spec is provided, use an empty string */
     if (format_spec == NULL) {
-        empty = PyUnicode_FromUnicode(NULL, 0);
+        empty = PyUnicode_New(0, 0);
         format_spec = empty;
     }
 
index 6fb9c427135093dd52adf5d93744ec54e4283da7..0b5b94ec23811c44564845d5e8e14cc503f1453a 100644 (file)
--- a/PC/_msi.c
+++ b/PC/_msi.c
@@ -18,7 +18,7 @@ static PyObject*
 uuidcreate(PyObject* obj, PyObject*args)
 {
     UUID result;
-    unsigned short *cresult;
+    wchar_t *cresult;
     PyObject *oresult;
 
     /* May return ok, local only, and no address.
@@ -35,7 +35,7 @@ uuidcreate(PyObject* obj, PyObject*args)
         return NULL;
     }
 
-    oresult = PyUnicode_FromUnicode(cresult, wcslen(cresult));
+    oresult = PyUnicode_FromWideChar(cresult, wcslen(cresult));
     RpcStringFreeW(&cresult);
     return oresult;
 
@@ -379,7 +379,7 @@ record_getstring(msiobj* record, PyObject* args)
     }
     if (status != ERROR_SUCCESS)
         return msierror((int) status);
-    string = PyUnicode_FromUnicode(res, size);
+    string = PyUnicode_FromWideChar(res, size);
     if (buf != res)
         free(res);
     return string;
@@ -401,7 +401,7 @@ record_setstring(msiobj* record, PyObject *args)
 {
     int status;
     int field;
-    Py_UNICODE *data;
+    wchar_t *data;
 
     if (!PyArg_ParseTuple(args, "iu:SetString", &field, &data))
         return NULL;
@@ -418,7 +418,7 @@ record_setstream(msiobj* record, PyObject *args)
 {
     int status;
     int field;
-    Py_UNICODE *data;
+    wchar_t *data;
 
     if (!PyArg_ParseTuple(args, "iu:SetStream", &field, &data))
         return NULL;
index fdcc55bd24cc1d79ee394214c1dde2fcb115ab0d..93e51d353990f2541fcd83ac1037986d92494642 100644 (file)
@@ -419,14 +419,14 @@ sp_CreateProcess(PyObject* self, PyObject* args)
     PyObject* environment;
     wchar_t *wenvironment;
 
-    Py_UNICODE* application_name;
-    Py_UNICODE* command_line;
+    wchar_t* application_name;
+    wchar_t* command_line;
     PyObject* process_attributes; /* ignored */
     PyObject* thread_attributes; /* ignored */
     int inherit_handles;
     int creation_flags;
     PyObject* env_mapping;
-    Py_UNICODE* current_directory;
+    wchar_t* current_directory;
     PyObject* startup_info;
 
     if (! PyArg_ParseTuple(args, "ZZOOiiOZO:CreateProcess",
@@ -454,15 +454,10 @@ sp_CreateProcess(PyObject* self, PyObject* args)
     if (PyErr_Occurred())
         return NULL;
 
-    if (env_mapping == Py_None)
-        environment = NULL;
-    else {
+    if (env_mapping != Py_None) {
         environment = getenvironment(env_mapping);
         if (! environment)
             return NULL;
-    }
-
-    if (environment) {
         wenvironment = PyUnicode_AsUnicode(environment);
         if (wenvironment == NULL)
         {
@@ -470,8 +465,10 @@ sp_CreateProcess(PyObject* self, PyObject* args)
             return NULL;
         }
     }
-    else
+    else {
+        environment = NULL;
         wenvironment = NULL;
+    }
 
     Py_BEGIN_ALLOW_THREADS
     result = CreateProcessW(application_name,
index e5a0a177bc140d69c261b82a6bca35a0e91f36c7..f277b0a64dd6d1117be265eed8173cb07cf09be1 100755 (executable)
@@ -211,7 +211,7 @@ cannot be read with this function.");
 static PyObject *
 msvcrt_getwch(PyObject *self, PyObject *args)
 {
-    Py_UNICODE ch;
+    wchar_t ch;
 
     if (!PyArg_ParseTuple(args, ":getwch"))
         return NULL;
@@ -254,7 +254,7 @@ a printable character.");
 static PyObject *
 msvcrt_getwche(PyObject *self, PyObject *args)
 {
-    Py_UNICODE ch;
+    wchar_t ch;
 
     if (!PyArg_ParseTuple(args, ":getwche"))
         return NULL;
index 636d5d122c35cd94d56b2cae7ec411b9418d497f..56bda5c258999267c581c86cdbc1fd3c65a21331 100644 (file)
@@ -1227,8 +1227,8 @@ PyEnumValue(PyObject *self, PyObject *args)
 static PyObject *
 PyExpandEnvironmentStrings(PyObject *self, PyObject *args)
 {
-    Py_UNICODE *retValue = NULL;
-    Py_UNICODE *src;
+    wchar_t *retValue = NULL;
+    wchar_t *src;
     DWORD retValueSize;
     DWORD rc;
     PyObject *o;
@@ -1241,7 +1241,7 @@ PyExpandEnvironmentStrings(PyObject *self, PyObject *args)
         return PyErr_SetFromWindowsErrWithFunction(retValueSize,
                                         "ExpandEnvironmentStrings");
     }
-    retValue = (Py_UNICODE *)PyMem_Malloc(retValueSize * sizeof(Py_UNICODE));
+    retValue = (wchar_t *)PyMem_Malloc(retValueSize * sizeof(wchar_t));
     if (retValue == NULL) {
         return PyErr_NoMemory();
     }
@@ -1252,7 +1252,7 @@ PyExpandEnvironmentStrings(PyObject *self, PyObject *args)
         return PyErr_SetFromWindowsErrWithFunction(retValueSize,
                                         "ExpandEnvironmentStrings");
     }
-    o = PyUnicode_FromUnicode(retValue, wcslen(retValue));
+    o = PyUnicode_FromWideChar(retValue, wcslen(retValue));
     PyMem_Free(retValue);
     return o;
 }
@@ -1537,7 +1537,7 @@ PySetValueEx(PyObject *self, PyObject *args)
 {
     HKEY hKey;
     PyObject *obKey;
-    Py_UNICODE *valueName;
+    wchar_t *valueName;
     PyObject *obRes;
     PyObject *value;
     BYTE *data;
index 1ed95bac4230451e6ed9ccbfa8b46bed1f2150d1..b564eaba780cd6b840a69fe47e063e8ef3778334 100644 (file)
@@ -72,7 +72,7 @@ PyDoc_STRVAR(sound_module_doc,
 static PyObject *
 sound_playsound(PyObject *s, PyObject *args)
 {
-    Py_UNICODE *wsound;
+    wchar_t *wsound;
     int flags;
     int ok;
 
index e511098d1d0d14c987ff13934d5be1c6f0050b36..2cbfe9f30d21d2b5d2234a5785408a0e9c4ff56e 100644 (file)
@@ -249,7 +249,7 @@ dl_funcptr _PyImport_GetDynLoadWindows(const char *shortname,
                     "DLL load failed: ");
 
                 PyUnicode_AppendAndDel(&message,
-                    PyUnicode_FromUnicode(
+                    PyUnicode_FromWideChar(
                         theInfo,
                         theLength));
             }