[tor-commits] [vidalia/master] Vidalia: Improved Parameter Handling (#2965)
chiiph at torproject.org
chiiph at torproject.org
Sat Jun 11 15:21:35 UTC 2011
commit d532d66ed34a837b0f3950f5a7a2bc889b08a0ce
Author: Jason Klein <trac.torproject.org at my.jrklein.com>
Date: Wed Apr 20 16:55:29 2011 -0500
Vidalia: Improved Parameter Handling (#2965)
Vidalia ignores parameters and values that are separated by an equal sign.
(ie: Vidalia --datadir=data --logfile=log)
Attached patch updates parseArguments() to support keys and values
separated by equal sign.
Vidalia does not reject parameters that should include a value.
(ie: Vidalia --datadir --logfile)
Attached patch calls argNeedsValue() from validateArguments() to determine
if value is required. Vidalia notifies user if required parameter value is
missing.
NOTE: validateArguments() was static, so could not call argNeedsValue().
No longer static. If function needs to be static, could pass an instance
of Vidalia as a function parameter instead.
---
src/vidalia/Vidalia.cpp | 16 ++++++++++++++++
src/vidalia/Vidalia.h | 2 +-
2 files changed, 17 insertions(+), 1 deletions(-)
diff --git a/src/vidalia/Vidalia.cpp b/src/vidalia/Vidalia.cpp
index c763fac..53b41c9 100644
--- a/src/vidalia/Vidalia.cpp
+++ b/src/vidalia/Vidalia.cpp
@@ -252,6 +252,12 @@ Vidalia::parseArguments(QStringList args)
if (arg.startsWith("-")) {
arg = arg.mid((arg.startsWith("--") ? 2 : 1));
}
+ /* Argument names do not include equal sign. Assume value follows. */
+ if (arg.indexOf("=") > -1) {
+ value = arg.right(arg.length() - (arg.indexOf("=")+1));
+ arg = arg.left(arg.indexOf("="));
+ }
+ else
/* Check if it takes a value and there is one on the command-line */
if (i < args.size()-1 && argNeedsValue(arg)) {
value = args.at(++i);
@@ -265,6 +271,16 @@ Vidalia::parseArguments(QStringList args)
bool
Vidalia::validateArguments(QString &errmsg)
{
+ /* Check for missing parameter values */
+ QMapIterator<QString, QString> _i(_args);
+ QString tmp;
+ while(_i.hasNext()) {
+ _i.next();
+ if(argNeedsValue(_i.key()) && (_i.value() == "")) {
+ errmsg = tr("Value required for parameter :") + _i.key();
+ return false;
+ }
+ }
/* Check for a language that Vidalia recognizes. */
if (_args.contains(ARG_LANGUAGE) &&
!LanguageSupport::isValidLanguageCode(_args.value(ARG_LANGUAGE))) {
diff --git a/src/vidalia/Vidalia.h b/src/vidalia/Vidalia.h
index 421ae68..b7d09f4 100644
--- a/src/vidalia/Vidalia.h
+++ b/src/vidalia/Vidalia.h
@@ -54,7 +54,7 @@ public:
~Vidalia();
/** Validates that all arguments were well-formed. */
- static bool validateArguments(QString &errmsg);
+ bool validateArguments(QString &errmsg);
/** Displays usage information for command-line args. */
static void showUsageMessageBox();
/** Returns true if the user wants to see usage information. */
More information about the tor-commits
mailing list