]> granicus.if.org Git - python/commitdiff
Merged revisions 68540 via svnmerge from
authorMartin v. Löwis <martin@v.loewis.de>
Mon, 12 Jan 2009 07:59:10 +0000 (07:59 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Mon, 12 Jan 2009 07:59:10 +0000 (07:59 +0000)
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.
........

Misc/NEWS
Python/sysmodule.c

index 442cc1f8962efb02d75f0a57c3ee67ba5648e693..7797ddfd32e739ec7aa146dce7424594fea7e3f6 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,8 @@ What's New in Python 3.1 alpha 0
 Core and Builtins
 -----------------
 
+- Issue #4915: Port sysmodule to Windows CE.
+
 - Issue #4868: utf-8, utf-16 and latin1 decoding are now 2x to 4x faster. The
   common cases are optimized thanks to a dedicated fast path and a moderate
   amount of loop unrolling.
index af960bc07001e7d28e184576a5a6613265d58a08..f703e097f0f05b4e6ef7627d4a4293b12e5d4f68 100644 (file)
@@ -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]),