aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bin/psql/input.c17
1 files changed, 6 insertions, 11 deletions
diff --git a/src/bin/psql/input.c b/src/bin/psql/input.c
index 373013955f8..d52a3347970 100644
--- a/src/bin/psql/input.c
+++ b/src/bin/psql/input.c
@@ -382,6 +382,7 @@ static bool
saveHistory(char *fname, int max_lines)
{
#ifdef USE_READLINE
+ int errnum;
/*
* Suppressing the write attempt when HISTFILE is set to /dev/null may
@@ -405,10 +406,6 @@ saveHistory(char *fname, int max_lines)
* history from other concurrent sessions (although there are still
* race conditions when two sessions exit at about the same time). If
* we don't have those functions, fall back to write_history().
- *
- * Note: return value of write_history is not standardized across GNU
- * readline and libedit. Therefore, check for errno becoming set to
- * see if the write failed. Similarly for append_history.
*/
#if defined(HAVE_HISTORY_TRUNCATE_FILE) && defined(HAVE_APPEND_HISTORY)
{
@@ -430,9 +427,8 @@ saveHistory(char *fname, int max_lines)
nlines = Min(max_lines, history_lines_added);
else
nlines = history_lines_added;
- errno = 0;
- (void) append_history(nlines, fname);
- if (errno == 0)
+ errnum = append_history(nlines, fname);
+ if (errnum == 0)
return true;
}
#else /* don't have append support */
@@ -441,15 +437,14 @@ saveHistory(char *fname, int max_lines)
if (max_lines >= 0)
stifle_history(max_lines);
/* ... and overwrite file. Tough luck for concurrent sessions. */
- errno = 0;
- (void) write_history(fname);
- if (errno == 0)
+ errnum = write_history(fname);
+ if (errnum == 0)
return true;
}
#endif
psql_error("could not save history to file \"%s\": %s\n",
- fname, strerror(errno));
+ fname, strerror(errnum));
}
#endif