}
}
-#ifndef HAVE_RINT
// parse a time string ([+/-]%f[:%f[:%f]]) into hours
static double
parse_time(const string& time_in) {
return(sign * result);
}
-#endif
// parse a date string (yyyy:mm:dd:hh:mm:ss) into a time_t (seconds)
static long int
{"jsclient", true, OPTION_CHANNEL, "", false, "", 0 },
{"proxy", true, OPTION_FUNC, "", false, "", fgSetupProxy },
{"callsign", true, OPTION_FUNC, "", false, "", fgOptCallSign},
- {"multiplay", true, OPTION_CHANNEL, "", false, "", 0 },
+ {"multiplay", true, OPTION_CHANNEL | OPTION_MULTI, "", false, "", 0 },
#ifdef FG_HAVE_HLA
{"hla", true, OPTION_CHANNEL, "", false, "", 0 },
#endif
exit(0);
}
- BOOST_FOREACH(const OptionValue& v, p->values) {
- int result = p->processOption(v.desc, v.value);
+ // proces options in LIFO order, so earlier (first in) options are processed
+ // after, and hence override, later specified options.
+ OptionValueVec::const_reverse_iterator it = p->values.rbegin();
+ for (; it != p->values.rend(); ++it) {
+ int result = p->processOption(it->desc, it->value);
if (result == FG_OPTIONS_ERROR) {
showUsage();
exit(-1);
}
}
-
+
BOOST_FOREACH(const SGPath& file, p->propertyFiles) {
if (!file.exists()) {
SG_LOG(SG_GENERAL, SG_ALERT, "config file not found:" << file.str());