diff options
Diffstat (limited to 'system/less/search-path-history-file.patch')
-rw-r--r-- | system/less/search-path-history-file.patch | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/system/less/search-path-history-file.patch b/system/less/search-path-history-file.patch new file mode 100644 index 000000000..7ec0ce9f1 --- /dev/null +++ b/system/less/search-path-history-file.patch @@ -0,0 +1,88 @@ +From 5e1f4ce2c3a2c0fd6a953c4f7ca2839370f9c3ae Mon Sep 17 00:00:00 2001 +From: Mark Nudelman <markn@greenwoodsoftware.com> +Date: Fri, 3 Dec 2021 09:38:22 -0800 +Subject: [PATCH] Add $XDG_STATE_HOME and $HOME/.local/state to list of + directories to search for the history file. + +--- + cmdbuf.c | 48 ++++++++++++++++++++++++++++++++---------------- + less.nro.VER | 6 +++--- + 2 files changed, 35 insertions(+), 19 deletions(-) + +diff --git a/cmdbuf.c b/cmdbuf.c +index cd99010d..abbda9b9 100644 +--- a/cmdbuf.c ++++ b/cmdbuf.c +@@ -1401,14 +1401,41 @@ mlist_size(ml) + /* + * Get the name of the history file. + */ ++ static char * ++histfile_find(must_exist) ++ int must_exist; ++{ ++ char *home = lgetenv("HOME"); ++ char *name = NULL; ++ ++ /* Try in $XDG_DATA_STATE, then in $HOME/.local/state, then in $XDG_DATA_HOME, then in $HOME. */ ++#if OS2 ++ if (isnullenv(home)) ++ home = lgetenv("INIT"); ++#endif ++ name = dirfile(lgetenv("XDG_STATE_HOME"), &LESSHISTFILE[1], must_exist); ++ if (name == NULL) ++ { ++ char *dir = dirfile(home, ".local/state", 1); ++ if (dir != NULL) ++ { ++ name = dirfile(dir, &LESSHISTFILE[1], must_exist); ++ free(dir); ++ } ++ } ++ if (name == NULL) ++ name = dirfile(lgetenv("XDG_DATA_HOME"), &LESSHISTFILE[1], must_exist); ++ if (name == NULL) ++ name = dirfile(home, LESSHISTFILE, must_exist); ++ return (name); ++} ++ + static char * + histfile_name(must_exist) + int must_exist; + { +- char *home; +- char *xdg; + char *name; +- ++ + /* See if filename is explicitly specified by $LESSHISTFILE. */ + name = lgetenv("LESSHISTFILE"); + if (!isnullenv(name)) +@@ -1423,25 +1450,14 @@ histfile_name(must_exist) + if (strcmp(LESSHISTFILE, "") == 0 || strcmp(LESSHISTFILE, "-") == 0) + return (NULL); + +- /* Try in $XDG_DATA_HOME first, then in $HOME. */ +- xdg = lgetenv("XDG_DATA_HOME"); +- home = lgetenv("HOME"); +-#if OS2 +- if (isnullenv(home)) +- home = lgetenv("INIT"); +-#endif + name = NULL; + if (!must_exist) + { + /* If we're writing the file and the file already exists, use it. */ +- name = dirfile(xdg, &LESSHISTFILE[1], 1); +- if (name == NULL) +- name = dirfile(home, LESSHISTFILE, 1); ++ name = histfile_find(1); + } + if (name == NULL) +- name = dirfile(xdg, &LESSHISTFILE[1], must_exist); +- if (name == NULL) +- name = dirfile(home, LESSHISTFILE, must_exist); ++ name = histfile_find(must_exist); + return (name); + } + |