--- deliantra/server/server/init.C 2010/04/11 00:34:06 1.79 +++ deliantra/server/server/init.C 2010/04/15 22:03:23 1.80 @@ -33,56 +33,28 @@ void load_settings () { - char buf[MAX_BUF], *cp; - int has_val, comp; - FILE *fp; - - sprintf (buf, "%s/settings", settings.confdir); - - /* We don't require a settings file at current time, but down the road, - * there will probably be so many values that not having a settings file - * will not be a good thing. - */ - if (!(fp = open_and_uncompress (buf, 0, &comp))) + char fname [1024]; + sprintf (fname, "%s/settings", settings.confdir); + object_thawer thawer (fname); + + if (!thawer) { LOG (llevError, "Error: No settings file found\n"); exit (1); } - while (fgets (buf, MAX_BUF - 1, fp) != NULL) + while (thawer.kw) { - if (buf[0] == '#') - continue; - /* eliminate newline */ - if ((cp = strrchr (buf, '\n')) != NULL) - *cp = '\0'; - - /* Skip over empty lines */ - if (buf[0] == 0) - continue; - - /* Skip all the spaces and set them to nulls. If not space, - * set cp to "" to make strcpy's and the like easier down below. - */ - if ((cp = strchr (buf, ' ')) != NULL) - { - while (*cp == ' ') - *cp++ = 0; - has_val = 1; - } - else - { - cp = (char *)""; - has_val = 0; - } + const char *buf = thawer.kw_str; + const char *cp = thawer.value_nn; - if (!strcasecmp (buf, "not_permadeth")) + if (!strcmp (buf, "not_permadeth")) { - if (!strcasecmp (cp, "on") || !strcasecmp (cp, "true")) + if (!strcmp (cp, "on") || !strcmp (cp, "true")) { settings.not_permadeth = TRUE; } - else if (!strcasecmp (cp, "off") || !strcasecmp (cp, "false")) + else if (!strcmp (cp, "off") || !strcmp (cp, "false")) { settings.not_permadeth = FALSE; } @@ -91,13 +63,13 @@ LOG (llevError, "load_settings: Unknown value for not_permadeth" ": %s\n", cp); } } - else if (!strcasecmp (buf, "resurrection")) + else if (!strcmp (buf, "resurrection")) { - if (!strcasecmp (cp, "on") || !strcasecmp (cp, "true")) + if (!strcmp (cp, "on") || !strcmp (cp, "true")) { settings.resurrection = TRUE; } - else if (!strcasecmp (cp, "off") || !strcasecmp (cp, "false")) + else if (!strcmp (cp, "off") || !strcmp (cp, "false")) { settings.resurrection = FALSE; } @@ -106,13 +78,13 @@ LOG (llevError, "load_settings: Unknown value for resurrection" ": %s\n", cp); } } - else if (!strcasecmp (buf, "set_title")) + else if (!strcmp (buf, "set_title")) { - if (!strcasecmp (cp, "on") || !strcasecmp (cp, "true")) + if (!strcmp (cp, "on") || !strcmp (cp, "true")) { settings.set_title = TRUE; } - else if (!strcasecmp (cp, "off") || !strcasecmp (cp, "false")) + else if (!strcmp (cp, "off") || !strcmp (cp, "false")) { settings.set_title = FALSE; } @@ -121,13 +93,13 @@ LOG (llevError, "load_settings: Unknown value for set_title" ": %s\n", cp); } } - else if (!strcasecmp (buf, "search_items")) + else if (!strcmp (buf, "search_items")) { - if (!strcasecmp (cp, "on") || !strcasecmp (cp, "true")) + if (!strcmp (cp, "on") || !strcmp (cp, "true")) { settings.search_items = TRUE; } - else if (!strcasecmp (cp, "off") || !strcasecmp (cp, "false")) + else if (!strcmp (cp, "off") || !strcmp (cp, "false")) { settings.search_items = FALSE; } @@ -136,13 +108,13 @@ LOG (llevError, "load_settings: Unknown value for search_items" ": %s\n", cp); } } - else if (!strcasecmp (buf, "spell_encumbrance")) + else if (!strcmp (buf, "spell_encumbrance")) { - if (!strcasecmp (cp, "on") || !strcasecmp (cp, "true")) + if (!strcmp (cp, "on") || !strcmp (cp, "true")) { settings.spell_encumbrance = TRUE; } - else if (!strcasecmp (cp, "off") || !strcasecmp (cp, "false")) + else if (!strcmp (cp, "off") || !strcmp (cp, "false")) { settings.spell_encumbrance = FALSE; } @@ -151,13 +123,13 @@ LOG (llevError, "load_settings: Unknown value for " "spell_encumbrance: %s\n", cp); } } - else if (!strcasecmp (buf, "spell_failure_effects")) + else if (!strcmp (buf, "spell_failure_effects")) { - if (!strcasecmp (cp, "on") || !strcasecmp (cp, "true")) + if (!strcmp (cp, "on") || !strcmp (cp, "true")) { settings.spell_failure_effects = TRUE; } - else if (!strcasecmp (cp, "off") || !strcasecmp (cp, "false")) + else if (!strcmp (cp, "off") || !strcmp (cp, "false")) { settings.spell_failure_effects = FALSE; } @@ -166,13 +138,13 @@ LOG (llevError, "load_settings: Unknown value for " "spell_failure_effects: %s\n", cp); } } - else if (!strcasecmp (buf, "spellpoint_level_depend")) + else if (!strcmp (buf, "spellpoint_level_depend")) { - if (!strcasecmp (cp, "on") || !strcasecmp (cp, "true")) + if (!strcmp (cp, "on") || !strcmp (cp, "true")) { settings.spellpoint_level_depend = TRUE; } - else if (!strcasecmp (cp, "off") || !strcasecmp (cp, "false")) + else if (!strcmp (cp, "off") || !strcmp (cp, "false")) { settings.spellpoint_level_depend = FALSE; } @@ -181,13 +153,13 @@ LOG (llevError, "load_settings: Unknown value for " "spellpoint_level_depend: %s\n", cp); } } - else if (!strcasecmp (buf, "stat_loss_on_death")) + else if (!strcmp (buf, "stat_loss_on_death")) { - if (!strcasecmp (cp, "on") || !strcasecmp (cp, "true")) + if (!strcmp (cp, "on") || !strcmp (cp, "true")) { settings.stat_loss_on_death = TRUE; } - else if (!strcasecmp (cp, "off") || !strcasecmp (cp, "false")) + else if (!strcmp (cp, "off") || !strcmp (cp, "false")) { settings.stat_loss_on_death = FALSE; } @@ -196,11 +168,11 @@ LOG (llevError, "load_settings: Unknown value for " "stat_loss_on_death: %s\n", cp); } } - else if (!strcasecmp (buf, "use_permanent_experience")) + else if (!strcmp (buf, "use_permanent_experience")) { LOG (llevError, "use_permanent_experience is deprecated, use" "permenent_experience_percentage instead\n"); } - else if (!strcasecmp (buf, "permanent_experience_percentage")) + else if (!strcmp (buf, "permanent_experience_percentage")) { int val = atoi (cp); @@ -209,7 +181,7 @@ else settings.permanent_exp_ratio = val; } - else if (!strcasecmp (buf, "death_penalty_percentage")) + else if (!strcmp (buf, "death_penalty_percentage")) { int val = atoi (cp); @@ -218,7 +190,7 @@ else settings.death_penalty_ratio = val; } - else if (!strcasecmp (buf, "death_penalty_levels")) + else if (!strcmp (buf, "death_penalty_levels")) { int val = atoi (cp); @@ -227,13 +199,13 @@ else settings.death_penalty_level = val; } - else if (!strcasecmp (buf, "balanced_stat_loss")) + else if (!strcmp (buf, "balanced_stat_loss")) { - if (!strcasecmp (cp, "on") || !strcasecmp (cp, "true")) + if (!strcmp (cp, "on") || !strcmp (cp, "true")) { settings.balanced_stat_loss = TRUE; } - else if (!strcasecmp (cp, "off") || !strcasecmp (cp, "false")) + else if (!strcmp (cp, "off") || !strcmp (cp, "false")) { settings.balanced_stat_loss = FALSE; } @@ -242,13 +214,13 @@ LOG (llevError, "load_settings: Unknown value for " "balanced_stat_loss: %s\n", cp); } } - else if (!strcasecmp (buf, "simple_exp")) + else if (!strcmp (buf, "simple_exp")) { - if (!strcasecmp (cp, "on") || !strcasecmp (cp, "true")) + if (!strcmp (cp, "on") || !strcmp (cp, "true")) { settings.simple_exp = TRUE; } - else if (!strcasecmp (cp, "off") || !strcasecmp (cp, "false")) + else if (!strcmp (cp, "off") || !strcmp (cp, "false")) { settings.simple_exp = FALSE; } @@ -257,7 +229,7 @@ LOG (llevError, "load_settings: Unknown value for simple_exp: %s\n", cp); } } - else if (!strcasecmp (buf, "item_power_factor")) + else if (!strcmp (buf, "item_power_factor")) { float tmp = atof (cp); @@ -266,7 +238,7 @@ else settings.item_power_factor = tmp; } - else if (!strcasecmp (buf, "pk_luck_penalty")) + else if (!strcmp (buf, "pk_luck_penalty")) { sint16 val = atoi (cp); @@ -275,7 +247,7 @@ else settings.pk_luck_penalty = val; } - else if (!strcasecmp (buf, "set_friendly_fire")) + else if (!strcmp (buf, "set_friendly_fire")) { int val = atoi (cp); @@ -284,7 +256,7 @@ else settings.set_friendly_fire = val; } - else if (!strcasecmp (buf, "armor_max_enchant")) + else if (!strcmp (buf, "armor_max_enchant")) { int max_e = atoi (cp); @@ -293,7 +265,7 @@ else settings.armor_max_enchant = max_e; } - else if (!strcasecmp (buf, "armor_weight_reduction")) + else if (!strcmp (buf, "armor_weight_reduction")) { int wr = atoi (cp); @@ -302,13 +274,13 @@ else settings.armor_weight_reduction = wr; } - else if (!strcasecmp (buf, "armor_weight_linear")) + else if (!strcmp (buf, "armor_weight_linear")) { - if (!strcasecmp (cp, "on") || !strcasecmp (cp, "true")) + if (!strcmp (cp, "on") || !strcmp (cp, "true")) { settings.armor_weight_linear = TRUE; } - else if (!strcasecmp (cp, "off") || !strcasecmp (cp, "false")) + else if (!strcmp (cp, "off") || !strcmp (cp, "false")) { settings.armor_weight_linear = FALSE; } @@ -318,7 +290,7 @@ } } - else if (!strcasecmp (buf, "armor_speed_improvement")) + else if (!strcmp (buf, "armor_speed_improvement")) { int wr = atoi (cp); @@ -327,13 +299,13 @@ else settings.armor_speed_improvement = wr; } - else if (!strcasecmp (buf, "armor_speed_linear")) + else if (!strcmp (buf, "armor_speed_linear")) { - if (!strcasecmp (cp, "on") || !strcasecmp (cp, "true")) + if (!strcmp (cp, "on") || !strcmp (cp, "true")) { settings.armor_speed_linear = TRUE; } - else if (!strcasecmp (cp, "off") || !strcasecmp (cp, "false")) + else if (!strcmp (cp, "off") || !strcmp (cp, "false")) { settings.armor_speed_linear = FALSE; } @@ -344,10 +316,10 @@ } else - LOG (llevError, "Unknown value in settings file: %s\n", buf); - } + thawer.parse_error ("settings file"); - close_and_delete (fp, comp); + thawer.next (); + } } /*