Preparing for Z-machine standard 1.1 of not prompting on save/restore.
authorDavid Griffith <dave@661.org>
Fri, 28 Apr 2023 20:10:12 +0000 (13:10 -0700)
committerDavid Griffith <dave@661.org>
Fri, 28 Apr 2023 20:10:12 +0000 (13:10 -0700)
Copied from the Z-machine Standard 1.1 document:

As of Standard 1.1 an additional optional parameter, prompt, is allowed
on Version 5 extended save/restore.  This allows a game author to tell
the interpreter whether it should ask for confirmation of the provided
file name (prompt is 1), or just silently save/restore using the
provided filename (prompt is 0).  If the parameter is not provided,
whether to prompt or not is a matter for the interpreter - this might be
globally user-configurable.  Infocom's interpreters do prompt for
filenames, many modern ones do not.

src/common/frotz.h
src/curses/ux_input.c
src/dos/dosinput.c
src/dumb/dinput.c
src/sdl/sf_util.c
src/x11/x_input.c

index ccae2de3becd72abcd5c6301c4c2927b023272e1..82a688a9adbe2a73cacad48f7db0148969d40e56 100644 (file)
@@ -414,6 +414,7 @@ extern const char build_timestamp[];
 #define FILE_RECORD 4
 #define FILE_LOAD_AUX 5
 #define FILE_SAVE_AUX 6
+#define FILE_NO_PROMPT 7
 
 /*** Data access macros ***/
 #ifdef TOPS20
index b94a938d37bd775a373021041a7bd81c790c9852..e725af387b9e0a5de3660b3c899ede111505947a 100644 (file)
@@ -970,13 +970,14 @@ zchar os_read_key (int timeout, int cursor)
  *
  * Return the name of a file.  Flag can be one of:
  *
- *    FILE_SAVE     - Save game file
- *    FILE_RESTORE  - Restore game file
- *    FILE_SCRIPT   - Transcript file
- *    FILE_RECORD   - Command file for recording
- *    FILE_PLAYBACK - Command file for playback
- *    FILE_SAVE_AUX - Save auxilary ("preferred settings") file
- *    FILE_LOAD_AUX - Load auxilary ("preferred settings") file
+ *    FILE_SAVE      - Save game file
+ *    FILE_RESTORE   - Restore game file
+ *    FILE_SCRIPT    - Transcript file
+ *    FILE_RECORD    - Command file for recording
+ *    FILE_PLAYBACK  - Command file for playback
+ *    FILE_SAVE_AUX  - Save auxilary ("preferred settings") file
+ *    FILE_LOAD_AUX  - Load auxilary ("preferred settings") file
+ *    FILE_NO_PROMPT - Return file without prompting the user
  *
  * The length of the file name is limited by MAX_FILE_NAME. Ideally
  * an interpreter should open a file requester to ask for the file
index 8f666a989da6b769a1f72a313336cfc0b927b2ea..02066a4756a8093498f1ffd39e67f515e98462bb 100644 (file)
@@ -860,13 +860,14 @@ zchar os_read_key(int timeout, bool cursor)
  *
  * Return the name of a file. Flag can be one of:
  *
- *    FILE_SAVE     - Save game file
- *    FILE_RESTORE  - Restore game file
- *    FILE_SCRIPT   - Transscript file
- *    FILE_RECORD   - Command file for recording
- *    FILE_PLAYBACK - Command file for playback
- *    FILE_SAVE_AUX - Save auxilary ("preferred settings") file
- *    FILE_LOAD_AUX - Load auxilary ("preferred settings") file
+ *    FILE_SAVE      - Save game file
+ *    FILE_RESTORE   - Restore game file
+ *    FILE_SCRIPT    - Transcript file
+ *    FILE_RECORD    - Command file for recording
+ *    FILE_PLAYBACK  - Command file for playback
+ *    FILE_SAVE_AUX  - Save auxilary ("preferred settings") file
+ *    FILE_LOAD_AUX  - Load auxilary ("preferred settings") file
+ *    FILE_NO_PROMPT - Return file without prompting the user
  *
  * The length of the file name is limited by MAX_FILE_NAME. Ideally
  * an interpreter should open a file requester to ask for the file
index eb2a9508b669cdf706412015c8b3903e211ac8c4..7fc642db2d7eafa5707a3c9fb66ab0d4ece08146 100644 (file)
@@ -496,7 +496,27 @@ zchar os_read_line (int UNUSED (max), zchar *buf, int timeout, int UNUSED(width)
        return terminator;
 }
 
-
+/*
+ * os_read_file_name
+ *
+ * Return the name of a file. Flag can be one of:
+ *
+ *    FILE_SAVE      - Save game file
+ *    FILE_RESTORE   - Restore game file
+ *    FILE_SCRIPT    - Transcript file
+ *    FILE_RECORD    - Command file for recording
+ *    FILE_PLAYBACK  - Command file for playback
+ *    FILE_SAVE_AUX  - Save auxilary ("preferred settings") file
+ *    FILE_LOAD_AUX  - Load auxilary ("preferred settings") file
+ *    FILE_NO_PROMPT - Return file without prompting the user
+ *
+ * The length of the file name is limited by MAX_FILE_NAME. Ideally
+ * an interpreter should open a file requester to ask for the file
+ * name. If it is unable to do that then this function should call
+ * print_string and read_string to ask for a file name.
+ *
+ * Return value is NULL if there was a problem.
+ */
 char *os_read_file_name (const char *default_name, int flag)
 {
        char file_name[FILENAME_MAX + 1];
index ef5644e4c9b121392ce814d3c30c83bb10199c1e..ff1d920645f4b477e8a893ce7af84fc3f9b9ba20 100644 (file)
@@ -629,13 +629,14 @@ static int dialog_read_file_name(char *file_name, const char *default_name,
  *
  * Return the name of a file. Flag can be one of:
  *
- *    FILE_SAVE     - Save game file
- *    FILE_RESTORE  - Restore game file
- *    FILE_SCRIPT   - Transscript file
- *    FILE_RECORD   - Command file for recording
- *    FILE_PLAYBACK - Command file for playback
- *    FILE_SAVE_AUX - Save auxilary ("preferred settings") file
- *    FILE_LOAD_AUX - Load auxilary ("preferred settings") file
+ *    FILE_SAVE      - Save game file
+ *    FILE_RESTORE   - Restore game file
+ *    FILE_SCRIPT    - Transcript file
+ *    FILE_RECORD    - Command file for recording
+ *    FILE_PLAYBACK  - Command file for playback
+ *    FILE_SAVE_AUX  - Save auxilary ("preferred settings") file
+ *    FILE_LOAD_AUX  - Load auxilary ("preferred settings") file
+ *    FILE_NO_PROMPT - Return file without prompting the user
  *
  * The length of the file name is limited by MAX_FILE_NAME. Ideally
  * an interpreter should open a file requester to ask for the file
index b7e4506eb314d262ea739bdd80f89ced64f766e2..44f48aa4464176d882f817714a48a4d44c770272 100644 (file)
@@ -215,13 +215,14 @@ zchar os_read_key(int timeout, int cursor)
  *
  * Return the name of a file. Flag can be one of:
  *
- *    FILE_SAVE     - Save game file
- *    FILE_RESTORE  - Restore game file
- *    FILE_SCRIPT   - Transscript file
- *    FILE_RECORD   - Command file for recording
- *    FILE_PLAYBACK - Command file for playback
- *    FILE_SAVE_AUX - Save auxilary ("preferred settings") file
- *    FILE_LOAD_AUX - Load auxilary ("preferred settings") file
+ *    FILE_SAVE      - Save game file
+ *    FILE_RESTORE   - Restore game file
+ *    FILE_SCRIPT    - Transcript file
+ *    FILE_RECORD    - Command file for recording
+ *    FILE_PLAYBACK  - Command file for playback
+ *    FILE_SAVE_AUX  - Save auxilary ("preferred settings") file
+ *    FILE_LOAD_AUX  - Load auxilary ("preferred settings") file
+ *    FILE_NO_PROMPT - Return file without prompting the use
  *
  * The length of the file name is limited by MAX_FILE_NAME. Ideally
  * an interpreter should open a file requester to ask for the file