From f8691bb86e74e73e432fd61d3cfd212e7361d0f9 Mon Sep 17 00:00:00 2001 From: mfranz Date: Thu, 12 Jul 2007 14:45:46 +0000 Subject: [PATCH] make properties created via --prop option default to type UNSPECIFIED. 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 | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/Main/options.cxx b/src/Main/options.cxx index 80489d4c1..518b1babf 100644 --- a/src/Main/options.cxx +++ b/src/Main/options.cxx @@ -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; } -- 2.39.5