summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@haypocalc.com>2011-11-22 01:27:30 (GMT)
committerVictor Stinner <victor.stinner@haypocalc.com>2011-11-22 01:27:30 (GMT)
commit9d3b93ba305e8a83bf1cec5146def2078e40b1a5 (patch)
treed618d2ca564f2a027522b22491f4fec656fceb09
parentb84d723509d1b8c7e052f61117624627d334cf30 (diff)
downloadcpython-9d3b93ba305e8a83bf1cec5146def2078e40b1a5.zip
cpython-9d3b93ba305e8a83bf1cec5146def2078e40b1a5.tar.gz
cpython-9d3b93ba305e8a83bf1cec5146def2078e40b1a5.tar.bz2
Use the new Unicode API
* 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()
-rw-r--r--Modules/_ctypes/_ctypes.c4
-rw-r--r--Modules/posixmodule.c26
-rw-r--r--Modules/socketmodule.c2
-rw-r--r--Objects/abstract.c2
-rw-r--r--PC/_msi.c10
-rw-r--r--PC/_subprocess.c17
-rwxr-xr-xPC/msvcrtmodule.c4
-rw-r--r--PC/winreg.c10
-rw-r--r--PC/winsound.c2
-rw-r--r--Python/dynload_win.c2
10 files changed, 38 insertions, 41 deletions
diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c
index b45eea9..31906bf 100644
--- a/Modules/_ctypes/_ctypes.c
+++ b/Modules/_ctypes/_ctypes.c
@@ -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);
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 078010b..975cd9a 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -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)) {
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index 4742b44..40a18ed 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -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);
diff --git a/Objects/abstract.c b/Objects/abstract.c
index bce9794..39f1a26 100644
--- a/Objects/abstract.c
+++ b/Objects/abstract.c
@@ -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;
}
diff --git a/PC/_msi.c b/PC/_msi.c
index 6fb9c42..0b5b94e 100644
--- 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;
diff --git a/PC/_subprocess.c b/PC/_subprocess.c
index fdcc55b..93e51d3 100644
--- a/PC/_subprocess.c
+++ b/PC/_subprocess.c
@@ -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,
diff --git a/PC/msvcrtmodule.c b/PC/msvcrtmodule.c
index e5a0a17..f277b0a 100755
--- a/PC/msvcrtmodule.c
+++ b/PC/msvcrtmodule.c
@@ -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;
diff --git a/PC/winreg.c b/PC/winreg.c
index 636d5d1..56bda5c 100644
--- a/PC/winreg.c
+++ b/PC/winreg.c
@@ -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;
diff --git a/PC/winsound.c b/PC/winsound.c
index 1ed95ba..b564eab 100644
--- a/PC/winsound.c
+++ b/PC/winsound.c
@@ -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;
diff --git a/Python/dynload_win.c b/Python/dynload_win.c
index e511098..2cbfe9f 100644
--- a/Python/dynload_win.c
+++ b/Python/dynload_win.c
@@ -249,7 +249,7 @@ dl_funcptr _PyImport_GetDynLoadWindows(const char *shortname,
"DLL load failed: ");
PyUnicode_AppendAndDel(&message,
- PyUnicode_FromUnicode(
+ PyUnicode_FromWideChar(
theInfo,
theLength));
}