mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 21:51:50 +00:00 
			
		
		
		
	 82c3e4599d
			
		
	
	
		82c3e4599d
		
	
	
	
	
		
			
			Helper to write() which retries write() if it is interrupted by a signal (fails with EINTR).
		
			
				
	
	
		
			142 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			142 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef Py_FILEUTILS_H
 | |
| #define Py_FILEUTILS_H
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| PyAPI_FUNC(PyObject *) _Py_device_encoding(int);
 | |
| 
 | |
| 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);
 | |
| 
 | |
| #ifndef Py_LIMITED_API
 | |
| 
 | |
| #ifdef MS_WINDOWS
 | |
| struct _Py_stat_struct {
 | |
|     unsigned long st_dev;
 | |
|     __int64 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;
 | |
| };
 | |
| #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);
 | |
| #endif   /* Py_LIMITED_API */
 | |
| 
 | |
| PyAPI_FUNC(int) _Py_stat(
 | |
|     PyObject *path,
 | |
|     struct stat *status);
 | |
| 
 | |
| #ifndef Py_LIMITED_API
 | |
| PyAPI_FUNC(int) _Py_open(
 | |
|     const char *pathname,
 | |
|     int flags);
 | |
| 
 | |
| PyAPI_FUNC(int) _Py_open_noraise(
 | |
|     const char *pathname,
 | |
|     int flags);
 | |
| #endif
 | |
| 
 | |
| 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,
 | |
|     size_t bufsiz);
 | |
| #endif
 | |
| 
 | |
| #ifdef HAVE_REALPATH
 | |
| PyAPI_FUNC(wchar_t*) _Py_wrealpath(
 | |
|     const wchar_t *path,
 | |
|     wchar_t *resolved_path,
 | |
|     size_t resolved_path_size);
 | |
| #endif
 | |
| 
 | |
| PyAPI_FUNC(wchar_t*) _Py_wgetcwd(
 | |
|     wchar_t *buf,
 | |
|     size_t size);
 | |
| 
 | |
| #ifndef Py_LIMITED_API
 | |
| 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_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 */
 | |
| 
 | |
| #if defined _MSC_VER && _MSC_VER >= 1400
 | |
| /* A routine to check if a file descriptor is valid on Windows.  Returns 0
 | |
|  * and sets errno to EBADF if it isn't.  This is to avoid Assertions
 | |
|  * from various functions in the Windows CRT beginning with
 | |
|  * Visual Studio 2005
 | |
|  */
 | |
| int _PyVerify_fd(int fd);
 | |
| 
 | |
| #else
 | |
| #define _PyVerify_fd(A) (1) /* dummy */
 | |
| #endif
 | |
| 
 | |
| #endif   /* Py_LIMITED_API */
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif /* !Py_FILEUTILS_H */
 |