summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorMartin v. Löwis <martin@v.loewis.de>2009-01-12 07:59:10 (GMT)
committerMartin v. Löwis <martin@v.loewis.de>2009-01-12 07:59:10 (GMT)
commitec59d04fad3ffae1b0ce94d2872172398a012d16 (patch)
treebbda639d353df299eff60e9dbeae01b318337aa5 /Python
parentde3369f2ca0e2e1b26482a34fdc09d18a3a928d9 (diff)
downloadcpython-ec59d04fad3ffae1b0ce94d2872172398a012d16.zip
cpython-ec59d04fad3ffae1b0ce94d2872172398a012d16.tar.gz
cpython-ec59d04fad3ffae1b0ce94d2872172398a012d16.tar.bz2
Merged revisions 68540 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r68540 | martin.v.loewis | 2009-01-12 08:57:11 +0100 (Mo, 12 Jan 2009) | 2 lines Issue #4915: Port sysmodule to Windows CE. ........
Diffstat (limited to 'Python')
-rw-r--r--Python/sysmodule.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index af960bc..f703e09 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -1257,8 +1257,13 @@ _PySys_Init(void)
PyDict_SetItemString(sysdict, key, v); \
Py_XDECREF(v)
+ /* Check that stdin is not a directory
+ Using shell redirection, you can redirect stdin to a directory,
+ crashing the Python interpreter. Catch this common mistake here
+ and output a useful error message. Note that under MS Windows,
+ the shell already prevents that. */
+#if !defined(MS_WINDOWS)
{
- /* XXX: does this work on Win/Win64? (see posix_fstat) */
struct stat sb;
if (fstat(fileno(stdin), &sb) == 0 &&
S_ISDIR(sb.st_mode)) {
@@ -1268,6 +1273,7 @@ _PySys_Init(void)
exit(EXIT_FAILURE);
}
}
+#endif
/* stdin/stdout/stderr are now set by pythonrun.c */
@@ -1483,7 +1489,7 @@ PySys_SetArgv(int argc, wchar_t **argv)
{
#if defined(HAVE_REALPATH)
wchar_t fullpath[MAXPATHLEN];
-#elif defined(MS_WINDOWS)
+#elif defined(MS_WINDOWS) && !defined(MS_WINCE)
wchar_t fullpath[MAX_PATH];
#endif
PyObject *av = makeargvobject(argc, argv);
@@ -1529,7 +1535,10 @@ PySys_SetArgv(int argc, wchar_t **argv)
#if SEP == '\\' /* Special case for MS filename syntax */
if (argc > 0 && argv0 != NULL && wcscmp(argv0, L"-c") != 0) {
wchar_t *q;
-#ifdef MS_WINDOWS
+#if defined(MS_WINDOWS) && !defined(MS_WINCE)
+ /* This code here replaces the first element in argv with the full
+ path that it represents. Under CE, there are no relative paths so
+ the argument must be the full path anyway. */
wchar_t *ptemp;
if (GetFullPathNameW(argv0,
sizeof(fullpath)/sizeof(fullpath[0]),