From 4200ed30036ead2bd6c10a39dbd5383f21124f5e Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@telfort.nl>
Date: Sat, 25 Nov 2017 11:40:29 +0100
Subject: [PATCH] history: create the path '~/.local/share/' when it is needed

On a freshly installed system, or for a new user, the default
XDG data directory may not exist yet.  So, create it when not.

Reported-by: Brand Huntsman <alpha@qzx.com>
---
 src/history.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/history.c b/src/history.c
index de0a648a..3e37b71a 100644
--- a/src/history.c
+++ b/src/history.c
@@ -26,10 +26,6 @@
 
 #ifdef ENABLE_HISTORIES
 
-#ifndef XDG_DATA_FALLBACK
-#define XDG_DATA_FALLBACK "/.local/share"
-#endif
-
 #ifndef SEARCH_HISTORY
 #define SEARCH_HISTORY "search_history"
 #endif
@@ -272,9 +268,17 @@ bool have_statedir(void)
     if (xdgdatadir != NULL)
 	statedir = concatenate(xdgdatadir, "/nano/");
     else
-	statedir = concatenate(homedir, XDG_DATA_FALLBACK "/nano/");
+	statedir = concatenate(homedir, "/.local/share/nano/");
 
     if (stat(statedir, &dirstat) == -1) {
+	if (xdgdatadir == NULL) {
+	    char *statepath = concatenate(homedir, "/.local");
+	    mkdir(statepath, S_IRWXU | S_IRWXG | S_IRWXO);
+	    free(statepath);
+	    statepath = concatenate(homedir, "/.local/share");
+	    mkdir(statepath, S_IRWXU);
+	    free(statepath);
+	}
 	if (mkdir(statedir, S_IRWXU | S_IRWXG | S_IRWXO) == -1) {
 	    history_error(N_("Unable to create directory %s: %s\n"
 				"It is required for saving/loading "
-- 
GitLab