Mercurial > cpython-lru_cache-weakref
annotate Modules/fcntlmodule.c @ 87690:66c1c9f32567 default tip
Add use_weakref option to functools.lru_cache
The use_weakref option makes lru_cache create weak references to the function
arguments when creating the cache key, which prevents them from staying in the
memory forever even after all other references to them are gone.
This is a proof of concept for http://bugs.python.org/issue19859
| author | Radomir Dopieralski <devel@sheep.art.pl> |
|---|---|
| date | Tue, 03 Dec 2013 16:02:48 +0100 |
| parents | 84148898a606 |
| children |
| 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 |
|
86985
0e0dded5d616
#18985: Improve fcntl documentation.
R David Murray <rdmurray@bitdance.com>
parents:
85934
diff
changeset
|
30 /* fcntl(fd, op, [arg]) */ |
|
960
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, |
|
86985
0e0dded5d616
#18985: Improve fcntl documentation.
R David Murray <rdmurray@bitdance.com>
parents:
85934
diff
changeset
|
80 "fcntl(fd, op, [arg])\n\ |
|
9506
04426224302a
Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents:
6055
diff
changeset
|
81 \n\ |
|
86985
0e0dded5d616
#18985: Improve fcntl documentation.
R David Murray <rdmurray@bitdance.com>
parents:
85934
diff
changeset
|
82 Perform the operation op on file descriptor fd. The values used\n\ |
|
0e0dded5d616
#18985: Improve fcntl documentation.
R David Murray <rdmurray@bitdance.com>
parents:
85934
diff
changeset
|
83 for op are operating system dependent, and are available\n\ |
|
0e0dded5d616
#18985: Improve fcntl documentation.
R David Murray <rdmurray@bitdance.com>
parents:
85934
diff
changeset
|
84 as constants in the fcntl module, using the same names as used in\n\ |
|
0e0dded5d616
#18985: Improve fcntl documentation.
R David Murray <rdmurray@bitdance.com>
parents:
85934
diff
changeset
|
85 the relevant C header files. 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
|
86 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
|
87 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
|
88 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
|
89 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
|
90 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
|
91 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
|
92 |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
93 |
|
86985
0e0dded5d616
#18985: Improve fcntl documentation.
R David Murray <rdmurray@bitdance.com>
parents:
85934
diff
changeset
|
94 /* ioctl(fd, op, [arg]) */ |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
95 |
|
4757
e1f1725cae6d
Grandly renamed.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4623
diff
changeset
|
96 static PyObject * |
|
13519
070e41f2697b
ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents:
13256
diff
changeset
|
97 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
|
98 { |
|
37977
1843710f32e8
SF bug/patch #1433877: string parameter to ioctl not null terminated
Thomas Wouters <thomas@python.org>
parents:
36806
diff
changeset
|
99 #define IOCTL_BUFSZ 1024 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
100 int fd; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
101 /* 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
|
102 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
|
103 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
|
104 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
|
105 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
|
106 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
|
107 various platforms. See the termios.TIOCSWINSZ constant across |
|
86985
0e0dded5d616
#18985: Improve fcntl documentation.
R David Murray <rdmurray@bitdance.com>
parents:
85934
diff
changeset
|
108 platforms for an example of this. |
|
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
|
109 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
110 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
|
111 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
|
112 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
|
113 */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
114 unsigned int code; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
115 int arg; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
116 int ret; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
117 Py_buffer pstr; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
118 char *str; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
119 Py_ssize_t len; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
120 int mutate_arg = 1; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
121 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
|
122 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
123 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
|
124 conv_descriptor, &fd, &code, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
125 &pstr, &mutate_arg)) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
126 char *arg; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
127 str = pstr.buf; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
128 len = pstr.len; |
| 28145 | 129 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
130 if (mutate_arg) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
131 if (len <= IOCTL_BUFSZ) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
132 memcpy(buf, str, len); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
133 buf[len] = '\0'; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
134 arg = buf; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
135 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
136 else { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
137 arg = str; |
|
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 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
140 else { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
141 if (len > IOCTL_BUFSZ) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
142 PyBuffer_Release(&pstr); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
143 PyErr_SetString(PyExc_ValueError, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
144 "ioctl string arg too long"); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
145 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
146 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
147 else { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
148 memcpy(buf, str, len); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
149 buf[len] = '\0'; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
150 arg = buf; |
|
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 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
153 if (buf == arg) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
154 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
|
155 ret = ioctl(fd, code, arg); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
156 Py_END_ALLOW_THREADS |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
157 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
158 else { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
159 ret = ioctl(fd, code, arg); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
160 } |
|
64526
3e5a89376df5
Merged revisions 84589 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61466
diff
changeset
|
161 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
|
162 memcpy(str, buf, len); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
163 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
164 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
|
165 if (ret < 0) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
166 PyErr_SetFromErrno(PyExc_IOError); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
167 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
168 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
169 if (mutate_arg) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
170 return PyLong_FromLong(ret); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
171 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
172 else { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
173 return PyBytes_FromStringAndSize(buf, len); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
174 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
175 } |
| 28145 | 176 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
177 PyErr_Clear(); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
178 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
|
179 conv_descriptor, &fd, &code, &pstr)) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
180 str = pstr.buf; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
181 len = pstr.len; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
182 if (len > IOCTL_BUFSZ) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
183 PyBuffer_Release(&pstr); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
184 PyErr_SetString(PyExc_ValueError, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
185 "ioctl string arg too long"); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
186 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
187 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
188 memcpy(buf, str, len); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
189 buf[len] = '\0'; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
190 Py_BEGIN_ALLOW_THREADS |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
191 ret = ioctl(fd, code, buf); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
192 Py_END_ALLOW_THREADS |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
193 if (ret < 0) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
194 PyBuffer_Release(&pstr); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
195 PyErr_SetFromErrno(PyExc_IOError); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
196 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
197 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
198 PyBuffer_Release(&pstr); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
199 return PyBytes_FromStringAndSize(buf, len); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
200 } |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
201 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
202 PyErr_Clear(); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
203 arg = 0; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
204 if (!PyArg_ParseTuple(args, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
205 "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
|
206 " 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
|
207 conv_descriptor, &fd, &code, &arg)) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
208 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
209 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
210 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
|
211 #ifdef __VMS |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
212 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
|
213 #else |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
214 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
|
215 #endif |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
216 Py_END_ALLOW_THREADS |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
217 if (ret < 0) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
218 PyErr_SetFromErrno(PyExc_IOError); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
219 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
220 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
221 return PyLong_FromLong((long)ret); |
|
37977
1843710f32e8
SF bug/patch #1433877: string parameter to ioctl not null terminated
Thomas Wouters <thomas@python.org>
parents:
36806
diff
changeset
|
222 #undef IOCTL_BUFSZ |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
223 } |
|
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
224 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
22114
diff
changeset
|
225 PyDoc_STRVAR(ioctl_doc, |
|
86985
0e0dded5d616
#18985: Improve fcntl documentation.
R David Murray <rdmurray@bitdance.com>
parents:
85934
diff
changeset
|
226 "ioctl(fd, op[, arg[, mutate_flag]])\n\ |
| 28145 | 227 \n\ |
|
86985
0e0dded5d616
#18985: Improve fcntl documentation.
R David Murray <rdmurray@bitdance.com>
parents:
85934
diff
changeset
|
228 Perform the operation op on file descriptor fd. The values used for op\n\ |
|
0e0dded5d616
#18985: Improve fcntl documentation.
R David Murray <rdmurray@bitdance.com>
parents:
85934
diff
changeset
|
229 are operating system dependent, and are available as constants in the\n\ |
|
0e0dded5d616
#18985: Improve fcntl documentation.
R David Murray <rdmurray@bitdance.com>
parents:
85934
diff
changeset
|
230 fcntl or termios library modules, using the same names as used in the\n\ |
|
0e0dded5d616
#18985: Improve fcntl documentation.
R David Murray <rdmurray@bitdance.com>
parents:
85934
diff
changeset
|
231 relevant C header files.\n\ |
| 28145 | 232 \n\ |
| 233 The argument arg is optional, and defaults to 0; it may be an int or a\n\ | |
| 234 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
|
235 \n\ |
| 28145 | 236 If the argument is a mutable buffer (such as an array) and if the\n\ |
| 237 mutate_flag argument (which is only allowed in this case) is true then the\n\ | |
| 238 buffer is (in effect) passed to the operating system and changes made by\n\ | |
| 239 the OS will be reflected in the contents of the buffer after the call has\n\ | |
| 240 returned. The return value is the integer returned by the ioctl system\n\ | |
| 241 call.\n\ | |
| 242 \n\ | |
| 243 If the argument is a mutable buffer and the mutable_flag argument is not\n\ | |
| 244 passed or is false, the behavior is as if a string had been passed. This\n\ | |
| 245 behavior will change in future releases of Python.\n\ | |
| 246 \n\ | |
| 247 If the argument is an immutable buffer (most likely a string) then a copy\n\ | |
| 248 of the buffer is passed to the operating system and the return value is a\n\ | |
| 249 string of the same length containing whatever the operating system put in\n\ | |
| 250 the buffer. The length of the arg buffer in this case is not allowed to\n\ | |
| 251 exceed 1024 bytes.\n\ | |
| 252 \n\ | |
| 253 If the arg given is an integer or if none is specified, the result value is\n\ | |
| 254 an integer corresponding to the return value of the ioctl call in the C\n\ | |
| 255 code."); | |
|
9506
04426224302a
Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents:
6055
diff
changeset
|
256 |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
257 |
| 3598 | 258 /* flock(fd, operation) */ |
| 259 | |
|
4757
e1f1725cae6d
Grandly renamed.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4623
diff
changeset
|
260 static PyObject * |
|
13519
070e41f2697b
ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents:
13256
diff
changeset
|
261 fcntl_flock(PyObject *self, PyObject *args) |
| 3598 | 262 { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
263 int fd; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
264 int code; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
265 int ret; |
| 3598 | 266 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
267 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
|
268 conv_descriptor, &fd, &code)) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
269 return NULL; |
| 3598 | 270 |
|
9786
40f723ac26e8
Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents:
9588
diff
changeset
|
271 #ifdef HAVE_FLOCK |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
272 Py_BEGIN_ALLOW_THREADS |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
273 ret = flock(fd, code); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
274 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
|
275 #else |
|
399470a958c2
A fcntl implementation for systems (like Solaris) without flock() call.
Guido van Rossum <guido@python.org>
parents:
3598
diff
changeset
|
276 |
|
399470a958c2
A fcntl implementation for systems (like Solaris) without flock() call.
Guido van Rossum <guido@python.org>
parents:
3598
diff
changeset
|
277 #ifndef LOCK_SH |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
278 #define LOCK_SH 1 /* shared lock */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
279 #define LOCK_EX 2 /* exclusive lock */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
280 #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
|
281 #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
|
282 #endif |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
283 { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
284 struct flock l; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
285 if (code == LOCK_UN) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
286 l.l_type = F_UNLCK; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
287 else if (code & LOCK_SH) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
288 l.l_type = F_RDLCK; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
289 else if (code & LOCK_EX) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
290 l.l_type = F_WRLCK; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
291 else { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
292 PyErr_SetString(PyExc_ValueError, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
293 "unrecognized flock argument"); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
294 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
295 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
296 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
|
297 Py_BEGIN_ALLOW_THREADS |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
298 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
|
299 Py_END_ALLOW_THREADS |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
300 } |
|
3662
399470a958c2
A fcntl implementation for systems (like Solaris) without flock() call.
Guido van Rossum <guido@python.org>
parents:
3598
diff
changeset
|
301 #endif /* HAVE_FLOCK */ |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
302 if (ret < 0) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
303 PyErr_SetFromErrno(PyExc_IOError); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
304 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
305 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
306 Py_INCREF(Py_None); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
307 return Py_None; |
| 3598 | 308 } |
| 309 | |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
22114
diff
changeset
|
310 PyDoc_STRVAR(flock_doc, |
|
9506
04426224302a
Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents:
6055
diff
changeset
|
311 "flock(fd, operation)\n\ |
|
04426224302a
Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents:
6055
diff
changeset
|
312 \n\ |
|
04426224302a
Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents:
6055
diff
changeset
|
313 Perform the lock operation op on file descriptor fd. See the Unix \n\ |
|
85934
735d8b856928
Issue #19147: Fix docstring for fcntl.flock to refer to correct man section.
Ned Deily <nad@acm.org>
parents:
73304
diff
changeset
|
314 manual page for flock(2) 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
|
315 emulated using fcntl().)"); |
|
9506
04426224302a
Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents:
6055
diff
changeset
|
316 |
|
04426224302a
Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents:
6055
diff
changeset
|
317 |
| 4293 | 318 /* lockf(fd, operation) */ |
|
4757
e1f1725cae6d
Grandly renamed.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4623
diff
changeset
|
319 static PyObject * |
|
13519
070e41f2697b
ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents:
13256
diff
changeset
|
320 fcntl_lockf(PyObject *self, PyObject *args) |
| 4293 | 321 { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
322 int fd, code, ret, whence = 0; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
323 PyObject *lenobj = NULL, *startobj = NULL; |
| 3598 | 324 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
325 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
|
326 conv_descriptor, &fd, &code, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
327 &lenobj, &startobj, &whence)) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
328 return NULL; |
| 4293 | 329 |
| 330 #ifndef LOCK_SH | |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
331 #define LOCK_SH 1 /* shared lock */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
332 #define LOCK_EX 2 /* exclusive lock */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
333 #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
|
334 #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
|
335 #endif /* LOCK_SH */ |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
336 { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
337 struct flock l; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
338 if (code == LOCK_UN) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
339 l.l_type = F_UNLCK; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
340 else if (code & LOCK_SH) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
341 l.l_type = F_RDLCK; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
342 else if (code & LOCK_EX) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
343 l.l_type = F_WRLCK; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
344 else { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
345 PyErr_SetString(PyExc_ValueError, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
346 "unrecognized lockf argument"); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
347 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
348 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
349 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
|
350 if (startobj != NULL) { |
|
9786
40f723ac26e8
Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents:
9588
diff
changeset
|
351 #if !defined(HAVE_LARGEFILE_SUPPORT) |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
352 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
|
353 #else |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
354 l.l_start = PyLong_Check(startobj) ? |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
355 PyLong_AsLongLong(startobj) : |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
356 PyLong_AsLong(startobj); |
|
9786
40f723ac26e8
Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents:
9588
diff
changeset
|
357 #endif |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
358 if (PyErr_Occurred()) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
359 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
360 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
361 if (lenobj != NULL) { |
|
9786
40f723ac26e8
Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents:
9588
diff
changeset
|
362 #if !defined(HAVE_LARGEFILE_SUPPORT) |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
363 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
|
364 #else |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
365 l.l_len = PyLong_Check(lenobj) ? |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
366 PyLong_AsLongLong(lenobj) : |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
367 PyLong_AsLong(lenobj); |
|
9786
40f723ac26e8
Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents:
9588
diff
changeset
|
368 #endif |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
369 if (PyErr_Occurred()) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
370 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
371 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
372 l.l_whence = whence; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
373 Py_BEGIN_ALLOW_THREADS |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
374 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
|
375 Py_END_ALLOW_THREADS |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
376 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
377 if (ret < 0) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
378 PyErr_SetFromErrno(PyExc_IOError); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
379 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
380 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
381 Py_INCREF(Py_None); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
382 return Py_None; |
| 4293 | 383 } |
| 3598 | 384 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
22114
diff
changeset
|
385 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
|
386 "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
|
387 \n\ |
|
09736aeab831
Let's keep things portable to non GCC compilers, please.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16238
diff
changeset
|
388 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
|
389 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
|
390 following values:\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 LOCK_UN - unlock\n\ |
|
09736aeab831
Let's keep things portable to non GCC compilers, please.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16238
diff
changeset
|
393 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
|
394 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
|
395 \n\ |
|
44535
420fe6d7d5f4
Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44099
diff
changeset
|
396 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
|
397 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
|
398 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
|
399 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
|
400 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
|
401 \n\ |
|
09736aeab831
Let's keep things portable to non GCC compilers, please.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16238
diff
changeset
|
402 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
|
403 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
|
404 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
|
405 \n\ |
|
09736aeab831
Let's keep things portable to non GCC compilers, please.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16238
diff
changeset
|
406 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
|
407 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
|
408 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
|
409 |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
410 /* List of functions */ |
|
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
411 |
|
4757
e1f1725cae6d
Grandly renamed.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4623
diff
changeset
|
412 static PyMethodDef fcntl_methods[] = { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
413 {"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
|
414 {"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
|
415 {"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
|
416 {"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
|
417 {NULL, NULL} /* sentinel */ |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
418 }; |
|
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
419 |
|
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
420 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
22114
diff
changeset
|
421 PyDoc_STRVAR(module_doc, |
|
9506
04426224302a
Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents:
6055
diff
changeset
|
422 "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
|
423 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
|
424 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
|
425 a file or socket object."); |
|
9506
04426224302a
Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents:
6055
diff
changeset
|
426 |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
427 /* Module initialisation */ |
|
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
428 |
|
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
|
429 |
|
5912
f527c12f2e55
Add definitions for symbolic constants LOCK_{EX,NB,SH,UN}.
Guido van Rossum <guido@python.org>
parents:
4758
diff
changeset
|
430 static int |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
431 all_ins(PyObject* m) |
|
5912
f527c12f2e55
Add definitions for symbolic constants LOCK_{EX,NB,SH,UN}.
Guido van Rossum <guido@python.org>
parents:
4758
diff
changeset
|
432 { |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
433 if (PyModule_AddIntMacro(m, LOCK_SH)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
434 if (PyModule_AddIntMacro(m, LOCK_EX)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
435 if (PyModule_AddIntMacro(m, LOCK_NB)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
436 if (PyModule_AddIntMacro(m, 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
|
437 /* 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
|
438 #ifdef LOCK_MAND |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
439 if (PyModule_AddIntMacro(m, 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
|
440 #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
|
441 #ifdef LOCK_READ |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
442 if (PyModule_AddIntMacro(m, 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
|
443 #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
|
444 #ifdef LOCK_WRITE |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
445 if (PyModule_AddIntMacro(m, 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
|
446 #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
|
447 #ifdef LOCK_RW |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
448 if (PyModule_AddIntMacro(m, 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
|
449 #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
|
450 |
|
17743
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
451 #ifdef F_DUPFD |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
452 if (PyModule_AddIntMacro(m, 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
|
453 #endif |
|
81313
0afa7b323abb
fcntl: add F_DUPFD_CLOEXEC constant, available on Linux 2.6.24+.
Victor Stinner <victor.stinner@gmail.com>
parents:
79475
diff
changeset
|
454 #ifdef F_DUPFD_CLOEXEC |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
455 if (PyModule_AddIntMacro(m, F_DUPFD_CLOEXEC)) return -1; |
|
17743
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
456 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
457 #ifdef F_GETFD |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
458 if (PyModule_AddIntMacro(m, 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
|
459 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
460 #ifdef F_SETFD |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
461 if (PyModule_AddIntMacro(m, 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
|
462 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
463 #ifdef F_GETFL |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
464 if (PyModule_AddIntMacro(m, 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
|
465 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
466 #ifdef F_SETFL |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
467 if (PyModule_AddIntMacro(m, 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
|
468 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
469 #ifdef F_GETLK |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
470 if (PyModule_AddIntMacro(m, 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
|
471 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
472 #ifdef F_SETLK |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
473 if (PyModule_AddIntMacro(m, 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
|
474 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
475 #ifdef F_SETLKW |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
476 if (PyModule_AddIntMacro(m, 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
|
477 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
478 #ifdef F_GETOWN |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
479 if (PyModule_AddIntMacro(m, 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
|
480 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
481 #ifdef F_SETOWN |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
482 if (PyModule_AddIntMacro(m, 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
|
483 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
484 #ifdef F_GETSIG |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
485 if (PyModule_AddIntMacro(m, 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
|
486 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
487 #ifdef F_SETSIG |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
488 if (PyModule_AddIntMacro(m, 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
|
489 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
490 #ifdef F_RDLCK |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
491 if (PyModule_AddIntMacro(m, 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
|
492 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
493 #ifdef F_WRLCK |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
494 if (PyModule_AddIntMacro(m, 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
|
495 #endif |
|
3ee9a3f60bc7
Modify to allow file objects wherever file descriptors are needed.
Fred Drake <fdrake@acm.org>
parents:
16245
diff
changeset
|
496 #ifdef F_UNLCK |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
497 if (PyModule_AddIntMacro(m, 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
|
498 #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
|
499 /* 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
|
500 #ifdef F_GETLK64 |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
501 if (PyModule_AddIntMacro(m, 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
|
502 #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
|
503 #ifdef F_SETLK64 |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
504 if (PyModule_AddIntMacro(m, 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
|
505 #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
|
506 #ifdef F_SETLKW64 |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
507 if (PyModule_AddIntMacro(m, 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
|
508 #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
|
509 /* 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
|
510 #ifdef FASYNC |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
511 if (PyModule_AddIntMacro(m, FASYNC)) return -1; |
|
47109
a02bc2a84d19
Merged revisions 63361-63373,63375,63377-63380 via svnmerge from
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
45955
diff
changeset
|
512 #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
|
513 #ifdef F_SETLEASE |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
514 if (PyModule_AddIntMacro(m, 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
|
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_GETLEASE |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
517 if (PyModule_AddIntMacro(m, 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
|
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_NOTIFY |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
520 if (PyModule_AddIntMacro(m, 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
|
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 /* 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
|
523 #ifdef F_EXLCK |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
524 if (PyModule_AddIntMacro(m, 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
|
525 #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
|
526 #ifdef F_SHLCK |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
527 if (PyModule_AddIntMacro(m, 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
|
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 |
|
73304
cee6fdd6436d
Issue #13324: fcntlmodule: Add the F_NOCACHE flag. Patch by Alex Stewart.
Charles-François Natali <neologix@free.fr>
parents:
68257
diff
changeset
|
530 /* OS X specifics */ |
|
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
|
531 #ifdef F_FULLFSYNC |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
532 if (PyModule_AddIntMacro(m, 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
|
533 #endif |
|
73304
cee6fdd6436d
Issue #13324: fcntlmodule: Add the F_NOCACHE flag. Patch by Alex Stewart.
Charles-François Natali <neologix@free.fr>
parents:
68257
diff
changeset
|
534 #ifdef F_NOCACHE |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
535 if (PyModule_AddIntMacro(m, F_NOCACHE)) return -1; |
|
73304
cee6fdd6436d
Issue #13324: fcntlmodule: Add the F_NOCACHE flag. Patch by Alex Stewart.
Charles-François Natali <neologix@free.fr>
parents:
68257
diff
changeset
|
536 #endif |
|
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
|
537 |
|
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 /* 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
|
539 #ifdef FD_CLOEXEC |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
540 if (PyModule_AddIntMacro(m, 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
|
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 |
|
fdc39e27a494
Add fcntl.h constants from glibc 2.2.4. Fixes #496171.
Martin v. Löwis <martin@v.loewis.de>
parents:
17830
diff
changeset
|
543 /* 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
|
544 #ifdef DN_ACCESS |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
545 if (PyModule_AddIntMacro(m, 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
|
546 #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
|
547 #ifdef DN_MODIFY |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
548 if (PyModule_AddIntMacro(m, 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
|
549 #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
|
550 #ifdef DN_CREATE |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
551 if (PyModule_AddIntMacro(m, 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
|
552 #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
|
553 #ifdef DN_DELETE |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
554 if (PyModule_AddIntMacro(m, 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
|
555 #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
|
556 #ifdef DN_RENAME |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
557 if (PyModule_AddIntMacro(m, 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
|
558 #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
|
559 #ifdef DN_ATTRIB |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
560 if (PyModule_AddIntMacro(m, 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
|
561 #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
|
562 #ifdef DN_MULTISHOT |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
563 if (PyModule_AddIntMacro(m, 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
|
564 #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
|
565 |
|
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
|
566 #ifdef HAVE_STROPTS_H |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
567 /* Unix 98 guarantees that these are in stropts.h. */ |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
568 if (PyModule_AddIntMacro(m, I_PUSH)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
569 if (PyModule_AddIntMacro(m, I_POP)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
570 if (PyModule_AddIntMacro(m, I_LOOK)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
571 if (PyModule_AddIntMacro(m, I_FLUSH)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
572 if (PyModule_AddIntMacro(m, I_FLUSHBAND)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
573 if (PyModule_AddIntMacro(m, I_SETSIG)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
574 if (PyModule_AddIntMacro(m, I_GETSIG)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
575 if (PyModule_AddIntMacro(m, I_FIND)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
576 if (PyModule_AddIntMacro(m, I_PEEK)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
577 if (PyModule_AddIntMacro(m, I_SRDOPT)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
578 if (PyModule_AddIntMacro(m, I_GRDOPT)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
579 if (PyModule_AddIntMacro(m, I_NREAD)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
580 if (PyModule_AddIntMacro(m, I_FDINSERT)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
581 if (PyModule_AddIntMacro(m, I_STR)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
582 if (PyModule_AddIntMacro(m, I_SWROPT)) return -1; |
| 29045 | 583 #ifdef I_GWROPT |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
584 /* despite the comment above, old-ish glibcs miss a couple... */ |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
585 if (PyModule_AddIntMacro(m, I_GWROPT)) return -1; |
| 29045 | 586 #endif |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
587 if (PyModule_AddIntMacro(m, I_SENDFD)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
588 if (PyModule_AddIntMacro(m, I_RECVFD)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
589 if (PyModule_AddIntMacro(m, I_LIST)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
590 if (PyModule_AddIntMacro(m, I_ATMARK)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
591 if (PyModule_AddIntMacro(m, I_CKBAND)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
592 if (PyModule_AddIntMacro(m, I_GETBAND)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
593 if (PyModule_AddIntMacro(m, I_CANPUT)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
594 if (PyModule_AddIntMacro(m, I_SETCLTIME)) return -1; |
| 29045 | 595 #ifdef I_GETCLTIME |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
596 if (PyModule_AddIntMacro(m, I_GETCLTIME)) return -1; |
| 29045 | 597 #endif |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
598 if (PyModule_AddIntMacro(m, I_LINK)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
599 if (PyModule_AddIntMacro(m, I_UNLINK)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
600 if (PyModule_AddIntMacro(m, I_PLINK)) return -1; |
|
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
601 if (PyModule_AddIntMacro(m, I_PUNLINK)) return -1; |
|
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
|
602 #endif |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
603 |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
604 return 0; |
|
5912
f527c12f2e55
Add definitions for symbolic constants LOCK_{EX,NB,SH,UN}.
Guido van Rossum <guido@python.org>
parents:
4758
diff
changeset
|
605 } |
|
f527c12f2e55
Add definitions for symbolic constants LOCK_{EX,NB,SH,UN}.
Guido van Rossum <guido@python.org>
parents:
4758
diff
changeset
|
606 |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
607 |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
608 static struct PyModuleDef fcntlmodule = { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
609 PyModuleDef_HEAD_INIT, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
610 "fcntl", |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
611 module_doc, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
612 -1, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
613 fcntl_methods, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
614 NULL, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
615 NULL, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
616 NULL, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
617 NULL |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
618 }; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
619 |
|
24471
f66b3a3509c7
Excise DL_EXPORT/DL_IMPORT from Modules/*. Required adding a prototype
Mark Hammond <mhammond@skippinet.com.au>
parents:
23832
diff
changeset
|
620 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
|
621 PyInit_fcntl(void) |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
622 { |
|
83867
12cbb5183d98
Issue #17917: Use PyModule_AddIntMacro() instead of PyModule_AddIntConstant()
Charles-Francois Natali <cf.natali@gmail.com>
parents:
81313
diff
changeset
|
623 PyObject *m; |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
624 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
625 /* 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
|
626 m = PyModule_Create(&fcntlmodule); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
627 if (m == NULL) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
628 return NULL; |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
629 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
630 /* Add some symbolic constants to the module */ |
|
87679
84148898a606
Issue #18994: Add a missing check for a return value in fcntmodule. Patch by
Charles-François Natali <cf.natali@gmail.com>
parents:
86986
diff
changeset
|
631 if (all_ins(m) < 0) |
|
84148898a606
Issue #18994: Add a missing check for a return value in fcntmodule. Patch by
Charles-François Natali <cf.natali@gmail.com>
parents:
86986
diff
changeset
|
632 return NULL; |
|
84148898a606
Issue #18994: Add a missing check for a return value in fcntmodule. Patch by
Charles-François Natali <cf.natali@gmail.com>
parents:
86986
diff
changeset
|
633 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
54307
diff
changeset
|
634 return m; |
|
960
7d3a053c6765
struct: pack/unpack binary structs; fcntl: fcntl(), ioctl().
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
635 } |
