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