]> git.mxchange.org Git - flightgear.git/commitdiff
make properties created via --prop option default to type UNSPECIFIED.
authormfranz <mfranz>
Thu, 12 Jul 2007 14:45:46 +0000 (14:45 +0000)
committermfranz <mfranz>
Thu, 12 Jul 2007 14:45:46 +0000 (14:45 +0000)
For compatibility with the old behavior just ask for a string:
--prop:string:foo=0  or shorter  --prop:s:foo=0

src/Main/options.cxx

index 80489d4c1fba75da13765072f5b8f767a42d6cfa..518b1babf265bac95b4b86d6c8b401bacffdcfb7 100644 (file)
@@ -1410,29 +1410,31 @@ set_property(const string& arg)
 
     string name = arg.substr(0, pos);
     string value = arg.substr(pos + 1);
-    string type = "string";
+    string type;
     pos = name.find(':');
+
     if (pos != name.npos && pos != 0 && pos + 1 != name.size()) {
         type = name.substr(0, pos);
         name = name.substr(pos + 1);
     }
-    if (type == "s" || type == "string")
-        ;
+    SGPropertyNode *n = fgGetNode(name.c_str(), true);
+
+    if (type.empty())
+        return n->setUnspecifiedValue(value.c_str());
+    else if (type == "s" || type == "string")
+        return n->setStringValue(value.c_str());
     else if (type == "d" || type == "double")
-        fgSetDouble(name.c_str(), 0.0);
+        return n->setDoubleValue(strtod(value.c_str(), 0));
     else if (type == "f" || type == "float")
-        fgSetFloat(name.c_str(), 0.0f);
+        return n->setFloatValue(atof(value.c_str()));
     else if (type == "l" || type == "long")
-        fgSetLong(name.c_str(), 0L);
+        return n->setLongValue(strtol(value.c_str(), 0, 0));
     else if (type == "i" || type == "int")
-        fgSetInt(name.c_str(), 0);
+        return n->setIntValue(atoi(value.c_str()));
     else if (type == "b" || type == "bool")
-        fgSetBool(name.c_str(), false);
-    else
-        return false;
+        return n->setBoolValue(value == "true" || atoi(value.c_str()) != 0);
 
-    fgSetString(name.c_str(), value.c_str());
-    return true;
+    return false;
 }