X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Flibgame%2Fmisc.c;h=60aff1cca96ed5772fbe1475ddb86091a56c853e;hb=caf3da0a0e3af75eb8d10f83e5105581402b387e;hp=11c0c185f1b04c3c21bc67434107e5b0b7aa24c9;hpb=6945f3749927053ee70b47133b2998557a452f75;p=rocksndiamonds.git diff --git a/src/libgame/misc.c b/src/libgame/misc.c index 11c0c185..60aff1cc 100644 --- a/src/libgame/misc.c +++ b/src/libgame/misc.c @@ -324,7 +324,7 @@ unsigned int init_random_number(int nr, long seed) unsigned int get_random_number(int nr, unsigned int max) { - return (random_linux_libc(nr) % max); + return (max > 0 ? random_linux_libc(nr) % max : 0); } @@ -1884,11 +1884,7 @@ void LoadArtworkConfig(struct ArtworkListInfo *artwork_info) int num_ext3_suffixes = artwork_info->num_ext3_suffixes; int num_ignore_tokens = artwork_info->num_ignore_tokens; char *filename = getCustomArtworkConfigFilename(artwork_info->type); - SetupFileHash *setup_file_hash; - SetupFileHash *extra_file_hash = NULL; -#if 0 - SetupFileHash *list; -#endif + SetupFileHash *setup_file_hash, *extra_file_hash; char *known_token_value = KNOWN_TOKEN_VALUE; int i, j, k, l; @@ -1936,59 +1932,32 @@ void LoadArtworkConfig(struct ArtworkListInfo *artwork_info) if (filename == NULL) return; - printf("::: THIS 0\n"); - if ((setup_file_hash = loadSetupFileHash(filename)) == NULL) return; - printf("::: THIS 1 [%d]\n", num_file_list_entries); - /* read parameters for all known config file tokens */ for (i=0; inext) - { - if (strcmp(list->value, known_token_value) != 0) - { - if (extra_file_hash == NULL) - extra_file_hash = newSetupFileHash(list->token, list->value); - else - setHashEntry(extra_file_hash, list->token, list->value); - } - } -#else + extra_file_hash = newSetupFileHash(); BEGIN_HASH_ITERATION(setup_file_hash, itr) { if (strcmp(HASH_ITERATION_VALUE(itr), known_token_value) != 0) - { - if (extra_file_hash == NULL) - extra_file_hash = newSetupFileHash(); - setHashEntry(extra_file_hash, HASH_ITERATION_TOKEN(itr), HASH_ITERATION_VALUE(itr)); - } } END_HASH_ITERATION(setup_file_hash, itr) -#endif - /* at this point, we do not need the config file list anymore -- free it */ + /* at this point, we do not need the config file hash anymore -- free it */ freeSetupFileHash(setup_file_hash); /* now try to determine valid, dynamically defined config tokens */ -#if 0 - for (list = extra_file_hash; list != NULL; list = list->next) -#endif - BEGIN_HASH_ITERATION(extra_file_hash, itr) { struct FileInfo **dynamic_file_list = @@ -2204,12 +2173,12 @@ void LoadArtworkConfig(struct ArtworkListInfo *artwork_info) if (extra_file_hash != NULL && options.verbose && IS_PARENT_PROCESS()) { + SetupFileList *setup_file_list, *list; boolean dynamic_tokens_found = FALSE; boolean unknown_tokens_found = FALSE; -#if 0 - for (list = extra_file_hash; list != NULL; list = list->next) -#endif + if ((setup_file_list = loadSetupFileList(filename)) == NULL) + Error(ERR_EXIT, "loadSetupFileHash works, but loadSetupFileList fails"); BEGIN_HASH_ITERATION(extra_file_hash, itr) { @@ -2226,16 +2195,13 @@ void LoadArtworkConfig(struct ArtworkListInfo *artwork_info) Error(ERR_RETURN_LINE, "-"); Error(ERR_RETURN, "dynamic token(s) found:"); -#if 0 - for (list = extra_file_hash; list != NULL; list = list->next) -#endif - - BEGIN_HASH_ITERATION(extra_file_hash, itr) + for (list = setup_file_list; list != NULL; list = list->next) { - if (strcmp(HASH_ITERATION_VALUE(itr), known_token_value) == 0) - Error(ERR_RETURN, "- dynamic token: '%s'",HASH_ITERATION_TOKEN(itr)); + char *value = getHashEntry(extra_file_hash, list->token); + + if (value != NULL && strcmp(value, known_token_value) == 0) + Error(ERR_RETURN, "- dynamic token: '%s'", list->token); } - END_HASH_ITERATION(extra_file_hash, itr) Error(ERR_RETURN_LINE, "-"); } @@ -2247,19 +2213,18 @@ void LoadArtworkConfig(struct ArtworkListInfo *artwork_info) Error(ERR_RETURN, "warning: unknown token(s) found in config file:"); Error(ERR_RETURN, "- config file: '%s'", filename); -#if 0 - for (list = extra_file_hash; list != NULL; list = list->next) -#endif - - BEGIN_HASH_ITERATION(extra_file_hash, itr) + for (list = setup_file_list; list != NULL; list = list->next) { - if (strcmp(HASH_ITERATION_VALUE(itr), known_token_value) != 0) - Error(ERR_RETURN, "- unknown token: '%s'",HASH_ITERATION_TOKEN(itr)); + char *value = getHashEntry(extra_file_hash, list->token); + + if (value != NULL && strcmp(value, known_token_value) != 0) + Error(ERR_RETURN, "- dynamic token: '%s'", list->token); } - END_HASH_ITERATION(extra_file_hash, itr) Error(ERR_RETURN_LINE, "-"); } + + freeSetupFileList(setup_file_list); } freeSetupFileHash(extra_file_hash);