123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- #ifndef Py_FILEUTILS_H
- #define Py_FILEUTILS_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
- PyAPI_FUNC(wchar_t *) Py_DecodeLocale(
- const char *arg,
- size_t *size);
- PyAPI_FUNC(char*) Py_EncodeLocale(
- const wchar_t *text,
- size_t *error_pos);
- PyAPI_FUNC(char*) _Py_EncodeLocaleRaw(
- const wchar_t *text,
- size_t *error_pos);
- #endif
- #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03080000
- typedef enum {
- _Py_ERROR_UNKNOWN=0,
- _Py_ERROR_STRICT,
- _Py_ERROR_SURROGATEESCAPE,
- _Py_ERROR_REPLACE,
- _Py_ERROR_IGNORE,
- _Py_ERROR_BACKSLASHREPLACE,
- _Py_ERROR_SURROGATEPASS,
- _Py_ERROR_XMLCHARREFREPLACE,
- _Py_ERROR_OTHER
- } _Py_error_handler;
- PyAPI_FUNC(_Py_error_handler) _Py_GetErrorHandler(const char *errors);
- PyAPI_FUNC(int) _Py_DecodeLocaleEx(
- const char *arg,
- wchar_t **wstr,
- size_t *wlen,
- const char **reason,
- int current_locale,
- _Py_error_handler errors);
- PyAPI_FUNC(int) _Py_EncodeLocaleEx(
- const wchar_t *text,
- char **str,
- size_t *error_pos,
- const char **reason,
- int current_locale,
- _Py_error_handler errors);
- #endif
- #ifndef Py_LIMITED_API
- PyAPI_FUNC(PyObject *) _Py_device_encoding(int);
- #if defined(MS_WINDOWS) || defined(__APPLE__)
- /* On Windows, the count parameter of read() is an int (bpo-9015, bpo-9611).
- On macOS 10.13, read() and write() with more than INT_MAX bytes
- fail with EINVAL (bpo-24658). */
- # define _PY_READ_MAX INT_MAX
- # define _PY_WRITE_MAX INT_MAX
- #else
- /* write() should truncate the input to PY_SSIZE_T_MAX bytes,
- but it's safer to do it ourself to have a portable behaviour */
- # define _PY_READ_MAX PY_SSIZE_T_MAX
- # define _PY_WRITE_MAX PY_SSIZE_T_MAX
- #endif
- #ifdef MS_WINDOWS
- struct _Py_stat_struct {
- unsigned long st_dev;
- uint64_t st_ino;
- unsigned short st_mode;
- int st_nlink;
- int st_uid;
- int st_gid;
- unsigned long st_rdev;
- __int64 st_size;
- time_t st_atime;
- int st_atime_nsec;
- time_t st_mtime;
- int st_mtime_nsec;
- time_t st_ctime;
- int st_ctime_nsec;
- unsigned long st_file_attributes;
- unsigned long st_reparse_tag;
- };
- #else
- # define _Py_stat_struct stat
- #endif
- PyAPI_FUNC(int) _Py_fstat(
- int fd,
- struct _Py_stat_struct *status);
- PyAPI_FUNC(int) _Py_fstat_noraise(
- int fd,
- struct _Py_stat_struct *status);
- PyAPI_FUNC(int) _Py_stat(
- PyObject *path,
- struct stat *status);
- PyAPI_FUNC(int) _Py_open(
- const char *pathname,
- int flags);
- PyAPI_FUNC(int) _Py_open_noraise(
- const char *pathname,
- int flags);
- PyAPI_FUNC(FILE *) _Py_wfopen(
- const wchar_t *path,
- const wchar_t *mode);
- PyAPI_FUNC(FILE*) _Py_fopen(
- const char *pathname,
- const char *mode);
- PyAPI_FUNC(FILE*) _Py_fopen_obj(
- PyObject *path,
- const char *mode);
- PyAPI_FUNC(Py_ssize_t) _Py_read(
- int fd,
- void *buf,
- size_t count);
- PyAPI_FUNC(Py_ssize_t) _Py_write(
- int fd,
- const void *buf,
- size_t count);
- PyAPI_FUNC(Py_ssize_t) _Py_write_noraise(
- int fd,
- const void *buf,
- size_t count);
- #ifdef HAVE_READLINK
- PyAPI_FUNC(int) _Py_wreadlink(
- const wchar_t *path,
- wchar_t *buf,
- /* Number of characters of 'buf' buffer
- including the trailing NUL character */
- size_t buflen);
- #endif
- #ifdef HAVE_REALPATH
- PyAPI_FUNC(wchar_t*) _Py_wrealpath(
- const wchar_t *path,
- wchar_t *resolved_path,
- /* Number of characters of 'resolved_path' buffer
- including the trailing NUL character */
- size_t resolved_path_len);
- #endif
- PyAPI_FUNC(wchar_t*) _Py_wgetcwd(
- wchar_t *buf,
- /* Number of characters of 'buf' buffer
- including the trailing NUL character */
- size_t buflen);
- PyAPI_FUNC(int) _Py_get_inheritable(int fd);
- PyAPI_FUNC(int) _Py_set_inheritable(int fd, int inheritable,
- int *atomic_flag_works);
- PyAPI_FUNC(int) _Py_set_inheritable_async_safe(int fd, int inheritable,
- int *atomic_flag_works);
- PyAPI_FUNC(int) _Py_dup(int fd);
- #ifndef MS_WINDOWS
- PyAPI_FUNC(int) _Py_get_blocking(int fd);
- PyAPI_FUNC(int) _Py_set_blocking(int fd, int blocking);
- #endif /* !MS_WINDOWS */
- #endif /* Py_LIMITED_API */
- #ifdef __cplusplus
- }
- #endif
- #endif /* !Py_FILEUTILS_H */
|