Mercurial > cpython-lru_cache-weakref
annotate Modules/fcntlmodule.c @ 70817:dd775b1561ba
Fix markup.
| author | Georg Brandl <georg@python.org> |
|---|---|
| date | Tue, 14 Jun 2011 21:09:55 +0200 |
| parents | 3c9232a684ae |
| children | cee6fdd6436d |
| rev | line source |
|---|---|
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1 |
|
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
2 /* fcntl module */ |
|
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
3 |
| 36793 | 4 #define PY_SSIZE_T_CLEAN |
| 5 | |
|
4757
e1f1725cae6d
Grandly renamed.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4623
diff
changeset
|
6 #include "Python.h" |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
7 |
| 4600 | 8 #ifdef HAVE_SYS_FILE_H |
| 9 #include <sys/file.h> | |
| 10 #endif | |
| 11 | |
|
4623
1fab981465c8
Include <sys/ioctl.h>, to keep gcc -Wall happy.
Guido van Rossum <guido@python.org>
parents:
4600
diff
changeset
|
12 #include <sys/ioctl.h> |
|
3662
399470a958c2
A fcntl implementation for systems (like Solaris) without flock() call.
Guido van Rossum <guido@python.org>
parents:
3598
diff
changeset
|
13 #include <fcntl.h> |
|
26998
6ca1c0d3ef19
Expose I_ constants. Auto-detect stropts.h. Properly configure the slave terminal.
Martin v. Löwis <martin@v.loewis.de>
parents:
24471
diff
changeset
|
14 #ifdef HAVE_STROPTS_H |
|
6ca1c0d3ef19
Expose I_ constants. Auto-detect stropts.h. Properly configure the slave terminal.
Martin v. Löwis <martin@v.loewis.de>
parents:
24471
diff
changeset
|
15 #include <stropts.h> |
|
6ca1c0d3ef19
Expose I_ constants. Auto-detect stropts.h. Properly configure the slave terminal.
Martin v. Löwis <martin@v.loewis.de>
parents:
24471
diff
changeset
|
16 #endif |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
17 |
|
17743
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
18 static int |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
19 conv_descriptor(PyObject *object, int *target) |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
20 { |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
21 int fd = PyObject_AsFileDescriptor(object); |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
22 |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
23 if (fd < 0) |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
24 return 0; |
|
17743
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
25 *target = fd; |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
26 return 1; |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
27 } |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
28 |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
29 |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
30 /* fcntl(fd, opt, [arg]) */ |
|
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
31 |
|
4757
e1f1725cae6d
Grandly renamed.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4623
diff
changeset
|
32 static PyObject * |
|
13519
070e41f2697b
ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents:
13256
diff
changeset
|
33 fcntl_fcntl(PyObject *self, PyObject *args) |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
34 { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
35 int fd; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
36 int code; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
37 long arg; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
38 int ret; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
39 char *str; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
40 Py_ssize_t len; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
41 char buf[1024]; |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
42 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
43 if (PyArg_ParseTuple(args, "O&is#:fcntl", |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
44 conv_descriptor, &fd, &code, &str, &len)) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
45 if (len > sizeof buf) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
46 PyErr_SetString(PyExc_ValueError, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
47 "fcntl string arg too long"); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
48 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
49 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
50 memcpy(buf, str, len); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
51 Py_BEGIN_ALLOW_THREADS |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
52 ret = fcntl(fd, code, buf); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
53 Py_END_ALLOW_THREADS |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
54 if (ret < 0) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
55 PyErr_SetFromErrno(PyExc_IOError); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
56 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
57 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
58 return PyBytes_FromStringAndSize(buf, len); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
59 } |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
60 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
61 PyErr_Clear(); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
62 arg = 0; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
63 if (!PyArg_ParseTuple(args, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
64 "O&i|l;fcntl requires a file or file descriptor," |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
65 " an integer and optionally a third integer or a string", |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
66 conv_descriptor, &fd, &code, &arg)) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
67 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
68 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
69 Py_BEGIN_ALLOW_THREADS |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
70 ret = fcntl(fd, code, arg); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
71 Py_END_ALLOW_THREADS |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
72 if (ret < 0) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
73 PyErr_SetFromErrno(PyExc_IOError); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
74 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
75 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
76 return PyLong_FromLong((long)ret); |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
77 } |
|
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
78 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
22114
diff
changeset
|
79 PyDoc_STRVAR(fcntl_doc, |
|
9506
04426224302a
Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents:
6055
diff
changeset
|
80 "fcntl(fd, opt, [arg])\n\ |
|
04426224302a
Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents:
6055
diff
changeset
|
81 \n\ |
|
04426224302a
Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents:
6055
diff
changeset
|
82 Perform the requested operation on file descriptor fd. The operation\n\ |
|
17765
2f0df9f0b088
Fix the fcntl() docstring so the user is not mis-directed to the FCNTL
Fred Drake <fdrake@acm.org>
parents:
17743
diff
changeset
|
83 is defined by op and is operating system dependent. These constants are\n\ |
|
2f0df9f0b088
Fix the fcntl() docstring so the user is not mis-directed to the FCNTL
Fred Drake <fdrake@acm.org>
parents:
17743
diff
changeset
|
84 available from the fcntl module. The argument arg is optional, and\n\ |
|
65119
f00440af9413
Merged revisions 84249,84264,84326-84327,84407,84476,84480-84482,84484,84530-84531,84553,84619,84684,84915-84916 via svnmerge from
Georg Brandl <georg@python.org>
parents:
64526
diff
changeset
|
85 defaults to 0; it may be an int or a string. If arg is given as a string,\n\ |
|
17765
2f0df9f0b088
Fix the fcntl() docstring so the user is not mis-directed to the FCNTL
Fred Drake <fdrake@acm.org>
parents:
17743
diff
changeset
|
86 the return value of fcntl is a string of that length, containing the\n\ |
|
65119
f00440af9413
Merged revisions 84249,84264,84326-84327,84407,84476,84480-84482,84484,84530-84531,84553,84619,84684,84915-84916 via svnmerge from
Georg Brandl <georg@python.org>
parents:
64526
diff
changeset
|
87 resulting value put in the arg buffer by the operating system. The length\n\ |
|
f00440af9413
Merged revisions 84249,84264,84326-84327,84407,84476,84480-84482,84484,84530-84531,84553,84619,84684,84915-84916 via svnmerge from
Georg Brandl <georg@python.org>
parents:
64526
diff
changeset
|
88 of the arg string is not allowed to exceed 1024 bytes. If the arg given\n\ |
|
17765
2f0df9f0b088
Fix the fcntl() docstring so the user is not mis-directed to the FCNTL
Fred Drake <fdrake@acm.org>
parents:
17743
diff
changeset
|
89 is an integer or if none is specified, the result value is an integer\n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
22114
diff
changeset
|
90 corresponding to the return value of the fcntl call in the C code."); |
|
9506
04426224302a
Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents:
6055
diff
changeset
|
91 |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
92 |
|
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
93 /* ioctl(fd, opt, [arg]) */ |
|
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
94 |
|
4757
e1f1725cae6d
Grandly renamed.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4623
diff
changeset
|
95 static PyObject * |
|
13519
070e41f2697b
ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents:
13256
diff
changeset
|
96 fcntl_ioctl(PyObject *self, PyObject *args) |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
97 { |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
36806
diff
changeset
|
98 #define IOCTL_BUFSZ 1024 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
99 int fd; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
100 /* In PyArg_ParseTuple below, we use the unsigned non-checked 'I' |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
101 format for the 'code' parameter because Python turns 0x8000000 |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
102 into either a large positive number (PyLong or PyInt on 64-bit |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
103 platforms) or a negative number on others (32-bit PyInt) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
104 whereas the system expects it to be a 32bit bit field value |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
105 regardless of it being passed as an int or unsigned long on |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
106 various platforms. See the termios.TIOCSWINSZ constant across |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
107 platforms for an example of thise. |
|
45955
36e296e66d21
Merged revisions 61644,61646-61647,61649-61652,61656-61658,61663,61665,61667 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
108 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
109 If any of the 64bit platforms ever decide to use more than 32bits |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
110 in their unsigned long ioctl codes this will break and need |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
111 special casing based on the platform being built on. |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
112 */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
113 unsigned int code; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
114 int arg; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
115 int ret; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
116 Py_buffer pstr; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
117 char *str; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
118 Py_ssize_t len; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
119 int mutate_arg = 1; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
120 char buf[IOCTL_BUFSZ+1]; /* argument plus NUL byte */ |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
121 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
122 if (PyArg_ParseTuple(args, "O&Iw*|i:ioctl", |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
123 conv_descriptor, &fd, &code, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
124 &pstr, &mutate_arg)) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
125 char *arg; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
126 str = pstr.buf; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
127 len = pstr.len; |
| 28145 | 128 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
129 if (mutate_arg) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
130 if (len <= IOCTL_BUFSZ) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
131 memcpy(buf, str, len); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
132 buf[len] = '\0'; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
133 arg = buf; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
134 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
135 else { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
136 arg = str; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
137 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
138 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
139 else { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
140 if (len > IOCTL_BUFSZ) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
141 PyBuffer_Release(&pstr); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
142 PyErr_SetString(PyExc_ValueError, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
143 "ioctl string arg too long"); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
144 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
145 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
146 else { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
147 memcpy(buf, str, len); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
148 buf[len] = '\0'; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
149 arg = buf; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
150 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
151 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
152 if (buf == arg) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
153 Py_BEGIN_ALLOW_THREADS /* think array.resize() */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
154 ret = ioctl(fd, code, arg); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
155 Py_END_ALLOW_THREADS |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
156 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
157 else { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
158 ret = ioctl(fd, code, arg); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
159 } |
|
64526
3e5a89376df5
Merged revisions 84589 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61466
diff
changeset
|
160 if (mutate_arg && (len <= IOCTL_BUFSZ)) { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
161 memcpy(str, buf, len); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
162 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
163 PyBuffer_Release(&pstr); /* No further access to str below this point */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
164 if (ret < 0) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
165 PyErr_SetFromErrno(PyExc_IOError); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
166 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
167 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
168 if (mutate_arg) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
169 return PyLong_FromLong(ret); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
170 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
171 else { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
172 return PyBytes_FromStringAndSize(buf, len); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
173 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
174 } |
| 28145 | 175 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
176 PyErr_Clear(); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
177 if (PyArg_ParseTuple(args, "O&Is*:ioctl", |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
178 conv_descriptor, &fd, &code, &pstr)) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
179 str = pstr.buf; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
180 len = pstr.len; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
181 if (len > IOCTL_BUFSZ) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
182 PyBuffer_Release(&pstr); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
183 PyErr_SetString(PyExc_ValueError, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
184 "ioctl string arg too long"); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
185 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
186 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
187 memcpy(buf, str, len); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
188 buf[len] = '\0'; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
189 Py_BEGIN_ALLOW_THREADS |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
190 ret = ioctl(fd, code, buf); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
191 Py_END_ALLOW_THREADS |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
192 if (ret < 0) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
193 PyBuffer_Release(&pstr); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
194 PyErr_SetFromErrno(PyExc_IOError); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
195 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
196 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
197 PyBuffer_Release(&pstr); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
198 return PyBytes_FromStringAndSize(buf, len); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
199 } |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
200 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
201 PyErr_Clear(); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
202 arg = 0; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
203 if (!PyArg_ParseTuple(args, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
204 "O&I|i;ioctl requires a file or file descriptor," |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
205 " an integer and optionally an integer or buffer argument", |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
206 conv_descriptor, &fd, &code, &arg)) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
207 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
208 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
209 Py_BEGIN_ALLOW_THREADS |
|
28949
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28145
diff
changeset
|
210 #ifdef __VMS |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
211 ret = ioctl(fd, code, (void *)arg); |
|
28949
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28145
diff
changeset
|
212 #else |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
213 ret = ioctl(fd, code, arg); |
|
28949
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28145
diff
changeset
|
214 #endif |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
215 Py_END_ALLOW_THREADS |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
216 if (ret < 0) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
217 PyErr_SetFromErrno(PyExc_IOError); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
218 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
219 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
220 return PyLong_FromLong((long)ret); |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
36806
diff
changeset
|
221 #undef IOCTL_BUFSZ |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
222 } |
|
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
223 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
22114
diff
changeset
|
224 PyDoc_STRVAR(ioctl_doc, |
| 28145 | 225 "ioctl(fd, opt[, arg[, mutate_flag]])\n\ |
| 226 \n\ | |
| 227 Perform the requested operation on file descriptor fd. The operation is\n\ | |
|
29693
d7164fbec7ce
Fix typo, refer to proper argument name
Neal Norwitz <nnorwitz@gmail.com>
parents:
29045
diff
changeset
|
228 defined by opt and is operating system dependent. Typically these codes are\n\ |
| 28145 | 229 retrieved from the fcntl or termios library modules.\n\ |
| 230 \n\ | |
| 231 The argument arg is optional, and defaults to 0; it may be an int or a\n\ | |
| 232 buffer containing character data (most likely a string or an array). \n\ | |
|
9506
04426224302a
Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents:
6055
diff
changeset
|
233 \n\ |
| 28145 | 234 If the argument is a mutable buffer (such as an array) and if the\n\ |
| 235 mutate_flag argument (which is only allowed in this case) is true then the\n\ | |
| 236 buffer is (in effect) passed to the operating system and changes made by\n\ | |
| 237 the OS will be reflected in the contents of the buffer after the call has\n\ | |
| 238 returned. The return value is the integer returned by the ioctl system\n\ | |
| 239 call.\n\ | |
| 240 \n\ | |
| 241 If the argument is a mutable buffer and the mutable_flag argument is not\n\ | |
| 242 passed or is false, the behavior is as if a string had been passed. This\n\ | |
| 243 behavior will change in future releases of Python.\n\ | |
| 244 \n\ | |
| 245 If the argument is an immutable buffer (most likely a string) then a copy\n\ | |
| 246 of the buffer is passed to the operating system and the return value is a\n\ | |
| 247 string of the same length containing whatever the operating system put in\n\ | |
| 248 the buffer. The length of the arg buffer in this case is not allowed to\n\ | |
| 249 exceed 1024 bytes.\n\ | |
| 250 \n\ | |
| 251 If the arg given is an integer or if none is specified, the result value is\n\ | |
| 252 an integer corresponding to the return value of the ioctl call in the C\n\ | |
| 253 code."); | |
|
9506
04426224302a
Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents:
6055
diff
changeset
|
254 |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
255 |
| 3598 | 256 /* flock(fd, operation) */ |
| 257 | |
|
4757
e1f1725cae6d
Grandly renamed.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4623
diff
changeset
|
258 static PyObject * |
|
13519
070e41f2697b
ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents:
13256
diff
changeset
|
259 fcntl_flock(PyObject *self, PyObject *args) |
| 3598 | 260 { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
261 int fd; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
262 int code; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
263 int ret; |
| 3598 | 264 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
265 if (!PyArg_ParseTuple(args, "O&i:flock", |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
266 conv_descriptor, &fd, &code)) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
267 return NULL; |
| 3598 | 268 |
|
9786
40f723ac26e8
Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents:
9588
diff
changeset
|
269 #ifdef HAVE_FLOCK |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
270 Py_BEGIN_ALLOW_THREADS |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
271 ret = flock(fd, code); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
272 Py_END_ALLOW_THREADS |
|
3662
399470a958c2
A fcntl implementation for systems (like Solaris) without flock() call.
Guido van Rossum <guido@python.org>
parents:
3598
diff
changeset
|
273 #else |
|
399470a958c2
A fcntl implementation for systems (like Solaris) without flock() call.
Guido van Rossum <guido@python.org>
parents:
3598
diff
changeset
|
274 |
|
399470a958c2
A fcntl implementation for systems (like Solaris) without flock() call.
Guido van Rossum <guido@python.org>
parents:
3598
diff
changeset
|
275 #ifndef LOCK_SH |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
276 #define LOCK_SH 1 /* shared lock */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
277 #define LOCK_EX 2 /* exclusive lock */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
278 #define LOCK_NB 4 /* don't block when locking */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
279 #define LOCK_UN 8 /* unlock */ |
|
3662
399470a958c2
A fcntl implementation for systems (like Solaris) without flock() call.
Guido van Rossum <guido@python.org>
parents:
3598
diff
changeset
|
280 #endif |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
281 { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
282 struct flock l; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
283 if (code == LOCK_UN) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
284 l.l_type = F_UNLCK; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
285 else if (code & LOCK_SH) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
286 l.l_type = F_RDLCK; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
287 else if (code & LOCK_EX) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
288 l.l_type = F_WRLCK; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
289 else { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
290 PyErr_SetString(PyExc_ValueError, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
291 "unrecognized flock argument"); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
292 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
293 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
294 l.l_whence = l.l_start = l.l_len = 0; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
295 Py_BEGIN_ALLOW_THREADS |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
296 ret = fcntl(fd, (code & LOCK_NB) ? F_SETLK : F_SETLKW, &l); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
297 Py_END_ALLOW_THREADS |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
298 } |
|
3662
399470a958c2
A fcntl implementation for systems (like Solaris) without flock() call.
Guido van Rossum <guido@python.org>
parents:
3598
diff
changeset
|
299 #endif /* HAVE_FLOCK */ |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
300 if (ret < 0) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
301 PyErr_SetFromErrno(PyExc_IOError); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
302 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
303 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
304 Py_INCREF(Py_None); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
305 return Py_None; |
| 3598 | 306 } |
| 307 | |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
22114
diff
changeset
|
308 PyDoc_STRVAR(flock_doc, |
|
9506
04426224302a
Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents:
6055
diff
changeset
|
309 "flock(fd, operation)\n\ |
|
04426224302a
Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents:
6055
diff
changeset
|
310 \n\ |
|
04426224302a
Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents:
6055
diff
changeset
|
311 Perform the lock operation op on file descriptor fd. See the Unix \n\ |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38453
diff
changeset
|
312 manual page for flock(3) for details. (On some systems, this function is\n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
22114
diff
changeset
|
313 emulated using fcntl().)"); |
|
9506
04426224302a
Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents:
6055
diff
changeset
|
314 |
|
04426224302a
Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents:
6055
diff
changeset
|
315 |
| 4293 | 316 /* lockf(fd, operation) */ |
|
4757
e1f1725cae6d
Grandly renamed.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4623
diff
changeset
|
317 static PyObject * |
|
13519
070e41f2697b
ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents:
13256
diff
changeset
|
318 fcntl_lockf(PyObject *self, PyObject *args) |
| 4293 | 319 { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
320 int fd, code, ret, whence = 0; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
321 PyObject *lenobj = NULL, *startobj = NULL; |
| 3598 | 322 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
323 if (!PyArg_ParseTuple(args, "O&i|OOi:lockf", |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
324 conv_descriptor, &fd, &code, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
325 &lenobj, &startobj, &whence)) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
326 return NULL; |
| 4293 | 327 |
|
22114
c454b76d51e7
OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21712
diff
changeset
|
328 #if defined(PYOS_OS2) && defined(PYCC_GCC) |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
329 PyErr_SetString(PyExc_NotImplementedError, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
330 "lockf not supported on OS/2 (EMX)"); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
331 return NULL; |
|
22114
c454b76d51e7
OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21712
diff
changeset
|
332 #else |
| 4293 | 333 #ifndef LOCK_SH |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
334 #define LOCK_SH 1 /* shared lock */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
335 #define LOCK_EX 2 /* exclusive lock */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
336 #define LOCK_NB 4 /* don't block when locking */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
337 #define LOCK_UN 8 /* unlock */ |
|
22114
c454b76d51e7
OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21712
diff
changeset
|
338 #endif /* LOCK_SH */ |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
339 { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
340 struct flock l; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
341 if (code == LOCK_UN) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
342 l.l_type = F_UNLCK; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
343 else if (code & LOCK_SH) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
344 l.l_type = F_RDLCK; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
345 else if (code & LOCK_EX) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
346 l.l_type = F_WRLCK; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
347 else { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
348 PyErr_SetString(PyExc_ValueError, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
349 "unrecognized lockf argument"); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
350 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
351 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
352 l.l_start = l.l_len = 0; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
353 if (startobj != NULL) { |
|
9786
40f723ac26e8
Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents:
9588
diff
changeset
|
354 #if !defined(HAVE_LARGEFILE_SUPPORT) |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
355 l.l_start = PyLong_AsLong(startobj); |
|
9786
40f723ac26e8
Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents:
9588
diff
changeset
|
356 #else |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
357 l.l_start = PyLong_Check(startobj) ? |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
358 PyLong_AsLongLong(startobj) : |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
359 PyLong_AsLong(startobj); |
|
9786
40f723ac26e8
Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents:
9588
diff
changeset
|
360 #endif |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
361 if (PyErr_Occurred()) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
362 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
363 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
364 if (lenobj != NULL) { |
|
9786
40f723ac26e8
Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents:
9588
diff
changeset
|
365 #if !defined(HAVE_LARGEFILE_SUPPORT) |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
366 l.l_len = PyLong_AsLong(lenobj); |
|
9786
40f723ac26e8
Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents:
9588
diff
changeset
|
367 #else |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
368 l.l_len = PyLong_Check(lenobj) ? |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
369 PyLong_AsLongLong(lenobj) : |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
370 PyLong_AsLong(lenobj); |
|
9786
40f723ac26e8
Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents:
9588
diff
changeset
|
371 #endif |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
372 if (PyErr_Occurred()) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
373 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
374 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
375 l.l_whence = whence; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
376 Py_BEGIN_ALLOW_THREADS |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
377 ret = fcntl(fd, (code & LOCK_NB) ? F_SETLK : F_SETLKW, &l); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
378 Py_END_ALLOW_THREADS |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
379 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
380 if (ret < 0) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
381 PyErr_SetFromErrno(PyExc_IOError); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
382 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
383 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
384 Py_INCREF(Py_None); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
385 return Py_None; |
|
22114
c454b76d51e7
OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21712
diff
changeset
|
386 #endif /* defined(PYOS_OS2) && defined(PYCC_GCC) */ |
| 4293 | 387 } |
| 3598 | 388 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
22114
diff
changeset
|
389 PyDoc_STRVAR(lockf_doc, |
|
16245
09736aeab831
Let's keep things portable to non GCC compilers, please.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16238
diff
changeset
|
390 "lockf (fd, operation, length=0, start=0, whence=0)\n\ |
|
09736aeab831
Let's keep things portable to non GCC compilers, please.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16238
diff
changeset
|
391 \n\ |
|
09736aeab831
Let's keep things portable to non GCC compilers, please.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16238
diff
changeset
|
392 This is essentially a wrapper around the fcntl() locking calls. fd is the\n\ |
|
09736aeab831
Let's keep things portable to non GCC compilers, please.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16238
diff
changeset
|
393 file descriptor of the file to lock or unlock, and operation is one of the\n\ |
|
09736aeab831
Let's keep things portable to non GCC compilers, please.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16238
diff
changeset
|
394 following values:\n\ |
|
09736aeab831
Let's keep things portable to non GCC compilers, please.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16238
diff
changeset
|
395 \n\ |
|
09736aeab831
Let's keep things portable to non GCC compilers, please.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16238
diff
changeset
|
396 LOCK_UN - unlock\n\ |
|
09736aeab831
Let's keep things portable to non GCC compilers, please.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16238
diff
changeset
|
397 LOCK_SH - acquire a shared lock\n\ |
|
09736aeab831
Let's keep things portable to non GCC compilers, please.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16238
diff
changeset
|
398 LOCK_EX - acquire an exclusive lock\n\ |
|
09736aeab831
Let's keep things portable to non GCC compilers, please.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16238
diff
changeset
|
399 \n\ |
|
44535
420fe6d7d5f4
Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44099
diff
changeset
|
400 When operation is LOCK_SH or LOCK_EX, it can also be bitwise ORed with\n\ |
|
16245
09736aeab831
Let's keep things portable to non GCC compilers, please.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16238
diff
changeset
|
401 LOCK_NB to avoid blocking on lock acquisition. If LOCK_NB is used and the\n\ |
|
09736aeab831
Let's keep things portable to non GCC compilers, please.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16238
diff
changeset
|
402 lock cannot be acquired, an IOError will be raised and the exception will\n\ |
|
09736aeab831
Let's keep things portable to non GCC compilers, please.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16238
diff
changeset
|
403 have an errno attribute set to EACCES or EAGAIN (depending on the operating\n\ |
|
09736aeab831
Let's keep things portable to non GCC compilers, please.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16238
diff
changeset
|
404 system -- for portability, check for either value).\n\ |
|
09736aeab831
Let's keep things portable to non GCC compilers, please.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16238
diff
changeset
|
405 \n\ |
|
09736aeab831
Let's keep things portable to non GCC compilers, please.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16238
diff
changeset
|
406 length is the number of bytes to lock, with the default meaning to lock to\n\ |
|
09736aeab831
Let's keep things portable to non GCC compilers, please.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16238
diff
changeset
|
407 EOF. start is the byte offset, relative to whence, to that the lock\n\ |
|
09736aeab831
Let's keep things portable to non GCC compilers, please.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16238
diff
changeset
|
408 starts. whence is as with fileobj.seek(), specifically:\n\ |
|
09736aeab831
Let's keep things portable to non GCC compilers, please.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16238
diff
changeset
|
409 \n\ |
|
09736aeab831
Let's keep things portable to non GCC compilers, please.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16238
diff
changeset
|
410 0 - relative to the start of the file (SEEK_SET)\n\ |
|
09736aeab831
Let's keep things portable to non GCC compilers, please.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16238
diff
changeset
|
411 1 - relative to the current buffer position (SEEK_CUR)\n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
22114
diff
changeset
|
412 2 - relative to the end of the file (SEEK_END)"); |
|
9506
04426224302a
Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents:
6055
diff
changeset
|
413 |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
414 /* List of functions */ |
|
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
415 |
|
4757
e1f1725cae6d
Grandly renamed.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4623
diff
changeset
|
416 static PyMethodDef fcntl_methods[] = { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
417 {"fcntl", fcntl_fcntl, METH_VARARGS, fcntl_doc}, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
418 {"ioctl", fcntl_ioctl, METH_VARARGS, ioctl_doc}, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
419 {"flock", fcntl_flock, METH_VARARGS, flock_doc}, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
420 {"lockf", fcntl_lockf, METH_VARARGS, lockf_doc}, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
421 {NULL, NULL} /* sentinel */ |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
422 }; |
|
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
423 |
|
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
424 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
22114
diff
changeset
|
425 PyDoc_STRVAR(module_doc, |
|
9506
04426224302a
Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents:
6055
diff
changeset
|
426 "This module performs file control and I/O control on file \n\ |
|
04426224302a
Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents:
6055
diff
changeset
|
427 descriptors. It is an interface to the fcntl() and ioctl() Unix\n\ |
|
04426224302a
Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents:
6055
diff
changeset
|
428 routines. File descriptors can be obtained with the fileno() method of\n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
22114
diff
changeset
|
429 a file or socket object."); |
|
9506
04426224302a
Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents:
6055
diff
changeset
|
430 |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
431 /* Module initialisation */ |
|
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
432 |
|
5912
f527c12f2e55
Add definitions for symbolic constants LOCK_{EX,NB,SH,UN}.
Guido van Rossum <guido@python.org>
parents:
4758
diff
changeset
|
433 static int |
|
13519
070e41f2697b
ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents:
13256
diff
changeset
|
434 ins(PyObject* d, char* symbol, long value) |
|
5912
f527c12f2e55
Add definitions for symbolic constants LOCK_{EX,NB,SH,UN}.
Guido van Rossum <guido@python.org>
parents:
4758
diff
changeset
|
435 { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
436 PyObject* v = PyLong_FromLong(value); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
437 if (!v || PyDict_SetItemString(d, symbol, v) < 0) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
438 return -1; |
|
5912
f527c12f2e55
Add definitions for symbolic constants LOCK_{EX,NB,SH,UN}.
Guido van Rossum <guido@python.org>
parents:
4758
diff
changeset
|
439 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
440 Py_DECREF(v); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
441 return 0; |
|
5912
f527c12f2e55
Add definitions for symbolic constants LOCK_{EX,NB,SH,UN}.
Guido van Rossum <guido@python.org>
parents:
4758
diff
changeset
|
442 } |
|
f527c12f2e55
Add definitions for symbolic constants LOCK_{EX,NB,SH,UN}.
Guido van Rossum <guido@python.org>
parents:
4758
diff
changeset
|
443 |
|
26998
6ca1c0d3ef19
Expose I_ constants. Auto-detect stropts.h. Properly configure the slave terminal.
Martin v. Löwis <martin@v.loewis.de>
parents:
24471
diff
changeset
|
444 #define INS(x) if (ins(d, #x, (long)x)) return -1 |
|
6ca1c0d3ef19
Expose I_ constants. Auto-detect stropts.h. Properly configure the slave terminal.
Martin v. Löwis <martin@v.loewis.de>
parents:
24471
diff
changeset
|
445 |
|
5912
f527c12f2e55
Add definitions for symbolic constants LOCK_{EX,NB,SH,UN}.
Guido van Rossum <guido@python.org>
parents:
4758
diff
changeset
|
446 static int |
|
13519
070e41f2697b
ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents:
13256
diff
changeset
|
447 all_ins(PyObject* d) |
|
5912
f527c12f2e55
Add definitions for symbolic constants LOCK_{EX,NB,SH,UN}.
Guido van Rossum <guido@python.org>
parents:
4758
diff
changeset
|
448 { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
449 if (ins(d, "LOCK_SH", (long)LOCK_SH)) return -1; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
450 if (ins(d, "LOCK_EX", (long)LOCK_EX)) return -1; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
451 if (ins(d, "LOCK_NB", (long)LOCK_NB)) return -1; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
452 if (ins(d, "LOCK_UN", (long)LOCK_UN)) return -1; |
|
21585
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
453 /* GNU extensions, as of glibc 2.2.4 */ |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
454 #ifdef LOCK_MAND |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
455 if (ins(d, "LOCK_MAND", (long)LOCK_MAND)) return -1; |
|
21585
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
456 #endif |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
457 #ifdef LOCK_READ |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
458 if (ins(d, "LOCK_READ", (long)LOCK_READ)) return -1; |
|
21585
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
459 #endif |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
460 #ifdef LOCK_WRITE |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
461 if (ins(d, "LOCK_WRITE", (long)LOCK_WRITE)) return -1; |
|
21585
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
462 #endif |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
463 #ifdef LOCK_RW |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
464 if (ins(d, "LOCK_RW", (long)LOCK_RW)) return -1; |
|
21585
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
465 #endif |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
466 |
|
17743
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
467 #ifdef F_DUPFD |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
468 if (ins(d, "F_DUPFD", (long)F_DUPFD)) return -1; |
|
17743
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
469 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
470 #ifdef F_GETFD |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
471 if (ins(d, "F_GETFD", (long)F_GETFD)) return -1; |
|
17743
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
472 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
473 #ifdef F_SETFD |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
474 if (ins(d, "F_SETFD", (long)F_SETFD)) return -1; |
|
17743
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
475 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
476 #ifdef F_GETFL |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
477 if (ins(d, "F_GETFL", (long)F_GETFL)) return -1; |
|
17743
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
478 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
479 #ifdef F_SETFL |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
480 if (ins(d, "F_SETFL", (long)F_SETFL)) return -1; |
|
17743
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
481 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
482 #ifdef F_GETLK |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
483 if (ins(d, "F_GETLK", (long)F_GETLK)) return -1; |
|
17743
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
484 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
485 #ifdef F_SETLK |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
486 if (ins(d, "F_SETLK", (long)F_SETLK)) return -1; |
|
17743
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
487 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
488 #ifdef F_SETLKW |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
489 if (ins(d, "F_SETLKW", (long)F_SETLKW)) return -1; |
|
17743
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
490 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
491 #ifdef F_GETOWN |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
492 if (ins(d, "F_GETOWN", (long)F_GETOWN)) return -1; |
|
17743
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
493 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
494 #ifdef F_SETOWN |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
495 if (ins(d, "F_SETOWN", (long)F_SETOWN)) return -1; |
|
17743
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
496 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
497 #ifdef F_GETSIG |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
498 if (ins(d, "F_GETSIG", (long)F_GETSIG)) return -1; |
|
17743
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
499 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
500 #ifdef F_SETSIG |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
501 if (ins(d, "F_SETSIG", (long)F_SETSIG)) return -1; |
|
17743
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
502 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
503 #ifdef F_RDLCK |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
504 if (ins(d, "F_RDLCK", (long)F_RDLCK)) return -1; |
|
17743
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
505 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
506 #ifdef F_WRLCK |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
507 if (ins(d, "F_WRLCK", (long)F_WRLCK)) return -1; |
|
17743
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
508 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
509 #ifdef F_UNLCK |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
510 if (ins(d, "F_UNLCK", (long)F_UNLCK)) return -1; |
|
17743
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
511 #endif |
|
21585
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
512 /* LFS constants */ |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
513 #ifdef F_GETLK64 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
514 if (ins(d, "F_GETLK64", (long)F_GETLK64)) return -1; |
|
21585
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
515 #endif |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
516 #ifdef F_SETLK64 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
517 if (ins(d, "F_SETLK64", (long)F_SETLK64)) return -1; |
|
21585
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
518 #endif |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
519 #ifdef F_SETLKW64 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
520 if (ins(d, "F_SETLKW64", (long)F_SETLKW64)) return -1; |
|
21585
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
521 #endif |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
522 /* GNU extensions, as of glibc 2.2.4. */ |
|
47109
a02bc2a84d19
Merged revisions 63361-63373,63375,63377-63380 via svnmerge from
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
45955
diff
changeset
|
523 #ifdef FASYNC |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
524 if (ins(d, "FASYNC", (long)FASYNC)) return -1; |
|
47109
a02bc2a84d19
Merged revisions 63361-63373,63375,63377-63380 via svnmerge from
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
45955
diff
changeset
|
525 #endif |
|
21585
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
526 #ifdef F_SETLEASE |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
527 if (ins(d, "F_SETLEASE", (long)F_SETLEASE)) return -1; |
|
21585
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
528 #endif |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
529 #ifdef F_GETLEASE |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
530 if (ins(d, "F_GETLEASE", (long)F_GETLEASE)) return -1; |
|
21585
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
531 #endif |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
532 #ifdef F_NOTIFY |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
533 if (ins(d, "F_NOTIFY", (long)F_NOTIFY)) return -1; |
|
21585
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
534 #endif |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
535 /* Old BSD flock(). */ |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
536 #ifdef F_EXLCK |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
537 if (ins(d, "F_EXLCK", (long)F_EXLCK)) return -1; |
|
21585
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
538 #endif |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
539 #ifdef F_SHLCK |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
540 if (ins(d, "F_SHLCK", (long)F_SHLCK)) return -1; |
|
21585
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
541 #endif |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
542 |
|
48680
7779af388aec
Merged revisions 65459,65472,65481,65518,65536,65581,65609,65637,65641,65644-65645 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47580
diff
changeset
|
543 /* OS X (and maybe others) let you tell the storage device to flush to physical media */ |
|
7779af388aec
Merged revisions 65459,65472,65481,65518,65536,65581,65609,65637,65641,65644-65645 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47580
diff
changeset
|
544 #ifdef F_FULLFSYNC |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
545 if (ins(d, "F_FULLFSYNC", (long)F_FULLFSYNC)) return -1; |
|
48680
7779af388aec
Merged revisions 65459,65472,65481,65518,65536,65581,65609,65637,65641,65644-65645 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47580
diff
changeset
|
546 #endif |
|
7779af388aec
Merged revisions 65459,65472,65481,65518,65536,65581,65609,65637,65641,65644-65645 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47580
diff
changeset
|
547 |
|
21585
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
548 /* For F_{GET|SET}FL */ |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
549 #ifdef FD_CLOEXEC |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
550 if (ins(d, "FD_CLOEXEC", (long)FD_CLOEXEC)) return -1; |
|
21585
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
551 #endif |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
552 |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
553 /* For F_NOTIFY */ |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
554 #ifdef DN_ACCESS |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
555 if (ins(d, "DN_ACCESS", (long)DN_ACCESS)) return -1; |
|
21585
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
556 #endif |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
557 #ifdef DN_MODIFY |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
558 if (ins(d, "DN_MODIFY", (long)DN_MODIFY)) return -1; |
|
21585
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
559 #endif |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
560 #ifdef DN_CREATE |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
561 if (ins(d, "DN_CREATE", (long)DN_CREATE)) return -1; |
|
21585
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
562 #endif |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
563 #ifdef DN_DELETE |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
564 if (ins(d, "DN_DELETE", (long)DN_DELETE)) return -1; |
|
21585
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
565 #endif |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
566 #ifdef DN_RENAME |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
567 if (ins(d, "DN_RENAME", (long)DN_RENAME)) return -1; |
|
21585
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
568 #endif |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
569 #ifdef DN_ATTRIB |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
570 if (ins(d, "DN_ATTRIB", (long)DN_ATTRIB)) return -1; |
|
21585
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
571 #endif |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
572 #ifdef DN_MULTISHOT |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
573 if (ins(d, "DN_MULTISHOT", (long)DN_MULTISHOT)) return -1; |
|
21585
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
574 #endif |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
575 |
|
26998
6ca1c0d3ef19
Expose I_ constants. Auto-detect stropts.h. Properly configure the slave terminal.
Martin v. Löwis <martin@v.loewis.de>
parents:
24471
diff
changeset
|
576 #ifdef HAVE_STROPTS_H |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
577 /* Unix 98 guarantees that these are in stropts.h. */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
578 INS(I_PUSH); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
579 INS(I_POP); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
580 INS(I_LOOK); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
581 INS(I_FLUSH); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
582 INS(I_FLUSHBAND); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
583 INS(I_SETSIG); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
584 INS(I_GETSIG); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
585 INS(I_FIND); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
586 INS(I_PEEK); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
587 INS(I_SRDOPT); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
588 INS(I_GRDOPT); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
589 INS(I_NREAD); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
590 INS(I_FDINSERT); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
591 INS(I_STR); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
592 INS(I_SWROPT); |
| 29045 | 593 #ifdef I_GWROPT |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
594 /* despite the comment above, old-ish glibcs miss a couple... */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
595 INS(I_GWROPT); |
| 29045 | 596 #endif |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
597 INS(I_SENDFD); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
598 INS(I_RECVFD); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
599 INS(I_LIST); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
600 INS(I_ATMARK); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
601 INS(I_CKBAND); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
602 INS(I_GETBAND); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
603 INS(I_CANPUT); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
604 INS(I_SETCLTIME); |
| 29045 | 605 #ifdef I_GETCLTIME |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
606 INS(I_GETCLTIME); |
| 29045 | 607 #endif |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
608 INS(I_LINK); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
609 INS(I_UNLINK); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
610 INS(I_PLINK); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
611 INS(I_PUNLINK); |
|
26998
6ca1c0d3ef19
Expose I_ constants. Auto-detect stropts.h. Properly configure the slave terminal.
Martin v. Löwis <martin@v.loewis.de>
parents:
24471
diff
changeset
|
612 #endif |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
613 |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
614 return 0; |
|
5912
f527c12f2e55
Add definitions for symbolic constants LOCK_{EX,NB,SH,UN}.
Guido van Rossum <guido@python.org>
parents:
4758
diff
changeset
|
615 } |
|
f527c12f2e55
Add definitions for symbolic constants LOCK_{EX,NB,SH,UN}.
Guido van Rossum <guido@python.org>
parents:
4758
diff
changeset
|
616 |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
617 |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
618 static struct PyModuleDef fcntlmodule = { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
619 PyModuleDef_HEAD_INIT, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
620 "fcntl", |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
621 module_doc, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
622 -1, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
623 fcntl_methods, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
624 NULL, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
625 NULL, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
626 NULL, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
627 NULL |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
628 }; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
629 |
|
24471
f66b3a3509c7
Excise DL_EXPORT/DL_IMPORT from Modules/*. Required adding a prototype
Mark Hammond <mhammond@skippinet.com.au>
parents:
23832
diff
changeset
|
630 PyMODINIT_FUNC |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
631 PyInit_fcntl(void) |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
632 { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
633 PyObject *m, *d; |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
634 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
635 /* Create the module and add the functions and documentation */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
636 m = PyModule_Create(&fcntlmodule); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
637 if (m == NULL) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
638 return NULL; |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
639 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
640 /* Add some symbolic constants to the module */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
641 d = PyModule_GetDict(m); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
642 all_ins(d); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
643 return m; |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
644 } |
