Loading changes/bug1101 0 → 100644 +3 −0 Original line number Diff line number Diff line o Minor features: - Use absolute path names when reporting the torrc filename, so that a controller can more easily find it. Resolves bug 1101. src/common/compat.c +36 −0 Original line number Diff line number Diff line Loading @@ -1634,6 +1634,42 @@ get_parent_directory(char *fname) return -1; } /** Expand possibly relative path <b>fname</b> to an absolute path. * Return a newly allocated string, possibly equal to <b>fname</b>. */ char * make_path_absolute(char *fname) { #ifdef WINDOWS char *absfname_malloced = _fullpath(NULL, fname, 1); /* We don't want to assume that tor_free can free a string allocated * with malloc. On failure, return fname (it's better than nothing). */ char *absfname = tor_strdup(absfname_malloced ? absfname_malloced : fname); if (absfname_malloced) free(absfname_malloced); return absfname; #else char path[PATH_MAX+1]; char *absfname = NULL; tor_assert(fname); if(fname[0] == '/') { absfname = tor_strdup(fname); } else { if (getcwd(path, PATH_MAX) != NULL) { tor_asprintf(&absfname, "%s/%s", path, fname); } else { /* If getcwd failed, the best we can do here is keep using the * relative path. (Perhaps / isn't readable by this UID/GID.) */ absfname = tor_strdup(fname); } } return absfname; #endif } /** Set *addr to the IP address (in dotted-quad notation) stored in c. * Return 1 on success, 0 if c is badly formatted. (Like inet_aton(c,addr), * but works on Windows and Solaris.) Loading src/common/compat.h +1 −0 Original line number Diff line number Diff line Loading @@ -571,6 +571,7 @@ char *get_user_homedir(const char *username); #endif int get_parent_directory(char *fname); char *make_path_absolute(char *fname); int spawn_func(void (*func)(void *), void *data); void spawn_exit(void) ATTR_NORETURN; Loading src/or/config.c +8 −0 Original line number Diff line number Diff line Loading @@ -4356,6 +4356,14 @@ find_torrc_filename(int argc, char **argv, tor_free(fname); } fname = expand_filename(argv[i+1]); { char *absfname; absfname = make_path_absolute(fname); tor_free(fname); fname = absfname; } *using_default_torrc = 0; ++i; } else if (ignore_opt && !strcmp(argv[i],ignore_opt)) { Loading Loading
changes/bug1101 0 → 100644 +3 −0 Original line number Diff line number Diff line o Minor features: - Use absolute path names when reporting the torrc filename, so that a controller can more easily find it. Resolves bug 1101.
src/common/compat.c +36 −0 Original line number Diff line number Diff line Loading @@ -1634,6 +1634,42 @@ get_parent_directory(char *fname) return -1; } /** Expand possibly relative path <b>fname</b> to an absolute path. * Return a newly allocated string, possibly equal to <b>fname</b>. */ char * make_path_absolute(char *fname) { #ifdef WINDOWS char *absfname_malloced = _fullpath(NULL, fname, 1); /* We don't want to assume that tor_free can free a string allocated * with malloc. On failure, return fname (it's better than nothing). */ char *absfname = tor_strdup(absfname_malloced ? absfname_malloced : fname); if (absfname_malloced) free(absfname_malloced); return absfname; #else char path[PATH_MAX+1]; char *absfname = NULL; tor_assert(fname); if(fname[0] == '/') { absfname = tor_strdup(fname); } else { if (getcwd(path, PATH_MAX) != NULL) { tor_asprintf(&absfname, "%s/%s", path, fname); } else { /* If getcwd failed, the best we can do here is keep using the * relative path. (Perhaps / isn't readable by this UID/GID.) */ absfname = tor_strdup(fname); } } return absfname; #endif } /** Set *addr to the IP address (in dotted-quad notation) stored in c. * Return 1 on success, 0 if c is badly formatted. (Like inet_aton(c,addr), * but works on Windows and Solaris.) Loading
src/common/compat.h +1 −0 Original line number Diff line number Diff line Loading @@ -571,6 +571,7 @@ char *get_user_homedir(const char *username); #endif int get_parent_directory(char *fname); char *make_path_absolute(char *fname); int spawn_func(void (*func)(void *), void *data); void spawn_exit(void) ATTR_NORETURN; Loading
src/or/config.c +8 −0 Original line number Diff line number Diff line Loading @@ -4356,6 +4356,14 @@ find_torrc_filename(int argc, char **argv, tor_free(fname); } fname = expand_filename(argv[i+1]); { char *absfname; absfname = make_path_absolute(fname); tor_free(fname); fname = absfname; } *using_default_torrc = 0; ++i; } else if (ignore_opt && !strcmp(argv[i],ignore_opt)) { Loading