Restricted curses' save-restore prompt to .aux files.
authorDavid Griffith <dave@661.org>
Sat, 29 Apr 2023 03:20:11 +0000 (20:20 -0700)
committerDavid Griffith <dave@661.org>
Sat, 29 Apr 2023 05:50:45 +0000 (22:50 -0700)
src/curses/ux_init.c
src/curses/ux_input.c

index 8da63b535909db40a611a8a56e870f0db6e168c8..7d810d1ec6110970eee3325e96b5fe615fe5ad66 100644 (file)
@@ -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 */
 
 
index 5ae3bfcf9fc03829dd06bc8a86b24c0b6b66f02c..b38a6138bec8efafc31ecd66b599b2c11ef5f219 100644 (file)
@@ -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)