Author: cazfi
Date: Sun Aug 30 18:02:55 2015
New Revision: 29742

URL: http://svn.gna.org/viewcvs/freeciv?rev=29742&view=rev
Log:
Mark settings loaded from savegame/scenario as changed ones.

See bug #23830

Modified:
    branches/S2_6/server/settings.c

Modified: branches/S2_6/server/settings.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/server/settings.c?rev=29742&r1=29741&r2=29742&view=diff
==============================================================================
--- branches/S2_6/server/settings.c     (original)
+++ branches/S2_6/server/settings.c     Sun Aug 30 18:02:55 2015
@@ -4126,19 +4126,26 @@
                                    i)) {
             log_verbose("Option '%s' not defined in the savegame: %s", name,
                         secfile_error());
-          } else if (val != *pset->boolean.pvalue) {
-            if (setting_is_changeable(pset, NULL, reject_msg,
-                                      sizeof(reject_msg))
-                && (NULL == pset->boolean.validate
-                    || pset->boolean.validate(val, NULL, reject_msg,
-                                              sizeof(reject_msg)))) {
-              *pset->boolean.pvalue = val;
-              log_normal(_("Savegame: '%s' has been set to %s."),
-                         setting_name(pset),
-                         setting_value_name(pset, TRUE, buf, sizeof(buf)));
+          } else {
+            pset->setdef = SETDEF_CHANGED;
+
+            if (val != *pset->boolean.pvalue) {
+              if (setting_is_changeable(pset, NULL, reject_msg,
+                                        sizeof(reject_msg))
+                  && (NULL == pset->boolean.validate
+                      || pset->boolean.validate(val, NULL, reject_msg,
+                                                sizeof(reject_msg)))) {
+                *pset->boolean.pvalue = val;
+                log_normal(_("Savegame: '%s' has been set to %s."),
+                           setting_name(pset),
+                           setting_value_name(pset, TRUE, buf, sizeof(buf)));
+              } else {
+                log_error("Savegame: error restoring '%s' . (%s)",
+                          setting_name(pset), reject_msg);
+              }
             } else {
-              log_error("Savegame: error restoring '%s' . (%s)",
-                        setting_name(pset), reject_msg);
+              log_normal(_("Savegame: '%s' explicitly set to value same as 
default."),
+                         setting_name(pset));
             }
           }
         }
@@ -4151,19 +4158,26 @@
           if (!secfile_lookup_int(file, &val, "%s.set%d.value", section, i)) {
             log_verbose("Option '%s' not defined in the savegame: %s", name,
                         secfile_error());
-          } else if (val != *pset->integer.pvalue) {
-            if (setting_is_changeable(pset, NULL, reject_msg,
-                                      sizeof(reject_msg))
-                && (NULL == pset->integer.validate
-                    || pset->integer.validate(val, NULL, reject_msg,
-                                              sizeof(reject_msg)))) {
-              *pset->integer.pvalue = val;
-              log_normal(_("Savegame: '%s' has been set to %s."),
-                         setting_name(pset),
-                         setting_value_name(pset, TRUE, buf, sizeof(buf)));
+          } else {
+            pset->setdef = SETDEF_CHANGED;
+
+            if (val != *pset->integer.pvalue) {
+              if (setting_is_changeable(pset, NULL, reject_msg,
+                                        sizeof(reject_msg))
+                  && (NULL == pset->integer.validate
+                      || pset->integer.validate(val, NULL, reject_msg,
+                                                sizeof(reject_msg)))) {
+                *pset->integer.pvalue = val;
+                log_normal(_("Savegame: '%s' has been set to %s."),
+                           setting_name(pset),
+                           setting_value_name(pset, TRUE, buf, sizeof(buf)));
+              } else {
+                log_error("Savegame: error restoring '%s' . (%s)",
+                          setting_name(pset), reject_msg);
+              }
             } else {
-              log_error("Savegame: error restoring '%s' . (%s)",
-                        setting_name(pset), reject_msg);
+              log_normal(_("Savegame: '%s' explicitly set to value same as 
default."),
+                         setting_name(pset));
             }
           }
         }
@@ -4177,15 +4191,22 @@
           if (NULL == val) {
             log_verbose("Option '%s' not defined in the savegame: %s", name,
                         secfile_error());
-          } else if (0 != strcmp(val, pset->string.value)) {
-            if (setting_str_set(pset, val, NULL, reject_msg,
-                                sizeof(reject_msg))) {
-              log_normal(_("Savegame: '%s' has been set to %s."),
-                         setting_name(pset),
-                         setting_value_name(pset, TRUE, buf, sizeof(buf)));
+          } else {
+            pset->setdef = SETDEF_CHANGED;
+
+            if (0 != strcmp(val, pset->string.value)) {
+              if (setting_str_set(pset, val, NULL, reject_msg,
+                                  sizeof(reject_msg))) {
+                log_normal(_("Savegame: '%s' has been set to %s."),
+                           setting_name(pset),
+                           setting_value_name(pset, TRUE, buf, sizeof(buf)));
+              } else {
+                log_error("Savegame: error restoring '%s' . (%s)",
+                          setting_name(pset), reject_msg);
+              }
             } else {
-              log_error("Savegame: error restoring '%s' . (%s)",
-                        setting_name(pset), reject_msg);
+              log_normal(_("Savegame: '%s' explicitly set to value same as 
default."),
+                         setting_name(pset));
             }
           }
         }
@@ -4200,19 +4221,26 @@
                                         "%s.set%d.value", section, i)) {
             log_verbose("Option '%s' not defined in the savegame: %s", name,
                         secfile_error());
-          } else if (val != read_enum_value(pset)) {
-            if (setting_is_changeable(pset, NULL, reject_msg,
-                                      sizeof(reject_msg))
-                && (NULL == pset->enumerator.validate
-                    || pset->enumerator.validate(val, NULL, reject_msg,
-                                                 sizeof(reject_msg)))) {
-              set_enum_value(pset, val);
-              log_normal(_("Savegame: '%s' has been set to %s."),
-                         setting_name(pset),
-                         setting_value_name(pset, TRUE, buf, sizeof(buf)));
+          } else {
+            pset->setdef = SETDEF_CHANGED;
+
+            if (val != read_enum_value(pset)) {
+              if (setting_is_changeable(pset, NULL, reject_msg,
+                                        sizeof(reject_msg))
+                  && (NULL == pset->enumerator.validate
+                      || pset->enumerator.validate(val, NULL, reject_msg,
+                                                   sizeof(reject_msg)))) {
+                set_enum_value(pset, val);
+                log_normal(_("Savegame: '%s' has been set to %s."),
+                           setting_name(pset),
+                           setting_value_name(pset, TRUE, buf, sizeof(buf)));
+              } else {
+                log_error("Savegame: error restoring '%s' . (%s)",
+                          setting_name(pset), reject_msg);
+              }
             } else {
-              log_error("Savegame: error restoring '%s' . (%s)",
-                        setting_name(pset), reject_msg);
+              log_normal(_("Savegame: '%s' explicitly set to value same as 
default."),
+                         setting_name(pset));
             }
           }
         }
@@ -4227,19 +4255,26 @@
                                         "%s.set%d.value", section, i)) {
             log_verbose("Option '%s' not defined in the savegame: %s", name,
                         secfile_error());
-          } else if (val != *pset->bitwise.pvalue) {
-            if (setting_is_changeable(pset, NULL, reject_msg,
-                                      sizeof(reject_msg))
-                && (NULL == pset->bitwise.validate
-                    || pset->bitwise.validate(val, NULL, reject_msg,
-                                              sizeof(reject_msg)))) {
-              *pset->bitwise.pvalue = val;
-              log_normal(_("Savegame: '%s' has been set to %s."),
-                         setting_name(pset),
-                         setting_value_name(pset, TRUE, buf, sizeof(buf)));
+          } else {
+            pset->setdef = SETDEF_CHANGED;
+
+            if (val != *pset->bitwise.pvalue) {
+              if (setting_is_changeable(pset, NULL, reject_msg,
+                                        sizeof(reject_msg))
+                  && (NULL == pset->bitwise.validate
+                      || pset->bitwise.validate(val, NULL, reject_msg,
+                                                sizeof(reject_msg)))) {
+                *pset->bitwise.pvalue = val;
+                log_normal(_("Savegame: '%s' has been set to %s."),
+                           setting_name(pset),
+                           setting_value_name(pset, TRUE, buf, sizeof(buf)));
+              } else {
+                log_error("Savegame: error restoring '%s' . (%s)",
+                          setting_name(pset), reject_msg);
+              }
             } else {
-              log_error("Savegame: error restoring '%s' . (%s)",
-                        setting_name(pset), reject_msg);
+              log_normal(_("Savegame: '%s' explicitly set to value same as 
default."),
+                         setting_name(pset));
             }
           }
         }


_______________________________________________
Freeciv-commits mailing list
Freeciv-commits@gna.org
https://mail.gna.org/listinfo/freeciv-commits

Reply via email to