• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*[clinic input]
2 preserve
3 [clinic start generated code]*/
4 
5 PyDoc_STRVAR(termios_tcgetattr__doc__,
6 "tcgetattr($module, fd, /)\n"
7 "--\n"
8 "\n"
9 "Get the tty attributes for file descriptor fd.\n"
10 "\n"
11 "Returns a list [iflag, oflag, cflag, lflag, ispeed, ospeed, cc]\n"
12 "where cc is a list of the tty special characters (each a string of\n"
13 "length 1, except the items with indices VMIN and VTIME, which are\n"
14 "integers when these fields are defined).  The interpretation of the\n"
15 "flags and the speeds as well as the indexing in the cc array must be\n"
16 "done using the symbolic constants defined in this module.");
17 
18 #define TERMIOS_TCGETATTR_METHODDEF    \
19     {"tcgetattr", (PyCFunction)termios_tcgetattr, METH_O, termios_tcgetattr__doc__},
20 
21 static PyObject *
22 termios_tcgetattr_impl(PyObject *module, int fd);
23 
24 static PyObject *
termios_tcgetattr(PyObject * module,PyObject * arg)25 termios_tcgetattr(PyObject *module, PyObject *arg)
26 {
27     PyObject *return_value = NULL;
28     int fd;
29 
30     if (!_PyLong_FileDescriptor_Converter(arg, &fd)) {
31         goto exit;
32     }
33     return_value = termios_tcgetattr_impl(module, fd);
34 
35 exit:
36     return return_value;
37 }
38 
39 PyDoc_STRVAR(termios_tcsetattr__doc__,
40 "tcsetattr($module, fd, when, attributes, /)\n"
41 "--\n"
42 "\n"
43 "Set the tty attributes for file descriptor fd.\n"
44 "\n"
45 "The attributes to be set are taken from the attributes argument, which\n"
46 "is a list like the one returned by tcgetattr(). The when argument\n"
47 "determines when the attributes are changed: termios.TCSANOW to\n"
48 "change immediately, termios.TCSADRAIN to change after transmitting all\n"
49 "queued output, or termios.TCSAFLUSH to change after transmitting all\n"
50 "queued output and discarding all queued input.");
51 
52 #define TERMIOS_TCSETATTR_METHODDEF    \
53     {"tcsetattr", (PyCFunction)(void(*)(void))termios_tcsetattr, METH_FASTCALL, termios_tcsetattr__doc__},
54 
55 static PyObject *
56 termios_tcsetattr_impl(PyObject *module, int fd, int when, PyObject *term);
57 
58 static PyObject *
termios_tcsetattr(PyObject * module,PyObject * const * args,Py_ssize_t nargs)59 termios_tcsetattr(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
60 {
61     PyObject *return_value = NULL;
62     int fd;
63     int when;
64     PyObject *term;
65 
66     if (!_PyArg_CheckPositional("tcsetattr", nargs, 3, 3)) {
67         goto exit;
68     }
69     if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
70         goto exit;
71     }
72     when = _PyLong_AsInt(args[1]);
73     if (when == -1 && PyErr_Occurred()) {
74         goto exit;
75     }
76     term = args[2];
77     return_value = termios_tcsetattr_impl(module, fd, when, term);
78 
79 exit:
80     return return_value;
81 }
82 
83 PyDoc_STRVAR(termios_tcsendbreak__doc__,
84 "tcsendbreak($module, fd, duration, /)\n"
85 "--\n"
86 "\n"
87 "Send a break on file descriptor fd.\n"
88 "\n"
89 "A zero duration sends a break for 0.25-0.5 seconds; a nonzero duration\n"
90 "has a system dependent meaning.");
91 
92 #define TERMIOS_TCSENDBREAK_METHODDEF    \
93     {"tcsendbreak", (PyCFunction)(void(*)(void))termios_tcsendbreak, METH_FASTCALL, termios_tcsendbreak__doc__},
94 
95 static PyObject *
96 termios_tcsendbreak_impl(PyObject *module, int fd, int duration);
97 
98 static PyObject *
termios_tcsendbreak(PyObject * module,PyObject * const * args,Py_ssize_t nargs)99 termios_tcsendbreak(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
100 {
101     PyObject *return_value = NULL;
102     int fd;
103     int duration;
104 
105     if (!_PyArg_CheckPositional("tcsendbreak", nargs, 2, 2)) {
106         goto exit;
107     }
108     if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
109         goto exit;
110     }
111     duration = _PyLong_AsInt(args[1]);
112     if (duration == -1 && PyErr_Occurred()) {
113         goto exit;
114     }
115     return_value = termios_tcsendbreak_impl(module, fd, duration);
116 
117 exit:
118     return return_value;
119 }
120 
121 PyDoc_STRVAR(termios_tcdrain__doc__,
122 "tcdrain($module, fd, /)\n"
123 "--\n"
124 "\n"
125 "Wait until all output written to file descriptor fd has been transmitted.");
126 
127 #define TERMIOS_TCDRAIN_METHODDEF    \
128     {"tcdrain", (PyCFunction)termios_tcdrain, METH_O, termios_tcdrain__doc__},
129 
130 static PyObject *
131 termios_tcdrain_impl(PyObject *module, int fd);
132 
133 static PyObject *
termios_tcdrain(PyObject * module,PyObject * arg)134 termios_tcdrain(PyObject *module, PyObject *arg)
135 {
136     PyObject *return_value = NULL;
137     int fd;
138 
139     if (!_PyLong_FileDescriptor_Converter(arg, &fd)) {
140         goto exit;
141     }
142     return_value = termios_tcdrain_impl(module, fd);
143 
144 exit:
145     return return_value;
146 }
147 
148 PyDoc_STRVAR(termios_tcflush__doc__,
149 "tcflush($module, fd, queue, /)\n"
150 "--\n"
151 "\n"
152 "Discard queued data on file descriptor fd.\n"
153 "\n"
154 "The queue selector specifies which queue: termios.TCIFLUSH for the input\n"
155 "queue, termios.TCOFLUSH for the output queue, or termios.TCIOFLUSH for\n"
156 "both queues.");
157 
158 #define TERMIOS_TCFLUSH_METHODDEF    \
159     {"tcflush", (PyCFunction)(void(*)(void))termios_tcflush, METH_FASTCALL, termios_tcflush__doc__},
160 
161 static PyObject *
162 termios_tcflush_impl(PyObject *module, int fd, int queue);
163 
164 static PyObject *
termios_tcflush(PyObject * module,PyObject * const * args,Py_ssize_t nargs)165 termios_tcflush(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
166 {
167     PyObject *return_value = NULL;
168     int fd;
169     int queue;
170 
171     if (!_PyArg_CheckPositional("tcflush", nargs, 2, 2)) {
172         goto exit;
173     }
174     if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
175         goto exit;
176     }
177     queue = _PyLong_AsInt(args[1]);
178     if (queue == -1 && PyErr_Occurred()) {
179         goto exit;
180     }
181     return_value = termios_tcflush_impl(module, fd, queue);
182 
183 exit:
184     return return_value;
185 }
186 
187 PyDoc_STRVAR(termios_tcflow__doc__,
188 "tcflow($module, fd, action, /)\n"
189 "--\n"
190 "\n"
191 "Suspend or resume input or output on file descriptor fd.\n"
192 "\n"
193 "The action argument can be termios.TCOOFF to suspend output,\n"
194 "termios.TCOON to restart output, termios.TCIOFF to suspend input,\n"
195 "or termios.TCION to restart input.");
196 
197 #define TERMIOS_TCFLOW_METHODDEF    \
198     {"tcflow", (PyCFunction)(void(*)(void))termios_tcflow, METH_FASTCALL, termios_tcflow__doc__},
199 
200 static PyObject *
201 termios_tcflow_impl(PyObject *module, int fd, int action);
202 
203 static PyObject *
termios_tcflow(PyObject * module,PyObject * const * args,Py_ssize_t nargs)204 termios_tcflow(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
205 {
206     PyObject *return_value = NULL;
207     int fd;
208     int action;
209 
210     if (!_PyArg_CheckPositional("tcflow", nargs, 2, 2)) {
211         goto exit;
212     }
213     if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
214         goto exit;
215     }
216     action = _PyLong_AsInt(args[1]);
217     if (action == -1 && PyErr_Occurred()) {
218         goto exit;
219     }
220     return_value = termios_tcflow_impl(module, fd, action);
221 
222 exit:
223     return return_value;
224 }
225 /*[clinic end generated code: output=a129179f1e2545cc input=a9049054013a1b77]*/
226