[Python-checkins] python/dist/src/Modules posixmodule.c,2.263,2.264 (original) (raw)

loewis@users.sourceforge.net loewis@users.sourceforge.net
Sun, 06 Oct 2002 23:44:24 -0700


Update of /cvsroot/python/python/dist/src/Modules In directory usw-pr-cvs1:/tmp/cvs-serv1042

Modified Files: posixmodule.c Log Message: Apply file system default encoding to exec and spawn path and arguments.

Index: posixmodule.c

RCS file: /cvsroot/python/python/dist/src/Modules/posixmodule.c,v retrieving revision 2.263 retrieving revision 2.264 diff -C2 -d -r2.263 -r2.264 *** posixmodule.c 5 Oct 2002 01:47:34 -0000 2.263 --- posixmodule.c 7 Oct 2002 06:44:21 -0000 2.264


*** 1853,1856 **** --- 1853,1867 ---- }


*** 1874,1878 **** argv is a list or tuple of strings. */

! if (!PyArg_ParseTuple(args, "sO:execv", &path, &argv)) return NULL; if (PyList_Check(argv)) { --- 1885,1891 ---- argv is a list or tuple of strings. */

! if (!PyArg_ParseTuple(args, "etO:execv", ! Py_FileSystemDefaultEncoding, ! &path, &argv)) return NULL; if (PyList_Check(argv)) {


*** 1886,1889 **** --- 1899,1903 ---- else { PyErr_SetString(PyExc_TypeError, "execv() arg 2 must be a tuple or list");


*** 1891,1905 **** if (argc == 0) { PyErr_SetString(PyExc_ValueError, "execv() arg 2 must not be empty"); return NULL; }

  argvlist = PyMem_NEW(char *, argc+1);

! if (argvlist == NULL) return NULL; for (i = 0; i < argc; i++) { ! if (!PyArg_Parse((*getitem)(argv, i), "s", &argvlist[i])) { ! PyMem_DEL(argvlist); PyErr_SetString(PyExc_TypeError, "execv() arg 2 must contain only strings"); return NULL;

--- 1905,1925 ---- if (argc == 0) { PyErr_SetString(PyExc_ValueError, "execv() arg 2 must not be empty");

! if (argvlist == NULL) { ! PyMem_Free(path); return NULL;

! if (!PyArg_Parse((*getitem)(argv, i), "et", ! Py_FileSystemDefaultEncoding, ! &argvlist[i])) { ! free_string_array(argvlist, i); PyErr_SetString(PyExc_TypeError, "execv() arg 2 must contain only strings");


*** 1916,1920 **** /* If we get here it's definitely an error */

! PyMem_DEL(argvlist); return posix_error(); } --- 1936,1941 ---- /* If we get here it's definitely an error */

! free_string_array(argvlist, argc); ! PyMem_Free(path); return posix_error(); }


*** 1939,1942 **** --- 1960,1964 ---- int i, pos, argc, envc; PyObject *(*getitem)(PyObject *, int);


*** 1944,1948 **** like posix.environ. */

! if (!PyArg_ParseTuple(args, "sOO:execve", &path, &argv, &env)) return NULL; if (PyList_Check(argv)) { --- 1966,1972 ---- like posix.environ. */

! if (!PyArg_ParseTuple(args, "etOO:execve", ! Py_FileSystemDefaultEncoding, ! &path, &argv, &env)) return NULL; if (PyList_Check(argv)) {


*** 1956,1964 **** else { PyErr_SetString(PyExc_TypeError, "execve() arg 2 must be a tuple or list"); ! return NULL; } if (!PyMapping_Check(env)) { PyErr_SetString(PyExc_TypeError, "execve() arg 3 must be a mapping object"); ! return NULL; }

--- 1980,1988 ---- else { PyErr_SetString(PyExc_TypeError, "execve() arg 2 must be a tuple or list"); ! goto fail_0; } if (!PyMapping_Check(env)) { PyErr_SetString(PyExc_TypeError, "execve() arg 3 must be a mapping object"); ! goto fail_0; }


*** 1966,1970 **** PyErr_SetString(PyExc_ValueError, "execve() arg 2 must not be empty"); ! return NULL; }

--- 1990,1994 ---- PyErr_SetString(PyExc_ValueError, "execve() arg 2 must not be empty"); ! goto fail_0; }


*** 1972,1985 **** if (argvlist == NULL) { PyErr_NoMemory(); ! return NULL; } for (i = 0; i < argc; i++) { if (!PyArg_Parse((*getitem)(argv, i), ! "s;execve() arg 2 must contain only strings", &argvlist[i])) { goto fail_1; } } argvlist[argc] = NULL;

--- 1996,2011 ---- if (argvlist == NULL) { PyErr_NoMemory(); ! goto fail_0; } for (i = 0; i < argc; i++) { if (!PyArg_Parse((*getitem)(argv, i), ! "et;execve() arg 2 must contain only strings", &argvlist[i])) {


*** 2045,2051 **** PyMem_DEL(envlist); fail_1: ! PyMem_DEL(argvlist); Py_XDECREF(vals); Py_XDECREF(keys); return NULL; } --- 2071,2079 ---- PyMem_DEL(envlist); fail_1: ! free_string_array(argvlist,lastarg); Py_XDECREF(vals); Py_XDECREF(keys);


*** 2075,2079 **** argv is a list or tuple of strings. */

! if (!PyArg_ParseTuple(args, "isO:spawnv", &mode, &path, &argv)) return NULL; if (PyList_Check(argv)) { --- 2103,2109 ---- argv is a list or tuple of strings. */

! if (!PyArg_ParseTuple(args, "ietO:spawnv", &mode, ! Py_FileSystemDefaultEncoding, ! &path, &argv)) return NULL; if (PyList_Check(argv)) {


*** 2087,2101 **** else { PyErr_SetString(PyExc_TypeError, "spawnv() arg 2 must be a tuple or list"); return NULL; }

  argvlist = PyMem_NEW(char *, argc+1);

! if (argvlist == NULL) return NULL; for (i = 0; i < argc; i++) { ! if (!PyArg_Parse((*getitem)(argv, i), "s", &argvlist[i])) { ! PyMem_DEL(argvlist); PyErr_SetString(PyExc_TypeError, "spawnv() arg 2 must contain only strings"); return NULL; } --- 2117,2137 ---- else { PyErr_SetString(PyExc_TypeError, "spawnv() arg 2 must be a tuple or list");

! if (argvlist == NULL) { ! PyMem_Free(path); return NULL;

! if (!PyArg_Parse((*getitem)(argv, i), "et", ! Py_FileSystemDefaultEncoding, ! &argvlist[i])) { ! free_string_array(argvlist, i); PyErr_SetString(PyExc_TypeError, "spawnv() arg 2 must contain only strings");


*** 2116,2120 **** #endif

! PyMem_DEL(argvlist);

  if (spawnval == -1)

--- 2152,2157 ---- #endif

! free_string_array(argvlist, argc); ! PyMem_Free(path);

  if (spawnval == -1)

*** 2149,2152 **** --- 2186,2190 ---- Py_intptr_t spawnval; PyObject *(*getitem)(PyObject *, int);


*** 2154,2158 **** like posix.environ. */

! if (!PyArg_ParseTuple(args, "isOO:spawnve", &mode, &path, &argv, &env)) return NULL; if (PyList_Check(argv)) { --- 2192,2198 ---- like posix.environ. */

! if (!PyArg_ParseTuple(args, "ietOO:spawnve", &mode, ! Py_FileSystemDefaultEncoding, ! &path, &argv, &env)) return NULL; if (PyList_Check(argv)) {


*** 2166,2174 **** else { PyErr_SetString(PyExc_TypeError, "spawnve() arg 2 must be a tuple or list"); ! return NULL; } if (!PyMapping_Check(env)) { PyErr_SetString(PyExc_TypeError, "spawnve() arg 3 must be a mapping object"); ! return NULL; }

--- 2206,2214 ---- else { PyErr_SetString(PyExc_TypeError, "spawnve() arg 2 must be a tuple or list"); ! goto fail_0; } if (!PyMapping_Check(env)) { PyErr_SetString(PyExc_TypeError, "spawnve() arg 3 must be a mapping object"); ! goto fail_0; }


*** 2176,2189 **** if (argvlist == NULL) { PyErr_NoMemory(); ! return NULL; } for (i = 0; i < argc; i++) { if (!PyArg_Parse((*getitem)(argv, i), ! "s;spawnve() arg 2 must contain only strings", &argvlist[i])) { goto fail_1; } } argvlist[argc] = NULL;

--- 2216,2232 ---- if (argvlist == NULL) { PyErr_NoMemory(); ! goto fail_0; } for (i = 0; i < argc; i++) { if (!PyArg_Parse((*getitem)(argv, i), ! "et;spawnve() arg 2 must contain only strings", ! Py_FileSystemDefaultEncoding, &argvlist[i])) {


*** 2252,2258 **** PyMem_DEL(envlist); fail_1: ! PyMem_DEL(argvlist); Py_XDECREF(vals); Py_XDECREF(keys); return res; } --- 2295,2303 ---- PyMem_DEL(envlist); fail_1: ! free_string_array(argvlist, lastarg); Py_XDECREF(vals); Py_XDECREF(keys);