2010-10-07 18:45:39 -03:00
|
|
|
#ifndef Py_FILEUTILS_H
|
|
|
|
#define Py_FILEUTILS_H
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
2016-12-27 08:57:39 -04:00
|
|
|
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
|
2014-08-01 07:28:48 -03:00
|
|
|
PyAPI_FUNC(wchar_t *) Py_DecodeLocale(
|
2010-10-16 20:16:16 -03:00
|
|
|
const char *arg,
|
|
|
|
size_t *size);
|
2010-10-07 18:45:39 -03:00
|
|
|
|
2014-08-01 07:28:48 -03:00
|
|
|
PyAPI_FUNC(char*) Py_EncodeLocale(
|
2010-11-08 18:43:46 -04:00
|
|
|
const wchar_t *text,
|
|
|
|
size_t *error_pos);
|
2017-12-21 11:20:32 -04:00
|
|
|
|
|
|
|
PyAPI_FUNC(char*) _Py_EncodeLocaleRaw(
|
|
|
|
const wchar_t *text,
|
|
|
|
size_t *error_pos);
|
2016-12-27 08:57:39 -04:00
|
|
|
#endif
|
2010-10-07 18:45:39 -03:00
|
|
|
|
2017-12-21 11:49:13 -04:00
|
|
|
#ifdef Py_BUILD_CORE
|
2018-01-15 05:45:49 -04:00
|
|
|
PyAPI_FUNC(int) _Py_DecodeUTF8Ex(
|
|
|
|
const char *arg,
|
|
|
|
Py_ssize_t arglen,
|
|
|
|
wchar_t **wstr,
|
|
|
|
size_t *wlen,
|
|
|
|
const char **reason,
|
|
|
|
int surrogateescape);
|
|
|
|
|
|
|
|
PyAPI_FUNC(int) _Py_EncodeUTF8Ex(
|
|
|
|
const wchar_t *text,
|
|
|
|
char **str,
|
|
|
|
size_t *error_pos,
|
|
|
|
const char **reason,
|
|
|
|
int raw_malloc,
|
|
|
|
int surrogateescape);
|
|
|
|
|
2017-12-21 11:49:13 -04:00
|
|
|
PyAPI_FUNC(wchar_t*) _Py_DecodeUTF8_surrogateescape(
|
2018-01-15 05:45:49 -04:00
|
|
|
const char *arg,
|
|
|
|
Py_ssize_t arglen);
|
2018-01-10 17:46:15 -04:00
|
|
|
|
2018-01-15 05:45:49 -04:00
|
|
|
PyAPI_FUNC(int) _Py_DecodeLocaleEx(
|
2018-01-10 17:46:15 -04:00
|
|
|
const char *arg,
|
2018-01-15 05:45:49 -04:00
|
|
|
wchar_t **wstr,
|
|
|
|
size_t *wlen,
|
|
|
|
const char **reason,
|
|
|
|
int current_locale,
|
|
|
|
int surrogateescape);
|
2018-01-10 17:46:15 -04:00
|
|
|
|
2018-01-15 05:45:49 -04:00
|
|
|
PyAPI_FUNC(int) _Py_EncodeLocaleEx(
|
2018-01-10 17:46:15 -04:00
|
|
|
const wchar_t *text,
|
2018-01-15 05:45:49 -04:00
|
|
|
char **str,
|
|
|
|
size_t *error_pos,
|
|
|
|
const char **reason,
|
|
|
|
int current_locale,
|
|
|
|
int surrogateescape);
|
2017-12-21 11:49:13 -04:00
|
|
|
#endif
|
|
|
|
|
2015-02-22 13:39:36 -04:00
|
|
|
#ifndef Py_LIMITED_API
|
2016-09-11 05:03:14 -03:00
|
|
|
PyAPI_FUNC(PyObject *) _Py_device_encoding(int);
|
|
|
|
|
2018-10-18 03:58:40 -03:00
|
|
|
#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
|
|
|
|
|
2015-02-21 12:44:05 -04:00
|
|
|
#ifdef MS_WINDOWS
|
|
|
|
struct _Py_stat_struct {
|
|
|
|
unsigned long st_dev;
|
2017-03-09 12:34:28 -04:00
|
|
|
uint64_t st_ino;
|
2015-02-21 12:44:05 -04:00
|
|
|
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;
|
|
|
|
};
|
|
|
|
#else
|
|
|
|
# define _Py_stat_struct stat
|
|
|
|
#endif
|
|
|
|
|
|
|
|
PyAPI_FUNC(int) _Py_fstat(
|
|
|
|
int fd,
|
2015-03-30 05:09:31 -03:00
|
|
|
struct _Py_stat_struct *status);
|
|
|
|
|
|
|
|
PyAPI_FUNC(int) _Py_fstat_noraise(
|
|
|
|
int fd,
|
|
|
|
struct _Py_stat_struct *status);
|
2015-02-21 12:44:05 -04:00
|
|
|
|
2010-10-07 18:45:39 -03:00
|
|
|
PyAPI_FUNC(int) _Py_stat(
|
2010-10-07 19:23:10 -03:00
|
|
|
PyObject *path,
|
2015-03-30 05:09:31 -03:00
|
|
|
struct stat *status);
|
2010-10-07 18:45:39 -03:00
|
|
|
|
2013-08-27 19:53:59 -03:00
|
|
|
PyAPI_FUNC(int) _Py_open(
|
|
|
|
const char *pathname,
|
|
|
|
int flags);
|
2015-03-17 20:22:14 -03:00
|
|
|
|
|
|
|
PyAPI_FUNC(int) _Py_open_noraise(
|
|
|
|
const char *pathname,
|
|
|
|
int flags);
|
2013-08-27 19:53:59 -03:00
|
|
|
|
2010-10-07 18:45:39 -03:00
|
|
|
PyAPI_FUNC(FILE *) _Py_wfopen(
|
|
|
|
const wchar_t *path,
|
|
|
|
const wchar_t *mode);
|
|
|
|
|
|
|
|
PyAPI_FUNC(FILE*) _Py_fopen(
|
2013-08-27 19:53:59 -03:00
|
|
|
const char *pathname,
|
|
|
|
const char *mode);
|
|
|
|
|
|
|
|
PyAPI_FUNC(FILE*) _Py_fopen_obj(
|
2010-10-07 19:23:10 -03:00
|
|
|
PyObject *path,
|
2010-10-07 18:45:39 -03:00
|
|
|
const char *mode);
|
|
|
|
|
2015-03-19 18:53:20 -03:00
|
|
|
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);
|
|
|
|
|
2015-04-01 13:34:45 -03:00
|
|
|
PyAPI_FUNC(Py_ssize_t) _Py_write_noraise(
|
|
|
|
int fd,
|
|
|
|
const void *buf,
|
|
|
|
size_t count);
|
|
|
|
|
2010-10-07 18:45:39 -03:00
|
|
|
#ifdef HAVE_READLINK
|
|
|
|
PyAPI_FUNC(int) _Py_wreadlink(
|
|
|
|
const wchar_t *path,
|
|
|
|
wchar_t *buf,
|
|
|
|
size_t bufsiz);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef HAVE_REALPATH
|
|
|
|
PyAPI_FUNC(wchar_t*) _Py_wrealpath(
|
|
|
|
const wchar_t *path,
|
2010-10-07 19:29:53 -03:00
|
|
|
wchar_t *resolved_path,
|
|
|
|
size_t resolved_path_size);
|
2010-10-07 18:45:39 -03:00
|
|
|
#endif
|
|
|
|
|
|
|
|
PyAPI_FUNC(wchar_t*) _Py_wgetcwd(
|
|
|
|
wchar_t *buf,
|
|
|
|
size_t size);
|
|
|
|
|
2013-08-27 19:53:59 -03:00
|
|
|
PyAPI_FUNC(int) _Py_get_inheritable(int fd);
|
|
|
|
|
|
|
|
PyAPI_FUNC(int) _Py_set_inheritable(int fd, int inheritable,
|
|
|
|
int *atomic_flag_works);
|
|
|
|
|
2018-02-06 02:31:22 -04:00
|
|
|
PyAPI_FUNC(int) _Py_set_inheritable_async_safe(int fd, int inheritable,
|
|
|
|
int *atomic_flag_works);
|
|
|
|
|
2013-08-27 19:53:59 -03:00
|
|
|
PyAPI_FUNC(int) _Py_dup(int fd);
|
2014-07-29 17:32:47 -03:00
|
|
|
|
|
|
|
#ifndef MS_WINDOWS
|
|
|
|
PyAPI_FUNC(int) _Py_get_blocking(int fd);
|
|
|
|
|
|
|
|
PyAPI_FUNC(int) _Py_set_blocking(int fd, int blocking);
|
|
|
|
#endif /* !MS_WINDOWS */
|
|
|
|
|
2018-01-15 10:58:02 -04:00
|
|
|
PyAPI_FUNC(int) _Py_GetLocaleconvNumeric(
|
|
|
|
PyObject **decimal_point,
|
|
|
|
PyObject **thousands_sep,
|
|
|
|
const char **grouping);
|
|
|
|
|
2014-07-29 17:32:47 -03:00
|
|
|
#endif /* Py_LIMITED_API */
|
2013-08-27 19:53:59 -03:00
|
|
|
|
2018-10-30 08:59:20 -03:00
|
|
|
#ifdef Py_BUILD_CORE
|
|
|
|
PyAPI_FUNC(int) _Py_GetForceASCII(void);
|
2018-11-23 08:37:42 -04:00
|
|
|
|
|
|
|
/* Reset "force ASCII" mode (if it was initialized).
|
|
|
|
|
|
|
|
This function should be called when Python changes the LC_CTYPE locale,
|
|
|
|
so the "force ASCII" mode can be detected again on the new locale
|
|
|
|
encoding. */
|
|
|
|
PyAPI_FUNC(void) _Py_ResetForceASCII(void);
|
2018-10-30 08:59:20 -03:00
|
|
|
#endif
|
|
|
|
|
2010-10-07 18:45:39 -03:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif /* !Py_FILEUTILS_H */
|