-static PyObject *\r
-posix_isatty(PyObject *self, PyObject *args)\r
-{\r
- int fd;\r
- if (!PyArg_ParseTuple(args, "i:isatty", &fd))\r
- return NULL;\r
- if (!_PyVerify_fd(fd))\r
- return PyBool_FromLong(0);\r
- return PyBool_FromLong(isatty(fd));\r
-}\r
-\r
-#ifdef HAVE_PIPE\r
-PyDoc_STRVAR(posix_pipe__doc__,\r
-"pipe() -> (read_end, write_end)\n\n\\r
-Create a pipe.");\r
-\r
-static PyObject *\r
-posix_pipe(PyObject *self, PyObject *noargs)\r
-{\r
-#if defined(PYOS_OS2)\r
- HFILE read, write;\r
- APIRET rc;\r
-\r
- Py_BEGIN_ALLOW_THREADS\r
- rc = DosCreatePipe( &read, &write, 4096);\r
- Py_END_ALLOW_THREADS\r
- if (rc != NO_ERROR)\r
- return os2_error(rc);\r
-\r
- return Py_BuildValue("(ii)", read, write);\r
-#else\r
-#if !defined(MS_WINDOWS)\r
- int fds[2];\r
- int res;\r
- Py_BEGIN_ALLOW_THREADS\r
- res = pipe(fds);\r
- Py_END_ALLOW_THREADS\r
- if (res != 0)\r
- return posix_error();\r
- return Py_BuildValue("(ii)", fds[0], fds[1]);\r
-#else /* MS_WINDOWS */\r
- HANDLE read, write;\r
- int read_fd, write_fd;\r
- BOOL ok;\r
- Py_BEGIN_ALLOW_THREADS\r
- ok = CreatePipe(&read, &write, NULL, 0);\r
- Py_END_ALLOW_THREADS\r
- if (!ok)\r
- return win32_error("CreatePipe", NULL);\r
- read_fd = _open_osfhandle((Py_intptr_t)read, 0);\r
- write_fd = _open_osfhandle((Py_intptr_t)write, 1);\r
- return Py_BuildValue("(ii)", read_fd, write_fd);\r
-#endif /* MS_WINDOWS */\r
-#endif\r
-}\r
-#endif /* HAVE_PIPE */\r
-\r
-\r
-#ifdef HAVE_MKFIFO\r
-PyDoc_STRVAR(posix_mkfifo__doc__,\r
-"mkfifo(filename [, mode=0666])\n\n\\r
-Create a FIFO (a POSIX named pipe).");\r
-\r
-static PyObject *\r
-posix_mkfifo(PyObject *self, PyObject *args)\r
-{\r
- char *filename;\r
- int mode = 0666;\r
- int res;\r
- if (!PyArg_ParseTuple(args, "s|i:mkfifo", &filename, &mode))\r
- return NULL;\r
- Py_BEGIN_ALLOW_THREADS\r
- res = mkfifo(filename, mode);\r
- Py_END_ALLOW_THREADS\r
- if (res < 0)\r
- return posix_error();\r
- Py_INCREF(Py_None);\r
- return Py_None;\r
-}\r
-#endif\r
-\r
-\r
-#if defined(HAVE_MKNOD) && defined(HAVE_MAKEDEV)\r
-PyDoc_STRVAR(posix_mknod__doc__,\r
-"mknod(filename [, mode=0600, device])\n\n\\r
-Create a filesystem node (file, device special file or named pipe)\n\\r
-named filename. mode specifies both the permissions to use and the\n\\r
-type of node to be created, being combined (bitwise OR) with one of\n\\r
-S_IFREG, S_IFCHR, S_IFBLK, and S_IFIFO. For S_IFCHR and S_IFBLK,\n\\r
-device defines the newly created device special file (probably using\n\\r
-os.makedev()), otherwise it is ignored.");\r
-\r
-\r
-static PyObject *\r
-posix_mknod(PyObject *self, PyObject *args)\r
-{\r
- char *filename;\r
- int mode = 0600;\r
- int device = 0;\r
- int res;\r
- if (!PyArg_ParseTuple(args, "s|ii:mknod", &filename, &mode, &device))\r
- return NULL;\r
- Py_BEGIN_ALLOW_THREADS\r
- res = mknod(filename, mode, device);\r
- Py_END_ALLOW_THREADS\r
- if (res < 0)\r
- return posix_error();\r
- Py_INCREF(Py_None);\r
- return Py_None;\r
-}\r
-#endif\r
-\r
-#ifdef HAVE_DEVICE_MACROS\r
-PyDoc_STRVAR(posix_major__doc__,\r
-"major(device) -> major number\n\\r
-Extracts a device major number from a raw device number.");\r
-\r
-static PyObject *\r
-posix_major(PyObject *self, PyObject *args)\r
-{\r
- int device;\r
- if (!PyArg_ParseTuple(args, "i:major", &device))\r
- return NULL;\r
- return PyInt_FromLong((long)major(device));\r
-}\r
-\r
-PyDoc_STRVAR(posix_minor__doc__,\r
-"minor(device) -> minor number\n\\r
-Extracts a device minor number from a raw device number.");\r
-\r
-static PyObject *\r
-posix_minor(PyObject *self, PyObject *args)\r
-{\r
- int device;\r
- if (!PyArg_ParseTuple(args, "i:minor", &device))\r
- return NULL;\r
- return PyInt_FromLong((long)minor(device));\r
-}\r
-\r
-PyDoc_STRVAR(posix_makedev__doc__,\r
-"makedev(major, minor) -> device number\n\\r
-Composes a raw device number from the major and minor device numbers.");\r
-\r
-static PyObject *\r
-posix_makedev(PyObject *self, PyObject *args)\r
-{\r
- int major, minor;\r
- if (!PyArg_ParseTuple(args, "ii:makedev", &major, &minor))\r
- return NULL;\r
- return PyInt_FromLong((long)makedev(major, minor));\r
-}\r
-#endif /* device macros */\r
-\r
-\r
-#ifdef HAVE_FTRUNCATE\r
-PyDoc_STRVAR(posix_ftruncate__doc__,\r
-"ftruncate(fd, length)\n\n\\r
-Truncate a file to a specified length.");\r
-\r
-static PyObject *\r
-posix_ftruncate(PyObject *self, PyObject *args)\r
-{\r
- int fd;\r
- off_t length;\r
- int res;\r
- PyObject *lenobj;\r
-\r
- if (!PyArg_ParseTuple(args, "iO:ftruncate", &fd, &lenobj))\r
- return NULL;\r
-\r
-#if !defined(HAVE_LARGEFILE_SUPPORT)\r
- length = PyInt_AsLong(lenobj);\r
-#else\r
- length = PyLong_Check(lenobj) ?\r
- PyLong_AsLongLong(lenobj) : PyInt_AsLong(lenobj);\r
-#endif\r
- if (PyErr_Occurred())\r
- return NULL;\r
-\r
- Py_BEGIN_ALLOW_THREADS\r
- res = ftruncate(fd, length);\r
- Py_END_ALLOW_THREADS\r
- if (res < 0)\r
- return posix_error();\r
- Py_INCREF(Py_None);\r
- return Py_None;\r
-}\r
-#endif\r
-\r
-#ifdef HAVE_PUTENV\r
-PyDoc_STRVAR(posix_putenv__doc__,\r
-"putenv(key, value)\n\n\\r
-Change or add an environment variable.");\r
-\r
-/* Save putenv() parameters as values here, so we can collect them when they\r
- * get re-set with another call for the same key. */\r
-static PyObject *posix_putenv_garbage;\r
-\r
-static PyObject *\r
-posix_putenv(PyObject *self, PyObject *args)\r
-{\r
- char *s1, *s2;\r
- char *newenv;\r
- PyObject *newstr;\r
- size_t len;\r
-\r
- if (!PyArg_ParseTuple(args, "ss:putenv", &s1, &s2))\r
- return NULL;\r
-\r
-#if defined(PYOS_OS2)\r
- if (stricmp(s1, "BEGINLIBPATH") == 0) {\r
- APIRET rc;\r
-\r
- rc = DosSetExtLIBPATH(s2, BEGIN_LIBPATH);\r
- if (rc != NO_ERROR)\r
- return os2_error(rc);\r
-\r
- } else if (stricmp(s1, "ENDLIBPATH") == 0) {\r
- APIRET rc;\r
-\r
- rc = DosSetExtLIBPATH(s2, END_LIBPATH);\r
- if (rc != NO_ERROR)\r
- return os2_error(rc);\r
- } else {\r
-#endif\r
-\r
- /* XXX This can leak memory -- not easy to fix :-( */\r
- len = strlen(s1) + strlen(s2) + 2;\r
- /* len includes space for a trailing \0; the size arg to\r
- PyString_FromStringAndSize does not count that */\r
- newstr = PyString_FromStringAndSize(NULL, (int)len - 1);\r
- if (newstr == NULL)\r
- return PyErr_NoMemory();\r
- newenv = PyString_AS_STRING(newstr);\r
- PyOS_snprintf(newenv, len, "%s=%s", s1, s2);\r
- if (putenv(newenv)) {\r
- Py_DECREF(newstr);\r
- posix_error();\r
- return NULL;\r
- }\r
- /* Install the first arg and newstr in posix_putenv_garbage;\r
- * this will cause previous value to be collected. This has to\r
- * happen after the real putenv() call because the old value\r
- * was still accessible until then. */\r
- if (PyDict_SetItem(posix_putenv_garbage,\r
- PyTuple_GET_ITEM(args, 0), newstr)) {\r
- /* really not much we can do; just leak */\r
- PyErr_Clear();\r
- }\r
- else {\r
- Py_DECREF(newstr);\r
- }\r
-\r
-#if defined(PYOS_OS2)\r
- }\r
-#endif\r
- Py_INCREF(Py_None);\r
- return Py_None;\r
-}\r
-#endif /* putenv */\r
-\r
-#ifdef HAVE_UNSETENV\r
-PyDoc_STRVAR(posix_unsetenv__doc__,\r
-"unsetenv(key)\n\n\\r
-Delete an environment variable.");\r
-\r
-static PyObject *\r
-posix_unsetenv(PyObject *self, PyObject *args)\r
-{\r
- char *s1;\r
-\r
- if (!PyArg_ParseTuple(args, "s:unsetenv", &s1))\r
- return NULL;\r
-\r
- unsetenv(s1);\r
-\r
- /* Remove the key from posix_putenv_garbage;\r
- * this will cause it to be collected. This has to\r
- * happen after the real unsetenv() call because the\r
- * old value was still accessible until then.\r
- */\r
- if (PyDict_DelItem(posix_putenv_garbage,\r
- PyTuple_GET_ITEM(args, 0))) {\r
- /* really not much we can do; just leak */\r
- PyErr_Clear();\r
- }\r
-\r
- Py_INCREF(Py_None);\r
- return Py_None;\r
-}\r
-#endif /* unsetenv */\r
-\r
-PyDoc_STRVAR(posix_strerror__doc__,\r
-"strerror(code) -> string\n\n\\r
-Translate an error code to a message string.");\r
-\r
-static PyObject *\r
-posix_strerror(PyObject *self, PyObject *args)\r
-{\r
- int code;\r
- char *message;\r
- if (!PyArg_ParseTuple(args, "i:strerror", &code))\r
- return NULL;\r
- message = strerror(code);\r
- if (message == NULL) {\r
- PyErr_SetString(PyExc_ValueError,\r
- "strerror() argument out of range");\r
- return NULL;\r
- }\r
- return PyString_FromString(message);\r
-}\r
-\r
-\r
-#ifdef HAVE_SYS_WAIT_H\r
-\r
-#ifdef WCOREDUMP\r
-PyDoc_STRVAR(posix_WCOREDUMP__doc__,\r
-"WCOREDUMP(status) -> bool\n\n\\r
-Return True if the process returning 'status' was dumped to a core file.");\r
-\r
-static PyObject *\r
-posix_WCOREDUMP(PyObject *self, PyObject *args)\r
-{\r
- WAIT_TYPE status;\r
- WAIT_STATUS_INT(status) = 0;\r
-\r
- if (!PyArg_ParseTuple(args, "i:WCOREDUMP", &WAIT_STATUS_INT(status)))\r
- return NULL;\r
-\r
- return PyBool_FromLong(WCOREDUMP(status));\r
-}\r
-#endif /* WCOREDUMP */\r
-\r
-#ifdef WIFCONTINUED\r
-PyDoc_STRVAR(posix_WIFCONTINUED__doc__,\r
-"WIFCONTINUED(status) -> bool\n\n\\r
-Return True if the process returning 'status' was continued from a\n\\r
-job control stop.");\r
-\r
-static PyObject *\r
-posix_WIFCONTINUED(PyObject *self, PyObject *args)\r
-{\r
- WAIT_TYPE status;\r
- WAIT_STATUS_INT(status) = 0;\r
-\r
- if (!PyArg_ParseTuple(args, "i:WCONTINUED", &WAIT_STATUS_INT(status)))\r
- return NULL;\r
-\r
- return PyBool_FromLong(WIFCONTINUED(status));\r
-}\r
-#endif /* WIFCONTINUED */\r
-\r
-#ifdef WIFSTOPPED\r
-PyDoc_STRVAR(posix_WIFSTOPPED__doc__,\r
-"WIFSTOPPED(status) -> bool\n\n\\r
-Return True if the process returning 'status' was stopped.");\r
-\r
-static PyObject *\r
-posix_WIFSTOPPED(PyObject *self, PyObject *args)\r
-{\r
- WAIT_TYPE status;\r
- WAIT_STATUS_INT(status) = 0;\r
-\r
- if (!PyArg_ParseTuple(args, "i:WIFSTOPPED", &WAIT_STATUS_INT(status)))\r
- return NULL;\r
-\r
- return PyBool_FromLong(WIFSTOPPED(status));\r
-}\r
-#endif /* WIFSTOPPED */\r
-\r
-#ifdef WIFSIGNALED\r
-PyDoc_STRVAR(posix_WIFSIGNALED__doc__,\r
-"WIFSIGNALED(status) -> bool\n\n\\r
-Return True if the process returning 'status' was terminated by a signal.");\r
-\r
-static PyObject *\r
-posix_WIFSIGNALED(PyObject *self, PyObject *args)\r
-{\r
- WAIT_TYPE status;\r
- WAIT_STATUS_INT(status) = 0;\r
-\r
- if (!PyArg_ParseTuple(args, "i:WIFSIGNALED", &WAIT_STATUS_INT(status)))\r
- return NULL;\r
-\r
- return PyBool_FromLong(WIFSIGNALED(status));\r
-}\r
-#endif /* WIFSIGNALED */\r
-\r
-#ifdef WIFEXITED\r
-PyDoc_STRVAR(posix_WIFEXITED__doc__,\r
-"WIFEXITED(status) -> bool\n\n\\r
-Return true if the process returning 'status' exited using the exit()\n\\r
-system call.");\r
-\r
-static PyObject *\r
-posix_WIFEXITED(PyObject *self, PyObject *args)\r
-{\r
- WAIT_TYPE status;\r
- WAIT_STATUS_INT(status) = 0;\r
-\r
- if (!PyArg_ParseTuple(args, "i:WIFEXITED", &WAIT_STATUS_INT(status)))\r
- return NULL;\r
-\r
- return PyBool_FromLong(WIFEXITED(status));\r
-}\r
-#endif /* WIFEXITED */\r
-\r
-#ifdef WEXITSTATUS\r
-PyDoc_STRVAR(posix_WEXITSTATUS__doc__,\r
-"WEXITSTATUS(status) -> integer\n\n\\r
-Return the process return code from 'status'.");\r
-\r
-static PyObject *\r
-posix_WEXITSTATUS(PyObject *self, PyObject *args)\r
-{\r
- WAIT_TYPE status;\r
- WAIT_STATUS_INT(status) = 0;\r
-\r
- if (!PyArg_ParseTuple(args, "i:WEXITSTATUS", &WAIT_STATUS_INT(status)))\r
- return NULL;\r
-\r
- return Py_BuildValue("i", WEXITSTATUS(status));\r
-}\r
-#endif /* WEXITSTATUS */\r
-\r
-#ifdef WTERMSIG\r
-PyDoc_STRVAR(posix_WTERMSIG__doc__,\r
-"WTERMSIG(status) -> integer\n\n\\r
-Return the signal that terminated the process that provided the 'status'\n\\r
-value.");\r
-\r
-static PyObject *\r
-posix_WTERMSIG(PyObject *self, PyObject *args)\r
-{\r
- WAIT_TYPE status;\r
- WAIT_STATUS_INT(status) = 0;\r
-\r
- if (!PyArg_ParseTuple(args, "i:WTERMSIG", &WAIT_STATUS_INT(status)))\r
- return NULL;\r
-\r
- return Py_BuildValue("i", WTERMSIG(status));\r
-}\r
-#endif /* WTERMSIG */\r
-\r
-#ifdef WSTOPSIG\r
-PyDoc_STRVAR(posix_WSTOPSIG__doc__,\r
-"WSTOPSIG(status) -> integer\n\n\\r
-Return the signal that stopped the process that provided\n\\r
-the 'status' value.");\r
-\r
-static PyObject *\r
-posix_WSTOPSIG(PyObject *self, PyObject *args)\r
-{\r
- WAIT_TYPE status;\r
- WAIT_STATUS_INT(status) = 0;\r
-\r
- if (!PyArg_ParseTuple(args, "i:WSTOPSIG", &WAIT_STATUS_INT(status)))\r
- return NULL;\r
-\r
- return Py_BuildValue("i", WSTOPSIG(status));\r
-}\r
-#endif /* WSTOPSIG */\r
-\r
-#endif /* HAVE_SYS_WAIT_H */\r
-\r
-\r
-#if defined(HAVE_FSTATVFS) && defined(HAVE_SYS_STATVFS_H)\r
-#ifdef _SCO_DS\r
-/* SCO OpenServer 5.0 and later requires _SVID3 before it reveals the\r
- needed definitions in sys/statvfs.h */\r
-#define _SVID3\r
-#endif\r
-#include <sys/statvfs.h>\r
-\r
-static PyObject*\r
-_pystatvfs_fromstructstatvfs(struct statvfs st) {\r
- PyObject *v = PyStructSequence_New(&StatVFSResultType);\r
- if (v == NULL)\r
- return NULL;\r
-\r
-#if !defined(HAVE_LARGEFILE_SUPPORT)\r
- PyStructSequence_SET_ITEM(v, 0, PyInt_FromLong((long) st.f_bsize));\r
- PyStructSequence_SET_ITEM(v, 1, PyInt_FromLong((long) st.f_frsize));\r
- PyStructSequence_SET_ITEM(v, 2, PyInt_FromLong((long) st.f_blocks));\r
- PyStructSequence_SET_ITEM(v, 3, PyInt_FromLong((long) st.f_bfree));\r
- PyStructSequence_SET_ITEM(v, 4, PyInt_FromLong((long) st.f_bavail));\r
- PyStructSequence_SET_ITEM(v, 5, PyInt_FromLong((long) st.f_files));\r
- PyStructSequence_SET_ITEM(v, 6, PyInt_FromLong((long) st.f_ffree));\r
- PyStructSequence_SET_ITEM(v, 7, PyInt_FromLong((long) st.f_favail));\r
- PyStructSequence_SET_ITEM(v, 8, PyInt_FromLong((long) st.f_flag));\r
- PyStructSequence_SET_ITEM(v, 9, PyInt_FromLong((long) st.f_namemax));\r
-#else\r
- PyStructSequence_SET_ITEM(v, 0, PyInt_FromLong((long) st.f_bsize));\r
- PyStructSequence_SET_ITEM(v, 1, PyInt_FromLong((long) st.f_frsize));\r
- PyStructSequence_SET_ITEM(v, 2,\r
- PyLong_FromLongLong((PY_LONG_LONG) st.f_blocks));\r
- PyStructSequence_SET_ITEM(v, 3,\r
- PyLong_FromLongLong((PY_LONG_LONG) st.f_bfree));\r
- PyStructSequence_SET_ITEM(v, 4,\r
- PyLong_FromLongLong((PY_LONG_LONG) st.f_bavail));\r
- PyStructSequence_SET_ITEM(v, 5,\r
- PyLong_FromLongLong((PY_LONG_LONG) st.f_files));\r
- PyStructSequence_SET_ITEM(v, 6,\r
- PyLong_FromLongLong((PY_LONG_LONG) st.f_ffree));\r
- PyStructSequence_SET_ITEM(v, 7,\r
- PyLong_FromLongLong((PY_LONG_LONG) st.f_favail));\r
- PyStructSequence_SET_ITEM(v, 8, PyInt_FromLong((long) st.f_flag));\r
- PyStructSequence_SET_ITEM(v, 9, PyInt_FromLong((long) st.f_namemax));\r
-#endif\r
-\r
- return v;\r
-}\r
-\r
-PyDoc_STRVAR(posix_fstatvfs__doc__,\r
-"fstatvfs(fd) -> statvfs result\n\n\\r
-Perform an fstatvfs system call on the given fd.");\r
-\r
-static PyObject *\r
-posix_fstatvfs(PyObject *self, PyObject *args)\r
-{\r
- int fd, res;\r
- struct statvfs st;\r
-\r
- if (!PyArg_ParseTuple(args, "i:fstatvfs", &fd))\r
- return NULL;\r
- Py_BEGIN_ALLOW_THREADS\r
- res = fstatvfs(fd, &st);\r
- Py_END_ALLOW_THREADS\r
- if (res != 0)\r
- return posix_error();\r
-\r
- return _pystatvfs_fromstructstatvfs(st);\r
-}\r
-#endif /* HAVE_FSTATVFS && HAVE_SYS_STATVFS_H */\r
-\r
-\r
-#if defined(HAVE_STATVFS) && defined(HAVE_SYS_STATVFS_H)\r
-#include <sys/statvfs.h>\r
-\r
-PyDoc_STRVAR(posix_statvfs__doc__,\r
-"statvfs(path) -> statvfs result\n\n\\r
-Perform a statvfs system call on the given path.");\r
-\r
-static PyObject *\r
-posix_statvfs(PyObject *self, PyObject *args)\r
-{\r
- char *path;\r
- int res;\r
- struct statvfs st;\r
- if (!PyArg_ParseTuple(args, "s:statvfs", &path))\r
- return NULL;\r
- Py_BEGIN_ALLOW_THREADS\r
- res = statvfs(path, &st);\r
- Py_END_ALLOW_THREADS\r
- if (res != 0)\r
- return posix_error_with_filename(path);\r
-\r
- return _pystatvfs_fromstructstatvfs(st);\r
-}\r
-#endif /* HAVE_STATVFS */\r
-\r
-\r
-#ifdef HAVE_TEMPNAM\r
-PyDoc_STRVAR(posix_tempnam__doc__,\r
-"tempnam([dir[, prefix]]) -> string\n\n\\r
-Return a unique name for a temporary file.\n\\r
-The directory and a prefix may be specified as strings; they may be omitted\n\\r
-or None if not needed.");\r
-\r
-static PyObject *\r
-posix_tempnam(PyObject *self, PyObject *args)\r
-{\r
- PyObject *result = NULL;\r
- char *dir = NULL;\r
- char *pfx = NULL;\r
- char *name;\r
-\r
- if (!PyArg_ParseTuple(args, "|zz:tempnam", &dir, &pfx))\r
- return NULL;\r
-\r
- if (PyErr_Warn(PyExc_RuntimeWarning,\r
- "tempnam is a potential security risk to your program") < 0)\r
- return NULL;\r
-\r
- if (PyErr_WarnPy3k("tempnam has been removed in 3.x; "\r
- "use the tempfile module", 1) < 0)\r
- return NULL;\r
-\r
- name = tempnam(dir, pfx);\r
- if (name == NULL)\r
- return PyErr_NoMemory();\r
- result = PyString_FromString(name);\r
- free(name);\r
- return result;\r
-}\r
-#endif\r
-\r
-\r
-#ifdef HAVE_TMPFILE\r
-PyDoc_STRVAR(posix_tmpfile__doc__,\r
-"tmpfile() -> file object\n\n\\r
-Create a temporary file with no directory entries.");\r
-\r
-static PyObject *\r
-posix_tmpfile(PyObject *self, PyObject *noargs)\r
-{\r
- FILE *fp;\r
-\r
- if (PyErr_WarnPy3k("tmpfile has been removed in 3.x; "\r
- "use the tempfile module", 1) < 0)\r
- return NULL;\r
-\r
- fp = tmpfile();\r
- if (fp == NULL)\r
- return posix_error();\r
- return PyFile_FromFile(fp, "<tmpfile>", "w+b", fclose);\r
-}\r
-#endif\r
-\r
-\r
-#ifdef HAVE_TMPNAM\r
-PyDoc_STRVAR(posix_tmpnam__doc__,\r
-"tmpnam() -> string\n\n\\r
-Return a unique name for a temporary file.");\r
-\r
-static PyObject *\r
-posix_tmpnam(PyObject *self, PyObject *noargs)\r
-{\r
- char buffer[L_tmpnam];\r
- char *name;\r
-\r
- if (PyErr_Warn(PyExc_RuntimeWarning,\r
- "tmpnam is a potential security risk to your program") < 0)\r
- return NULL;\r
-\r
- if (PyErr_WarnPy3k("tmpnam has been removed in 3.x; "\r
- "use the tempfile module", 1) < 0)\r
- return NULL;\r
-\r
-#ifdef USE_TMPNAM_R\r
- name = tmpnam_r(buffer);\r
-#else\r
- name = tmpnam(buffer);\r
-#endif\r
- if (name == NULL) {\r
- PyObject *err = Py_BuildValue("is", 0,\r
-#ifdef USE_TMPNAM_R\r
- "unexpected NULL from tmpnam_r"\r
-#else\r
- "unexpected NULL from tmpnam"\r
-#endif\r
- );\r
- PyErr_SetObject(PyExc_OSError, err);\r
- Py_XDECREF(err);\r
- return NULL;\r
- }\r
- return PyString_FromString(buffer);\r
-}\r
-#endif\r
-\r
-\r
-/* This is used for fpathconf(), pathconf(), confstr() and sysconf().\r
- * It maps strings representing configuration variable names to\r
- * integer values, allowing those functions to be called with the\r
- * magic names instead of polluting the module's namespace with tons of\r
- * rarely-used constants. There are three separate tables that use\r
- * these definitions.\r
- *\r
- * This code is always included, even if none of the interfaces that\r
- * need it are included. The #if hackery needed to avoid it would be\r
- * sufficiently pervasive that it's not worth the loss of readability.\r
- */\r
-struct constdef {\r
- char *name;\r
- long value;\r
-};\r
-\r
-#ifndef UEFI_C_SOURCE\r
-static int\r
-conv_confname(PyObject *arg, int *valuep, struct constdef *table,\r
- size_t tablesize)\r
-{\r
- if (PyInt_Check(arg)) {\r
- *valuep = PyInt_AS_LONG(arg);\r
- return 1;\r
- }\r
- if (PyString_Check(arg)) {\r
- /* look up the value in the table using a binary search */\r
- size_t lo = 0;\r
- size_t mid;\r
- size_t hi = tablesize;\r
- int cmp;\r
- char *confname = PyString_AS_STRING(arg);\r
- while (lo < hi) {\r
- mid = (lo + hi) / 2;\r
- cmp = strcmp(confname, table[mid].name);\r
- if (cmp < 0)\r
- hi = mid;\r
- else if (cmp > 0)\r
- lo = mid + 1;\r
- else {\r
- *valuep = table[mid].value;\r
- return 1;\r
- }\r
- }\r
- PyErr_SetString(PyExc_ValueError, "unrecognized configuration name");\r
- }\r
- else\r
- PyErr_SetString(PyExc_TypeError,\r
- "configuration names must be strings or integers");\r
- return 0;\r
-}\r
-#endif /* UEFI_C_SOURCE */\r
-\r
-#if defined(HAVE_FPATHCONF) || defined(HAVE_PATHCONF)\r
-static struct constdef posix_constants_pathconf[] = {\r
-#ifdef _PC_ABI_AIO_XFER_MAX\r
- {"PC_ABI_AIO_XFER_MAX", _PC_ABI_AIO_XFER_MAX},\r
-#endif\r
-#ifdef _PC_ABI_ASYNC_IO\r
- {"PC_ABI_ASYNC_IO", _PC_ABI_ASYNC_IO},\r
-#endif\r
-#ifdef _PC_ASYNC_IO\r
- {"PC_ASYNC_IO", _PC_ASYNC_IO},\r
-#endif\r
-#ifdef _PC_CHOWN_RESTRICTED\r
- {"PC_CHOWN_RESTRICTED", _PC_CHOWN_RESTRICTED},\r
-#endif\r
-#ifdef _PC_FILESIZEBITS\r
- {"PC_FILESIZEBITS", _PC_FILESIZEBITS},\r
-#endif\r
-#ifdef _PC_LAST\r
- {"PC_LAST", _PC_LAST},\r
-#endif\r
-#ifdef _PC_LINK_MAX\r
- {"PC_LINK_MAX", _PC_LINK_MAX},\r
-#endif\r
-#ifdef _PC_MAX_CANON\r
- {"PC_MAX_CANON", _PC_MAX_CANON},\r
-#endif\r
-#ifdef _PC_MAX_INPUT\r
- {"PC_MAX_INPUT", _PC_MAX_INPUT},\r
-#endif\r
-#ifdef _PC_NAME_MAX\r
- {"PC_NAME_MAX", _PC_NAME_MAX},\r
-#endif\r
-#ifdef _PC_NO_TRUNC\r
- {"PC_NO_TRUNC", _PC_NO_TRUNC},\r
-#endif\r
-#ifdef _PC_PATH_MAX\r
- {"PC_PATH_MAX", _PC_PATH_MAX},\r
-#endif\r
-#ifdef _PC_PIPE_BUF\r
- {"PC_PIPE_BUF", _PC_PIPE_BUF},\r
-#endif\r
-#ifdef _PC_PRIO_IO\r
- {"PC_PRIO_IO", _PC_PRIO_IO},\r
-#endif\r
-#ifdef _PC_SOCK_MAXBUF\r
- {"PC_SOCK_MAXBUF", _PC_SOCK_MAXBUF},\r
-#endif\r
-#ifdef _PC_SYNC_IO\r
- {"PC_SYNC_IO", _PC_SYNC_IO},\r
-#endif\r
-#ifdef _PC_VDISABLE\r
- {"PC_VDISABLE", _PC_VDISABLE},\r
-#endif\r
-};\r
-\r
-static int\r
-conv_path_confname(PyObject *arg, int *valuep)\r
-{\r
- return conv_confname(arg, valuep, posix_constants_pathconf,\r
- sizeof(posix_constants_pathconf)\r
- / sizeof(struct constdef));\r
-}\r
-#endif\r
-\r
-#ifdef HAVE_FPATHCONF\r
-PyDoc_STRVAR(posix_fpathconf__doc__,\r
-"fpathconf(fd, name) -> integer\n\n\\r
-Return the configuration limit name for the file descriptor fd.\n\\r
-If there is no limit, return -1.");\r
-\r
-static PyObject *\r
-posix_fpathconf(PyObject *self, PyObject *args)\r
-{\r
- PyObject *result = NULL;\r
- int name, fd;\r
-\r
- if (PyArg_ParseTuple(args, "iO&:fpathconf", &fd,\r
- conv_path_confname, &name)) {\r
- long limit;\r
-\r
- errno = 0;\r
- limit = fpathconf(fd, name);\r
- if (limit == -1 && errno != 0)\r
- posix_error();\r
- else\r
- result = PyInt_FromLong(limit);\r
- }\r
- return result;\r
-}\r
-#endif\r
-\r
-\r
-#ifdef HAVE_PATHCONF\r
-PyDoc_STRVAR(posix_pathconf__doc__,\r
-"pathconf(path, name) -> integer\n\n\\r
-Return the configuration limit name for the file or directory path.\n\\r
-If there is no limit, return -1.");\r
-\r
-static PyObject *\r
-posix_pathconf(PyObject *self, PyObject *args)\r
-{\r
- PyObject *result = NULL;\r
- int name;\r
- char *path;\r
-\r
- if (PyArg_ParseTuple(args, "sO&:pathconf", &path,\r
- conv_path_confname, &name)) {\r
- long limit;\r
-\r
- errno = 0;\r
- limit = pathconf(path, name);\r
- if (limit == -1 && errno != 0) {\r
- if (errno == EINVAL)\r
- /* could be a path or name problem */\r
- posix_error();\r
- else\r
- posix_error_with_filename(path);\r
- }\r
- else\r
- result = PyInt_FromLong(limit);\r
- }\r
- return result;\r
-}\r
-#endif\r
-\r
-#ifdef HAVE_CONFSTR\r
-static struct constdef posix_constants_confstr[] = {\r
-#ifdef _CS_ARCHITECTURE\r
- {"CS_ARCHITECTURE", _CS_ARCHITECTURE},\r
-#endif\r
-#ifdef _CS_HOSTNAME\r
- {"CS_HOSTNAME", _CS_HOSTNAME},\r
-#endif\r
-#ifdef _CS_HW_PROVIDER\r
- {"CS_HW_PROVIDER", _CS_HW_PROVIDER},\r
-#endif\r
-#ifdef _CS_HW_SERIAL\r
- {"CS_HW_SERIAL", _CS_HW_SERIAL},\r
-#endif\r
-#ifdef _CS_INITTAB_NAME\r
- {"CS_INITTAB_NAME", _CS_INITTAB_NAME},\r
-#endif\r
-#ifdef _CS_LFS64_CFLAGS\r
- {"CS_LFS64_CFLAGS", _CS_LFS64_CFLAGS},\r
-#endif\r
-#ifdef _CS_LFS64_LDFLAGS\r
- {"CS_LFS64_LDFLAGS", _CS_LFS64_LDFLAGS},\r
-#endif\r
-#ifdef _CS_LFS64_LIBS\r
- {"CS_LFS64_LIBS", _CS_LFS64_LIBS},\r
-#endif\r
-#ifdef _CS_LFS64_LINTFLAGS\r
- {"CS_LFS64_LINTFLAGS", _CS_LFS64_LINTFLAGS},\r
-#endif\r
-#ifdef _CS_LFS_CFLAGS\r
- {"CS_LFS_CFLAGS", _CS_LFS_CFLAGS},\r
-#endif\r
-#ifdef _CS_LFS_LDFLAGS\r
- {"CS_LFS_LDFLAGS", _CS_LFS_LDFLAGS},\r
-#endif\r
-#ifdef _CS_LFS_LIBS\r
- {"CS_LFS_LIBS", _CS_LFS_LIBS},\r
-#endif\r
-#ifdef _CS_LFS_LINTFLAGS\r
- {"CS_LFS_LINTFLAGS", _CS_LFS_LINTFLAGS},\r
-#endif\r
-#ifdef _CS_MACHINE\r
- {"CS_MACHINE", _CS_MACHINE},\r
-#endif\r
-#ifdef _CS_PATH\r
- {"CS_PATH", _CS_PATH},\r
-#endif\r
-#ifdef _CS_RELEASE\r
- {"CS_RELEASE", _CS_RELEASE},\r
-#endif\r
-#ifdef _CS_SRPC_DOMAIN\r
- {"CS_SRPC_DOMAIN", _CS_SRPC_DOMAIN},\r
-#endif\r
-#ifdef _CS_SYSNAME\r
- {"CS_SYSNAME", _CS_SYSNAME},\r
-#endif\r
-#ifdef _CS_VERSION\r
- {"CS_VERSION", _CS_VERSION},\r
-#endif\r
-#ifdef _CS_XBS5_ILP32_OFF32_CFLAGS\r
- {"CS_XBS5_ILP32_OFF32_CFLAGS", _CS_XBS5_ILP32_OFF32_CFLAGS},\r
-#endif\r
-#ifdef _CS_XBS5_ILP32_OFF32_LDFLAGS\r
- {"CS_XBS5_ILP32_OFF32_LDFLAGS", _CS_XBS5_ILP32_OFF32_LDFLAGS},\r
-#endif\r
-#ifdef _CS_XBS5_ILP32_OFF32_LIBS\r
- {"CS_XBS5_ILP32_OFF32_LIBS", _CS_XBS5_ILP32_OFF32_LIBS},\r
-#endif\r
-#ifdef _CS_XBS5_ILP32_OFF32_LINTFLAGS\r
- {"CS_XBS5_ILP32_OFF32_LINTFLAGS", _CS_XBS5_ILP32_OFF32_LINTFLAGS},\r
-#endif\r
-#ifdef _CS_XBS5_ILP32_OFFBIG_CFLAGS\r
- {"CS_XBS5_ILP32_OFFBIG_CFLAGS", _CS_XBS5_ILP32_OFFBIG_CFLAGS},\r
-#endif\r
-#ifdef _CS_XBS5_ILP32_OFFBIG_LDFLAGS\r
- {"CS_XBS5_ILP32_OFFBIG_LDFLAGS", _CS_XBS5_ILP32_OFFBIG_LDFLAGS},\r
-#endif\r
-#ifdef _CS_XBS5_ILP32_OFFBIG_LIBS\r
- {"CS_XBS5_ILP32_OFFBIG_LIBS", _CS_XBS5_ILP32_OFFBIG_LIBS},\r
-#endif\r
-#ifdef _CS_XBS5_ILP32_OFFBIG_LINTFLAGS\r
- {"CS_XBS5_ILP32_OFFBIG_LINTFLAGS", _CS_XBS5_ILP32_OFFBIG_LINTFLAGS},\r
-#endif\r
-#ifdef _CS_XBS5_LP64_OFF64_CFLAGS\r
- {"CS_XBS5_LP64_OFF64_CFLAGS", _CS_XBS5_LP64_OFF64_CFLAGS},\r
-#endif\r
-#ifdef _CS_XBS5_LP64_OFF64_LDFLAGS\r
- {"CS_XBS5_LP64_OFF64_LDFLAGS", _CS_XBS5_LP64_OFF64_LDFLAGS},\r
-#endif\r
-#ifdef _CS_XBS5_LP64_OFF64_LIBS\r
- {"CS_XBS5_LP64_OFF64_LIBS", _CS_XBS5_LP64_OFF64_LIBS},\r
-#endif\r
-#ifdef _CS_XBS5_LP64_OFF64_LINTFLAGS\r
- {"CS_XBS5_LP64_OFF64_LINTFLAGS", _CS_XBS5_LP64_OFF64_LINTFLAGS},\r
-#endif\r
-#ifdef _CS_XBS5_LPBIG_OFFBIG_CFLAGS\r
- {"CS_XBS5_LPBIG_OFFBIG_CFLAGS", _CS_XBS5_LPBIG_OFFBIG_CFLAGS},\r
-#endif\r
-#ifdef _CS_XBS5_LPBIG_OFFBIG_LDFLAGS\r
- {"CS_XBS5_LPBIG_OFFBIG_LDFLAGS", _CS_XBS5_LPBIG_OFFBIG_LDFLAGS},\r
-#endif\r
-#ifdef _CS_XBS5_LPBIG_OFFBIG_LIBS\r
- {"CS_XBS5_LPBIG_OFFBIG_LIBS", _CS_XBS5_LPBIG_OFFBIG_LIBS},\r
-#endif\r
-#ifdef _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS\r
- {"CS_XBS5_LPBIG_OFFBIG_LINTFLAGS", _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS},\r
-#endif\r
-#ifdef _MIPS_CS_AVAIL_PROCESSORS\r
- {"MIPS_CS_AVAIL_PROCESSORS", _MIPS_CS_AVAIL_PROCESSORS},\r
-#endif\r
-#ifdef _MIPS_CS_BASE\r
- {"MIPS_CS_BASE", _MIPS_CS_BASE},\r
-#endif\r
-#ifdef _MIPS_CS_HOSTID\r
- {"MIPS_CS_HOSTID", _MIPS_CS_HOSTID},\r
-#endif\r
-#ifdef _MIPS_CS_HW_NAME\r
- {"MIPS_CS_HW_NAME", _MIPS_CS_HW_NAME},\r
-#endif\r
-#ifdef _MIPS_CS_NUM_PROCESSORS\r
- {"MIPS_CS_NUM_PROCESSORS", _MIPS_CS_NUM_PROCESSORS},\r
-#endif\r
-#ifdef _MIPS_CS_OSREL_MAJ\r
- {"MIPS_CS_OSREL_MAJ", _MIPS_CS_OSREL_MAJ},\r
-#endif\r
-#ifdef _MIPS_CS_OSREL_MIN\r
- {"MIPS_CS_OSREL_MIN", _MIPS_CS_OSREL_MIN},\r
-#endif\r
-#ifdef _MIPS_CS_OSREL_PATCH\r
- {"MIPS_CS_OSREL_PATCH", _MIPS_CS_OSREL_PATCH},\r
-#endif\r
-#ifdef _MIPS_CS_OS_NAME\r
- {"MIPS_CS_OS_NAME", _MIPS_CS_OS_NAME},\r
-#endif\r
-#ifdef _MIPS_CS_OS_PROVIDER\r
- {"MIPS_CS_OS_PROVIDER", _MIPS_CS_OS_PROVIDER},\r
-#endif\r
-#ifdef _MIPS_CS_PROCESSORS\r
- {"MIPS_CS_PROCESSORS", _MIPS_CS_PROCESSORS},\r
-#endif\r
-#ifdef _MIPS_CS_SERIAL\r
- {"MIPS_CS_SERIAL", _MIPS_CS_SERIAL},\r
-#endif\r
-#ifdef _MIPS_CS_VENDOR\r
- {"MIPS_CS_VENDOR", _MIPS_CS_VENDOR},\r
-#endif\r
-};\r
-\r
-static int\r
-conv_confstr_confname(PyObject *arg, int *valuep)\r
-{\r
- return conv_confname(arg, valuep, posix_constants_confstr,\r
- sizeof(posix_constants_confstr)\r
- / sizeof(struct constdef));\r
-}\r
-\r
-PyDoc_STRVAR(posix_confstr__doc__,\r
-"confstr(name) -> string\n\n\\r
-Return a string-valued system configuration variable.");\r
-\r
-static PyObject *\r
-posix_confstr(PyObject *self, PyObject *args)\r
-{\r
- PyObject *result = NULL;\r
- int name;\r
- char buffer[256];\r
-\r
- if (PyArg_ParseTuple(args, "O&:confstr", conv_confstr_confname, &name)) {\r
- int len;\r
-\r
- errno = 0;\r
- len = confstr(name, buffer, sizeof(buffer));\r
- if (len == 0) {\r
- if (errno) {\r
- posix_error();\r
- }\r
- else {\r
- result = Py_None;\r
- Py_INCREF(Py_None);\r
- }\r
- }\r
- else {\r
- if ((unsigned int)len >= sizeof(buffer)) {\r
- result = PyString_FromStringAndSize(NULL, len-1);\r
- if (result != NULL)\r
- confstr(name, PyString_AS_STRING(result), len);\r
- }\r
- else\r
- result = PyString_FromStringAndSize(buffer, len-1);\r
- }\r
- }\r
- return result;\r
-}\r
-#endif\r
-\r
-\r
-#ifdef HAVE_SYSCONF\r
-static struct constdef posix_constants_sysconf[] = {\r
-#ifdef _SC_2_CHAR_TERM\r
- {"SC_2_CHAR_TERM", _SC_2_CHAR_TERM},\r
-#endif\r
-#ifdef _SC_2_C_BIND\r
- {"SC_2_C_BIND", _SC_2_C_BIND},\r
-#endif\r
-#ifdef _SC_2_C_DEV\r
- {"SC_2_C_DEV", _SC_2_C_DEV},\r
-#endif\r
-#ifdef _SC_2_C_VERSION\r
- {"SC_2_C_VERSION", _SC_2_C_VERSION},\r
-#endif\r
-#ifdef _SC_2_FORT_DEV\r
- {"SC_2_FORT_DEV", _SC_2_FORT_DEV},\r
-#endif\r
-#ifdef _SC_2_FORT_RUN\r
- {"SC_2_FORT_RUN", _SC_2_FORT_RUN},\r
-#endif\r
-#ifdef _SC_2_LOCALEDEF\r
- {"SC_2_LOCALEDEF", _SC_2_LOCALEDEF},\r
-#endif\r
-#ifdef _SC_2_SW_DEV\r
- {"SC_2_SW_DEV", _SC_2_SW_DEV},\r
-#endif\r
-#ifdef _SC_2_UPE\r
- {"SC_2_UPE", _SC_2_UPE},\r
-#endif\r
-#ifdef _SC_2_VERSION\r
- {"SC_2_VERSION", _SC_2_VERSION},\r
-#endif\r
-#ifdef _SC_ABI_ASYNCHRONOUS_IO\r
- {"SC_ABI_ASYNCHRONOUS_IO", _SC_ABI_ASYNCHRONOUS_IO},\r
-#endif\r
-#ifdef _SC_ACL\r
- {"SC_ACL", _SC_ACL},\r
-#endif\r
-#ifdef _SC_AIO_LISTIO_MAX\r
- {"SC_AIO_LISTIO_MAX", _SC_AIO_LISTIO_MAX},\r
-#endif\r
-#ifdef _SC_AIO_MAX\r
- {"SC_AIO_MAX", _SC_AIO_MAX},\r
-#endif\r
-#ifdef _SC_AIO_PRIO_DELTA_MAX\r
- {"SC_AIO_PRIO_DELTA_MAX", _SC_AIO_PRIO_DELTA_MAX},\r
-#endif\r
-#ifdef _SC_ARG_MAX\r
- {"SC_ARG_MAX", _SC_ARG_MAX},\r
-#endif\r
-#ifdef _SC_ASYNCHRONOUS_IO\r
- {"SC_ASYNCHRONOUS_IO", _SC_ASYNCHRONOUS_IO},\r
-#endif\r
-#ifdef _SC_ATEXIT_MAX\r
- {"SC_ATEXIT_MAX", _SC_ATEXIT_MAX},\r
-#endif\r
-#ifdef _SC_AUDIT\r
- {"SC_AUDIT", _SC_AUDIT},\r
-#endif\r
-#ifdef _SC_AVPHYS_PAGES\r
- {"SC_AVPHYS_PAGES", _SC_AVPHYS_PAGES},\r
-#endif\r
-#ifdef _SC_BC_BASE_MAX\r
- {"SC_BC_BASE_MAX", _SC_BC_BASE_MAX},\r
-#endif\r
-#ifdef _SC_BC_DIM_MAX\r
- {"SC_BC_DIM_MAX", _SC_BC_DIM_MAX},\r
-#endif\r
-#ifdef _SC_BC_SCALE_MAX\r
- {"SC_BC_SCALE_MAX", _SC_BC_SCALE_MAX},\r
-#endif\r
-#ifdef _SC_BC_STRING_MAX\r
- {"SC_BC_STRING_MAX", _SC_BC_STRING_MAX},\r
-#endif\r
-#ifdef _SC_CAP\r
- {"SC_CAP", _SC_CAP},\r
-#endif\r
-#ifdef _SC_CHARCLASS_NAME_MAX\r
- {"SC_CHARCLASS_NAME_MAX", _SC_CHARCLASS_NAME_MAX},\r
-#endif\r
-#ifdef _SC_CHAR_BIT\r
- {"SC_CHAR_BIT", _SC_CHAR_BIT},\r
-#endif\r
-#ifdef _SC_CHAR_MAX\r
- {"SC_CHAR_MAX", _SC_CHAR_MAX},\r
-#endif\r
-#ifdef _SC_CHAR_MIN\r
- {"SC_CHAR_MIN", _SC_CHAR_MIN},\r
-#endif\r
-#ifdef _SC_CHILD_MAX\r
- {"SC_CHILD_MAX", _SC_CHILD_MAX},\r
-#endif\r
-#ifdef _SC_CLK_TCK\r
- {"SC_CLK_TCK", _SC_CLK_TCK},\r
-#endif\r
-#ifdef _SC_COHER_BLKSZ\r
- {"SC_COHER_BLKSZ", _SC_COHER_BLKSZ},\r
-#endif\r
-#ifdef _SC_COLL_WEIGHTS_MAX\r
- {"SC_COLL_WEIGHTS_MAX", _SC_COLL_WEIGHTS_MAX},\r
-#endif\r
-#ifdef _SC_DCACHE_ASSOC\r
- {"SC_DCACHE_ASSOC", _SC_DCACHE_ASSOC},\r
-#endif\r
-#ifdef _SC_DCACHE_BLKSZ\r
- {"SC_DCACHE_BLKSZ", _SC_DCACHE_BLKSZ},\r
-#endif\r
-#ifdef _SC_DCACHE_LINESZ\r
- {"SC_DCACHE_LINESZ", _SC_DCACHE_LINESZ},\r
-#endif\r
-#ifdef _SC_DCACHE_SZ\r
- {"SC_DCACHE_SZ", _SC_DCACHE_SZ},\r
-#endif\r
-#ifdef _SC_DCACHE_TBLKSZ\r
- {"SC_DCACHE_TBLKSZ", _SC_DCACHE_TBLKSZ},\r
-#endif\r
-#ifdef _SC_DELAYTIMER_MAX\r
- {"SC_DELAYTIMER_MAX", _SC_DELAYTIMER_MAX},\r
-#endif\r
-#ifdef _SC_EQUIV_CLASS_MAX\r
- {"SC_EQUIV_CLASS_MAX", _SC_EQUIV_CLASS_MAX},\r
-#endif\r
-#ifdef _SC_EXPR_NEST_MAX\r
- {"SC_EXPR_NEST_MAX", _SC_EXPR_NEST_MAX},\r
-#endif\r
-#ifdef _SC_FSYNC\r
- {"SC_FSYNC", _SC_FSYNC},\r
-#endif\r
-#ifdef _SC_GETGR_R_SIZE_MAX\r
- {"SC_GETGR_R_SIZE_MAX", _SC_GETGR_R_SIZE_MAX},\r
-#endif\r
-#ifdef _SC_GETPW_R_SIZE_MAX\r
- {"SC_GETPW_R_SIZE_MAX", _SC_GETPW_R_SIZE_MAX},\r
-#endif\r
-#ifdef _SC_ICACHE_ASSOC\r
- {"SC_ICACHE_ASSOC", _SC_ICACHE_ASSOC},\r
-#endif\r
-#ifdef _SC_ICACHE_BLKSZ\r
- {"SC_ICACHE_BLKSZ", _SC_ICACHE_BLKSZ},\r
-#endif\r
-#ifdef _SC_ICACHE_LINESZ\r
- {"SC_ICACHE_LINESZ", _SC_ICACHE_LINESZ},\r
-#endif\r
-#ifdef _SC_ICACHE_SZ\r
- {"SC_ICACHE_SZ", _SC_ICACHE_SZ},\r
-#endif\r
-#ifdef _SC_INF\r
- {"SC_INF", _SC_INF},\r
-#endif\r
-#ifdef _SC_INT_MAX\r
- {"SC_INT_MAX", _SC_INT_MAX},\r
-#endif\r
-#ifdef _SC_INT_MIN\r
- {"SC_INT_MIN", _SC_INT_MIN},\r
-#endif\r
-#ifdef _SC_IOV_MAX\r
- {"SC_IOV_MAX", _SC_IOV_MAX},\r
-#endif\r
-#ifdef _SC_IP_SECOPTS\r
- {"SC_IP_SECOPTS", _SC_IP_SECOPTS},\r
-#endif\r
-#ifdef _SC_JOB_CONTROL\r
- {"SC_JOB_CONTROL", _SC_JOB_CONTROL},\r
-#endif\r
-#ifdef _SC_KERN_POINTERS\r
- {"SC_KERN_POINTERS", _SC_KERN_POINTERS},\r
-#endif\r
-#ifdef _SC_KERN_SIM\r
- {"SC_KERN_SIM", _SC_KERN_SIM},\r
-#endif\r
-#ifdef _SC_LINE_MAX\r
- {"SC_LINE_MAX", _SC_LINE_MAX},\r
-#endif\r
-#ifdef _SC_LOGIN_NAME_MAX\r
- {"SC_LOGIN_NAME_MAX", _SC_LOGIN_NAME_MAX},\r
-#endif\r
-#ifdef _SC_LOGNAME_MAX\r
- {"SC_LOGNAME_MAX", _SC_LOGNAME_MAX},\r
-#endif\r
-#ifdef _SC_LONG_BIT\r
- {"SC_LONG_BIT", _SC_LONG_BIT},\r
-#endif\r
-#ifdef _SC_MAC\r
- {"SC_MAC", _SC_MAC},\r
-#endif\r
-#ifdef _SC_MAPPED_FILES\r
- {"SC_MAPPED_FILES", _SC_MAPPED_FILES},\r
-#endif\r
-#ifdef _SC_MAXPID\r
- {"SC_MAXPID", _SC_MAXPID},\r
-#endif\r
-#ifdef _SC_MB_LEN_MAX\r
- {"SC_MB_LEN_MAX", _SC_MB_LEN_MAX},\r
-#endif\r
-#ifdef _SC_MEMLOCK\r
- {"SC_MEMLOCK", _SC_MEMLOCK},\r
-#endif\r
-#ifdef _SC_MEMLOCK_RANGE\r
- {"SC_MEMLOCK_RANGE", _SC_MEMLOCK_RANGE},\r
-#endif\r
-#ifdef _SC_MEMORY_PROTECTION\r
- {"SC_MEMORY_PROTECTION", _SC_MEMORY_PROTECTION},\r
-#endif\r
-#ifdef _SC_MESSAGE_PASSING\r
- {"SC_MESSAGE_PASSING", _SC_MESSAGE_PASSING},\r
-#endif\r
-#ifdef _SC_MMAP_FIXED_ALIGNMENT\r
- {"SC_MMAP_FIXED_ALIGNMENT", _SC_MMAP_FIXED_ALIGNMENT},\r
-#endif\r
-#ifdef _SC_MQ_OPEN_MAX\r
- {"SC_MQ_OPEN_MAX", _SC_MQ_OPEN_MAX},\r
-#endif\r
-#ifdef _SC_MQ_PRIO_MAX\r
- {"SC_MQ_PRIO_MAX", _SC_MQ_PRIO_MAX},\r
-#endif\r
-#ifdef _SC_NACLS_MAX\r
- {"SC_NACLS_MAX", _SC_NACLS_MAX},\r
-#endif\r
-#ifdef _SC_NGROUPS_MAX\r
- {"SC_NGROUPS_MAX", _SC_NGROUPS_MAX},\r
-#endif\r
-#ifdef _SC_NL_ARGMAX\r
- {"SC_NL_ARGMAX", _SC_NL_ARGMAX},\r
-#endif\r
-#ifdef _SC_NL_LANGMAX\r
- {"SC_NL_LANGMAX", _SC_NL_LANGMAX},\r
-#endif\r
-#ifdef _SC_NL_MSGMAX\r
- {"SC_NL_MSGMAX", _SC_NL_MSGMAX},\r
-#endif\r
-#ifdef _SC_NL_NMAX\r
- {"SC_NL_NMAX", _SC_NL_NMAX},\r
-#endif\r
-#ifdef _SC_NL_SETMAX\r
- {"SC_NL_SETMAX", _SC_NL_SETMAX},\r
-#endif\r
-#ifdef _SC_NL_TEXTMAX\r
- {"SC_NL_TEXTMAX", _SC_NL_TEXTMAX},\r
-#endif\r
-#ifdef _SC_NPROCESSORS_CONF\r
- {"SC_NPROCESSORS_CONF", _SC_NPROCESSORS_CONF},\r
-#endif\r
-#ifdef _SC_NPROCESSORS_ONLN\r
- {"SC_NPROCESSORS_ONLN", _SC_NPROCESSORS_ONLN},\r
-#endif\r
-#ifdef _SC_NPROC_CONF\r
- {"SC_NPROC_CONF", _SC_NPROC_CONF},\r
-#endif\r
-#ifdef _SC_NPROC_ONLN\r
- {"SC_NPROC_ONLN", _SC_NPROC_ONLN},\r
-#endif\r
-#ifdef _SC_NZERO\r
- {"SC_NZERO", _SC_NZERO},\r
-#endif\r
-#ifdef _SC_OPEN_MAX\r
- {"SC_OPEN_MAX", _SC_OPEN_MAX},\r
-#endif\r
-#ifdef _SC_PAGESIZE\r
- {"SC_PAGESIZE", _SC_PAGESIZE},\r
-#endif\r
-#ifdef _SC_PAGE_SIZE\r
- {"SC_PAGE_SIZE", _SC_PAGE_SIZE},\r
-#endif\r
-#ifdef _SC_PASS_MAX\r
- {"SC_PASS_MAX", _SC_PASS_MAX},\r
-#endif\r
-#ifdef _SC_PHYS_PAGES\r
- {"SC_PHYS_PAGES", _SC_PHYS_PAGES},\r
-#endif\r
-#ifdef _SC_PII\r
- {"SC_PII", _SC_PII},\r
-#endif\r
-#ifdef _SC_PII_INTERNET\r
- {"SC_PII_INTERNET", _SC_PII_INTERNET},\r
-#endif\r
-#ifdef _SC_PII_INTERNET_DGRAM\r
- {"SC_PII_INTERNET_DGRAM", _SC_PII_INTERNET_DGRAM},\r
-#endif\r
-#ifdef _SC_PII_INTERNET_STREAM\r
- {"SC_PII_INTERNET_STREAM", _SC_PII_INTERNET_STREAM},\r
-#endif\r
-#ifdef _SC_PII_OSI\r
- {"SC_PII_OSI", _SC_PII_OSI},\r
-#endif\r
-#ifdef _SC_PII_OSI_CLTS\r
- {"SC_PII_OSI_CLTS", _SC_PII_OSI_CLTS},\r
-#endif\r
-#ifdef _SC_PII_OSI_COTS\r
- {"SC_PII_OSI_COTS", _SC_PII_OSI_COTS},\r
-#endif\r
-#ifdef _SC_PII_OSI_M\r
- {"SC_PII_OSI_M", _SC_PII_OSI_M},\r
-#endif\r
-#ifdef _SC_PII_SOCKET\r
- {"SC_PII_SOCKET", _SC_PII_SOCKET},\r
-#endif\r
-#ifdef _SC_PII_XTI\r
- {"SC_PII_XTI", _SC_PII_XTI},\r
-#endif\r
-#ifdef _SC_POLL\r
- {"SC_POLL", _SC_POLL},\r
-#endif\r
-#ifdef _SC_PRIORITIZED_IO\r
- {"SC_PRIORITIZED_IO", _SC_PRIORITIZED_IO},\r
-#endif\r
-#ifdef _SC_PRIORITY_SCHEDULING\r
- {"SC_PRIORITY_SCHEDULING", _SC_PRIORITY_SCHEDULING},\r
-#endif\r
-#ifdef _SC_REALTIME_SIGNALS\r
- {"SC_REALTIME_SIGNALS", _SC_REALTIME_SIGNALS},\r
-#endif\r
-#ifdef _SC_RE_DUP_MAX\r
- {"SC_RE_DUP_MAX", _SC_RE_DUP_MAX},\r
-#endif\r
-#ifdef _SC_RTSIG_MAX\r
- {"SC_RTSIG_MAX", _SC_RTSIG_MAX},\r
-#endif\r
-#ifdef _SC_SAVED_IDS\r
- {"SC_SAVED_IDS", _SC_SAVED_IDS},\r
-#endif\r
-#ifdef _SC_SCHAR_MAX\r
- {"SC_SCHAR_MAX", _SC_SCHAR_MAX},\r
-#endif\r
-#ifdef _SC_SCHAR_MIN\r
- {"SC_SCHAR_MIN", _SC_SCHAR_MIN},\r
-#endif\r
-#ifdef _SC_SELECT\r
- {"SC_SELECT", _SC_SELECT},\r
-#endif\r
-#ifdef _SC_SEMAPHORES\r
- {"SC_SEMAPHORES", _SC_SEMAPHORES},\r
-#endif\r
-#ifdef _SC_SEM_NSEMS_MAX\r
- {"SC_SEM_NSEMS_MAX", _SC_SEM_NSEMS_MAX},\r
-#endif\r
-#ifdef _SC_SEM_VALUE_MAX\r
- {"SC_SEM_VALUE_MAX", _SC_SEM_VALUE_MAX},\r
-#endif\r
-#ifdef _SC_SHARED_MEMORY_OBJECTS\r
- {"SC_SHARED_MEMORY_OBJECTS", _SC_SHARED_MEMORY_OBJECTS},\r
-#endif\r
-#ifdef _SC_SHRT_MAX\r
- {"SC_SHRT_MAX", _SC_SHRT_MAX},\r
-#endif\r
-#ifdef _SC_SHRT_MIN\r
- {"SC_SHRT_MIN", _SC_SHRT_MIN},\r
-#endif\r
-#ifdef _SC_SIGQUEUE_MAX\r
- {"SC_SIGQUEUE_MAX", _SC_SIGQUEUE_MAX},\r
-#endif\r
-#ifdef _SC_SIGRT_MAX\r
- {"SC_SIGRT_MAX", _SC_SIGRT_MAX},\r
-#endif\r
-#ifdef _SC_SIGRT_MIN\r
- {"SC_SIGRT_MIN", _SC_SIGRT_MIN},\r
-#endif\r
-#ifdef _SC_SOFTPOWER\r
- {"SC_SOFTPOWER", _SC_SOFTPOWER},\r
-#endif\r
-#ifdef _SC_SPLIT_CACHE\r
- {"SC_SPLIT_CACHE", _SC_SPLIT_CACHE},\r
-#endif\r
-#ifdef _SC_SSIZE_MAX\r
- {"SC_SSIZE_MAX", _SC_SSIZE_MAX},\r
-#endif\r
-#ifdef _SC_STACK_PROT\r
- {"SC_STACK_PROT", _SC_STACK_PROT},\r
-#endif\r
-#ifdef _SC_STREAM_MAX\r
- {"SC_STREAM_MAX", _SC_STREAM_MAX},\r
-#endif\r
-#ifdef _SC_SYNCHRONIZED_IO\r
- {"SC_SYNCHRONIZED_IO", _SC_SYNCHRONIZED_IO},\r
-#endif\r
-#ifdef _SC_THREADS\r
- {"SC_THREADS", _SC_THREADS},\r
-#endif\r
-#ifdef _SC_THREAD_ATTR_STACKADDR\r
- {"SC_THREAD_ATTR_STACKADDR", _SC_THREAD_ATTR_STACKADDR},\r
-#endif\r
-#ifdef _SC_THREAD_ATTR_STACKSIZE\r
- {"SC_THREAD_ATTR_STACKSIZE", _SC_THREAD_ATTR_STACKSIZE},\r
-#endif\r
-#ifdef _SC_THREAD_DESTRUCTOR_ITERATIONS\r
- {"SC_THREAD_DESTRUCTOR_ITERATIONS", _SC_THREAD_DESTRUCTOR_ITERATIONS},\r
-#endif\r
-#ifdef _SC_THREAD_KEYS_MAX\r
- {"SC_THREAD_KEYS_MAX", _SC_THREAD_KEYS_MAX},\r
-#endif\r
-#ifdef _SC_THREAD_PRIORITY_SCHEDULING\r
- {"SC_THREAD_PRIORITY_SCHEDULING", _SC_THREAD_PRIORITY_SCHEDULING},\r
-#endif\r
-#ifdef _SC_THREAD_PRIO_INHERIT\r
- {"SC_THREAD_PRIO_INHERIT", _SC_THREAD_PRIO_INHERIT},\r
-#endif\r
-#ifdef _SC_THREAD_PRIO_PROTECT\r
- {"SC_THREAD_PRIO_PROTECT", _SC_THREAD_PRIO_PROTECT},\r
-#endif\r
-#ifdef _SC_THREAD_PROCESS_SHARED\r
- {"SC_THREAD_PROCESS_SHARED", _SC_THREAD_PROCESS_SHARED},\r
-#endif\r
-#ifdef _SC_THREAD_SAFE_FUNCTIONS\r
- {"SC_THREAD_SAFE_FUNCTIONS", _SC_THREAD_SAFE_FUNCTIONS},\r
-#endif\r
-#ifdef _SC_THREAD_STACK_MIN\r
- {"SC_THREAD_STACK_MIN", _SC_THREAD_STACK_MIN},\r
-#endif\r
-#ifdef _SC_THREAD_THREADS_MAX\r
- {"SC_THREAD_THREADS_MAX", _SC_THREAD_THREADS_MAX},\r
-#endif\r
-#ifdef _SC_TIMERS\r
- {"SC_TIMERS", _SC_TIMERS},\r
-#endif\r
-#ifdef _SC_TIMER_MAX\r
- {"SC_TIMER_MAX", _SC_TIMER_MAX},\r
-#endif\r
-#ifdef _SC_TTY_NAME_MAX\r
- {"SC_TTY_NAME_MAX", _SC_TTY_NAME_MAX},\r
-#endif\r
-#ifdef _SC_TZNAME_MAX\r
- {"SC_TZNAME_MAX", _SC_TZNAME_MAX},\r
-#endif\r
-#ifdef _SC_T_IOV_MAX\r
- {"SC_T_IOV_MAX", _SC_T_IOV_MAX},\r
-#endif\r
-#ifdef _SC_UCHAR_MAX\r
- {"SC_UCHAR_MAX", _SC_UCHAR_MAX},\r
-#endif\r
-#ifdef _SC_UINT_MAX\r
- {"SC_UINT_MAX", _SC_UINT_MAX},\r
-#endif\r
-#ifdef _SC_UIO_MAXIOV\r
- {"SC_UIO_MAXIOV", _SC_UIO_MAXIOV},\r
-#endif\r
-#ifdef _SC_ULONG_MAX\r
- {"SC_ULONG_MAX", _SC_ULONG_MAX},\r
-#endif\r
-#ifdef _SC_USHRT_MAX\r
- {"SC_USHRT_MAX", _SC_USHRT_MAX},\r
-#endif\r
-#ifdef _SC_VERSION\r
- {"SC_VERSION", _SC_VERSION},\r
-#endif\r
-#ifdef _SC_WORD_BIT\r
- {"SC_WORD_BIT", _SC_WORD_BIT},\r
-#endif\r
-#ifdef _SC_XBS5_ILP32_OFF32\r
- {"SC_XBS5_ILP32_OFF32", _SC_XBS5_ILP32_OFF32},\r
-#endif\r
-#ifdef _SC_XBS5_ILP32_OFFBIG\r
- {"SC_XBS5_ILP32_OFFBIG", _SC_XBS5_ILP32_OFFBIG},\r
-#endif\r
-#ifdef _SC_XBS5_LP64_OFF64\r
- {"SC_XBS5_LP64_OFF64", _SC_XBS5_LP64_OFF64},\r
-#endif\r
-#ifdef _SC_XBS5_LPBIG_OFFBIG\r
- {"SC_XBS5_LPBIG_OFFBIG", _SC_XBS5_LPBIG_OFFBIG},\r
-#endif\r
-#ifdef _SC_XOPEN_CRYPT\r
- {"SC_XOPEN_CRYPT", _SC_XOPEN_CRYPT},\r
-#endif\r
-#ifdef _SC_XOPEN_ENH_I18N\r
- {"SC_XOPEN_ENH_I18N", _SC_XOPEN_ENH_I18N},\r
-#endif\r
-#ifdef _SC_XOPEN_LEGACY\r
- {"SC_XOPEN_LEGACY", _SC_XOPEN_LEGACY},\r
-#endif\r
-#ifdef _SC_XOPEN_REALTIME\r
- {"SC_XOPEN_REALTIME", _SC_XOPEN_REALTIME},\r
-#endif\r
-#ifdef _SC_XOPEN_REALTIME_THREADS\r
- {"SC_XOPEN_REALTIME_THREADS", _SC_XOPEN_REALTIME_THREADS},\r
-#endif\r
-#ifdef _SC_XOPEN_SHM\r
- {"SC_XOPEN_SHM", _SC_XOPEN_SHM},\r
-#endif\r
-#ifdef _SC_XOPEN_UNIX\r
- {"SC_XOPEN_UNIX", _SC_XOPEN_UNIX},\r
-#endif\r
-#ifdef _SC_XOPEN_VERSION\r
- {"SC_XOPEN_VERSION", _SC_XOPEN_VERSION},\r
-#endif\r
-#ifdef _SC_XOPEN_XCU_VERSION\r
- {"SC_XOPEN_XCU_VERSION", _SC_XOPEN_XCU_VERSION},\r
-#endif\r
-#ifdef _SC_XOPEN_XPG2\r
- {"SC_XOPEN_XPG2", _SC_XOPEN_XPG2},\r
-#endif\r
-#ifdef _SC_XOPEN_XPG3\r
- {"SC_XOPEN_XPG3", _SC_XOPEN_XPG3},\r
-#endif\r
-#ifdef _SC_XOPEN_XPG4\r
- {"SC_XOPEN_XPG4", _SC_XOPEN_XPG4},\r
-#endif\r
-};\r