Mercurial > mxe-octave
changeset 5044:d0a95d2c44bf
Add fix to readline 7+ windows bug for writing history to existing file
* src/readline-2-history.patch
* dist-files: added ref to patch
author | John Donoghue |
---|---|
date | Thu, 04 Apr 2019 11:28:25 -0400 |
parents | ff2697d81659 |
children | d475c9d019f3 |
files | dist-files.mk src/readline-2-history.patch |
diffstat | 2 files changed, 62 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/dist-files.mk Mon Apr 01 16:31:34 2019 -0400 +++ b/dist-files.mk Thu Apr 04 11:28:25 2019 -0400 @@ -637,6 +637,7 @@ readline-1-input.patch \ readline-1-sigwinch.patch \ readline-2-event-hook.patch \ + readline-2-history.patch \ readline.mk \ release-octave-1-gnulib.patch \ release-octave.mk \
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/readline-2-history.patch Thu Apr 04 11:28:25 2019 -0400 @@ -0,0 +1,61 @@ +diff -ur readline-8.0.eventhook/histfile.c readline-8.0/histfile.c +--- readline-8.0.eventhook/histfile.c 2019-04-03 10:21:42.916563353 -0400 ++++ readline-8.0/histfile.c 2019-04-03 16:16:04.605404093 -0400 +@@ -107,6 +107,11 @@ + # define PATH_MAX 1024 /* default */ + #endif + ++#if defined(_WIN32) ++ #define WIN32_LEAN_AND_MEAN ++ #include <windows.h> ++#endif ++ + extern void _hs_append_history_line PARAMS((int, const char *)); + + /* history file version; currently unused */ +@@ -139,6 +144,19 @@ + static int histfile_backup PARAMS((const char *, const char *)); + static int histfile_restore PARAMS((const char *, const char *)); + ++static int ++history_rename(const char *from, const char *to) ++{ ++#if defined(_WIN32) ++ if (!MoveFileEx(from, to, MOVEFILE_REPLACE_EXISTING)) { ++ return -1; ++ } ++ return 0; ++#else ++ return rename(from, to); ++#endif ++} ++ + /* Return the string that should be used in the place of this + filename. This only matters when you don't specify the + filename to read_history (), or write_history (). */ +@@ -448,10 +466,10 @@ + if ((n = readlink (filename, linkbuf, sizeof (linkbuf) - 1)) > 0) + { + linkbuf[n] = '\0'; +- return (rename (linkbuf, back)); ++ return (history_rename (linkbuf, back)); + } + #endif +- return (rename (filename, back)); ++ return (history_rename (filename, back)); + } + + /* Restore ORIG from BACKUP handling case where ORIG is a symlink +@@ -467,10 +485,10 @@ + if ((n = readlink (orig, linkbuf, sizeof (linkbuf) - 1)) > 0) + { + linkbuf[n] = '\0'; +- return (rename (backup, linkbuf)); ++ return (history_rename (backup, linkbuf)); + } + #endif +- return (rename (backup, orig)); ++ return (history_rename (backup, orig)); + } + + /* Truncate the history file FNAME, leaving only LINES trailing lines.