Macros | Functions
path.h File Reference

Header for path.c. More...

#include <stdbool.h>
#include "lib/cc/compat_compiler.h"

Go to the source code of this file.


#define PATH_SEPARATOR   "/"


char * get_unquoted_path (const char *path)
char * expand_filename (const char *filename)
int path_is_relative (const char *filename)
void clean_fname_for_stat (char *name)
int get_parent_directory (char *fname)
char * make_path_absolute (const char *fname)
struct smartlist_ttor_glob (const char *pattern)
bool has_glob (const char *s)
struct smartlist_tget_glob_opened_files (const char *pattern)

Detailed Description

Header for path.c.

Definition in file path.h.

Function Documentation

◆ clean_fname_for_stat()

void clean_fname_for_stat ( char *  name)

Clean up name so that we can use it in a call to "stat". On Unix, we do nothing. On Windows, we remove a trailing slash, unless the path is the root of a disk.

Definition at line 164 of file path.c.

◆ expand_filename()

char* expand_filename ( const char *  filename)

Expand any homedir prefix on filename; return a newly allocated string.

Definition at line 85 of file path.c.

◆ get_glob_opened_files()

struct smartlist_t* get_glob_opened_files ( const char *  pattern)

Returns a list of files that are opened by the tor_glob function when called with pattern. Returns NULL on error. The purpose of this function is to create a list of files to be added to the sandbox white list before the sandbox is enabled.

Definition at line 690 of file path.c.

◆ get_parent_directory()

int get_parent_directory ( char *  fname)

Modify fname to contain the name of its parent directory. Doesn't actually examine the filesystem; does a purely syntactic modification.

The parent of the root director is considered to be itself.

Path separators are the forward slash (/) everywhere and additionally the backslash () on Win32.

Cuts off any number of trailing path separators but otherwise ignores them for purposes of finding the parent directory.

Returns 0 if a parent directory was successfully found, -1 otherwise (fname did not have any path separators or only had them at the end).

Definition at line 195 of file path.c.

◆ get_unquoted_path()

char* get_unquoted_path ( const char *  path)

Removes enclosing quotes from path and unescapes quotes between the enclosing quotes. Backslashes are not unescaped. Return the unquoted path on success or 0 if path is not quoted correctly.

Definition at line 51 of file path.c.

◆ has_glob()

bool has_glob ( const char *  s)

Returns true if s contains characters that can be globbed. Returns false otherwise.

Definition at line 647 of file path.c.

Referenced by unglob_opened_files().

◆ make_path_absolute()

char* make_path_absolute ( const char *  fname)

Expand possibly relative path fname to an absolute path. Return a newly allocated string, which may be a duplicate of fname.

Definition at line 280 of file path.c.

Referenced by get_esc_cfile(), and warn_if_option_path_is_relative().

◆ path_is_relative()

int path_is_relative ( const char *  filename)

Return true iff filename is a relative path.

Definition at line 145 of file path.c.

Referenced by warn_if_option_path_is_relative().

◆ tor_glob()

struct smartlist_t* tor_glob ( const char *  pattern)

Return a new list containing the paths that match the pattern pattern. Return NULL on error. On POSIX systems, errno is set by the glob function or is set to EPERM if glob tried to access a file not allowed by the seccomp sandbox.

Definition at line 582 of file path.c.