diff mcabber/src/utils.c @ 1167:9726c78a91f3

Allow '~' (HOME directory) in config options
author Mikael Berthe <mikael@lilotux.net>
date Sun, 18 Feb 2007 11:03:49 +0100
parents 648fe6f715a6
children 7b8765c10abb
line wrap: on
line diff
--- a/mcabber/src/utils.c	Sat Feb 17 15:14:39 2007 +0100
+++ b/mcabber/src/utils.c	Sun Feb 18 11:03:49 2007 +0100
@@ -45,6 +45,19 @@
 static int DebugEnabled;
 static char *FName;
 
+//  expand_filename(filename)
+// Expand "~/" with the $HOME env. variable in a file name.
+// The caller must free the string after use.
+char *expand_filename(const char *fname)
+{
+  if (!strncmp(fname, "~/", 2)) {
+    char *homedir = getenv("HOME");
+    if (homedir)
+      return g_strdup_printf("%s%s", homedir, fname+1);
+  }
+  return g_strdup(fname);
+}
+
 void ut_InitDebug(int level, const char *filename)
 {
   FILE *fp;
@@ -58,16 +71,13 @@
   }
 
   if (filename)
-    FName = g_strdup(filename);
+    FName = expand_filename(filename);
   else {
     FName = getenv("HOME");
     if (!FName)
-      FName = "/tmp/mcabberlog";
+      FName = g_strdup("/tmp/mcabberlog");
     else {
-      char *tmpname = g_new(char, strlen(FName) + 12);
-      strcpy(tmpname, FName);
-      strcat(tmpname, "/mcabberlog");
-      FName = tmpname;
+      FName = g_strdup_printf("%s/mcabberlog", FName);
     }
   }
 
@@ -412,7 +422,7 @@
 // Split the string arg into a maximum of n pieces, taking care of
 // double quotes.
 // Return a null-terminated array of strings.  This array should be freed
-// be the caller after use, for example with free_arg_lst().
+// by the caller after use, for example with free_arg_lst().
 // If dontstriplast is true, the Nth argument isn't stripped (i.e. no
 // processing of quote chars)
 char **split_arg(const char *arg, unsigned int n, int dontstriplast)