📄 apr_file_io.h
字号:
* @tip apr_file_read will read up to the specified number of bytes, but never * more. If there isn't enough data to fill that number of bytes, * then the process/thread will block until it is available or EOF * is reached. If a char was put back into the stream via ungetc, * it will be the first character returned. * * It is possible for both bytes to be read and an APR_EOF or other * error to be returned. * * APR_EINTR is never returned. * @deffunc apr_status_t apr_file_read_full(apr_file_t *thefile, void *buf, apr_size_t nbytes, apr_size_t *bytes_read) */APR_DECLARE(apr_status_t) apr_file_read_full(apr_file_t *thefile, void *buf, apr_size_t nbytes, apr_size_t *bytes_read);/** * Write data to the specified file, ensuring that all of the data is * written before returning. * @param thefile The file descriptor to write to. * @param buf The buffer which contains the data. * @param nbytes The number of bytes to write. * @param bytes_written If non-NULL, this will contain the number of bytes written. * @tip apr_file_write will write up to the specified number of bytes, but never * more. If the OS cannot write that many bytes, the process/thread * will block until they can be written. Exceptional error such as * "out of space" or "pipe closed" will terminate with an error. * * It is possible for both bytes to be written and an error to be returned. * * APR_EINTR is never returned. * @deffunc apr_status_t apr_file_write_full(apr_file_t *thefile, const void *buf, apr_size_t nbytes, apr_size_t *bytes_written) */APR_DECLARE(apr_status_t) apr_file_write_full(apr_file_t *thefile, const void *buf, apr_size_t nbytes, apr_size_t *bytes_written);/** * put a character into the specified file. * @param ch The character to write. * @param thefile The file descriptor to write to * @deffunc apr_status_t apr_file_putc(char ch, apr_file_t *thefile) */APR_DECLARE(apr_status_t) apr_file_putc(char ch, apr_file_t *thefile);/** * get a character from the specified file. * @param ch The character to write. * @param thefile The file descriptor to write to * @deffunc apr_status_t apr_file_getc(char *ch, apr_file_t *thefile) */APR_DECLARE(apr_status_t) apr_file_getc(char *ch, apr_file_t *thefile);/** * put a character back onto a specified stream. * @param ch The character to write. * @param thefile The file descriptor to write to * @deffunc apr_status_t apr_file_ungetc(char ch, apr_file_t *thefile) */APR_DECLARE(apr_status_t) apr_file_ungetc(char ch, apr_file_t *thefile);/** * Get a string from a specified file. * @param str The buffer to store the string in. * @param len The length of the string * @param thefile The file descriptor to read from * @deffunc apr_status_t apr_file_gets(char *str, int len, apr_file_t *thefile) */APR_DECLARE(apr_status_t) apr_file_gets(char *str, int len, apr_file_t *thefile);/** * Put the string into a specified file. * @param str The string to write. * @param thefile The file descriptor to write to * @deffunc apr_status_t apr_file_puts(const char *str, apr_file_t *thefile) */APR_DECLARE(apr_status_t) apr_file_puts(const char *str, apr_file_t *thefile);/** * Flush the file's buffer. * @param thefile The file descriptor to flush * @deffunc apr_status_t apr_file_flush(apr_file_t *thefile) */APR_DECLARE(apr_status_t) apr_file_flush(apr_file_t *thefile);/** * duplicate the specified file descriptor. * @param new_file The structure to duplicate into. * @param old_file The file to duplicate. * @param p The pool to use for the new file. * @tip *arg1 must point to a valid apr_file_t, or point to NULL * @deffunc apr_status_t apr_file_dup(apr_file_t **new_file, apr_file_t *old_file, apr_pool_t *p) */ APR_DECLARE(apr_status_t) apr_file_dup(apr_file_t **new_file, apr_file_t *old_file, apr_pool_t *p);/** * Move the read/write file offset to a specified byte within a file. * @param thefile The file descriptor * @param where How to move the pointer, one of: * <PRE> * APR_SET -- set the offset to offset * APR_CUR -- add the offset to the current position * APR_END -- add the offset to the current file size * </PRE> * @param offset The offset to move the pointer to. * @tip The third argument is modified to be the offset the pointer was actually moved to. * @deffunc apr_status_t apr_file_seek(apr_file_t *thefile, apr_seek_where_t where, apr_off_t *offset) */APR_DECLARE(apr_status_t) apr_file_seek(apr_file_t *thefile, apr_seek_where_t where, apr_off_t *offset);/** * Create an anonymous pipe. * @param in The file descriptor to use as input to the pipe. * @param out The file descriptor to use as output from the pipe. * @param cont The pool to operate on. * @deffunc apr_status_t apr_file_pipe_create(apr_file_t **in, apr_file_t **out, apr_pool_t *cont) */APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, apr_file_t **out, apr_pool_t *cont);/** * Create a named pipe. * @param filename The filename of the named pipe * @param perm The permissions for the newly created pipe. * @param cont The pool to operate on. * @deffunc apr_status_t apr_file_namedpipe_create(const char *filename, apr_fileperms_t perm, apr_pool_t *cont) */APR_DECLARE(apr_status_t) apr_file_namedpipe_create(const char *filename, apr_fileperms_t perm, apr_pool_t *cont);/** * Get the timeout value for a pipe or manipulate the blocking state. * @param thepipe The pipe we are getting a timeout for. * @param timeout The current timeout value in microseconds. * @deffunc apr_status_t apr_file_pipe_timeout_get(apr_file_t *thepipe, apr_interval_time_t *timeout) */APR_DECLARE(apr_status_t) apr_file_pipe_timeout_get(apr_file_t *thepipe, apr_interval_time_t *timeout);/** * Set the timeout value for a pipe or manipulate the blocking state. * @param thepipe The pipe we are setting a timeout on. * @param timeout The timeout value in microseconds. Values < 0 mean wait * forever, 0 means do not wait at all. * @deffunc apr_status_t apr_file_pipe_timeout_set(apr_file_t *thepipe, apr_interval_time_t timeout) */APR_DECLARE(apr_status_t) apr_file_pipe_timeout_set(apr_file_t *thepipe, apr_interval_time_t timeout);/** file (un)locking functions. *//** * Establish a lock on the specified, open file. The lock may be advisory * or mandatory, at the discretion of the platform. The lock applies to * the file as a whole, rather than a specific range. Locks are established * on a per-thread/process basis; a second lock by the same thread will not * block. * @param thefile The file to lock. * @param type The type of lock to establish on the file. * @deffunc apr_status_t apr_file_lock(apr_file_t *thefile, int type) */APR_DECLARE(apr_status_t) apr_file_lock(apr_file_t *thefile, int type);/** * Remove any outstanding locks on the file. * @param thefile The file to unlock. * @deffunc apr_status_t apr_file_unlock(apr_file_t *thefile) */APR_DECLARE(apr_status_t) apr_file_unlock(apr_file_t *thefile);/**accessor and general file_io functions. *//** * return the file name of the current file. * @param new_path The path of the file. * @param thefile The currently open file. * @deffunc apr_status_t apr_file_name_get(const char **new_path, apr_file_t *thefile) */ APR_DECLARE(apr_status_t) apr_file_name_get(const char **new_path, apr_file_t *thefile);/** * Return the data associated with the current file. * @param data The user data associated with the file. * @param key The key to use for retreiving data associated with this file. * @param file The currently open file. * @deffunc apr_status_t apr_file_data_get(void **data, const char *key, apr_file_t *file) */ APR_DECLARE(apr_status_t) apr_file_data_get(void **data, const char *key, apr_file_t *file);/** * Set the data associated with the current file. * @param file The currently open file. * @param data The user data to associate with the file. * @param key The key to use for assocaiteing data with the file. * @param cleanup The cleanup routine to use when the file is destroyed. * @deffunc apr_status_t apr_file_data_set(apr_file_t *file, void *data, const char *key, apr_status_t (*cleanup)(void *)) */ APR_DECLARE(apr_status_t) apr_file_data_set(apr_file_t *file, void *data, const char *key, apr_status_t (*cleanup)(void *));/** * Write a string to a file using a printf format. * @param fptr The file to write to. * @param format The format string * @param ... The values to substitute in the format string * @return The number of bytes written * @deffunc int apr_file_printf(apr_file_t *fptr, const char *format, ...) */ APR_DECLARE_NONSTD(int) apr_file_printf(apr_file_t *fptr, const char *format, ...) __attribute__((format(printf,2,3)));/** * set the specified file's permission bits. * @param fname The file (name) to apply the permissions to. * @param perms The permission bits to apply to the file. * @tip Some platforms may not be able to apply all of the available * permission bits; APR_INCOMPLETE will be returned if some permissions * are specified which could not be set. * * Platforms which do not implement this feature will return APR_ENOTIMPL. * @deffunc apr_status_t apr_file_perms_set(const char *fname, apr_fileperms_t perms) */APR_DECLARE(apr_status_t) apr_file_perms_set(const char *fname, apr_fileperms_t perms);/** * Create a new directory on the file system. * @param path the path for the directory to be created. (use / on all systems) * @param perm Permissions for the new direcoty. * @param cont the pool to use. * @deffunc apr_status_t apr_dir_make(const char *path, apr_fileperms_t perm, apr_pool_t *cont) */ APR_DECLARE(apr_status_t) apr_dir_make(const char *path, apr_fileperms_t perm, apr_pool_t *cont);/** * Remove directory from the file system. * @param path the path for the directory to be removed. (use / on all systems) * @param cont the pool to use. * @deffunc apr_status_t apr_dir_remove(const char *path, apr_pool_t *cont) */ APR_DECLARE(apr_status_t) apr_dir_remove(const char *path, apr_pool_t *cont);/** * get the specified file's stats. * @param finfo Where to store the information about the file. * @param wanted The desired apr_finfo_t fields, as a bit flag of APR_FINFO_ values * @param thefile The file to get information about. * @deffunc apr_status_t apr_file_info_get(apr_finfo_t *finfo, apr_int32_t wanted, apr_file_t *thefile) */ APR_DECLARE(apr_status_t) apr_file_info_get(apr_finfo_t *finfo, apr_int32_t wanted, apr_file_t *thefile);/** * Get the pool used by the file. * @return apr_pool_t the pool * @deffunc apr_pool_t apr_file_pool_get(apr_file_t *f) */APR_POOL_DECLARE_ACCESSOR(file);#ifdef __cplusplus}#endif#endif /* ! APR_FILE_IO_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -