17db96d56Sopenharmony_ci/*[clinic input] 27db96d56Sopenharmony_cipreserve 37db96d56Sopenharmony_ci[clinic start generated code]*/ 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_ciPyDoc_STRVAR(_io_FileIO_close__doc__, 67db96d56Sopenharmony_ci"close($self, /)\n" 77db96d56Sopenharmony_ci"--\n" 87db96d56Sopenharmony_ci"\n" 97db96d56Sopenharmony_ci"Close the file.\n" 107db96d56Sopenharmony_ci"\n" 117db96d56Sopenharmony_ci"A closed file cannot be used for further I/O operations. close() may be\n" 127db96d56Sopenharmony_ci"called more than once without error."); 137db96d56Sopenharmony_ci 147db96d56Sopenharmony_ci#define _IO_FILEIO_CLOSE_METHODDEF \ 157db96d56Sopenharmony_ci {"close", (PyCFunction)_io_FileIO_close, METH_NOARGS, _io_FileIO_close__doc__}, 167db96d56Sopenharmony_ci 177db96d56Sopenharmony_cistatic PyObject * 187db96d56Sopenharmony_ci_io_FileIO_close_impl(fileio *self); 197db96d56Sopenharmony_ci 207db96d56Sopenharmony_cistatic PyObject * 217db96d56Sopenharmony_ci_io_FileIO_close(fileio *self, PyObject *Py_UNUSED(ignored)) 227db96d56Sopenharmony_ci{ 237db96d56Sopenharmony_ci return _io_FileIO_close_impl(self); 247db96d56Sopenharmony_ci} 257db96d56Sopenharmony_ci 267db96d56Sopenharmony_ciPyDoc_STRVAR(_io_FileIO___init____doc__, 277db96d56Sopenharmony_ci"FileIO(file, mode=\'r\', closefd=True, opener=None)\n" 287db96d56Sopenharmony_ci"--\n" 297db96d56Sopenharmony_ci"\n" 307db96d56Sopenharmony_ci"Open a file.\n" 317db96d56Sopenharmony_ci"\n" 327db96d56Sopenharmony_ci"The mode can be \'r\' (default), \'w\', \'x\' or \'a\' for reading,\n" 337db96d56Sopenharmony_ci"writing, exclusive creation or appending. The file will be created if it\n" 347db96d56Sopenharmony_ci"doesn\'t exist when opened for writing or appending; it will be truncated\n" 357db96d56Sopenharmony_ci"when opened for writing. A FileExistsError will be raised if it already\n" 367db96d56Sopenharmony_ci"exists when opened for creating. Opening a file for creating implies\n" 377db96d56Sopenharmony_ci"writing so this mode behaves in a similar way to \'w\'.Add a \'+\' to the mode\n" 387db96d56Sopenharmony_ci"to allow simultaneous reading and writing. A custom opener can be used by\n" 397db96d56Sopenharmony_ci"passing a callable as *opener*. The underlying file descriptor for the file\n" 407db96d56Sopenharmony_ci"object is then obtained by calling opener with (*name*, *flags*).\n" 417db96d56Sopenharmony_ci"*opener* must return an open file descriptor (passing os.open as *opener*\n" 427db96d56Sopenharmony_ci"results in functionality similar to passing None)."); 437db96d56Sopenharmony_ci 447db96d56Sopenharmony_cistatic int 457db96d56Sopenharmony_ci_io_FileIO___init___impl(fileio *self, PyObject *nameobj, const char *mode, 467db96d56Sopenharmony_ci int closefd, PyObject *opener); 477db96d56Sopenharmony_ci 487db96d56Sopenharmony_cistatic int 497db96d56Sopenharmony_ci_io_FileIO___init__(PyObject *self, PyObject *args, PyObject *kwargs) 507db96d56Sopenharmony_ci{ 517db96d56Sopenharmony_ci int return_value = -1; 527db96d56Sopenharmony_ci static const char * const _keywords[] = {"file", "mode", "closefd", "opener", NULL}; 537db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "FileIO", 0}; 547db96d56Sopenharmony_ci PyObject *argsbuf[4]; 557db96d56Sopenharmony_ci PyObject * const *fastargs; 567db96d56Sopenharmony_ci Py_ssize_t nargs = PyTuple_GET_SIZE(args); 577db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 1; 587db96d56Sopenharmony_ci PyObject *nameobj; 597db96d56Sopenharmony_ci const char *mode = "r"; 607db96d56Sopenharmony_ci int closefd = 1; 617db96d56Sopenharmony_ci PyObject *opener = Py_None; 627db96d56Sopenharmony_ci 637db96d56Sopenharmony_ci fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 1, 4, 0, argsbuf); 647db96d56Sopenharmony_ci if (!fastargs) { 657db96d56Sopenharmony_ci goto exit; 667db96d56Sopenharmony_ci } 677db96d56Sopenharmony_ci nameobj = fastargs[0]; 687db96d56Sopenharmony_ci if (!noptargs) { 697db96d56Sopenharmony_ci goto skip_optional_pos; 707db96d56Sopenharmony_ci } 717db96d56Sopenharmony_ci if (fastargs[1]) { 727db96d56Sopenharmony_ci if (!PyUnicode_Check(fastargs[1])) { 737db96d56Sopenharmony_ci _PyArg_BadArgument("FileIO", "argument 'mode'", "str", fastargs[1]); 747db96d56Sopenharmony_ci goto exit; 757db96d56Sopenharmony_ci } 767db96d56Sopenharmony_ci Py_ssize_t mode_length; 777db96d56Sopenharmony_ci mode = PyUnicode_AsUTF8AndSize(fastargs[1], &mode_length); 787db96d56Sopenharmony_ci if (mode == NULL) { 797db96d56Sopenharmony_ci goto exit; 807db96d56Sopenharmony_ci } 817db96d56Sopenharmony_ci if (strlen(mode) != (size_t)mode_length) { 827db96d56Sopenharmony_ci PyErr_SetString(PyExc_ValueError, "embedded null character"); 837db96d56Sopenharmony_ci goto exit; 847db96d56Sopenharmony_ci } 857db96d56Sopenharmony_ci if (!--noptargs) { 867db96d56Sopenharmony_ci goto skip_optional_pos; 877db96d56Sopenharmony_ci } 887db96d56Sopenharmony_ci } 897db96d56Sopenharmony_ci if (fastargs[2]) { 907db96d56Sopenharmony_ci closefd = _PyLong_AsInt(fastargs[2]); 917db96d56Sopenharmony_ci if (closefd == -1 && PyErr_Occurred()) { 927db96d56Sopenharmony_ci goto exit; 937db96d56Sopenharmony_ci } 947db96d56Sopenharmony_ci if (!--noptargs) { 957db96d56Sopenharmony_ci goto skip_optional_pos; 967db96d56Sopenharmony_ci } 977db96d56Sopenharmony_ci } 987db96d56Sopenharmony_ci opener = fastargs[3]; 997db96d56Sopenharmony_ciskip_optional_pos: 1007db96d56Sopenharmony_ci return_value = _io_FileIO___init___impl((fileio *)self, nameobj, mode, closefd, opener); 1017db96d56Sopenharmony_ci 1027db96d56Sopenharmony_ciexit: 1037db96d56Sopenharmony_ci return return_value; 1047db96d56Sopenharmony_ci} 1057db96d56Sopenharmony_ci 1067db96d56Sopenharmony_ciPyDoc_STRVAR(_io_FileIO_fileno__doc__, 1077db96d56Sopenharmony_ci"fileno($self, /)\n" 1087db96d56Sopenharmony_ci"--\n" 1097db96d56Sopenharmony_ci"\n" 1107db96d56Sopenharmony_ci"Return the underlying file descriptor (an integer)."); 1117db96d56Sopenharmony_ci 1127db96d56Sopenharmony_ci#define _IO_FILEIO_FILENO_METHODDEF \ 1137db96d56Sopenharmony_ci {"fileno", (PyCFunction)_io_FileIO_fileno, METH_NOARGS, _io_FileIO_fileno__doc__}, 1147db96d56Sopenharmony_ci 1157db96d56Sopenharmony_cistatic PyObject * 1167db96d56Sopenharmony_ci_io_FileIO_fileno_impl(fileio *self); 1177db96d56Sopenharmony_ci 1187db96d56Sopenharmony_cistatic PyObject * 1197db96d56Sopenharmony_ci_io_FileIO_fileno(fileio *self, PyObject *Py_UNUSED(ignored)) 1207db96d56Sopenharmony_ci{ 1217db96d56Sopenharmony_ci return _io_FileIO_fileno_impl(self); 1227db96d56Sopenharmony_ci} 1237db96d56Sopenharmony_ci 1247db96d56Sopenharmony_ciPyDoc_STRVAR(_io_FileIO_readable__doc__, 1257db96d56Sopenharmony_ci"readable($self, /)\n" 1267db96d56Sopenharmony_ci"--\n" 1277db96d56Sopenharmony_ci"\n" 1287db96d56Sopenharmony_ci"True if file was opened in a read mode."); 1297db96d56Sopenharmony_ci 1307db96d56Sopenharmony_ci#define _IO_FILEIO_READABLE_METHODDEF \ 1317db96d56Sopenharmony_ci {"readable", (PyCFunction)_io_FileIO_readable, METH_NOARGS, _io_FileIO_readable__doc__}, 1327db96d56Sopenharmony_ci 1337db96d56Sopenharmony_cistatic PyObject * 1347db96d56Sopenharmony_ci_io_FileIO_readable_impl(fileio *self); 1357db96d56Sopenharmony_ci 1367db96d56Sopenharmony_cistatic PyObject * 1377db96d56Sopenharmony_ci_io_FileIO_readable(fileio *self, PyObject *Py_UNUSED(ignored)) 1387db96d56Sopenharmony_ci{ 1397db96d56Sopenharmony_ci return _io_FileIO_readable_impl(self); 1407db96d56Sopenharmony_ci} 1417db96d56Sopenharmony_ci 1427db96d56Sopenharmony_ciPyDoc_STRVAR(_io_FileIO_writable__doc__, 1437db96d56Sopenharmony_ci"writable($self, /)\n" 1447db96d56Sopenharmony_ci"--\n" 1457db96d56Sopenharmony_ci"\n" 1467db96d56Sopenharmony_ci"True if file was opened in a write mode."); 1477db96d56Sopenharmony_ci 1487db96d56Sopenharmony_ci#define _IO_FILEIO_WRITABLE_METHODDEF \ 1497db96d56Sopenharmony_ci {"writable", (PyCFunction)_io_FileIO_writable, METH_NOARGS, _io_FileIO_writable__doc__}, 1507db96d56Sopenharmony_ci 1517db96d56Sopenharmony_cistatic PyObject * 1527db96d56Sopenharmony_ci_io_FileIO_writable_impl(fileio *self); 1537db96d56Sopenharmony_ci 1547db96d56Sopenharmony_cistatic PyObject * 1557db96d56Sopenharmony_ci_io_FileIO_writable(fileio *self, PyObject *Py_UNUSED(ignored)) 1567db96d56Sopenharmony_ci{ 1577db96d56Sopenharmony_ci return _io_FileIO_writable_impl(self); 1587db96d56Sopenharmony_ci} 1597db96d56Sopenharmony_ci 1607db96d56Sopenharmony_ciPyDoc_STRVAR(_io_FileIO_seekable__doc__, 1617db96d56Sopenharmony_ci"seekable($self, /)\n" 1627db96d56Sopenharmony_ci"--\n" 1637db96d56Sopenharmony_ci"\n" 1647db96d56Sopenharmony_ci"True if file supports random-access."); 1657db96d56Sopenharmony_ci 1667db96d56Sopenharmony_ci#define _IO_FILEIO_SEEKABLE_METHODDEF \ 1677db96d56Sopenharmony_ci {"seekable", (PyCFunction)_io_FileIO_seekable, METH_NOARGS, _io_FileIO_seekable__doc__}, 1687db96d56Sopenharmony_ci 1697db96d56Sopenharmony_cistatic PyObject * 1707db96d56Sopenharmony_ci_io_FileIO_seekable_impl(fileio *self); 1717db96d56Sopenharmony_ci 1727db96d56Sopenharmony_cistatic PyObject * 1737db96d56Sopenharmony_ci_io_FileIO_seekable(fileio *self, PyObject *Py_UNUSED(ignored)) 1747db96d56Sopenharmony_ci{ 1757db96d56Sopenharmony_ci return _io_FileIO_seekable_impl(self); 1767db96d56Sopenharmony_ci} 1777db96d56Sopenharmony_ci 1787db96d56Sopenharmony_ciPyDoc_STRVAR(_io_FileIO_readinto__doc__, 1797db96d56Sopenharmony_ci"readinto($self, buffer, /)\n" 1807db96d56Sopenharmony_ci"--\n" 1817db96d56Sopenharmony_ci"\n" 1827db96d56Sopenharmony_ci"Same as RawIOBase.readinto()."); 1837db96d56Sopenharmony_ci 1847db96d56Sopenharmony_ci#define _IO_FILEIO_READINTO_METHODDEF \ 1857db96d56Sopenharmony_ci {"readinto", (PyCFunction)_io_FileIO_readinto, METH_O, _io_FileIO_readinto__doc__}, 1867db96d56Sopenharmony_ci 1877db96d56Sopenharmony_cistatic PyObject * 1887db96d56Sopenharmony_ci_io_FileIO_readinto_impl(fileio *self, Py_buffer *buffer); 1897db96d56Sopenharmony_ci 1907db96d56Sopenharmony_cistatic PyObject * 1917db96d56Sopenharmony_ci_io_FileIO_readinto(fileio *self, PyObject *arg) 1927db96d56Sopenharmony_ci{ 1937db96d56Sopenharmony_ci PyObject *return_value = NULL; 1947db96d56Sopenharmony_ci Py_buffer buffer = {NULL, NULL}; 1957db96d56Sopenharmony_ci 1967db96d56Sopenharmony_ci if (PyObject_GetBuffer(arg, &buffer, PyBUF_WRITABLE) < 0) { 1977db96d56Sopenharmony_ci PyErr_Clear(); 1987db96d56Sopenharmony_ci _PyArg_BadArgument("readinto", "argument", "read-write bytes-like object", arg); 1997db96d56Sopenharmony_ci goto exit; 2007db96d56Sopenharmony_ci } 2017db96d56Sopenharmony_ci if (!PyBuffer_IsContiguous(&buffer, 'C')) { 2027db96d56Sopenharmony_ci _PyArg_BadArgument("readinto", "argument", "contiguous buffer", arg); 2037db96d56Sopenharmony_ci goto exit; 2047db96d56Sopenharmony_ci } 2057db96d56Sopenharmony_ci return_value = _io_FileIO_readinto_impl(self, &buffer); 2067db96d56Sopenharmony_ci 2077db96d56Sopenharmony_ciexit: 2087db96d56Sopenharmony_ci /* Cleanup for buffer */ 2097db96d56Sopenharmony_ci if (buffer.obj) { 2107db96d56Sopenharmony_ci PyBuffer_Release(&buffer); 2117db96d56Sopenharmony_ci } 2127db96d56Sopenharmony_ci 2137db96d56Sopenharmony_ci return return_value; 2147db96d56Sopenharmony_ci} 2157db96d56Sopenharmony_ci 2167db96d56Sopenharmony_ciPyDoc_STRVAR(_io_FileIO_readall__doc__, 2177db96d56Sopenharmony_ci"readall($self, /)\n" 2187db96d56Sopenharmony_ci"--\n" 2197db96d56Sopenharmony_ci"\n" 2207db96d56Sopenharmony_ci"Read all data from the file, returned as bytes.\n" 2217db96d56Sopenharmony_ci"\n" 2227db96d56Sopenharmony_ci"In non-blocking mode, returns as much as is immediately available,\n" 2237db96d56Sopenharmony_ci"or None if no data is available. Return an empty bytes object at EOF."); 2247db96d56Sopenharmony_ci 2257db96d56Sopenharmony_ci#define _IO_FILEIO_READALL_METHODDEF \ 2267db96d56Sopenharmony_ci {"readall", (PyCFunction)_io_FileIO_readall, METH_NOARGS, _io_FileIO_readall__doc__}, 2277db96d56Sopenharmony_ci 2287db96d56Sopenharmony_cistatic PyObject * 2297db96d56Sopenharmony_ci_io_FileIO_readall_impl(fileio *self); 2307db96d56Sopenharmony_ci 2317db96d56Sopenharmony_cistatic PyObject * 2327db96d56Sopenharmony_ci_io_FileIO_readall(fileio *self, PyObject *Py_UNUSED(ignored)) 2337db96d56Sopenharmony_ci{ 2347db96d56Sopenharmony_ci return _io_FileIO_readall_impl(self); 2357db96d56Sopenharmony_ci} 2367db96d56Sopenharmony_ci 2377db96d56Sopenharmony_ciPyDoc_STRVAR(_io_FileIO_read__doc__, 2387db96d56Sopenharmony_ci"read($self, size=-1, /)\n" 2397db96d56Sopenharmony_ci"--\n" 2407db96d56Sopenharmony_ci"\n" 2417db96d56Sopenharmony_ci"Read at most size bytes, returned as bytes.\n" 2427db96d56Sopenharmony_ci"\n" 2437db96d56Sopenharmony_ci"Only makes one system call, so less data may be returned than requested.\n" 2447db96d56Sopenharmony_ci"In non-blocking mode, returns None if no data is available.\n" 2457db96d56Sopenharmony_ci"Return an empty bytes object at EOF."); 2467db96d56Sopenharmony_ci 2477db96d56Sopenharmony_ci#define _IO_FILEIO_READ_METHODDEF \ 2487db96d56Sopenharmony_ci {"read", _PyCFunction_CAST(_io_FileIO_read), METH_FASTCALL, _io_FileIO_read__doc__}, 2497db96d56Sopenharmony_ci 2507db96d56Sopenharmony_cistatic PyObject * 2517db96d56Sopenharmony_ci_io_FileIO_read_impl(fileio *self, Py_ssize_t size); 2527db96d56Sopenharmony_ci 2537db96d56Sopenharmony_cistatic PyObject * 2547db96d56Sopenharmony_ci_io_FileIO_read(fileio *self, PyObject *const *args, Py_ssize_t nargs) 2557db96d56Sopenharmony_ci{ 2567db96d56Sopenharmony_ci PyObject *return_value = NULL; 2577db96d56Sopenharmony_ci Py_ssize_t size = -1; 2587db96d56Sopenharmony_ci 2597db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("read", nargs, 0, 1)) { 2607db96d56Sopenharmony_ci goto exit; 2617db96d56Sopenharmony_ci } 2627db96d56Sopenharmony_ci if (nargs < 1) { 2637db96d56Sopenharmony_ci goto skip_optional; 2647db96d56Sopenharmony_ci } 2657db96d56Sopenharmony_ci if (!_Py_convert_optional_to_ssize_t(args[0], &size)) { 2667db96d56Sopenharmony_ci goto exit; 2677db96d56Sopenharmony_ci } 2687db96d56Sopenharmony_ciskip_optional: 2697db96d56Sopenharmony_ci return_value = _io_FileIO_read_impl(self, size); 2707db96d56Sopenharmony_ci 2717db96d56Sopenharmony_ciexit: 2727db96d56Sopenharmony_ci return return_value; 2737db96d56Sopenharmony_ci} 2747db96d56Sopenharmony_ci 2757db96d56Sopenharmony_ciPyDoc_STRVAR(_io_FileIO_write__doc__, 2767db96d56Sopenharmony_ci"write($self, b, /)\n" 2777db96d56Sopenharmony_ci"--\n" 2787db96d56Sopenharmony_ci"\n" 2797db96d56Sopenharmony_ci"Write buffer b to file, return number of bytes written.\n" 2807db96d56Sopenharmony_ci"\n" 2817db96d56Sopenharmony_ci"Only makes one system call, so not all of the data may be written.\n" 2827db96d56Sopenharmony_ci"The number of bytes actually written is returned. In non-blocking mode,\n" 2837db96d56Sopenharmony_ci"returns None if the write would block."); 2847db96d56Sopenharmony_ci 2857db96d56Sopenharmony_ci#define _IO_FILEIO_WRITE_METHODDEF \ 2867db96d56Sopenharmony_ci {"write", (PyCFunction)_io_FileIO_write, METH_O, _io_FileIO_write__doc__}, 2877db96d56Sopenharmony_ci 2887db96d56Sopenharmony_cistatic PyObject * 2897db96d56Sopenharmony_ci_io_FileIO_write_impl(fileio *self, Py_buffer *b); 2907db96d56Sopenharmony_ci 2917db96d56Sopenharmony_cistatic PyObject * 2927db96d56Sopenharmony_ci_io_FileIO_write(fileio *self, PyObject *arg) 2937db96d56Sopenharmony_ci{ 2947db96d56Sopenharmony_ci PyObject *return_value = NULL; 2957db96d56Sopenharmony_ci Py_buffer b = {NULL, NULL}; 2967db96d56Sopenharmony_ci 2977db96d56Sopenharmony_ci if (PyObject_GetBuffer(arg, &b, PyBUF_SIMPLE) != 0) { 2987db96d56Sopenharmony_ci goto exit; 2997db96d56Sopenharmony_ci } 3007db96d56Sopenharmony_ci if (!PyBuffer_IsContiguous(&b, 'C')) { 3017db96d56Sopenharmony_ci _PyArg_BadArgument("write", "argument", "contiguous buffer", arg); 3027db96d56Sopenharmony_ci goto exit; 3037db96d56Sopenharmony_ci } 3047db96d56Sopenharmony_ci return_value = _io_FileIO_write_impl(self, &b); 3057db96d56Sopenharmony_ci 3067db96d56Sopenharmony_ciexit: 3077db96d56Sopenharmony_ci /* Cleanup for b */ 3087db96d56Sopenharmony_ci if (b.obj) { 3097db96d56Sopenharmony_ci PyBuffer_Release(&b); 3107db96d56Sopenharmony_ci } 3117db96d56Sopenharmony_ci 3127db96d56Sopenharmony_ci return return_value; 3137db96d56Sopenharmony_ci} 3147db96d56Sopenharmony_ci 3157db96d56Sopenharmony_ciPyDoc_STRVAR(_io_FileIO_seek__doc__, 3167db96d56Sopenharmony_ci"seek($self, pos, whence=0, /)\n" 3177db96d56Sopenharmony_ci"--\n" 3187db96d56Sopenharmony_ci"\n" 3197db96d56Sopenharmony_ci"Move to new file position and return the file position.\n" 3207db96d56Sopenharmony_ci"\n" 3217db96d56Sopenharmony_ci"Argument offset is a byte count. Optional argument whence defaults to\n" 3227db96d56Sopenharmony_ci"SEEK_SET or 0 (offset from start of file, offset should be >= 0); other values\n" 3237db96d56Sopenharmony_ci"are SEEK_CUR or 1 (move relative to current position, positive or negative),\n" 3247db96d56Sopenharmony_ci"and SEEK_END or 2 (move relative to end of file, usually negative, although\n" 3257db96d56Sopenharmony_ci"many platforms allow seeking beyond the end of a file).\n" 3267db96d56Sopenharmony_ci"\n" 3277db96d56Sopenharmony_ci"Note that not all file objects are seekable."); 3287db96d56Sopenharmony_ci 3297db96d56Sopenharmony_ci#define _IO_FILEIO_SEEK_METHODDEF \ 3307db96d56Sopenharmony_ci {"seek", _PyCFunction_CAST(_io_FileIO_seek), METH_FASTCALL, _io_FileIO_seek__doc__}, 3317db96d56Sopenharmony_ci 3327db96d56Sopenharmony_cistatic PyObject * 3337db96d56Sopenharmony_ci_io_FileIO_seek_impl(fileio *self, PyObject *pos, int whence); 3347db96d56Sopenharmony_ci 3357db96d56Sopenharmony_cistatic PyObject * 3367db96d56Sopenharmony_ci_io_FileIO_seek(fileio *self, PyObject *const *args, Py_ssize_t nargs) 3377db96d56Sopenharmony_ci{ 3387db96d56Sopenharmony_ci PyObject *return_value = NULL; 3397db96d56Sopenharmony_ci PyObject *pos; 3407db96d56Sopenharmony_ci int whence = 0; 3417db96d56Sopenharmony_ci 3427db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("seek", nargs, 1, 2)) { 3437db96d56Sopenharmony_ci goto exit; 3447db96d56Sopenharmony_ci } 3457db96d56Sopenharmony_ci pos = args[0]; 3467db96d56Sopenharmony_ci if (nargs < 2) { 3477db96d56Sopenharmony_ci goto skip_optional; 3487db96d56Sopenharmony_ci } 3497db96d56Sopenharmony_ci whence = _PyLong_AsInt(args[1]); 3507db96d56Sopenharmony_ci if (whence == -1 && PyErr_Occurred()) { 3517db96d56Sopenharmony_ci goto exit; 3527db96d56Sopenharmony_ci } 3537db96d56Sopenharmony_ciskip_optional: 3547db96d56Sopenharmony_ci return_value = _io_FileIO_seek_impl(self, pos, whence); 3557db96d56Sopenharmony_ci 3567db96d56Sopenharmony_ciexit: 3577db96d56Sopenharmony_ci return return_value; 3587db96d56Sopenharmony_ci} 3597db96d56Sopenharmony_ci 3607db96d56Sopenharmony_ciPyDoc_STRVAR(_io_FileIO_tell__doc__, 3617db96d56Sopenharmony_ci"tell($self, /)\n" 3627db96d56Sopenharmony_ci"--\n" 3637db96d56Sopenharmony_ci"\n" 3647db96d56Sopenharmony_ci"Current file position.\n" 3657db96d56Sopenharmony_ci"\n" 3667db96d56Sopenharmony_ci"Can raise OSError for non seekable files."); 3677db96d56Sopenharmony_ci 3687db96d56Sopenharmony_ci#define _IO_FILEIO_TELL_METHODDEF \ 3697db96d56Sopenharmony_ci {"tell", (PyCFunction)_io_FileIO_tell, METH_NOARGS, _io_FileIO_tell__doc__}, 3707db96d56Sopenharmony_ci 3717db96d56Sopenharmony_cistatic PyObject * 3727db96d56Sopenharmony_ci_io_FileIO_tell_impl(fileio *self); 3737db96d56Sopenharmony_ci 3747db96d56Sopenharmony_cistatic PyObject * 3757db96d56Sopenharmony_ci_io_FileIO_tell(fileio *self, PyObject *Py_UNUSED(ignored)) 3767db96d56Sopenharmony_ci{ 3777db96d56Sopenharmony_ci return _io_FileIO_tell_impl(self); 3787db96d56Sopenharmony_ci} 3797db96d56Sopenharmony_ci 3807db96d56Sopenharmony_ci#if defined(HAVE_FTRUNCATE) 3817db96d56Sopenharmony_ci 3827db96d56Sopenharmony_ciPyDoc_STRVAR(_io_FileIO_truncate__doc__, 3837db96d56Sopenharmony_ci"truncate($self, size=None, /)\n" 3847db96d56Sopenharmony_ci"--\n" 3857db96d56Sopenharmony_ci"\n" 3867db96d56Sopenharmony_ci"Truncate the file to at most size bytes and return the truncated size.\n" 3877db96d56Sopenharmony_ci"\n" 3887db96d56Sopenharmony_ci"Size defaults to the current file position, as returned by tell().\n" 3897db96d56Sopenharmony_ci"The current file position is changed to the value of size."); 3907db96d56Sopenharmony_ci 3917db96d56Sopenharmony_ci#define _IO_FILEIO_TRUNCATE_METHODDEF \ 3927db96d56Sopenharmony_ci {"truncate", _PyCFunction_CAST(_io_FileIO_truncate), METH_FASTCALL, _io_FileIO_truncate__doc__}, 3937db96d56Sopenharmony_ci 3947db96d56Sopenharmony_cistatic PyObject * 3957db96d56Sopenharmony_ci_io_FileIO_truncate_impl(fileio *self, PyObject *posobj); 3967db96d56Sopenharmony_ci 3977db96d56Sopenharmony_cistatic PyObject * 3987db96d56Sopenharmony_ci_io_FileIO_truncate(fileio *self, PyObject *const *args, Py_ssize_t nargs) 3997db96d56Sopenharmony_ci{ 4007db96d56Sopenharmony_ci PyObject *return_value = NULL; 4017db96d56Sopenharmony_ci PyObject *posobj = Py_None; 4027db96d56Sopenharmony_ci 4037db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("truncate", nargs, 0, 1)) { 4047db96d56Sopenharmony_ci goto exit; 4057db96d56Sopenharmony_ci } 4067db96d56Sopenharmony_ci if (nargs < 1) { 4077db96d56Sopenharmony_ci goto skip_optional; 4087db96d56Sopenharmony_ci } 4097db96d56Sopenharmony_ci posobj = args[0]; 4107db96d56Sopenharmony_ciskip_optional: 4117db96d56Sopenharmony_ci return_value = _io_FileIO_truncate_impl(self, posobj); 4127db96d56Sopenharmony_ci 4137db96d56Sopenharmony_ciexit: 4147db96d56Sopenharmony_ci return return_value; 4157db96d56Sopenharmony_ci} 4167db96d56Sopenharmony_ci 4177db96d56Sopenharmony_ci#endif /* defined(HAVE_FTRUNCATE) */ 4187db96d56Sopenharmony_ci 4197db96d56Sopenharmony_ciPyDoc_STRVAR(_io_FileIO_isatty__doc__, 4207db96d56Sopenharmony_ci"isatty($self, /)\n" 4217db96d56Sopenharmony_ci"--\n" 4227db96d56Sopenharmony_ci"\n" 4237db96d56Sopenharmony_ci"True if the file is connected to a TTY device."); 4247db96d56Sopenharmony_ci 4257db96d56Sopenharmony_ci#define _IO_FILEIO_ISATTY_METHODDEF \ 4267db96d56Sopenharmony_ci {"isatty", (PyCFunction)_io_FileIO_isatty, METH_NOARGS, _io_FileIO_isatty__doc__}, 4277db96d56Sopenharmony_ci 4287db96d56Sopenharmony_cistatic PyObject * 4297db96d56Sopenharmony_ci_io_FileIO_isatty_impl(fileio *self); 4307db96d56Sopenharmony_ci 4317db96d56Sopenharmony_cistatic PyObject * 4327db96d56Sopenharmony_ci_io_FileIO_isatty(fileio *self, PyObject *Py_UNUSED(ignored)) 4337db96d56Sopenharmony_ci{ 4347db96d56Sopenharmony_ci return _io_FileIO_isatty_impl(self); 4357db96d56Sopenharmony_ci} 4367db96d56Sopenharmony_ci 4377db96d56Sopenharmony_ci#ifndef _IO_FILEIO_TRUNCATE_METHODDEF 4387db96d56Sopenharmony_ci #define _IO_FILEIO_TRUNCATE_METHODDEF 4397db96d56Sopenharmony_ci#endif /* !defined(_IO_FILEIO_TRUNCATE_METHODDEF) */ 4407db96d56Sopenharmony_ci/*[clinic end generated code: output=fdcf0f9277d44415 input=a9049054013a1b77]*/ 441