X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fconfig.cpp;h=489026329ec4338390badffe13be7b5b6ef08435;hb=73efab6c6d83b936a6afa6e1efec0218f03e9180;hp=5b43fe3e68e01aef7521f56610e2b98b134ce289;hpb=4ce2beaa6d1cab7ed8063bbe1472e13a4280ebc0;p=builder.git diff --git a/source/config.cpp b/source/config.cpp index 5b43fe3..4890263 100644 --- a/source/config.cpp +++ b/source/config.cpp @@ -18,7 +18,10 @@ Config::Config(SourcePackage &p): void Config::add_option(const string &n, const string &v, const string &d) { - options.insert(OptionMap::value_type(n, Option(n, v, d))); + Option opt(n, v, d); + if(pending_options.count(n)) + opt.value = pending_options[n]; + options.insert(OptionMap::value_type(n, opt)); } const Config::Option &Config::get_option(const string &name) const @@ -77,7 +80,10 @@ bool Config::set_option(const string &opt, const string &val) if(i!=options.end()) { if(i->second.value!=val) + { result = true; + changed = true; + } i->second.value = val; } @@ -119,5 +125,8 @@ Config::Loader::Loader(Config &c): void Config::Loader::option(const string &n, const string &v) { - obj.set_option(n, v); + if(obj.options.count(n)) + obj.set_option(n, v); + else + obj.pending_options[n] = v; }