added checking for missing INFO chunk when loading tape by filename only
authorHolger Schemel <info@artsoft.org>
Sun, 12 Sep 2021 23:09:13 +0000 (01:09 +0200)
committerHolger Schemel <info@artsoft.org>
Sun, 12 Sep 2021 23:09:13 +0000 (01:09 +0200)
src/files.c
src/tape.c
src/tape.h

index e73ce9c594144cdb4756b5354130572665bf8819..61ea14cb7e7cdf1a76cce5382ce68d12af89a12c 100644 (file)
@@ -7763,6 +7763,7 @@ static void setTapeInfoToDefaults(void)
   tape.scr_fieldx = SCR_FIELDX_DEFAULT;
   tape.scr_fieldy = SCR_FIELDY_DEFAULT;
 
+  tape.no_info_chunk = TRUE;
   tape.no_valid_file = FALSE;
 }
 
@@ -7867,6 +7868,8 @@ static int LoadTape_INFO(File *file, int chunk_size, struct TapeInfo *tape)
   int level_identifier_size;
   int i;
 
+  tape->no_info_chunk = FALSE;
+
   level_identifier_size = getFile16BitBE(file);
 
   level_identifier = checked_malloc(level_identifier_size);
index a22fc9a54741013239ad7c63bf3a487c14237440..d77703295f3fcb5ee69619d658bd713de42e36b5 100644 (file)
@@ -1589,6 +1589,9 @@ static int AutoPlayTapesExt(boolean initialize)
          Fail("cannot load tape file '%s'", autoplay.tape_filename);
       }
 
+      if (tape.no_info_chunk)
+       Fail("cannot get levelset from tape file '%s'", autoplay.tape_filename);
+
       global.autoplay_leveldir = tape.level_identifier;
 
       if (tape.level_nr >= 0 && tape.level_nr < MAX_TAPES_PER_SET)
index 09027d51b035e5ba61bf79868366243132d753fd..4b914c73d2ac394debdce2a290264708861062ec 100644 (file)
@@ -239,6 +239,7 @@ struct TapeInfo
 
   boolean show_game_buttons;   // show game buttons in tape viewport
 
+  boolean no_info_chunk;       // used to identify old tape file format
   boolean no_valid_file;       // set when tape file missing or invalid
 };