diff options
author | Thiago Macieira <thiago@cassini.local.lan> | 2007-12-24 11:11:41 -0200 |
---|---|---|
committer | Thiago Macieira <thiago@cassini.local.lan> | 2007-12-24 11:11:41 -0200 |
commit | b0fb9f085e51abc93f2069645ee33aeed0b6b093 (patch) | |
tree | 9a825c5796978c1e4120e2e4c91e935c01986aa6 | |
parent | 1228bd7c87f4e203883086d6884280653a8d1777 (diff) | |
download | svn2git-b0fb9f085e51abc93f2069645ee33aeed0b6b093.tar svn2git-b0fb9f085e51abc93f2069645ee33aeed0b6b093.tar.gz svn2git-b0fb9f085e51abc93f2069645ee33aeed0b6b093.tar.bz2 svn2git-b0fb9f085e51abc93f2069645ee33aeed0b6b093.tar.xz svn2git-b0fb9f085e51abc93f2069645ee33aeed0b6b093.zip |
fix the option parsing
-rw-r--r-- | src/options.cpp | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/src/options.cpp b/src/options.cpp index 69ae719..aeff12a 100644 --- a/src/options.cpp +++ b/src/options.cpp @@ -44,9 +44,8 @@ void Options::parseArguments(const QStringList &argumentList) QSet<QString> validOptions; validOptions << "help"; - QHash<QString, QString> optionsWithComplement; - optionsWithComplement.insert("resume-from", QString()); - optionsWithComplement.insert("identity-map", QString()); + QSet<QString> validOptionsWithComplement; + validOptionsWithComplement << "resume-from" << "identity-map"; QStringList arguments = argumentList; arguments.takeFirst(); // the first one is the executable name; drop it @@ -65,6 +64,7 @@ void Options::parseArguments(const QStringList &argumentList) arg = arg.mid(4); } else if (!arg.startsWith("-")) { // non-option arg + arguments.prepend(arg); break; } else { // starts with "-" arg = arg.mid(1); @@ -76,39 +76,38 @@ void Options::parseArguments(const QStringList &argumentList) arg.truncate(pos); } - if (optionsWithComplement.contains(arg)) { + if (validOptionsWithComplement.contains(arg)) { if (arguments.isEmpty()) { - fprintf(stderr, "Option -%s requires an argument", qPrintable(arg)); + fprintf(stderr, "Option -%s requires an argument\n", qPrintable(arg)); exit(2); } - QString &setting = optionsWithComplement[arg]; - if (!setting.isNull()) { - fprintf(stderr, "Option -%s given more than once", qPrintable(arg)); + if (options.contains(arg)) { + fprintf(stderr, "Option -%s given more than once\n", qPrintable(arg)); exit(2); } if (!complement.isEmpty()) - setting = complement; + options[arg] = complement; else if (!arguments.isEmpty()) - setting = arguments.takeFirst(); + options[arg] = arguments.takeFirst(); else { - fprintf(stderr, "Option -%s requires an argument", qPrintable(arg)); + fprintf(stderr, "Option -%s requires an argument\n", qPrintable(arg)); exit(2); } continue; } else if (validOptions.contains(arg)) { if (switches.contains(arg)) { - fprintf(stderr, "Option -%s given more than once", qPrintable(arg)); + fprintf(stderr, "Option -%s given more than once\n", qPrintable(arg)); exit(2); } switches[arg] = !(complement == "no"); } else { if (complement == "no") - fprintf(stderr, "Invalid option: -no-%s", qPrintable(arg)); + fprintf(stderr, "Invalid option: -no-%s\n", qPrintable(arg)); else - fprintf(stderr, "Invalid option: -%s", qPrintable(arg)); + fprintf(stderr, "Invalid option: -%s\n", qPrintable(arg)); exit(2); } } |