]> granicus.if.org Git - python/commitdiff
Issue #12196: Make os.pipe2() flags argument mandatory.
authorCharles-François Natali <neologix@free.fr>
Mon, 6 Jun 2011 17:49:47 +0000 (19:49 +0200)
committerCharles-François Natali <neologix@free.fr>
Mon, 6 Jun 2011 17:49:47 +0000 (19:49 +0200)
Doc/library/os.rst
Lib/test/test_posix.py
Modules/posixmodule.c

index c62a00db7a20e5ca1831fd342f0a5d8de928144f..06f6b7f6b6796950e3f44c3973e961a4820a38cd 100644 (file)
@@ -1019,11 +1019,11 @@ as internal buffering of data.
    Availability: Unix, Windows.
 
 
-.. function:: pipe2(flags=0)
+.. function:: pipe2(flags)
 
    Create a pipe with *flags* set atomically.
-   *flags* is optional and can be constructed by ORing together zero or more of
-   these values: :data:`O_NONBLOCK`, :data:`O_CLOEXEC`.
+   *flags* can be constructed by ORing together one or more of these values:
+   :data:`O_NONBLOCK`, :data:`O_CLOEXEC`.
    Return a pair of file descriptors ``(r, w)`` usable for reading and writing,
    respectively.
 
index 421ea68776b76f0e134fa1f2a44570d41c328ba8..70a47b02f425c1108f88ba182c8d33a32edeaa3f 100644 (file)
@@ -481,8 +481,8 @@ class PosixTester(unittest.TestCase):
         self.assertRaises(TypeError, os.pipe2, 'DEADBEEF')
         self.assertRaises(TypeError, os.pipe2, 0, 0)
 
-        # try calling without flag, like os.pipe()
-        r, w = os.pipe2()
+        # try calling with flags = 0, like os.pipe()
+        r, w = os.pipe2(0)
         os.close(r)
         os.close(w)
 
index e529afdb350c1c754a25e42a5abad1c4215f3489..acc420fd042c4bc6ec4c60992c037ac436f5c056 100644 (file)
@@ -6549,20 +6549,21 @@ posix_pipe(PyObject *self, PyObject *noargs)
 
 #ifdef HAVE_PIPE2
 PyDoc_STRVAR(posix_pipe2__doc__,
-"pipe2(flags=0) -> (read_end, write_end)\n\n\
-Create a pipe with flags set atomically.\
-flags is optional and can be constructed by ORing together zero or more\n\
-of these values: O_NONBLOCK, O_CLOEXEC.\n\
+"pipe2(flags) -> (read_end, write_end)\n\n\
+Create a pipe with flags set atomically.\n\
+flags can be constructed by ORing together one or more of these values:\n\
+O_NONBLOCK, O_CLOEXEC.\n\
 ");
 
 static PyObject *
-posix_pipe2(PyObject *self, PyObject *args)
+posix_pipe2(PyObject *self, PyObject *arg)
 {
-    int flags = 0;
+    int flags;
     int fds[2];
     int res;
 
-    if (!PyArg_ParseTuple(args, "|i:pipe2", &flags))
+    flags = PyLong_AsLong(arg);
+    if (flags == -1 && PyErr_Occurred())
         return NULL;
 
     res = pipe2(fds, flags);
@@ -9467,7 +9468,7 @@ static PyMethodDef posix_methods[] = {
     {"pipe",            posix_pipe, METH_NOARGS, posix_pipe__doc__},
 #endif
 #ifdef HAVE_PIPE2
-    {"pipe2",           posix_pipe2, METH_VARARGS, posix_pipe2__doc__},
+    {"pipe2",           posix_pipe2, METH_O, posix_pipe2__doc__},
 #endif
 #ifdef HAVE_MKFIFO
     {"mkfifo",          posix_mkfifo, METH_VARARGS, posix_mkfifo__doc__},