From bb1015c67e48bb860a50564a1dd0f6f355d07025 Mon Sep 17 00:00:00 2001 From: David Griffith Date: Fri, 28 Apr 2023 20:20:11 -0700 Subject: [PATCH] Restricted curses' save-restore prompt to .aux files. --- src/curses/ux_init.c | 22 ++++++++++++++++------ src/curses/ux_input.c | 9 +++++++++ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/curses/ux_init.c b/src/curses/ux_init.c index 8da63b5..7d810d1 100644 --- a/src/curses/ux_init.c +++ b/src/curses/ux_init.c @@ -124,17 +124,27 @@ static void print_c_string (const char *s) */ void os_warn (const char *s, ...) { + va_list m; + char errorstring[81]; + int style; + + va_start(m, s); + vsnprintf(errorstring, sizeof(char) * 80, s, m); + va_end(m); + if (u_setup.curses_active) { - /* Solaris 2.6's cc complains if the below cast is missing */ - print_c_string("\n\n"); os_beep(BEEP_HIGH); + style = u_setup.current_text_style; os_set_text_style(BOLDFACE_STYLE); print_c_string("Warning: "); - os_set_text_style(0); - print_c_string(s); - print_c_string("\n"); + print_c_string(errorstring); + os_set_text_style(NORMAL_STYLE); new_line(); - } + os_set_text_style(style); + } else + printf("Warning: %s\n", errorstring); + + return; } /* os_warn */ diff --git a/src/curses/ux_input.c b/src/curses/ux_input.c index 5ae3bfc..b38a613 100644 --- a/src/curses/ux_input.c +++ b/src/curses/ux_input.c @@ -996,6 +996,7 @@ char *os_read_file_name (const char *default_name, int flag) zchar answer[4]; char path_separator[2]; char file_name[FILENAME_MAX + 1]; + char *ext; path_separator[0] = PATH_SEPARATOR; path_separator[1] = 0; @@ -1118,6 +1119,14 @@ char *os_read_file_name (const char *default_name, int flag) strncat(file_name, tempname, strlen(file_name) - strlen(tempname) - 1); } + if (flag == FILE_NO_PROMPT) { + ext = strrchr(file_name, '.'); + if (strncmp(ext, EXT_AUX, 4)) { + os_warn("Blocked unprompted access of %s. Should only be %s files.", file_name, EXT_AUX); + return NULL; + } + } + /* Warn if overwriting a file. */ if ((flag == FILE_SAVE || flag == FILE_SAVE_AUX || flag == FILE_RECORD || flag == FILE_SCRIPT) -- 2.34.1