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>master
parent
2b314ed18f
commit
4200ed3003
|
@ -26,10 +26,6 @@
|
||||||
|
|
||||||
#ifdef ENABLE_HISTORIES
|
#ifdef ENABLE_HISTORIES
|
||||||
|
|
||||||
#ifndef XDG_DATA_FALLBACK
|
|
||||||
#define XDG_DATA_FALLBACK "/.local/share"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef SEARCH_HISTORY
|
#ifndef SEARCH_HISTORY
|
||||||
#define SEARCH_HISTORY "search_history"
|
#define SEARCH_HISTORY "search_history"
|
||||||
#endif
|
#endif
|
||||||
|
@ -272,9 +268,17 @@ bool have_statedir(void)
|
||||||
if (xdgdatadir != NULL)
|
if (xdgdatadir != NULL)
|
||||||
statedir = concatenate(xdgdatadir, "/nano/");
|
statedir = concatenate(xdgdatadir, "/nano/");
|
||||||
else
|
else
|
||||||
statedir = concatenate(homedir, XDG_DATA_FALLBACK "/nano/");
|
statedir = concatenate(homedir, "/.local/share/nano/");
|
||||||
|
|
||||||
if (stat(statedir, &dirstat) == -1) {
|
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) {
|
if (mkdir(statedir, S_IRWXU | S_IRWXG | S_IRWXO) == -1) {
|
||||||
history_error(N_("Unable to create directory %s: %s\n"
|
history_error(N_("Unable to create directory %s: %s\n"
|
||||||
"It is required for saving/loading "
|
"It is required for saving/loading "
|
||||||
|
|
Loading…
Reference in New Issue