commit ee7b48111be2e2117b201962e9d1c0e1f9804ed4
parent 30fd5dbf1b0f6f7f915ce0f1b6db69bdb9180fb8
Author: Conrad Parker <conrad@metadecks.org>
Date:   Thu, 24 Aug 2017 09:55:46 +0800
Merge pull request #21 from e7appew/fix-get_xdg_cache_home
Do not modify HOME environment variable.
Diffstat:
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/xsel.c b/xsel.c
@@ -343,12 +343,21 @@ static char *
 get_xdg_cache_home (void)
 {
   char * cachedir;
+  char * homedir;
+  static const char * slashbasename = "/.cache";
 
   if ((cachedir = getenv ("XDG_CACHE_HOME")) == NULL) {
-    cachedir = strcat(getenv ("HOME"), "/.cache");
+    if ((homedir = getenv ("HOME")) == NULL) {
+      exit_err ("no HOME directory");
+    }
+    cachedir = xs_malloc (strlen (homedir) + strlen (slashbasename) + 1);
+    strcpy (cachedir, homedir);
+    strcat (cachedir, slashbasename);
+  } else {
+    cachedir = _xs_strdup (cachedir);
   }
 
-  mkdir(cachedir, S_IRWXU|S_IRGRP|S_IXGRP);
+  mkdir (cachedir, S_IRWXU|S_IRGRP|S_IXGRP);
 
   return cachedir;
 }
@@ -515,6 +524,8 @@ become_daemon (void)
   }
 
   set_daemon_timeout ();
+
+  free (cachedir);
 }
 
 /*