X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsetup.c;h=614bb613cec6cc7185c78f423daca63193f7d89d;hb=8afc6199767a6fcb7451efd2b3d5b070f6c99efb;hp=943c063a1ab8d48665feb5701a465d6727feaa96;hpb=28f0f8708f4b4f8c4f39f1b23bc5fc7e0fed7579;p=rocksndiamonds.git diff --git a/src/libgame/setup.c b/src/libgame/setup.c index 943c063a..614bb613 100644 --- a/src/libgame/setup.c +++ b/src/libgame/setup.c @@ -408,7 +408,7 @@ char *getSetupFilename() static char *getCorrectedImageBasename(char *basename) { - char *result = basename; + char *basename_corrected = basename; #if defined(PLATFORM_MSDOS) if (program.filename_prefix != NULL) @@ -416,11 +416,25 @@ static char *getCorrectedImageBasename(char *basename) int prefix_len = strlen(program.filename_prefix); if (strncmp(basename, program.filename_prefix, prefix_len) == 0) - result = &basename[prefix_len]; + basename_corrected = &basename[prefix_len]; + + /* if corrected filename is still longer than standard MS-DOS filename + size (8 characters + 1 dot + 3 characters file extension), shorten + filename by writing file extension after 8th basename character */ + if (strlen(basename_corrected) > 8+1+3) + { + static char *msdos_filename = NULL; + + if (filename != NULL) + free(filename); + + filename = getStringCopy(basename_corrected); + strncpy(&filename[8], &basename[strlen(basename) - 1+3], 1+3 + 1); + } } #endif - return result; + return basename_corrected; } static boolean fileExists(char *filename)