X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsetup.c;h=ac0bfd4cd753a6dcec5f3581ce4e13e2d50a2a2f;hb=4bb90da7a98b741b4576099be6b89d324c8a80de;hp=f9063d5d5726037190925b93177bb24fb42fa90b;hpb=b645a25fff77d62a36c744fa4047a3c0e5929341;p=rocksndiamonds.git diff --git a/src/libgame/setup.c b/src/libgame/setup.c index f9063d5d..ac0bfd4c 100644 --- a/src/libgame/setup.c +++ b/src/libgame/setup.c @@ -1206,6 +1206,10 @@ char *getFormattedSetupEntry(char *token, char *value) int i; static char entry[MAX_LINE_LEN]; + /* if value is an empty string, just return token without value */ + if (*value == '\0') + return token; + /* start with the token and some spaces to format output line */ sprintf(entry, "%s:", token); for (i = strlen(entry); i < TOKEN_VALUE_POSITION; i++) @@ -1403,7 +1407,6 @@ static void printSetupFileHash(SetupFileHash *hash) static void *loadSetupFileData(char *filename, boolean use_hash) { - int line_len; char line[MAX_LINE_LEN], previous_line[MAX_LINE_LEN]; char *token, *value, *line_ptr; void *setup_file_data, *insert_ptr = NULL; @@ -1478,37 +1481,34 @@ static void *loadSetupFileData(char *filename, boolean use_hash) if (*line == '\0') continue; - line_len = strlen(line); - /* cut leading whitespaces from token */ for (token = line; *token; token++) if (*token != ' ' && *token != '\t') break; - /* find end of token */ + /* start with empty value as reliable default */ + value = ""; + + /* find end of token to determine start of value */ for (line_ptr = token; *line_ptr; line_ptr++) { if (*line_ptr == ' ' || *line_ptr == '\t' || *line_ptr == ':') { - *line_ptr = '\0'; + *line_ptr = '\0'; /* terminate token string */ + value = line_ptr + 1; /* set beginning of value */ + break; } } - if (line_ptr < line + line_len) - value = line_ptr + 1; - else -#if 1 - value = "true"; /* treat tokens without value as "true" */ -#else - value = "\0"; -#endif - /* cut leading whitespaces from value */ for (; *value; value++) if (*value != ' ' && *value != '\t') break; + if (*value == '\0') + value = "true"; /* treat tokens without value as "true" */ + if (*token && *value) { if (use_hash)