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