From: Holger Schemel Date: Sun, 12 Sep 2021 22:56:26 +0000 (+0200) Subject: added saving incorrect solution tape to temporary file before uploading X-Git-Tag: 4.3.0.0~61 X-Git-Url: https://git.artsoft.org/?a=commitdiff_plain;h=71f0d72b145b4d56e1282c8fa9c5030521f49d82;p=rocksndiamonds.git added saving incorrect solution tape to temporary file before uploading --- diff --git a/src/tape.c b/src/tape.c index e7a87852..a22fc9a5 100644 --- a/src/tape.c +++ b/src/tape.c @@ -1529,6 +1529,7 @@ static int AutoPlayTapesExt(boolean initialize) // save score tape to upload to server; may be required for some reasons: // * level set identifier in solution tapes may differ from level set + // * level set identifier is missing (old-style tape without INFO chunk) // * solution tape may have native format (like Supaplex solution files) SaveScoreTape(level_nr); @@ -1789,9 +1790,21 @@ static int AutoPlayTapesExt(boolean initialize) autoplay.tape_filename = (options.mytapes ? getTapeFilename(level_nr) : getDefaultSolutionTapeFilename(level_nr)); - if (!fileExists(autoplay.tape_filename)) + boolean correct_info_chunk = + (strEqual(leveldir_current->identifier, tape.level_identifier) && + level_nr == tape.level_nr); + + if (!correct_info_chunk) + { + strncpy(tape.level_identifier, leveldir_current->identifier, + MAX_FILENAME_LEN); + tape.level_identifier[MAX_FILENAME_LEN] = '\0'; + tape.level_nr = level_nr; + } + + if (!fileExists(autoplay.tape_filename) || !correct_info_chunk) { - // non-standard solution tape -- save to temporary file + // non-standard or incorrect solution tape -- save to temporary file autoplay.tape_filename = getTemporaryTapeFilename(); SaveTapeToFilename(autoplay.tape_filename);