17db96d56Sopenharmony_ci/*[clinic input]
27db96d56Sopenharmony_cipreserve
37db96d56Sopenharmony_ci[clinic start generated code]*/
47db96d56Sopenharmony_ci
57db96d56Sopenharmony_ciPyDoc_STRVAR(termios_tcgetattr__doc__,
67db96d56Sopenharmony_ci"tcgetattr($module, fd, /)\n"
77db96d56Sopenharmony_ci"--\n"
87db96d56Sopenharmony_ci"\n"
97db96d56Sopenharmony_ci"Get the tty attributes for file descriptor fd.\n"
107db96d56Sopenharmony_ci"\n"
117db96d56Sopenharmony_ci"Returns a list [iflag, oflag, cflag, lflag, ispeed, ospeed, cc]\n"
127db96d56Sopenharmony_ci"where cc is a list of the tty special characters (each a string of\n"
137db96d56Sopenharmony_ci"length 1, except the items with indices VMIN and VTIME, which are\n"
147db96d56Sopenharmony_ci"integers when these fields are defined).  The interpretation of the\n"
157db96d56Sopenharmony_ci"flags and the speeds as well as the indexing in the cc array must be\n"
167db96d56Sopenharmony_ci"done using the symbolic constants defined in this module.");
177db96d56Sopenharmony_ci
187db96d56Sopenharmony_ci#define TERMIOS_TCGETATTR_METHODDEF    \
197db96d56Sopenharmony_ci    {"tcgetattr", (PyCFunction)termios_tcgetattr, METH_O, termios_tcgetattr__doc__},
207db96d56Sopenharmony_ci
217db96d56Sopenharmony_cistatic PyObject *
227db96d56Sopenharmony_citermios_tcgetattr_impl(PyObject *module, int fd);
237db96d56Sopenharmony_ci
247db96d56Sopenharmony_cistatic PyObject *
257db96d56Sopenharmony_citermios_tcgetattr(PyObject *module, PyObject *arg)
267db96d56Sopenharmony_ci{
277db96d56Sopenharmony_ci    PyObject *return_value = NULL;
287db96d56Sopenharmony_ci    int fd;
297db96d56Sopenharmony_ci
307db96d56Sopenharmony_ci    if (!_PyLong_FileDescriptor_Converter(arg, &fd)) {
317db96d56Sopenharmony_ci        goto exit;
327db96d56Sopenharmony_ci    }
337db96d56Sopenharmony_ci    return_value = termios_tcgetattr_impl(module, fd);
347db96d56Sopenharmony_ci
357db96d56Sopenharmony_ciexit:
367db96d56Sopenharmony_ci    return return_value;
377db96d56Sopenharmony_ci}
387db96d56Sopenharmony_ci
397db96d56Sopenharmony_ciPyDoc_STRVAR(termios_tcsetattr__doc__,
407db96d56Sopenharmony_ci"tcsetattr($module, fd, when, attributes, /)\n"
417db96d56Sopenharmony_ci"--\n"
427db96d56Sopenharmony_ci"\n"
437db96d56Sopenharmony_ci"Set the tty attributes for file descriptor fd.\n"
447db96d56Sopenharmony_ci"\n"
457db96d56Sopenharmony_ci"The attributes to be set are taken from the attributes argument, which\n"
467db96d56Sopenharmony_ci"is a list like the one returned by tcgetattr(). The when argument\n"
477db96d56Sopenharmony_ci"determines when the attributes are changed: termios.TCSANOW to\n"
487db96d56Sopenharmony_ci"change immediately, termios.TCSADRAIN to change after transmitting all\n"
497db96d56Sopenharmony_ci"queued output, or termios.TCSAFLUSH to change after transmitting all\n"
507db96d56Sopenharmony_ci"queued output and discarding all queued input.");
517db96d56Sopenharmony_ci
527db96d56Sopenharmony_ci#define TERMIOS_TCSETATTR_METHODDEF    \
537db96d56Sopenharmony_ci    {"tcsetattr", _PyCFunction_CAST(termios_tcsetattr), METH_FASTCALL, termios_tcsetattr__doc__},
547db96d56Sopenharmony_ci
557db96d56Sopenharmony_cistatic PyObject *
567db96d56Sopenharmony_citermios_tcsetattr_impl(PyObject *module, int fd, int when, PyObject *term);
577db96d56Sopenharmony_ci
587db96d56Sopenharmony_cistatic PyObject *
597db96d56Sopenharmony_citermios_tcsetattr(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
607db96d56Sopenharmony_ci{
617db96d56Sopenharmony_ci    PyObject *return_value = NULL;
627db96d56Sopenharmony_ci    int fd;
637db96d56Sopenharmony_ci    int when;
647db96d56Sopenharmony_ci    PyObject *term;
657db96d56Sopenharmony_ci
667db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("tcsetattr", nargs, 3, 3)) {
677db96d56Sopenharmony_ci        goto exit;
687db96d56Sopenharmony_ci    }
697db96d56Sopenharmony_ci    if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
707db96d56Sopenharmony_ci        goto exit;
717db96d56Sopenharmony_ci    }
727db96d56Sopenharmony_ci    when = _PyLong_AsInt(args[1]);
737db96d56Sopenharmony_ci    if (when == -1 && PyErr_Occurred()) {
747db96d56Sopenharmony_ci        goto exit;
757db96d56Sopenharmony_ci    }
767db96d56Sopenharmony_ci    term = args[2];
777db96d56Sopenharmony_ci    return_value = termios_tcsetattr_impl(module, fd, when, term);
787db96d56Sopenharmony_ci
797db96d56Sopenharmony_ciexit:
807db96d56Sopenharmony_ci    return return_value;
817db96d56Sopenharmony_ci}
827db96d56Sopenharmony_ci
837db96d56Sopenharmony_ciPyDoc_STRVAR(termios_tcsendbreak__doc__,
847db96d56Sopenharmony_ci"tcsendbreak($module, fd, duration, /)\n"
857db96d56Sopenharmony_ci"--\n"
867db96d56Sopenharmony_ci"\n"
877db96d56Sopenharmony_ci"Send a break on file descriptor fd.\n"
887db96d56Sopenharmony_ci"\n"
897db96d56Sopenharmony_ci"A zero duration sends a break for 0.25-0.5 seconds; a nonzero duration\n"
907db96d56Sopenharmony_ci"has a system dependent meaning.");
917db96d56Sopenharmony_ci
927db96d56Sopenharmony_ci#define TERMIOS_TCSENDBREAK_METHODDEF    \
937db96d56Sopenharmony_ci    {"tcsendbreak", _PyCFunction_CAST(termios_tcsendbreak), METH_FASTCALL, termios_tcsendbreak__doc__},
947db96d56Sopenharmony_ci
957db96d56Sopenharmony_cistatic PyObject *
967db96d56Sopenharmony_citermios_tcsendbreak_impl(PyObject *module, int fd, int duration);
977db96d56Sopenharmony_ci
987db96d56Sopenharmony_cistatic PyObject *
997db96d56Sopenharmony_citermios_tcsendbreak(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
1007db96d56Sopenharmony_ci{
1017db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1027db96d56Sopenharmony_ci    int fd;
1037db96d56Sopenharmony_ci    int duration;
1047db96d56Sopenharmony_ci
1057db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("tcsendbreak", nargs, 2, 2)) {
1067db96d56Sopenharmony_ci        goto exit;
1077db96d56Sopenharmony_ci    }
1087db96d56Sopenharmony_ci    if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
1097db96d56Sopenharmony_ci        goto exit;
1107db96d56Sopenharmony_ci    }
1117db96d56Sopenharmony_ci    duration = _PyLong_AsInt(args[1]);
1127db96d56Sopenharmony_ci    if (duration == -1 && PyErr_Occurred()) {
1137db96d56Sopenharmony_ci        goto exit;
1147db96d56Sopenharmony_ci    }
1157db96d56Sopenharmony_ci    return_value = termios_tcsendbreak_impl(module, fd, duration);
1167db96d56Sopenharmony_ci
1177db96d56Sopenharmony_ciexit:
1187db96d56Sopenharmony_ci    return return_value;
1197db96d56Sopenharmony_ci}
1207db96d56Sopenharmony_ci
1217db96d56Sopenharmony_ciPyDoc_STRVAR(termios_tcdrain__doc__,
1227db96d56Sopenharmony_ci"tcdrain($module, fd, /)\n"
1237db96d56Sopenharmony_ci"--\n"
1247db96d56Sopenharmony_ci"\n"
1257db96d56Sopenharmony_ci"Wait until all output written to file descriptor fd has been transmitted.");
1267db96d56Sopenharmony_ci
1277db96d56Sopenharmony_ci#define TERMIOS_TCDRAIN_METHODDEF    \
1287db96d56Sopenharmony_ci    {"tcdrain", (PyCFunction)termios_tcdrain, METH_O, termios_tcdrain__doc__},
1297db96d56Sopenharmony_ci
1307db96d56Sopenharmony_cistatic PyObject *
1317db96d56Sopenharmony_citermios_tcdrain_impl(PyObject *module, int fd);
1327db96d56Sopenharmony_ci
1337db96d56Sopenharmony_cistatic PyObject *
1347db96d56Sopenharmony_citermios_tcdrain(PyObject *module, PyObject *arg)
1357db96d56Sopenharmony_ci{
1367db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1377db96d56Sopenharmony_ci    int fd;
1387db96d56Sopenharmony_ci
1397db96d56Sopenharmony_ci    if (!_PyLong_FileDescriptor_Converter(arg, &fd)) {
1407db96d56Sopenharmony_ci        goto exit;
1417db96d56Sopenharmony_ci    }
1427db96d56Sopenharmony_ci    return_value = termios_tcdrain_impl(module, fd);
1437db96d56Sopenharmony_ci
1447db96d56Sopenharmony_ciexit:
1457db96d56Sopenharmony_ci    return return_value;
1467db96d56Sopenharmony_ci}
1477db96d56Sopenharmony_ci
1487db96d56Sopenharmony_ciPyDoc_STRVAR(termios_tcflush__doc__,
1497db96d56Sopenharmony_ci"tcflush($module, fd, queue, /)\n"
1507db96d56Sopenharmony_ci"--\n"
1517db96d56Sopenharmony_ci"\n"
1527db96d56Sopenharmony_ci"Discard queued data on file descriptor fd.\n"
1537db96d56Sopenharmony_ci"\n"
1547db96d56Sopenharmony_ci"The queue selector specifies which queue: termios.TCIFLUSH for the input\n"
1557db96d56Sopenharmony_ci"queue, termios.TCOFLUSH for the output queue, or termios.TCIOFLUSH for\n"
1567db96d56Sopenharmony_ci"both queues.");
1577db96d56Sopenharmony_ci
1587db96d56Sopenharmony_ci#define TERMIOS_TCFLUSH_METHODDEF    \
1597db96d56Sopenharmony_ci    {"tcflush", _PyCFunction_CAST(termios_tcflush), METH_FASTCALL, termios_tcflush__doc__},
1607db96d56Sopenharmony_ci
1617db96d56Sopenharmony_cistatic PyObject *
1627db96d56Sopenharmony_citermios_tcflush_impl(PyObject *module, int fd, int queue);
1637db96d56Sopenharmony_ci
1647db96d56Sopenharmony_cistatic PyObject *
1657db96d56Sopenharmony_citermios_tcflush(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
1667db96d56Sopenharmony_ci{
1677db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1687db96d56Sopenharmony_ci    int fd;
1697db96d56Sopenharmony_ci    int queue;
1707db96d56Sopenharmony_ci
1717db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("tcflush", nargs, 2, 2)) {
1727db96d56Sopenharmony_ci        goto exit;
1737db96d56Sopenharmony_ci    }
1747db96d56Sopenharmony_ci    if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
1757db96d56Sopenharmony_ci        goto exit;
1767db96d56Sopenharmony_ci    }
1777db96d56Sopenharmony_ci    queue = _PyLong_AsInt(args[1]);
1787db96d56Sopenharmony_ci    if (queue == -1 && PyErr_Occurred()) {
1797db96d56Sopenharmony_ci        goto exit;
1807db96d56Sopenharmony_ci    }
1817db96d56Sopenharmony_ci    return_value = termios_tcflush_impl(module, fd, queue);
1827db96d56Sopenharmony_ci
1837db96d56Sopenharmony_ciexit:
1847db96d56Sopenharmony_ci    return return_value;
1857db96d56Sopenharmony_ci}
1867db96d56Sopenharmony_ci
1877db96d56Sopenharmony_ciPyDoc_STRVAR(termios_tcflow__doc__,
1887db96d56Sopenharmony_ci"tcflow($module, fd, action, /)\n"
1897db96d56Sopenharmony_ci"--\n"
1907db96d56Sopenharmony_ci"\n"
1917db96d56Sopenharmony_ci"Suspend or resume input or output on file descriptor fd.\n"
1927db96d56Sopenharmony_ci"\n"
1937db96d56Sopenharmony_ci"The action argument can be termios.TCOOFF to suspend output,\n"
1947db96d56Sopenharmony_ci"termios.TCOON to restart output, termios.TCIOFF to suspend input,\n"
1957db96d56Sopenharmony_ci"or termios.TCION to restart input.");
1967db96d56Sopenharmony_ci
1977db96d56Sopenharmony_ci#define TERMIOS_TCFLOW_METHODDEF    \
1987db96d56Sopenharmony_ci    {"tcflow", _PyCFunction_CAST(termios_tcflow), METH_FASTCALL, termios_tcflow__doc__},
1997db96d56Sopenharmony_ci
2007db96d56Sopenharmony_cistatic PyObject *
2017db96d56Sopenharmony_citermios_tcflow_impl(PyObject *module, int fd, int action);
2027db96d56Sopenharmony_ci
2037db96d56Sopenharmony_cistatic PyObject *
2047db96d56Sopenharmony_citermios_tcflow(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
2057db96d56Sopenharmony_ci{
2067db96d56Sopenharmony_ci    PyObject *return_value = NULL;
2077db96d56Sopenharmony_ci    int fd;
2087db96d56Sopenharmony_ci    int action;
2097db96d56Sopenharmony_ci
2107db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("tcflow", nargs, 2, 2)) {
2117db96d56Sopenharmony_ci        goto exit;
2127db96d56Sopenharmony_ci    }
2137db96d56Sopenharmony_ci    if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
2147db96d56Sopenharmony_ci        goto exit;
2157db96d56Sopenharmony_ci    }
2167db96d56Sopenharmony_ci    action = _PyLong_AsInt(args[1]);
2177db96d56Sopenharmony_ci    if (action == -1 && PyErr_Occurred()) {
2187db96d56Sopenharmony_ci        goto exit;
2197db96d56Sopenharmony_ci    }
2207db96d56Sopenharmony_ci    return_value = termios_tcflow_impl(module, fd, action);
2217db96d56Sopenharmony_ci
2227db96d56Sopenharmony_ciexit:
2237db96d56Sopenharmony_ci    return return_value;
2247db96d56Sopenharmony_ci}
2257db96d56Sopenharmony_ci
2267db96d56Sopenharmony_ciPyDoc_STRVAR(termios_tcgetwinsize__doc__,
2277db96d56Sopenharmony_ci"tcgetwinsize($module, fd, /)\n"
2287db96d56Sopenharmony_ci"--\n"
2297db96d56Sopenharmony_ci"\n"
2307db96d56Sopenharmony_ci"Get the tty winsize for file descriptor fd.\n"
2317db96d56Sopenharmony_ci"\n"
2327db96d56Sopenharmony_ci"Returns a tuple (ws_row, ws_col).");
2337db96d56Sopenharmony_ci
2347db96d56Sopenharmony_ci#define TERMIOS_TCGETWINSIZE_METHODDEF    \
2357db96d56Sopenharmony_ci    {"tcgetwinsize", (PyCFunction)termios_tcgetwinsize, METH_O, termios_tcgetwinsize__doc__},
2367db96d56Sopenharmony_ci
2377db96d56Sopenharmony_cistatic PyObject *
2387db96d56Sopenharmony_citermios_tcgetwinsize_impl(PyObject *module, int fd);
2397db96d56Sopenharmony_ci
2407db96d56Sopenharmony_cistatic PyObject *
2417db96d56Sopenharmony_citermios_tcgetwinsize(PyObject *module, PyObject *arg)
2427db96d56Sopenharmony_ci{
2437db96d56Sopenharmony_ci    PyObject *return_value = NULL;
2447db96d56Sopenharmony_ci    int fd;
2457db96d56Sopenharmony_ci
2467db96d56Sopenharmony_ci    if (!_PyLong_FileDescriptor_Converter(arg, &fd)) {
2477db96d56Sopenharmony_ci        goto exit;
2487db96d56Sopenharmony_ci    }
2497db96d56Sopenharmony_ci    return_value = termios_tcgetwinsize_impl(module, fd);
2507db96d56Sopenharmony_ci
2517db96d56Sopenharmony_ciexit:
2527db96d56Sopenharmony_ci    return return_value;
2537db96d56Sopenharmony_ci}
2547db96d56Sopenharmony_ci
2557db96d56Sopenharmony_ciPyDoc_STRVAR(termios_tcsetwinsize__doc__,
2567db96d56Sopenharmony_ci"tcsetwinsize($module, fd, winsize, /)\n"
2577db96d56Sopenharmony_ci"--\n"
2587db96d56Sopenharmony_ci"\n"
2597db96d56Sopenharmony_ci"Set the tty winsize for file descriptor fd.\n"
2607db96d56Sopenharmony_ci"\n"
2617db96d56Sopenharmony_ci"The winsize to be set is taken from the winsize argument, which\n"
2627db96d56Sopenharmony_ci"is a two-item tuple (ws_row, ws_col) like the one returned by tcgetwinsize().");
2637db96d56Sopenharmony_ci
2647db96d56Sopenharmony_ci#define TERMIOS_TCSETWINSIZE_METHODDEF    \
2657db96d56Sopenharmony_ci    {"tcsetwinsize", _PyCFunction_CAST(termios_tcsetwinsize), METH_FASTCALL, termios_tcsetwinsize__doc__},
2667db96d56Sopenharmony_ci
2677db96d56Sopenharmony_cistatic PyObject *
2687db96d56Sopenharmony_citermios_tcsetwinsize_impl(PyObject *module, int fd, PyObject *winsz);
2697db96d56Sopenharmony_ci
2707db96d56Sopenharmony_cistatic PyObject *
2717db96d56Sopenharmony_citermios_tcsetwinsize(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
2727db96d56Sopenharmony_ci{
2737db96d56Sopenharmony_ci    PyObject *return_value = NULL;
2747db96d56Sopenharmony_ci    int fd;
2757db96d56Sopenharmony_ci    PyObject *winsz;
2767db96d56Sopenharmony_ci
2777db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("tcsetwinsize", nargs, 2, 2)) {
2787db96d56Sopenharmony_ci        goto exit;
2797db96d56Sopenharmony_ci    }
2807db96d56Sopenharmony_ci    if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
2817db96d56Sopenharmony_ci        goto exit;
2827db96d56Sopenharmony_ci    }
2837db96d56Sopenharmony_ci    winsz = args[1];
2847db96d56Sopenharmony_ci    return_value = termios_tcsetwinsize_impl(module, fd, winsz);
2857db96d56Sopenharmony_ci
2867db96d56Sopenharmony_ciexit:
2877db96d56Sopenharmony_ci    return return_value;
2887db96d56Sopenharmony_ci}
2897db96d56Sopenharmony_ci/*[clinic end generated code: output=ef9ab888876fac17 input=a9049054013a1b77]*/
290