diff options
author | Piotr Pawel Stefaniak <pstef@FreeBSD.org> | 2021-09-22 16:42:41 +0000 |
---|---|---|
committer | Piotr Pawel Stefaniak <pstef@FreeBSD.org> | 2021-09-22 20:23:32 +0000 |
commit | 1f82fb3834105fd8f1186b1c6d719d8a24738180 (patch) | |
tree | 80d10ce17345b0ea87b5438bad370f04e05c489a /bin/sh | |
parent | c866d0c798a20b8f0a92df524f4ddd0d81511c88 (diff) | |
download | src-1f82fb3834105fd8f1186b1c6d719d8a24738180.tar.gz src-1f82fb3834105fd8f1186b1c6d719d8a24738180.zip |
Diffstat (limited to 'bin/sh')
-rw-r--r-- | bin/sh/histedit.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/bin/sh/histedit.c b/bin/sh/histedit.c index 4e82f7497850..96511b87b451 100644 --- a/bin/sh/histedit.c +++ b/bin/sh/histedit.c @@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$"); #include <sys/param.h> #include <sys/stat.h> #include <dirent.h> +#include <errno.h> #include <fcntl.h> #include <limits.h> #include <paths.h> @@ -70,6 +71,7 @@ __FBSDID("$FreeBSD$"); History *hist; /* history cookie */ EditLine *el; /* editline cookie */ int displayhist; +static int savehist; static FILE *el_in, *el_out; static char *fc_replace(const char *, char *, char *); @@ -103,7 +105,7 @@ histsave(void) int fd; FILE *f; - if ((histfile = get_histfile()) == NULL) + if (!savehist || (histfile = get_histfile()) == NULL) return; INTOFF; asprintf(&histtmpname, "%s.XXXXXXXXXX", histfile); @@ -134,7 +136,9 @@ histload(void) if ((histfile = get_histfile()) == NULL) return; - history(hist, &he, H_LOAD, histfile); + errno = 0; + if (history(hist, &he, H_LOAD, histfile) != -1 || errno == ENOENT) + savehist = 1; } /* |