]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Add generic expand_filename function to handle expanding ~/
authorNick Mathewson <nickm@torproject.org>
Thu, 15 Jul 2004 02:00:43 +0000 (02:00 +0000)
committerNick Mathewson <nickm@torproject.org>
Thu, 15 Jul 2004 02:00:43 +0000 (02:00 +0000)
svn:r2047

src/common/util.c
src/common/util.h

index 7b22bb973ab1728737fcd0d80ee96fb7b561ac03..2f0d693944d41ec83fa5a8e35b0dc14f406ac6b7 100644 (file)
@@ -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.
  */
index cfcfaafecea945944897b1aa0b8d3564be7ee5a7..51a5440051569255610d13190018350f36b1faa0 100644 (file)
@@ -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();