diff options
author | Kristján Valur Jónsson <kristjan@ccpgames.com> | 2007-04-26 09:15:08 (GMT) |
---|---|---|
committer | Kristján Valur Jónsson <kristjan@ccpgames.com> | 2007-04-26 09:15:08 (GMT) |
commit | 0a440d41844aac25178400d33d714d8e479b86d4 (patch) | |
tree | 85932752a2f3ec1070e5cf231717a50fb603630a /Objects | |
parent | 452f5df64a09e6e50a2d861fa1d18e0bbea7ca4a (diff) | |
download | cpython-0a440d41844aac25178400d33d714d8e479b86d4.zip cpython-0a440d41844aac25178400d33d714d8e479b86d4.tar.gz cpython-0a440d41844aac25178400d33d714d8e479b86d4.tar.bz2 |
Export function sanitize_the_mode from fileobject.c as _PyFile_SanitizeMode(). Use this function in posixmodule.c when implementing fdopen(). This fixes test_subprocess.py for a VisualStudio 2005 compile.
Diffstat (limited to 'Objects')
-rw-r--r-- | Objects/fileobject.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/Objects/fileobject.c b/Objects/fileobject.c index 1880187..ac093ce 100644 --- a/Objects/fileobject.c +++ b/Objects/fileobject.c @@ -139,17 +139,16 @@ fill_file_fields(PyFileObject *f, FILE *fp, PyObject *name, char *mode, ignore stuff they don't understand... write or append mode with universal newline support is expressly forbidden by PEP 278. Additionally, remove the 'U' from the mode string as platforms - won't know what it is. */ -/* zero return is kewl - one is un-kewl */ -static int -sanitize_the_mode(char *mode) + won't know what it is. Non-zero return signals an exception */ +int +_PyFile_SanitizeMode(char *mode) { char *upos; size_t len = strlen(mode); if (!len) { PyErr_SetString(PyExc_ValueError, "empty mode string"); - return 1; + return -1; } upos = strchr(mode, 'U'); @@ -160,7 +159,7 @@ sanitize_the_mode(char *mode) PyErr_Format(PyExc_ValueError, "universal newline " "mode can only be used with modes " "starting with 'r'"); - return 1; + return -1; } if (mode[0] != 'r') { @@ -175,7 +174,7 @@ sanitize_the_mode(char *mode) } else if (mode[0] != 'r' && mode[0] != 'w' && mode[0] != 'a') { PyErr_Format(PyExc_ValueError, "mode string must begin with " "one of 'r', 'w', 'a' or 'U', not '%.200s'", mode); - return 1; + return -1; } return 0; @@ -204,7 +203,7 @@ open_the_file(PyFileObject *f, char *name, char *mode) } strcpy(newmode, mode); - if (sanitize_the_mode(newmode)) { + if (_PyFile_SanitizeMode(newmode)) { f = NULL; goto cleanup; } |