Expose more MS WIndows constants usable w/ low-level os.open().

This commit is contained in:
Tim Peters 2002-01-30 05:46:57 +00:00
parent c26467d53f
commit 5aa916029d
1 changed files with 125 additions and 102 deletions

View File

@ -363,7 +363,7 @@ win32_error(char* function, char* filename)
{
/* XXX We should pass the function name along in the future.
(_winreg.c also wants to pass the function name.)
This would however require an additional param to the
This would however require an additional param to the
Windows error object, which is non-trivial.
*/
errno = GetLastError();
@ -474,7 +474,7 @@ posix_1str(PyObject *args, char *format, int (*func)(const char*))
{
char *path1 = NULL;
int res;
if (!PyArg_ParseTuple(args, format,
if (!PyArg_ParseTuple(args, format,
Py_FileSystemDefaultEncoding, &path1))
return NULL;
Py_BEGIN_ALLOW_THREADS
@ -494,7 +494,7 @@ posix_2str(PyObject *args, char *format,
char *path1 = NULL, *path2 = NULL;
int res;
if (!PyArg_ParseTuple(args, format,
Py_FileSystemDefaultEncoding, &path1,
Py_FileSystemDefaultEncoding, &path1,
Py_FileSystemDefaultEncoding, &path2))
return NULL;
Py_BEGIN_ALLOW_THREADS
@ -509,7 +509,7 @@ posix_2str(PyObject *args, char *format,
return Py_None;
}
static char stat_result__doc__[] =
static char stat_result__doc__[] =
"stat_result: Result from stat or lstat.\n\n\
This object may be accessed either as a tuple of\n\
(mode,ino,dev,nlink,uid,gid,size,atime,mtime,ctime)\n\
@ -568,7 +568,7 @@ static PyStructSequence_Desc stat_result_desc = {
10
};
static char statvfs_result__doc__[] =
static char statvfs_result__doc__[] =
"statvfs_result: Result from statvfs or fstatvfs.\n\n\
This object may be accessed either as a tuple of\n\
(bsize,frsize,blocks,bfree,bavail,files,ffree,favail,flag,namemax),\n\
@ -600,7 +600,7 @@ static PyStructSequence_Desc statvfs_result_desc = {
static PyTypeObject StatResultType;
static PyTypeObject StatVFSResultType;
/* pack a system stat C structure into the Python stat tuple
/* pack a system stat C structure into the Python stat tuple
(used by posix_stat() and posix_fstat()) */
static PyObject*
_pystat_fromstructstat(STRUCT_STAT st)
@ -611,13 +611,13 @@ _pystat_fromstructstat(STRUCT_STAT st)
PyStructSequence_SET_ITEM(v, 0, PyInt_FromLong((long)st.st_mode));
#ifdef HAVE_LARGEFILE_SUPPORT
PyStructSequence_SET_ITEM(v, 1,
PyStructSequence_SET_ITEM(v, 1,
PyLong_FromLongLong((LONG_LONG)st.st_ino));
#else
PyStructSequence_SET_ITEM(v, 1, PyInt_FromLong((long)st.st_ino));
#endif
#if defined(HAVE_LONG_LONG) && !defined(MS_WINDOWS)
PyStructSequence_SET_ITEM(v, 2,
PyStructSequence_SET_ITEM(v, 2,
PyLong_FromLongLong((LONG_LONG)st.st_dev));
#else
PyStructSequence_SET_ITEM(v, 2, PyInt_FromLong((long)st.st_dev));
@ -626,17 +626,17 @@ _pystat_fromstructstat(STRUCT_STAT st)
PyStructSequence_SET_ITEM(v, 4, PyInt_FromLong((long)st.st_uid));
PyStructSequence_SET_ITEM(v, 5, PyInt_FromLong((long)st.st_gid));
#ifdef HAVE_LARGEFILE_SUPPORT
PyStructSequence_SET_ITEM(v, 6,
PyStructSequence_SET_ITEM(v, 6,
PyLong_FromLongLong((LONG_LONG)st.st_size));
#else
PyStructSequence_SET_ITEM(v, 6, PyInt_FromLong(st.st_size));
#endif
#if SIZEOF_TIME_T > SIZEOF_LONG
PyStructSequence_SET_ITEM(v, 7,
PyStructSequence_SET_ITEM(v, 7,
PyLong_FromLongLong((LONG_LONG)st.st_atime));
PyStructSequence_SET_ITEM(v, 8,
PyStructSequence_SET_ITEM(v, 8,
PyLong_FromLongLong((LONG_LONG)st.st_mtime));
PyStructSequence_SET_ITEM(v, 9,
PyStructSequence_SET_ITEM(v, 9,
PyLong_FromLongLong((LONG_LONG)st.st_ctime));
#else
PyStructSequence_SET_ITEM(v, 7, PyInt_FromLong((long)st.st_atime));
@ -645,11 +645,11 @@ _pystat_fromstructstat(STRUCT_STAT st)
#endif
#ifdef HAVE_ST_BLKSIZE
PyStructSequence_SET_ITEM(v, ST_BLKSIZE_IDX,
PyStructSequence_SET_ITEM(v, ST_BLKSIZE_IDX,
PyInt_FromLong((long)st.st_blksize));
#endif
#ifdef HAVE_ST_BLOCKS
PyStructSequence_SET_ITEM(v, ST_BLOCKS_IDX,
PyStructSequence_SET_ITEM(v, ST_BLOCKS_IDX,
PyInt_FromLong((long)st.st_blocks));
#endif
#ifdef HAVE_ST_RDEV
@ -679,7 +679,7 @@ posix_do_stat(PyObject *self, PyObject *args, char *format,
char pathcopy[MAX_PATH];
#endif /* MS_WIN32 */
if (!PyArg_ParseTuple(args, format,
if (!PyArg_ParseTuple(args, format,
Py_FileSystemDefaultEncoding, &path))
return NULL;
pathfree = path;
@ -823,7 +823,7 @@ posix_chmod(PyObject *self, PyObject *args)
char *path = NULL;
int i;
int res;
if (!PyArg_ParseTuple(args, "eti", Py_FileSystemDefaultEncoding,
if (!PyArg_ParseTuple(args, "eti", Py_FileSystemDefaultEncoding,
&path, &i))
return NULL;
Py_BEGIN_ALLOW_THREADS
@ -838,7 +838,7 @@ posix_chmod(PyObject *self, PyObject *args)
#ifdef HAVE_CHROOT
static char posix_chroot__doc__[] =
static char posix_chroot__doc__[] =
"chroot(path) -> None\n\
Change root directory to path.";
@ -891,8 +891,8 @@ posix_chown(PyObject *self, PyObject *args)
char *path = NULL;
int uid, gid;
int res;
if (!PyArg_ParseTuple(args, "etii:chown",
Py_FileSystemDefaultEncoding, &path,
if (!PyArg_ParseTuple(args, "etii:chown",
Py_FileSystemDefaultEncoding, &path,
&uid, &gid))
return NULL;
Py_BEGIN_ALLOW_THREADS
@ -967,7 +967,7 @@ posix_listdir(PyObject *self, PyObject *args)
int len = sizeof(namebuf)/sizeof(namebuf[0]);
char ch;
if (!PyArg_ParseTuple(args, "et#:listdir",
if (!PyArg_ParseTuple(args, "et#:listdir",
Py_FileSystemDefaultEncoding, &bufptr, &len))
return NULL;
ch = namebuf[len-1];
@ -1195,8 +1195,8 @@ posix__getfullpathname(PyObject *self, PyObject *args)
int insize = sizeof(inbuf)/sizeof(inbuf[0]);
char outbuf[MAX_PATH*2];
char *temp;
if (!PyArg_ParseTuple (args, "et#:_getfullpathname",
Py_FileSystemDefaultEncoding, &inbufp,
if (!PyArg_ParseTuple (args, "et#:_getfullpathname",
Py_FileSystemDefaultEncoding, &inbufp,
&insize))
return NULL;
if (!GetFullPathName(inbuf, sizeof(outbuf)/sizeof(outbuf[0]),
@ -1216,7 +1216,7 @@ posix_mkdir(PyObject *self, PyObject *args)
int res;
char *path = NULL;
int mode = 0777;
if (!PyArg_ParseTuple(args, "et|i:mkdir",
if (!PyArg_ParseTuple(args, "et|i:mkdir",
Py_FileSystemDefaultEncoding, &path, &mode))
return NULL;
Py_BEGIN_ALLOW_THREADS
@ -1257,7 +1257,7 @@ posix_nice(PyObject *self, PyObject *args)
priority (as required by almost all standards out there) and the
Linux/FreeBSD/BSDI one, which returns '0' on success and advices
the use of getpriority() to get the new priority.
If we are of the nice family that returns the new priority, we
need to clear errno before the call, and check if errno is filled
before calling posix_error() on a returnvalue of -1, because the
@ -1509,10 +1509,10 @@ posix_execv(PyObject *self, PyObject *args)
for (i = 0; i < argc; i++) {
if (!PyArg_Parse((*getitem)(argv, i), "s", &argvlist[i])) {
PyMem_DEL(argvlist);
PyErr_SetString(PyExc_TypeError,
PyErr_SetString(PyExc_TypeError,
"execv() arg 2 must contain only strings");
return NULL;
}
}
argvlist[argc] = NULL;
@ -1573,7 +1573,7 @@ posix_execve(PyObject *self, PyObject *args)
}
if (argc == 0) {
PyErr_SetString(PyExc_ValueError,
PyErr_SetString(PyExc_ValueError,
"execve() arg 2 must not be empty");
return NULL;
}
@ -1604,7 +1604,7 @@ posix_execve(PyObject *self, PyObject *args)
vals = PyMapping_Values(env);
if (!keys || !vals)
goto fail_2;
for (pos = 0; pos < i; pos++) {
char *p, *k, *v;
size_t len;
@ -1613,7 +1613,7 @@ posix_execve(PyObject *self, PyObject *args)
val = PyList_GetItem(vals, pos);
if (!key || !val)
goto fail_2;
if (!PyArg_Parse(key, "s;execve() arg 3 contains a non-string key", &k) ||
!PyArg_Parse(val, "s;execve() arg 3 contains a non-string value", &v))
{
@ -1644,7 +1644,7 @@ posix_execve(PyObject *self, PyObject *args)
#else /* BAD_EXEC_PROTOTYPES */
execve(path, argvlist, envlist);
#endif /* BAD_EXEC_PROTOTYPES */
/* If we get here it's definitely an error */
(void) posix_error();
@ -1705,7 +1705,7 @@ posix_spawnv(PyObject *self, PyObject *args)
for (i = 0; i < argc; i++) {
if (!PyArg_Parse((*getitem)(argv, i), "s", &argvlist[i])) {
PyMem_DEL(argvlist);
PyErr_SetString(PyExc_TypeError,
PyErr_SetString(PyExc_TypeError,
"spawnv() arg 2 must contain only strings");
return NULL;
}
@ -1714,11 +1714,11 @@ posix_spawnv(PyObject *self, PyObject *args)
if (mode == _OLD_P_OVERLAY)
mode = _P_OVERLAY;
Py_BEGIN_ALLOW_THREADS
spawnval = _spawnv(mode, path, argvlist);
Py_END_ALLOW_THREADS
PyMem_DEL(argvlist);
if (spawnval == -1)
@ -1802,7 +1802,7 @@ posix_spawnve(PyObject *self, PyObject *args)
vals = PyMapping_Values(env);
if (!keys || !vals)
goto fail_2;
for (pos = 0; pos < i; pos++) {
char *p, *k, *v;
size_t len;
@ -1811,7 +1811,7 @@ posix_spawnve(PyObject *self, PyObject *args)
val = PyList_GetItem(vals, pos);
if (!key || !val)
goto fail_2;
if (!PyArg_Parse(key, "s;spawnve() arg 3 contains a non-string key", &k) ||
!PyArg_Parse(val, "s;spawnve() arg 3 contains a non-string value", &v))
{
@ -1958,7 +1958,7 @@ static PyObject *
posix_forkpty(PyObject *self, PyObject *args)
{
int master_fd, pid;
if (!PyArg_ParseTuple(args, ":forkpty"))
return NULL;
pid = forkpty(&master_fd, NULL, NULL, NULL);
@ -2386,7 +2386,7 @@ posix_popen(PyObject *self, PyObject *args)
{
PyObject *f, *s;
int tm = 0;
char *cmdstring;
char *mode = "r";
int bufsize = -1;
@ -2394,7 +2394,7 @@ posix_popen(PyObject *self, PyObject *args)
return NULL;
s = PyTuple_New(0);
if (*mode == 'r')
tm = _O_RDONLY;
else if (*mode != 'w') {
@ -2402,7 +2402,7 @@ posix_popen(PyObject *self, PyObject *args)
return NULL;
} else
tm = _O_WRONLY;
if (bufsize != -1) {
PyErr_SetString(PyExc_ValueError, "popen() arg 3 must be -1");
return NULL;
@ -2429,13 +2429,13 @@ win32_popen2(PyObject *self, PyObject *args)
{
PyObject *f;
int tm=0;
char *cmdstring;
char *mode = "t";
int bufsize = -1;
if (!PyArg_ParseTuple(args, "s|si:popen2", &cmdstring, &mode, &bufsize))
return NULL;
if (*mode == 't')
tm = _O_TEXT;
else if (*mode != 'b') {
@ -2443,14 +2443,14 @@ win32_popen2(PyObject *self, PyObject *args)
return NULL;
} else
tm = _O_BINARY;
if (bufsize != -1) {
PyErr_SetString(PyExc_ValueError, "popen2() arg 3 must be -1");
return NULL;
}
f = _PyPopen(cmdstring, tm, POPEN_2);
return f;
}
@ -2466,13 +2466,13 @@ win32_popen3(PyObject *self, PyObject *args)
{
PyObject *f;
int tm = 0;
char *cmdstring;
char *mode = "t";
int bufsize = -1;
if (!PyArg_ParseTuple(args, "s|si:popen3", &cmdstring, &mode, &bufsize))
return NULL;
if (*mode == 't')
tm = _O_TEXT;
else if (*mode != 'b') {
@ -2480,21 +2480,21 @@ win32_popen3(PyObject *self, PyObject *args)
return NULL;
} else
tm = _O_BINARY;
if (bufsize != -1) {
PyErr_SetString(PyExc_ValueError, "popen3() arg 3 must be -1");
return NULL;
}
f = _PyPopen(cmdstring, tm, POPEN_3);
return f;
}
/*
* Variation on win32pipe.popen
*
* The result of this function is 2 pipes - the processes stdin,
* The result of this function is 2 pipes - the processes stdin,
* and stdout+stderr combined as a single pipe.
*/
@ -2503,13 +2503,13 @@ win32_popen4(PyObject *self, PyObject *args)
{
PyObject *f;
int tm = 0;
char *cmdstring;
char *mode = "t";
int bufsize = -1;
if (!PyArg_ParseTuple(args, "s|si:popen4", &cmdstring, &mode, &bufsize))
return NULL;
if (*mode == 't')
tm = _O_TEXT;
else if (*mode != 'b') {
@ -2578,21 +2578,21 @@ _PyPopenCreateProcess(char *cmdstring,
x = i+1;
modulepath[x] = '\0';
/* Create the full-name to w9xpopen, so we can test it exists */
strncat(modulepath,
szConsoleSpawn,
strncat(modulepath,
szConsoleSpawn,
(sizeof(modulepath)/sizeof(modulepath[0]))
-strlen(modulepath));
if (stat(modulepath, &statinfo) != 0) {
/* Eeek - file-not-found - possibly an embedding
situation - see if we can locate it in sys.prefix
/* Eeek - file-not-found - possibly an embedding
situation - see if we can locate it in sys.prefix
*/
strncpy(modulepath,
Py_GetExecPrefix(),
strncpy(modulepath,
Py_GetExecPrefix(),
sizeof(modulepath)/sizeof(modulepath[0]));
if (modulepath[strlen(modulepath)-1] != '\\')
strcat(modulepath, "\\");
strncat(modulepath,
szConsoleSpawn,
strncat(modulepath,
szConsoleSpawn,
(sizeof(modulepath)/sizeof(modulepath[0]))
-strlen(modulepath));
/* No where else to look - raise an easily identifiable
@ -2602,7 +2602,7 @@ _PyPopenCreateProcess(char *cmdstring,
(well, it confused me for a while ;-)
*/
if (stat(modulepath, &statinfo) != 0) {
PyErr_Format(PyExc_RuntimeError,
PyErr_Format(PyExc_RuntimeError,
"Can not locate '%s' which is needed "
"for popen to work with your shell "
"or platform.",
@ -2611,7 +2611,7 @@ _PyPopenCreateProcess(char *cmdstring,
}
}
x = i + strlen(s3) + strlen(cmdstring) + 1 +
strlen(modulepath) +
strlen(modulepath) +
strlen(szConsoleSpawn) + 1;
s2 = (char *)_alloca(x);
@ -2634,7 +2634,7 @@ _PyPopenCreateProcess(char *cmdstring,
"use as the shell");
return FALSE;
}
ZeroMemory(&siStartInfo, sizeof(STARTUPINFO));
siStartInfo.cb = sizeof(STARTUPINFO);
siStartInfo.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
@ -2672,7 +2672,7 @@ _PyPopen(char *cmdstring, int mode, int n)
HANDLE hChildStdinRd, hChildStdinWr, hChildStdoutRd, hChildStdoutWr,
hChildStderrRd, hChildStderrWr, hChildStdinWrDup, hChildStdoutRdDup,
hChildStderrRdDup, hProcess; /* hChildStdoutWrDup; */
SECURITY_ATTRIBUTES saAttr;
BOOL fSuccess;
int fd1, fd2, fd3;
@ -2728,7 +2728,7 @@ _PyPopen(char *cmdstring, int mode, int n)
/* Close the inheritable version of ChildStdErr that we're using. */
CloseHandle(hChildStderrRd);
}
switch (n) {
case POPEN_1:
switch (mode & (_O_RDONLY | _O_TEXT | _O_BINARY | _O_WRONLY)) {
@ -2778,13 +2778,13 @@ _PyPopen(char *cmdstring, int mode, int n)
}
file_count = 1;
break;
case POPEN_2:
case POPEN_4:
{
char *m1, *m2;
PyObject *p1, *p2;
if (mode && _O_TEXT) {
m1 = "r";
m2 = "w";
@ -2811,12 +2811,12 @@ _PyPopen(char *cmdstring, int mode, int n)
file_count = 2;
break;
}
case POPEN_3:
{
char *m1, *m2;
PyObject *p1, *p2, *p3;
if (mode && _O_TEXT) {
m1 = "r";
m2 = "w";
@ -2936,7 +2936,7 @@ _PyPopen(char *cmdstring, int mode, int n)
}
}
}
/*
* Clean up our localized references for the dictionary keys
* and value since PyDict_SetItem will Py_INCREF any copies
@ -2956,10 +2956,10 @@ _PyPopen(char *cmdstring, int mode, int n)
if (!CloseHandle(hChildStdinRd))
return win32_error("CloseHandle", NULL);
if (!CloseHandle(hChildStdoutWr))
return win32_error("CloseHandle", NULL);
if ((n != 4) && (!CloseHandle(hChildStderrWr)))
return win32_error("CloseHandle", NULL);
@ -3266,7 +3266,7 @@ posix_setgroups(PyObject *self, PyObject *args)
PyObject *groups;
int i, len;
gid_t grouplist[MAX_GROUPS];
if (!PyArg_ParseTuple(args, "O:setgid", &groups))
return NULL;
if (!PySequence_Check(groups)) {
@ -3422,7 +3422,7 @@ posix_symlink(PyObject *self, PyObject *args)
#ifndef HZ
#define HZ 60 /* Universal constant :-) */
#endif /* HZ */
#if defined(PYCC_VACPP) && defined(PYOS_OS2)
static long
system_uptime(void)
@ -3594,7 +3594,7 @@ posix_open(PyObject *self, PyObject *args)
int flag;
int mode = 0777;
int fd;
if (!PyArg_ParseTuple(args, "eti|i",
if (!PyArg_ParseTuple(args, "eti|i",
Py_FileSystemDefaultEncoding, &file,
&flag, &mode))
return NULL;
@ -3784,7 +3784,7 @@ posix_fstat(PyObject *self, PyObject *args)
Py_END_ALLOW_THREADS
if (res != 0)
return posix_error();
return _pystat_fromstructstat(st);
}
@ -4002,7 +4002,7 @@ putenv(char *newval)
char **newenv;
if (!(newenv = malloc(esiz * sizeof(char *))))
return 1;
for (ep=environ, epp=newenv ; *ep ;)
*epp++ = *ep++;
*epp++ = newval;
@ -4032,7 +4032,7 @@ Change or add an environment variable.";
* get re-set with another call for the same key. */
static PyObject *posix_putenv_garbage;
static PyObject *
static PyObject *
posix_putenv(PyObject *self, PyObject *args)
{
char *s1, *s2;
@ -4117,7 +4117,7 @@ posix_unsetenv(PyObject *self, PyObject *args)
/* Remove the key from posix_putenv_garbage;
* this will cause it to be collected. This has to
* happen after the real unsetenv() call because the
* happen after the real unsetenv() call because the
* old value was still accessible until then.
*/
if (PyDict_DelItem(posix_putenv_garbage,
@ -4172,12 +4172,12 @@ posix_WIFSTOPPED(PyObject *self, PyObject *args)
#define status_i status
#endif
status_i = 0;
if (!PyArg_ParseTuple(args, "i:WIFSTOPPED", &status_i))
{
return NULL;
}
return Py_BuildValue("i", WIFSTOPPED(status));
#undef status_i
}
@ -4199,12 +4199,12 @@ posix_WIFSIGNALED(PyObject *self, PyObject *args)
#define status_i status
#endif
status_i = 0;
if (!PyArg_ParseTuple(args, "i:WIFSIGNALED", &status_i))
{
return NULL;
}
return Py_BuildValue("i", WIFSIGNALED(status));
#undef status_i
}
@ -4227,12 +4227,12 @@ posix_WIFEXITED(PyObject *self, PyObject *args)
#define status_i status
#endif
status_i = 0;
if (!PyArg_ParseTuple(args, "i:WIFEXITED", &status_i))
{
return NULL;
}
return Py_BuildValue("i", WIFEXITED(status));
#undef status_i
}
@ -4254,12 +4254,12 @@ posix_WEXITSTATUS(PyObject *self, PyObject *args)
#define status_i status
#endif
status_i = 0;
if (!PyArg_ParseTuple(args, "i:WEXITSTATUS", &status_i))
{
return NULL;
}
return Py_BuildValue("i", WEXITSTATUS(status));
#undef status_i
}
@ -4282,12 +4282,12 @@ posix_WTERMSIG(PyObject *self, PyObject *args)
#define status_i status
#endif
status_i = 0;
if (!PyArg_ParseTuple(args, "i:WTERMSIG", &status_i))
{
return NULL;
}
return Py_BuildValue("i", WTERMSIG(status));
#undef status_i
}
@ -4309,12 +4309,12 @@ posix_WSTOPSIG(PyObject *self, PyObject *args)
#define status_i status
#endif
status_i = 0;
if (!PyArg_ParseTuple(args, "i:WSTOPSIG", &status_i))
{
return NULL;
}
return Py_BuildValue("i", WSTOPSIG(status));
#undef status_i
}
@ -4351,17 +4351,17 @@ _pystatvfs_fromstructstatvfs(struct statvfs st) {
#else
PyStructSequence_SET_ITEM(v, 0, PyInt_FromLong((long) st.f_bsize));
PyStructSequence_SET_ITEM(v, 1, PyInt_FromLong((long) st.f_frsize));
PyStructSequence_SET_ITEM(v, 2,
PyStructSequence_SET_ITEM(v, 2,
PyLong_FromLongLong((LONG_LONG) st.f_blocks));
PyStructSequence_SET_ITEM(v, 3,
PyStructSequence_SET_ITEM(v, 3,
PyLong_FromLongLong((LONG_LONG) st.f_bfree));
PyStructSequence_SET_ITEM(v, 4,
PyLong_FromLongLong((LONG_LONG) st.f_bavail));
PyStructSequence_SET_ITEM(v, 5,
PyStructSequence_SET_ITEM(v, 5,
PyLong_FromLongLong((LONG_LONG) st.f_files));
PyStructSequence_SET_ITEM(v, 6,
PyStructSequence_SET_ITEM(v, 6,
PyLong_FromLongLong((LONG_LONG) st.f_ffree));
PyStructSequence_SET_ITEM(v, 7,
PyStructSequence_SET_ITEM(v, 7,
PyLong_FromLongLong((LONG_LONG) st.f_favail));
PyStructSequence_SET_ITEM(v, 8, PyInt_FromLong((long) st.f_flag));
PyStructSequence_SET_ITEM(v, 9, PyInt_FromLong((long) st.f_namemax));
@ -5858,16 +5858,16 @@ all_ins(PyObject *d)
{
#ifdef F_OK
if (ins(d, "F_OK", (long)F_OK)) return -1;
#endif
#endif
#ifdef R_OK
if (ins(d, "R_OK", (long)R_OK)) return -1;
#endif
#endif
#ifdef W_OK
if (ins(d, "W_OK", (long)W_OK)) return -1;
#endif
#endif
#ifdef X_OK
if (ins(d, "X_OK", (long)X_OK)) return -1;
#endif
#endif
#ifdef NGROUPS_MAX
if (ins(d, "NGROUPS_MAX", (long)NGROUPS_MAX)) return -1;
#endif
@ -5876,7 +5876,7 @@ all_ins(PyObject *d)
#endif
#ifdef WNOHANG
if (ins(d, "WNOHANG", (long)WNOHANG)) return -1;
#endif
#endif
#ifdef O_RDONLY
if (ins(d, "O_RDONLY", (long)O_RDONLY)) return -1;
#endif
@ -5926,6 +5926,29 @@ all_ins(PyObject *d)
if (ins(d, "O_LARGEFILE", (long)O_LARGEFILE)) return -1;
#endif
/* MS Windows */
#ifdef O_NOINHERIT
/* Don't inherit in child processes. */
if (ins(d, "O_NOINHERIT", (long)O_NOINHERIT)) return -1;
#endif
#ifdef _O_SHORT_LIVED
/* Optimize for short life (keep in memory). */
/* MS forgot to define this one with a non-underscore form too. */
if (ins(d, "O_SHORT_LIVED", (long)_O_SHORT_LIVED)) return -1;
#endif
#ifdef O_TEMPORARY
/* Automatically delete when last handle is closed. */
if (ins(d, "O_TEMPORARY", (long)O_TEMPORARY)) return -1;
#endif
#ifdef O_RANDOM
/* Optimize for random access. */
if (ins(d, "O_RANDOM", (long)O_RANDOM)) return -1;
#endif
#ifdef O_SEQUENTIAL
/* Optimize for sequential access. */
if (ins(d, "O_SEQUENTIAL", (long)O_SEQUENTIAL)) return -1;
#endif
/* GNU extensions. */
#ifdef O_DIRECT
/* Direct disk access. */
@ -5955,7 +5978,7 @@ all_ins(PyObject *d)
}
#if (defined(_MSC_VER) || defined(__WATCOMC__) || defined(__BORLANDC__)) && !defined(__QNX__)
#if (defined(_MSC_VER) || defined(__WATCOMC__) || defined(__BORLANDC__)) && !defined(__QNX__)
#define INITFUNC initnt
#define MODNAME "nt"
@ -5972,14 +5995,14 @@ DL_EXPORT(void)
INITFUNC(void)
{
PyObject *m, *d, *v;
m = Py_InitModule4(MODNAME,
posix_methods,
posix__doc__,
(PyObject *)NULL,
PYTHON_API_VERSION);
d = PyModule_GetDict(m);
/* Initialize environ dictionary */
v = convertenviron();
if (v == NULL || PyDict_SetItemString(d, "environ", v) != 0)