Commit 9364c40a authored by Nick Mathewson's avatar Nick Mathewson 🤹
Browse files

Add generic expand_filename function to handle expanding ~/


svn:r2047
parent c458f33e
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -1453,6 +1453,27 @@ try_next_line:
  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,
 * or reserved for local networks by RFC 1918.
 */
+1 −0
Original line number Diff line number Diff line
@@ -217,6 +217,7 @@ int check_private_dir(const char *dirname, int create);
int write_str_to_file(const char *fname, const char *str);
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);
char *expand_filename(const char *filename);

int spawn_func(int (*func)(void *), void *data);
void spawn_exit();