aboutsummaryrefslogtreecommitdiffstats
path: root/src/options.cpp
diff options
context:
space:
mode:
authorThiago Macieira <thiago@cassini.local.lan>2007-12-24 11:11:41 -0200
committerThiago Macieira <thiago@cassini.local.lan>2007-12-24 11:11:41 -0200
commitb0fb9f085e51abc93f2069645ee33aeed0b6b093 (patch)
tree9a825c5796978c1e4120e2e4c91e935c01986aa6 /src/options.cpp
parent1228bd7c87f4e203883086d6884280653a8d1777 (diff)
downloadsvn2git-b0fb9f085e51abc93f2069645ee33aeed0b6b093.tar
svn2git-b0fb9f085e51abc93f2069645ee33aeed0b6b093.tar.gz
svn2git-b0fb9f085e51abc93f2069645ee33aeed0b6b093.tar.bz2
svn2git-b0fb9f085e51abc93f2069645ee33aeed0b6b093.tar.xz
svn2git-b0fb9f085e51abc93f2069645ee33aeed0b6b093.zip
fix the option parsing
Diffstat (limited to 'src/options.cpp')
-rw-r--r--src/options.cpp27
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);
}
}