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.
........
This commit is contained in:
Martin v. Löwis 2009-01-12 07:59:10 +00:00
parent de3369f2ca
commit ec59d04fad
2 changed files with 14 additions and 3 deletions

View File

@ -12,6 +12,8 @@ What's New in Python 3.1 alpha 0
Core and Builtins 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 - 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 common cases are optimized thanks to a dedicated fast path and a moderate
amount of loop unrolling. amount of loop unrolling.

View File

@ -1257,8 +1257,13 @@ _PySys_Init(void)
PyDict_SetItemString(sysdict, key, v); \ PyDict_SetItemString(sysdict, key, v); \
Py_XDECREF(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; struct stat sb;
if (fstat(fileno(stdin), &sb) == 0 && if (fstat(fileno(stdin), &sb) == 0 &&
S_ISDIR(sb.st_mode)) { S_ISDIR(sb.st_mode)) {
@ -1268,6 +1273,7 @@ _PySys_Init(void)
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
} }
#endif
/* stdin/stdout/stderr are now set by pythonrun.c */ /* stdin/stdout/stderr are now set by pythonrun.c */
@ -1483,7 +1489,7 @@ PySys_SetArgv(int argc, wchar_t **argv)
{ {
#if defined(HAVE_REALPATH) #if defined(HAVE_REALPATH)
wchar_t fullpath[MAXPATHLEN]; wchar_t fullpath[MAXPATHLEN];
#elif defined(MS_WINDOWS) #elif defined(MS_WINDOWS) && !defined(MS_WINCE)
wchar_t fullpath[MAX_PATH]; wchar_t fullpath[MAX_PATH];
#endif #endif
PyObject *av = makeargvobject(argc, argv); 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 SEP == '\\' /* Special case for MS filename syntax */
if (argc > 0 && argv0 != NULL && wcscmp(argv0, L"-c") != 0) { if (argc > 0 && argv0 != NULL && wcscmp(argv0, L"-c") != 0) {
wchar_t *q; 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; wchar_t *ptemp;
if (GetFullPathNameW(argv0, if (GetFullPathNameW(argv0,
sizeof(fullpath)/sizeof(fullpath[0]), sizeof(fullpath)/sizeof(fullpath[0]),