From 4de8c34f2116fff554af6216c30ec9d41bf50b24 Mon Sep 17 00:00:00 2001 From: David Griffith Date: Tue, 4 Sep 2018 02:32:20 -0700 Subject: [PATCH] Fix #47: Prompt for overwrite. --- src/curses/ux_input.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/curses/ux_input.c b/src/curses/ux_input.c index ab12565..ce61690 100644 --- a/src/curses/ux_input.c +++ b/src/curses/ux_input.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -727,12 +728,14 @@ zchar os_read_key (int timeout, int cursor) * */ -int os_read_file_name (char *file_name, const char *default_name, int UNUSED(flag)) +int os_read_file_name (char *file_name, const char *default_name, int flag) { + FILE *fp; int saved_replay = istream_replay; int saved_record = ostream_record; int i; char *tempname; + zchar answer[4]; /* Turn off playback and recording temporarily */ istream_replay = 0; @@ -796,6 +799,15 @@ int os_read_file_name (char *file_name, const char *default_name, int UNUSED(fla strcat(file_name, tempname); } + /* Warn if overwriting a file. */ + if ((flag == FILE_SAVE || flag == FILE_SAVE_AUX || flag == FILE_RECORD) + && ((fp = fopen(file_name, "rb")) != NULL)) { + fclose (fp); + print_string("Overwrite existing file? "); + read_string(4, answer); + return(tolower(answer[0]) == 'y'); + } + /* Restore state of playback and recording */ istream_replay = saved_replay; ostream_record = saved_record; -- 2.34.1