diff --git a/dune/common/parametertreeparser.cc b/dune/common/parametertreeparser.cc index afa0c1fb29b285266392eb4995a862efcd8b34a3..106d53af570e82317e21af92145bc47ad388e2f6 100644 --- a/dune/common/parametertreeparser.cc +++ b/dune/common/parametertreeparser.cc @@ -17,6 +17,8 @@ #include <map> #include <algorithm> +#include <dune/common/exceptions.hh> + std::string Dune::ParameterTreeParser::ltrim(const std::string& s) { std::size_t firstNonWS = s.find_first_not_of(" \t\n\r"); @@ -137,27 +139,17 @@ void Dune::ParameterTreeParser::readINITree(std::istream& in, void Dune::ParameterTreeParser::readOptions(int argc, char* argv [], ParameterTree& pt) { - std::string v = ""; - std::string k = ""; - for(int i=1; i<argc; i++) { - std::string s(argv[i]); - if ((argv[i][0]=='-') && (argv[i][1]!='\000')) { - k = argv[i]+1; - continue; - } - else - { - if (k.size()) - pt[k] = argv[i]; - k.clear(); + if(argv[i+1] == NULL) + DUNE_THROW(RangeError, "last option on command line (" << argv[i] + << ") does not have an argument"); + pt[argv[i]+1] = argv[i+1]; + ++i; // skip over option argument } - } - } void Dune::ParameterTreeParser::readNamedOptions(int argc, char* argv[],