#include <apr.h>
#include <apr_pools.h>
#include <apr_file_io.h>
#include <apr_thread_proc.h>
#include "svn_types.h"
#include "svn_error.h"
Go to the source code of this file.
Data Structures | |
struct | svn_io_dirent_t |
Represents the kind and special status of a directory entry. More... | |
Typedefs | |
typedef enum svn_io_file_del_t | svn_io_file_del_t |
Used as an argument when creating temporary files to indicate when a file should be removed. | |
typedef svn_io_dirent_t | svn_io_dirent_t |
Represents the kind and special status of a directory entry. | |
typedef svn_stream_t | svn_stream_t |
An abstract stream of bytes--either incoming or outgoing or both. | |
typedef svn_error_t *(* | svn_read_fn_t )(void *baton, char *buffer, apr_size_t *len) |
Read handler function for a generic stream. | |
typedef svn_error_t *(* | svn_write_fn_t )(void *baton, const char *data, apr_size_t *len) |
Write handler function for a generic stream. | |
typedef svn_error_t *(* | svn_close_fn_t )(void *baton) |
Close handler function for a generic stream. | |
typedef svn_error_t *(* | svn_io_walk_func_t )(void *baton, const char *path, const apr_finfo_t *finfo, apr_pool_t *pool) |
Callback function type for svn_io_dir_walk(). | |
Enumerations | |
enum | svn_io_file_del_t { svn_io_file_del_none = 0, svn_io_file_del_on_close, svn_io_file_del_on_pool_cleanup } |
Used as an argument when creating temporary files to indicate when a file should be removed. More... | |
Functions | |
svn_error_t * | svn_io_check_path (const char *path, svn_node_kind_t *kind, apr_pool_t *pool) |
Determine the kind of path. | |
svn_error_t * | svn_io_check_special_path (const char *path, svn_node_kind_t *kind, svn_boolean_t *is_special, apr_pool_t *pool) |
Like svn_io_check_path(), but also set *is_special to TRUE if the path is not a normal file. | |
svn_error_t * | svn_io_check_resolved_path (const char *path, svn_node_kind_t *kind, apr_pool_t *pool) |
Like svn_io_check_path(), but resolve symlinks. | |
svn_error_t * | svn_io_open_unique_file2 (apr_file_t **f, const char **unique_name_p, const char *path, const char *suffix, svn_io_file_del_t delete_when, apr_pool_t *pool) |
Open a new file (for reading and writing) with a unique name based on utf-8 encoded path, in the same directory as path. | |
svn_error_t * | svn_io_open_unique_file (apr_file_t **f, const char **unique_name_p, const char *path, const char *suffix, svn_boolean_t delete_on_close, apr_pool_t *pool) |
Like svn_io_open_unique_file2, but can't delete on pool cleanup. | |
svn_error_t * | svn_io_create_unique_link (const char **unique_name_p, const char *path, const char *dest, const char *suffix, apr_pool_t *pool) |
Like svn_io_open_unique_file(), except that instead of creating a file, a symlink is generated that references the path dest. | |
svn_error_t * | svn_io_read_link (svn_string_t **dest, const char *path, apr_pool_t *pool) |
Set *dest to the path that the symlink at path references. | |
svn_error_t * | svn_io_temp_dir (const char **dir, apr_pool_t *pool) |
Set *dir to a directory path (allocated in pool) deemed usable for the creation of temporary files and subdirectories. | |
svn_error_t * | svn_io_copy_file (const char *src, const char *dst, svn_boolean_t copy_perms, apr_pool_t *pool) |
Copy src to dst atomically, in a "byte-for-byte" manner. | |
svn_error_t * | svn_io_copy_link (const char *src, const char *dst, apr_pool_t *pool) |
Copy symbolic link src to dst atomically. | |
svn_error_t * | svn_io_copy_dir_recursively (const char *src, const char *dst_parent, const char *dst_basename, svn_boolean_t copy_perms, svn_cancel_func_t cancel_func, void *cancel_baton, apr_pool_t *pool) |
Recursively copy directory src into dst_parent, as a new entry named dst_basename. | |
svn_error_t * | svn_io_make_dir_recursively (const char *path, apr_pool_t *pool) |
Create directory path on the file system, creating intermediate directories as required, like mkdir -p . | |
svn_error_t * | svn_io_dir_empty (svn_boolean_t *is_empty_p, const char *path, apr_pool_t *pool) |
Set *is_empty_p to TRUE if directory path is empty, else to FALSE if it is not empty. | |
svn_error_t * | svn_io_append_file (const char *src, const char *dst, apr_pool_t *pool) |
Append src to dst. | |
svn_error_t * | svn_io_set_file_read_only (const char *path, svn_boolean_t ignore_enoent, apr_pool_t *pool) |
Make a file as read-only as the operating system allows. | |
svn_error_t * | svn_io_set_file_read_write (const char *path, svn_boolean_t ignore_enoent, apr_pool_t *pool) |
Make a file as writable as the operating system allows. | |
svn_error_t * | svn_io_set_file_read_write_carefully (const char *path, svn_boolean_t enable_write, svn_boolean_t ignore_enoent, apr_pool_t *pool) |
Similar to svn_io_set_file_read_* functions. | |
svn_error_t * | svn_io_set_file_executable (const char *path, svn_boolean_t executable, svn_boolean_t ignore_enoent, apr_pool_t *pool) |
Set path's "executability" (but do nothing if it is a symlink). | |
svn_error_t * | svn_io_is_file_executable (svn_boolean_t *executable, const char *path, apr_pool_t *pool) |
Determine whether a file is executable by the current user. | |
svn_error_t * | svn_io_read_length_line (apr_file_t *file, char *buf, apr_size_t *limit, apr_pool_t *pool) |
Read a line from file into buf, but not exceeding *limit bytes. | |
svn_error_t * | svn_io_file_affected_time (apr_time_t *apr_time, const char *path, apr_pool_t *pool) |
Set *apr_time to the time of last modification of the contents of the file path. | |
svn_error_t * | svn_io_set_file_affected_time (apr_time_t apr_time, const char *path, apr_pool_t *pool) |
Set the timestamp of file path to apr_time. | |
svn_error_t * | svn_io_filesizes_different_p (svn_boolean_t *different_p, const char *file1, const char *file2, apr_pool_t *pool) |
Set *different_p to non-zero if file1 and file2 have different sizes, else set to zero. | |
svn_error_t * | svn_io_file_checksum (unsigned char digest[], const char *file, apr_pool_t *pool) |
Put the md5 checksum of file into digest. | |
svn_error_t * | svn_io_files_contents_same_p (svn_boolean_t *same, const char *file1, const char *file2, apr_pool_t *pool) |
Set *same to TRUE if file1 and file2 have the same contents, else set it to FALSE. | |
svn_error_t * | svn_io_file_create (const char *file, const char *contents, apr_pool_t *pool) |
Create file at utf8-encoded file with contents contents. | |
svn_error_t * | svn_io_file_lock (const char *lock_file, svn_boolean_t exclusive, apr_pool_t *pool) |
Lock file at lock_file. | |
svn_error_t * | svn_io_file_lock2 (const char *lock_file, svn_boolean_t exclusive, svn_boolean_t nonblocking, apr_pool_t *pool) |
Lock file at lock_file. | |
svn_error_t * | svn_io_file_flush_to_disk (apr_file_t *file, apr_pool_t *pool) |
Flush any unwritten data from file to disk. | |
svn_error_t * | svn_io_dir_file_copy (const char *src_path, const char *dest_path, const char *file, apr_pool_t *pool) |
Copy file file from location src_path to location dest_path. | |
svn_stream_t * | svn_stream_create (void *baton, apr_pool_t *pool) |
Create a generic stream. | |
void | svn_stream_set_baton (svn_stream_t *stream, void *baton) |
Set stream's baton to baton. | |
void | svn_stream_set_read (svn_stream_t *stream, svn_read_fn_t read_fn) |
Set stream's read function to read_fn. | |
void | svn_stream_set_write (svn_stream_t *stream, svn_write_fn_t write_fn) |
Set stream's write function to write_fn. | |
void | svn_stream_set_close (svn_stream_t *stream, svn_close_fn_t close_fn) |
Set stream's close function to close_fn. | |
svn_stream_t * | svn_stream_empty (apr_pool_t *pool) |
Create a stream that is empty for reading and infinite for writing. | |
svn_stream_t * | svn_stream_disown (svn_stream_t *stream, apr_pool_t *pool) |
Return a stream allocated in pool which forwards all requests to stream. | |
svn_stream_t * | svn_stream_from_aprfile2 (apr_file_t *file, svn_boolean_t disown, apr_pool_t *pool) |
Create a stream from an APR file. | |
svn_stream_t * | svn_stream_from_aprfile (apr_file_t *file, apr_pool_t *pool) |
Similar to svn_stream_from_aprfile2(), except that the file will always be disowned. | |
svn_error_t * | svn_stream_for_stdout (svn_stream_t **out, apr_pool_t *pool) |
Set *out to a generic stream connected to stdout, allocated in pool. | |
svn_stream_t * | svn_stream_from_stringbuf (svn_stringbuf_t *str, apr_pool_t *pool) |
Return a generic stream connected to stringbuf str. | |
svn_stream_t * | svn_stream_compressed (svn_stream_t *stream, apr_pool_t *pool) |
Return a stream that decompresses all data read and compresses all data written. | |
svn_stream_t * | svn_stream_checksummed (svn_stream_t *stream, const unsigned char **read_digest, const unsigned char **write_digest, svn_boolean_t read_all, apr_pool_t *pool) |
Return a stream that calculates checksums for all data read and written. | |
svn_error_t * | svn_stream_read (svn_stream_t *stream, char *buffer, apr_size_t *len) |
Read from a generic stream. | |
svn_error_t * | svn_stream_write (svn_stream_t *stream, const char *data, apr_size_t *len) |
Write to a generic stream. | |
svn_error_t * | svn_stream_close (svn_stream_t *stream) |
Close a generic stream. | |
svn_error_t * | svn_stream_printf (svn_stream_t *stream, apr_pool_t *pool, const char *fmt,...) __attribute__((format(printf |
Write to stream using a printf-style fmt specifier, passed through apr_psprintf() using memory from pool. | |
svn_error_t * | svn_stream_printf_from_utf8 (svn_stream_t *stream, const char *encoding, apr_pool_t *pool, const char *fmt,...) __attribute__((format(printf |
Write to stream using a printf-style fmt specifier, passed through apr_psprintf() using memory from pool. | |
svn_error_t * | svn_stream_readline (svn_stream_t *stream, svn_stringbuf_t **stringbuf, const char *eol, svn_boolean_t *eof, apr_pool_t *pool) |
Allocate *stringbuf in pool, and read into it one line (terminated by eol) from stream. | |
svn_error_t * | svn_stream_copy2 (svn_stream_t *from, svn_stream_t *to, svn_cancel_func_t cancel_func, void *cancel_baton, apr_pool_t *pool) |
Read the contents of the readable stream from and write them to the writable stream to calling cancel_func before copying each chunk. | |
svn_error_t * | svn_stream_copy (svn_stream_t *from, svn_stream_t *to, apr_pool_t *pool) |
Same as svn_stream_copy2(), but without the cancellation function. | |
svn_error_t * | svn_stream_contents_same (svn_boolean_t *same, svn_stream_t *stream1, svn_stream_t *stream2, apr_pool_t *pool) |
Set *same to TRUE if stream1 and stream2 have the same contents, else set it to FALSE. | |
svn_error_t * | svn_stringbuf_from_file2 (svn_stringbuf_t **result, const char *filename, apr_pool_t *pool) |
Set *result to a string containing the contents of filename, which is either "-" (indicating that stdin should be read) or the utf8-encoded path of a real file. | |
svn_error_t * | svn_stringbuf_from_file (svn_stringbuf_t **result, const char *filename, apr_pool_t *pool) |
Similar to svn_stringbuf_from_file2(), except that if filename is "-", return the error SVN_ERR_UNSUPPORTED_FEATURE and don't touch *result. | |
svn_error_t * | svn_stringbuf_from_aprfile (svn_stringbuf_t **result, apr_file_t *file, apr_pool_t *pool) |
Sets *result to a string containing the contents of the already opened file. | |
svn_error_t * | svn_io_remove_file (const char *path, apr_pool_t *pool) |
Remove file path, a utf8-encoded path. | |
svn_error_t * | svn_io_remove_dir2 (const char *path, svn_boolean_t ignore_enoent, svn_cancel_func_t cancel_func, void *cancel_baton, apr_pool_t *pool) |
Recursively remove directory path. | |
svn_error_t * | svn_io_remove_dir (const char *path, apr_pool_t *pool) |
Similar to svn_io_remove_dir2(), but with ignore_enoent set to FALSE . | |
svn_error_t * | svn_io_get_dir_filenames (apr_hash_t **dirents, const char *path, apr_pool_t *pool) |
Read all of the disk entries in directory path, a utf8-encoded path. | |
svn_error_t * | svn_io_get_dirents2 (apr_hash_t **dirents, const char *path, apr_pool_t *pool) |
Read all of the disk entries in directory path, a utf8-encoded path. | |
svn_error_t * | svn_io_get_dirents (apr_hash_t **dirents, const char *path, apr_pool_t *pool) |
Similar to svn_io_get_dirents2(), but *dirents is a hash table with svn_node_kind_t values. | |
svn_error_t * | svn_io_dir_walk (const char *dirname, apr_int32_t wanted, svn_io_walk_func_t walk_func, void *walk_baton, apr_pool_t *pool) |
This function will recursively walk over the files and directories rooted at dirname, a utf8-encoded path. | |
svn_error_t * | svn_io_start_cmd (apr_proc_t *cmd_proc, const char *path, const char *cmd, const char *const *args, svn_boolean_t inherit, apr_file_t *infile, apr_file_t *outfile, apr_file_t *errfile, apr_pool_t *pool) |
Start cmd with args, using utf8-encoded path as working directory. | |
svn_error_t * | svn_io_wait_for_cmd (apr_proc_t *cmd_proc, const char *cmd, int *exitcode, apr_exit_why_e *exitwhy, apr_pool_t *pool) |
Wait for the process *cmd_proc to complete and optionally retrieve its exit code. | |
svn_error_t * | svn_io_run_cmd (const char *path, const char *cmd, const char *const *args, int *exitcode, apr_exit_why_e *exitwhy, svn_boolean_t inherit, apr_file_t *infile, apr_file_t *outfile, apr_file_t *errfile, apr_pool_t *pool) |
Run a command to completion, by first calling svn_io_start_cmd() and then calling svn_io_wait_for_cmd(). | |
svn_error_t * | svn_io_run_diff (const char *dir, const char *const *user_args, int num_user_args, const char *label1, const char *label2, const char *from, const char *to, int *exitcode, apr_file_t *outfile, apr_file_t *errfile, const char *diff_cmd, apr_pool_t *pool) |
Invoke the configured diff program, with user_args (an array of utf8-encoded num_user_args arguments) if they are specified (that is, if user_args is non-NULL), or "-u" if they are not. | |
svn_error_t * | svn_io_run_diff3_2 (int *exitcode, const char *dir, const char *mine, const char *older, const char *yours, const char *mine_label, const char *older_label, const char *yours_label, apr_file_t *merged, const char *diff3_cmd, const apr_array_header_t *user_args, apr_pool_t *pool) |
Invoke the configured diff3 program, in utf8-encoded dir like this:. | |
svn_error_t * | svn_io_run_diff3 (const char *dir, const char *mine, const char *older, const char *yours, const char *mine_label, const char *older_label, const char *yours_label, apr_file_t *merged, int *exitcode, const char *diff3_cmd, apr_pool_t *pool) |
Similar to svn_io_run_diff3_2(), but with user_args set to NULL . | |
svn_error_t * | svn_io_parse_mimetypes_file (apr_hash_t **type_map, const char *mimetypes_file, apr_pool_t *pool) |
Parse utf8-encoded mimetypes_file as a MIME types file (such as is provided with Apache HTTP Server), and set *type_map to a hash mapping const char * filename extensions to const char * MIME types. | |
svn_error_t * | svn_io_detect_mimetype2 (const char **mimetype, const char *file, apr_hash_t *mimetype_map, apr_pool_t *pool) |
Examine utf8-encoded file to determine if it can be described by a known (as in, known by this function) Multipurpose Internet Mail Extension (MIME) type. | |
svn_error_t * | svn_io_detect_mimetype (const char **mimetype, const char *file, apr_pool_t *pool) |
Like svn_io_detect_mimetype2, but with mimetypes_map set to NULL . | |
svn_error_t * | svn_io_file_open (apr_file_t **new_file, const char *fname, apr_int32_t flag, apr_fileperms_t perm, apr_pool_t *pool) |
Wrapper for apr_file_open(). | |
svn_error_t * | svn_io_file_close (apr_file_t *file, apr_pool_t *pool) |
Wrapper for apr_file_close(). | |
svn_error_t * | svn_io_file_getc (char *ch, apr_file_t *file, apr_pool_t *pool) |
Wrapper for apr_file_getc(). | |
svn_error_t * | svn_io_file_info_get (apr_finfo_t *finfo, apr_int32_t wanted, apr_file_t *file, apr_pool_t *pool) |
Wrapper for apr_file_info_get(). | |
svn_error_t * | svn_io_file_read (apr_file_t *file, void *buf, apr_size_t *nbytes, apr_pool_t *pool) |
Wrapper for apr_file_read(). | |
svn_error_t * | svn_io_file_read_full (apr_file_t *file, void *buf, apr_size_t nbytes, apr_size_t *bytes_read, apr_pool_t *pool) |
Wrapper for apr_file_read_full(). | |
svn_error_t * | svn_io_file_seek (apr_file_t *file, apr_seek_where_t where, apr_off_t *offset, apr_pool_t *pool) |
Wrapper for apr_file_seek(). | |
svn_error_t * | svn_io_file_write (apr_file_t *file, const void *buf, apr_size_t *nbytes, apr_pool_t *pool) |
Wrapper for apr_file_write(). | |
svn_error_t * | svn_io_file_write_full (apr_file_t *file, const void *buf, apr_size_t nbytes, apr_size_t *bytes_written, apr_pool_t *pool) |
Wrapper for apr_file_write_full(). | |
svn_error_t * | svn_io_stat (apr_finfo_t *finfo, const char *fname, apr_int32_t wanted, apr_pool_t *pool) |
Wrapper for apr_stat(). | |
svn_error_t * | svn_io_file_rename (const char *from_path, const char *to_path, apr_pool_t *pool) |
Wrapper for apr_file_rename(). | |
svn_error_t * | svn_io_file_move (const char *from_path, const char *to_path, apr_pool_t *pool) |
Move the file from from_path to to_path, even across device boundaries. | |
svn_error_t * | svn_io_dir_make (const char *path, apr_fileperms_t perm, apr_pool_t *pool) |
Wrapper for apr_dir_make(). | |
svn_error_t * | svn_io_dir_make_hidden (const char *path, apr_fileperms_t perm, apr_pool_t *pool) |
Same as svn_io_dir_make(), but sets the hidden attribute on the directory on systems that support it. | |
svn_error_t * | svn_io_dir_make_sgid (const char *path, apr_fileperms_t perm, apr_pool_t *pool) |
Same as svn_io_dir_make(), but attempts to set the sgid on the directory on systems that support it. | |
svn_error_t * | svn_io_dir_open (apr_dir_t **new_dir, const char *dirname, apr_pool_t *pool) |
Wrapper for apr_dir_open(). | |
svn_error_t * | svn_io_dir_remove_nonrecursive (const char *dirname, apr_pool_t *pool) |
Wrapper for apr_dir_remove(). | |
svn_error_t * | svn_io_dir_read (apr_finfo_t *finfo, apr_int32_t wanted, apr_dir_t *thedir, apr_pool_t *pool) |
Wrapper for apr_dir_read(). | |
svn_error_t * | svn_io_read_version_file (int *version, const char *path, apr_pool_t *pool) |
Set *version to the integer that starts the file at path. | |
svn_error_t * | svn_io_write_version_file (const char *path, int version, apr_pool_t *pool) |
Create (or overwrite) the file at path with new contents, formatted as a non-negative integer version followed by a single newline. |
Definition in file svn_io.h.
|
Represents the kind and special status of a directory entry.
|
|
Used as an argument when creating temporary files to indicate when a file should be removed.
|
|
Used as an argument when creating temporary files to indicate when a file should be removed.
|
|
Append src to dst. dst will be appended to if it exists, else it will be created. Both src and dst are utf8-encoded. |
|
Determine the kind of path. path should be UTF-8 encoded.
If path is a file, set *kind to
If path is a directory, set *kind to
If path does not exist, set *kind to
If path exists but is none of the above, set *kind to If unable to determine path's kind, return an error, with *kind's value undefined. Use pool for temporary allocations.
|
|
Like svn_io_check_path(), but resolve symlinks. This returns the same varieties of kind as svn_io_check_path(). |
|
Like svn_io_check_path(), but also set *is_special to
|
|
Recursively copy directory src into dst_parent, as a new entry named dst_basename. If dst_basename already exists in dst_parent, return error. copy_perms will be passed through to svn_io_copy_file() when any files are copied. src, dst_parent, and dst_basename are all utf8-encoded.
If cancel_func is non-NULL, invoke it with cancel_baton at various points during the operation. If it returns any error (typically |
|
Copy src to dst atomically, in a "byte-for-byte" manner. Overwrite dst if it exists, else create it. Both src and dst are utf8-encoded filenames. If copy_perms is TRUE, set dst's permissions to match those of src. |
|
Copy symbolic link src to dst atomically. Overwrite dst if it exists, else create it. Both src and dst are utf8-encoded filenames. After copying, the dst link will point to the same thing src does.
|
|
Like svn_io_open_unique_file(), except that instead of creating a file, a symlink is generated that references the path dest.
|
|
Like svn_io_detect_mimetype2, but with mimetypes_map set to
|
|
Examine utf8-encoded file to determine if it can be described by a known (as in, known by this function) Multipurpose Internet Mail Extension (MIME) type.
If so, set *mimetype to a character string describing the MIME type, else set it to
If not Use pool for any necessary allocations.
|
|
Set *is_empty_p to path must be a directory, and is utf8-encoded. Use pool for temporary allocation. |
|
Copy file file from location src_path to location dest_path. Use pool for memory allocations. |
|
Wrapper for apr_dir_make(). path is utf8-encoded. |
|
Same as svn_io_dir_make(), but attempts to set the sgid on the directory on systems that support it. Does not return an error if the attempt to set the sgid bit fails. On Unix filesystems, setting the sgid bit on a directory ensures that files and subdirectories created within inherit group ownership from the parent instead of from the primary gid.
|
|
Wrapper for apr_dir_open(). dirname is utf8-encoded. |
|
Wrapper for apr_dir_read(). Ensures that finfo->name is utf8-encoded, which means allocating finfo->name in pool, which may or may not be the same as finfo's pool. Use pool for error allocation as well. |
|
Wrapper for apr_dir_remove(). dirname is utf8-encoded.
|
|
This function will recursively walk over the files and directories rooted at dirname, a utf8-encoded path.
For each file or directory, walk_func is invoked, passing in the walk_baton, the utf8-encoded full path to the entry, an
The set of information passed to walk_func is specified by wanted, and the items specified by All allocations will be performed in pool. |
|
Set *apr_time to the time of last modification of the contents of the file path. path is utf8-encoded.
|
|
Put the md5 checksum of file into digest.
digest points to |
|
Create file at utf8-encoded file with contents contents. file must not already exist. Use pool for memory allocations. |
|
Flush any unwritten data from file to disk. Use pool for memory allocations.
|
|
Lock file at lock_file. If exclusive is TRUE, obtain exclusive lock, otherwise obtain shared lock. Lock will be automatically released when pool is cleared or destroyed. Use pool for memory allocations.
|
|
Lock file at lock_file. If exclusive is TRUE, obtain exclusive lock, otherwise obtain shared lock. If nonblocking is TRUE, do not wait for the lock if it is not available: throw an error instead. Lock will be automatically released when pool is cleared or destroyed. Use pool for memory allocations.
|
|
Move the file from from_path to to_path, even across device boundaries. Overwrite to_path if it exists.
|
|
Wrapper for apr_file_open(). fname is utf8-encoded. |
|
Wrapper for apr_file_rename(). from_path and to_path are utf8-encoded. |
|
Set *same to TRUE if file1 and file2 have the same contents, else set it to FALSE. Use pool for temporary allocations. |
|
Set *different_p to non-zero if file1 and file2 have different sizes, else set to zero. Both file1 and file2 are utf8-encoded. Setting *different_p to zero does not mean the files definitely have the same size, it merely means that the sizes are not definitely different. That is, if the size of one or both files cannot be determined, then the sizes are not known to be different, so *different_p is set to 0. |
|
Read all of the disk entries in directory path, a utf8-encoded path.
Set *dirents to a hash mapping dirent names (
|
|
Similar to svn_io_get_dirents2(), but *dirents is a hash table with
|
|
Read all of the disk entries in directory path, a utf8-encoded path.
Set *dirents to a hash mapping dirent names (
|
|
Determine whether a file is executable by the current user.
Set *executable to
On Windows and on platforms without userids, always returns |
|
Create directory path on the file system, creating intermediate directories as required, like Report no error if path already exists. path is utf8-encoded.
This is essentially a wrapper for apr_dir_make_recursive(), passing |
|
Like svn_io_open_unique_file2, but can't delete on pool cleanup.
|
|
Open a new file (for reading and writing) with a unique name based on utf-8 encoded path, in the same directory as path.
The file handle is returned in *f, and the name, which ends with suffix, is returned in *unique_name_p, also utf8-encoded. Either f or unique_name_p may be
If delete_when is The first attempt will just append suffix. If the result is not a unique name, then subsequent attempts will append a dot, followed by an iteration number ("2", then "3", and so on), followed by the suffix. For example, if path is tests/t1/A/D/G/pi then successive calls to svn_io_open_unique_file2(&f, &unique_name, path, ".tmp", ..., pool) will open tests/t1/A/D/G/pi.tmp tests/t1/A/D/G/pi.2.tmp tests/t1/A/D/G/pi.3.tmp tests/t1/A/D/G/pi.4.tmp tests/t1/A/D/G/pi.5.tmp ... Assuming suffix is non-empty, *unique_name_p will never be exactly the same as path, even if path does not exist. It doesn't matter if path is a file or directory, the unique name will be in path's parent either way. Allocate *f and *unique_name_p in pool.
If no unique name can be found, Claim of Historical Inevitability: this function was written because
|
|
Parse utf8-encoded mimetypes_file as a MIME types file (such as is provided with Apache HTTP Server), and set *type_map to a hash mapping
|
|
Read a line from file into buf, but not exceeding *limit bytes. Does not include newline, instead '\0' is put there. Length (as in strlen) is returned in *limit. buf should be pre-allocated. file should be already opened.
When the file is out of lines, |
|
Set *dest to the path that the symlink at path references. Allocate the string from pool.
|
|
Similar to svn_io_remove_dir2(), but with ignore_enoent set to
|
|
Recursively remove directory path.
path is utf8-encoded. If ignore_enoent is Because recursive delete of a directory tree can be a lengthy operation, provide cancel_func and cancel_baton for interuptability.
|
|
Remove file path, a utf8-encoded path. This wraps apr_file_remove(), converting any error to a Subversion error. |
|
Run a command to completion, by first calling svn_io_start_cmd() and then calling svn_io_wait_for_cmd(). The parameters correspond to the same-named parameters of those two functions. |
|
Invoke If user_args is NULL, the value of num_user_args is ignored.
Diff runs in utf8-encoded dir, and its exit status is stored in exitcode, if it is not If label1 and/or label2 are not NULL they will be passed to the diff process as the arguments of "-L" options. label1 and label2 are also in utf8, and will be converted to native charset along with the other args. from is the first file passed to diff, and to is the second. The stdout of diff will be sent to outfile, and the stderr to errfile. diff_cmd must be non-NULL. Do all allocation in pool. |
|
Similar to svn_io_run_diff3_2(), but with user_args set to
|
|
Invoke the configured diff3 -E -m mine older yours > merged (See the diff3 documentation for details.)
If user_args is non-NULL, replace "-E" with the mine, older and yours are utf8-encoded paths (relative to dir or absolute) to three files that already exist. merged is an open file handle, and is left open after the merge result is written to it. (merged should *not* be the same file as mine, or nondeterministic things may happen!)
mine_label, older_label, yours_label are utf8-encoded label parameters for diff3's -L option. Any of them may be
Set *exitcode to diff3's exit status. If *exitcode is anything other than 0 or 1, then return diff3_cmd must be non-NULL. Do all allocation in pool.
|
|
Set the timestamp of file path to apr_time. path is utf8-encoded.
|
|
Set path's "executability" (but do nothing if it is a symlink).
path is the utf8-encoded path to the file. If executable is When making the file executable on operating systems with unix style permissions, never add an execute permission where there is not already a read permission: that is, only make the file executable for the user, group or world if the corresponding read permission is already set for user, group or world. When making the file non-executable on operating systems with unix style permissions, remove all execute permissions. On other operating systems, toggle the file's "executability" as much as the operating system allows.
|
|
Make a file as read-only as the operating system allows.
path is the utf8-encoded path to the file. If ignore_enoent is If path is a symlink, do nothing.
|
|
Make a file as writable as the operating system allows.
path is the utf8-encoded path to the file. If ignore_enoent is
|
|
Similar to svn_io_set_file_read_* functions. Change the read-write permissions of a file.
When making the file read-only on operating systems with unix style permissions, remove all write permissions. On other operating systems, toggle the file's "writability" as much as the operating system allows.
path is the utf8-encoded path to the file. If enable_write is
|
|
Start cmd with args, using utf8-encoded path as working directory. Connect cmd's stdin, stdout, and stderr to infile, outfile, and errfile, except where they are NULL. Return the process handle for the invoked program in *cmd_proc.
args is a list of utf8-encoded If inherit is TRUE, the invoked program inherits its environment from the caller and cmd, if not absolute, is searched for in PATH. Otherwise, the invoked program runs with an empty environment and cmd must be an absolute path.
|
|
Wrapper for apr_stat(). fname is utf8-encoded. |
|
Wait for the process *cmd_proc to complete and optionally retrieve its exit code. cmd is used only in error messages.
If exitcode is not NULL, *exitcode will contain the exit code of the process upon return, and if exitwhy is not NULL, *exitwhy will indicate why the process terminated. If exitwhy is NULL, and the exit reason is not
|
|
Sets *result to a string containing the contents of the already opened file. Reads from the current position in file to the end. Does not close the file or reset the cursor position. |
|
Similar to svn_stringbuf_from_file2(), except that if filename is "-", return the error
|
|
Set *result to a string containing the contents of filename, which is either "-" (indicating that stdin should be read) or the utf8-encoded path of a real file.
|