X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fmisc.c;h=b72aa3c5608cd0e024b508f1e0cbb52c89faafdf;hb=d8e3568accbc475855027f7199e55543dc4d1ddf;hp=ba3796259bf2e02bd579dee4fba25d6593434e09;hpb=d04e03c1d739a7ff4ec46e144a49770476fd0e19;p=rocksndiamonds.git diff --git a/src/libgame/misc.c b/src/libgame/misc.c index ba379625..b72aa3c5 100644 --- a/src/libgame/misc.c +++ b/src/libgame/misc.c @@ -1504,6 +1504,9 @@ void dumpList(ListNode *node_first) boolean fileExists(char *filename) { + if (filename == NULL) + return FALSE; + #if 0 printf("checking file '%s'\n", filename); #endif @@ -1707,7 +1710,7 @@ static void FreeCustomArtworkList(struct ArtworkListInfo *, struct ListNodeInfo ***, int *); struct FileInfo *getFileListFromConfigList(struct ConfigInfo *config_list, - struct ConfigInfo *suffix_list, + struct ConfigTypeInfo *suffix_list, char **ignore_tokens, int num_file_list_entries) { @@ -1842,7 +1845,7 @@ static boolean token_suffix_match(char *token, char *suffix, int start_pos) #define KNOWN_TOKEN_VALUE "[KNOWN_TOKEN_VALUE]" static void read_token_parameters(SetupFileHash *setup_file_hash, - struct ConfigInfo *suffix_list, + struct ConfigTypeInfo *suffix_list, struct FileInfo *file_list_entry) { /* check for config token that is the base token without any suffixes */ @@ -1895,7 +1898,7 @@ static void read_token_parameters(SetupFileHash *setup_file_hash, static void add_dynamic_file_list_entry(struct FileInfo **list, int *num_list_entries, SetupFileHash *extra_file_hash, - struct ConfigInfo *suffix_list, + struct ConfigTypeInfo *suffix_list, int num_suffix_list_entries, char *token) { @@ -1944,7 +1947,7 @@ static void LoadArtworkConfigFromFilename(struct ArtworkListInfo *artwork_info, char *filename) { struct FileInfo *file_list = artwork_info->file_list; - struct ConfigInfo *suffix_list = artwork_info->suffix_list; + struct ConfigTypeInfo *suffix_list = artwork_info->suffix_list; char **base_prefixes = artwork_info->base_prefixes; char **ext1_suffixes = artwork_info->ext1_suffixes; char **ext2_suffixes = artwork_info->ext2_suffixes; @@ -1987,6 +1990,43 @@ static void LoadArtworkConfigFromFilename(struct ArtworkListInfo *artwork_info, /* at this point, we do not need the setup file hash anymore -- free it */ freeSetupFileHash(setup_file_hash); +#if 1 + /* map deprecated to current tokens (using prefix match and replace) */ + BEGIN_HASH_ITERATION(valid_file_hash, itr) + { + /* !!! make this dynamically configurable (init.c:InitArtworkConfig) !!! */ + static char *map_token_prefix[][2] = + { /* old prefix -> new prefix */ + { "char_procent", "char_percent" }, + { NULL, NULL } + }; + char *token = HASH_ITERATION_TOKEN(itr); + + for (i = 0; map_token_prefix[i][0] != NULL; i++) + { + int token_prefix_length = strlen(map_token_prefix[i][0]); + + if (strncmp(token, map_token_prefix[i][0], token_prefix_length) == 0) + { + char *value = HASH_ITERATION_VALUE(itr); + char *mapped_token = getStringCat2(map_token_prefix[i][1], + &token[token_prefix_length]); + + /* add mapped token */ + setHashEntry(valid_file_hash, mapped_token, value); + + /* ignore old token (by setting it to "known" keyword) */ + setHashEntry(valid_file_hash, token, known_token_value); + + free(mapped_token); + + break; + } + } + } + END_HASH_ITERATION(valid_file_hash, itr) +#endif + /* read parameters for all known config file tokens */ for (i = 0; i < num_file_list_entries; i++) read_token_parameters(valid_file_hash, suffix_list, &file_list[i]);