From d2fb06de65cacf278df2b69bd8866feb07c061a9 Mon Sep 17 00:00:00 2001
From: Albert Graef <aggraef@gmail.com>
Date: Mon, 31 Oct 2016 20:51:02 +0100
Subject: [PATCH] Linux: Try to create the ~/.pd-l2ork config dir if necessary
 when saving the preferences file.

---
 pd/src/s_file.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/pd/src/s_file.c b/pd/src/s_file.c
index a3c46cc10..f2b127c35 100644
--- a/pd/src/s_file.c
+++ b/pd/src/s_file.c
@@ -139,10 +139,19 @@ static FILE *sys_prefsavefp;
 static void sys_initsavepreferences( void)
 {
     char filenamebuf[FILENAME_MAX], *homedir = getenv("HOME");
-    FILE *fp;
+    struct stat statbuf;
 
     if (!homedir)
         return;
+    snprintf(filenamebuf, FILENAME_MAX, "%s/.pd-l2ork", homedir);
+    filenamebuf[FILENAME_MAX-1] = 0;
+    if (stat(filenamebuf, &statbuf) || !S_ISDIR(statbuf.st_mode)) {
+      // user config dir doesn't exist yet, try to create it
+      if (mkdir(filenamebuf, 0755)) {
+        pd_error(0, "%s: %s",filenamebuf, strerror(errno));
+	return;
+      }
+    }
     snprintf(filenamebuf, FILENAME_MAX, "%s/.pd-l2ork/user.settings", homedir);
     filenamebuf[FILENAME_MAX-1] = 0;
     if ((sys_prefsavefp = fopen(filenamebuf, "w")) == NULL)
-- 
GitLab