mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-30 15:43:32 +01:00
Add generic expand_filename function to handle expanding ~/
svn:r2047
This commit is contained in:
parent
c458f33ef1
commit
9364c40afd
@ -1453,6 +1453,27 @@ try_next_line:
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Expand any homedir prefix on 'filename'; return a newly allocated
|
||||||
|
* string. */
|
||||||
|
char *expand_filename(const char *filename)
|
||||||
|
{
|
||||||
|
tor_assert(filename);
|
||||||
|
if (!strncmp(filename,"~/",2)) {
|
||||||
|
const char *home = getenv("HOME");
|
||||||
|
char *result;
|
||||||
|
if (!home) {
|
||||||
|
log_fn(LOG_ERR, "Couldn't find $HOME environment variable while expanding %s", filename);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
/* minus two characters for ~/, plus one for /, plus one for NUL. */
|
||||||
|
result = tor_malloc(strlen(home)+strlen(filename)+16);
|
||||||
|
sprintf(result,"%s/%s",home,filename+2);
|
||||||
|
return result;
|
||||||
|
} else {
|
||||||
|
return tor_strdup(filename);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** Return true iff <b>ip</b> (in host order) is an IP reserved to localhost,
|
/** Return true iff <b>ip</b> (in host order) is an IP reserved to localhost,
|
||||||
* or reserved for local networks by RFC 1918.
|
* or reserved for local networks by RFC 1918.
|
||||||
*/
|
*/
|
||||||
|
@ -217,6 +217,7 @@ int check_private_dir(const char *dirname, int create);
|
|||||||
int write_str_to_file(const char *fname, const char *str);
|
int write_str_to_file(const char *fname, const char *str);
|
||||||
char *read_file_to_str(const char *filename);
|
char *read_file_to_str(const char *filename);
|
||||||
int parse_line_from_file(char *line, int maxlen, FILE *f, char **key_out, char **value_out);
|
int parse_line_from_file(char *line, int maxlen, FILE *f, char **key_out, char **value_out);
|
||||||
|
char *expand_filename(const char *filename);
|
||||||
|
|
||||||
int spawn_func(int (*func)(void *), void *data);
|
int spawn_func(int (*func)(void *), void *data);
|
||||||
void spawn_exit();
|
void spawn_exit();
|
||||||
|
Loading…
Reference in New Issue
Block a user