-b # background color \t -P alter piracy opcode\n\
-c # context lines \t -q quiet (disable sound effects)\n\
-d disable color \t -r # right margin\n\
- -e enable sound \t -R load a save file directly from command line\n\
+ -e enable sound \t -R <name> load this save file\n\
-f # foreground color \t -s # random number seed value\n\
-F Force color mode \t -S # transcript width\n\
-h # screen height \t -t set Tandy bit\n\
-i ignore fatal errors \t -u # slots for multiple undo\n\
-l # left margin \t -w # screen width\n\
-o watch object movement \t -x expand abbreviations g/x/z\n"
-
+
/*
char stripped_story_name[FILENAME_MAX+1];
char semi_stripped_story_name[FILENAME_MAX+1];
getconfig(configfile); /* we're not concerned if this fails */
}
- f_setup.tmp_save_name = malloc(FILENAME_MAX * sizeof(char)); /*needs to be initialized before we get to parsing our options*/
-
/* Parse the options */
do {
case 'P': f_setup.piracy = 1; break;
case 'q': f_setup.sound = 0; break;
case 'r': f_setup.right_margin = atoi(optarg); break;
- case 'R': f_setup.restore_mode = 1; strcpy(f_setup.tmp_save_name, optarg); break;
+ case 'R': f_setup.restore_mode = 1;
+ f_setup.tmp_save_name = malloc(FILENAME_MAX * sizeof(char) + 1);
+ strncpy(f_setup.tmp_save_name, optarg, FILENAME_MAX);
+ break;
case 's': u_setup.random_seed = atoi(optarg); break;
case 'S': f_setup.script_cols = atoi(optarg); break;
case 't': u_setup.tandy_bit = 1; break;
strncpy(f_setup.command_name, f_setup.story_name, strlen(f_setup.story_name));
strncat(f_setup.command_name, EXT_COMMAND, strlen(EXT_COMMAND));
-
- f_setup.save_name = malloc(strlen(f_setup.story_name) * sizeof(char) + 5);
- strncpy(f_setup.save_name, f_setup.story_name, strlen(f_setup.story_name));
- strncat(f_setup.save_name, EXT_SAVE, strlen(EXT_SAVE));
+ if (!f_setup.restore_mode) {
+ f_setup.save_name = malloc(strlen(f_setup.story_name) * sizeof(char) + 5);
+ strncpy(f_setup.save_name, f_setup.story_name, strlen(f_setup.story_name));
+ strncat(f_setup.save_name, EXT_SAVE, strlen(EXT_SAVE));
+ } else { /*Set our auto load save as the name_save*/
+ f_setup.save_name = malloc(strlen(f_setup.tmp_save_name) * sizeof(char) + 5);
+ strncpy(f_setup.save_name, f_setup.tmp_save_name, strlen(f_setup.tmp_save_name));
+ free(f_setup.tmp_save_name);
+ }
f_setup.aux_name = malloc(strlen(f_setup.story_name) * sizeof(char) + 5);
strncpy(f_setup.aux_name, f_setup.story_name, strlen(f_setup.story_name));
strncat(f_setup.aux_name, EXT_AUX, strlen(EXT_AUX));
-
- /*Set our auto load save as the name_save*/
- if(f_setup.restore_mode == 1)
- {
- char * delete_me = f_setup.save_name;
- f_setup.save_name=f_setup.tmp_save_name;
- free(delete_me);
- }
switch (ux_init_blorb()) {
case bb_err_Format:
istream_replay = 0;
ostream_record = 0;
- if(f_setup.restore_mode==0)
- {
- print_string ("Enter a file name.\nDefault is \"");
- print_string (default_name);
- print_string ("\": ");
- read_string (FILENAME_MAX, (zchar *)file_name);
- }
- else
- file_name[0]=0;//set to zero because we are not taking user input
+ /* If we're restoring a game before the interpreter starts,
+ * our filename is already provided. Just go ahead silently.
+ */
+ if (f_setup.restore_mode) {
+ file_name[0]=0;
+ } else {
+ print_string ("Enter a file name.\nDefault is \"");
+ print_string (default_name);
+ print_string ("\": ");
+ read_string (FILENAME_MAX, (zchar *)file_name);
+ }
/* Use the default name if nothing was typed */