Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(319)

Unified Diff: tools/flags/SkCommandLineFlags.cpp

Issue 12521019: SkFlags now follows proper dashing convention. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/flags/SkCommandLineFlags.cpp
diff --git a/tools/flags/SkCommandLineFlags.cpp b/tools/flags/SkCommandLineFlags.cpp
index 95811b906a894ba30cdd4c6bf23371eb5487ce1b..451daf7f6fa72b8038423f35929a57358b5b9a73 100644
--- a/tools/flags/SkCommandLineFlags.cpp
+++ b/tools/flags/SkCommandLineFlags.cpp
@@ -41,19 +41,25 @@ static bool parse_bool_arg(const char* string, bool* result) {
bool SkFlagInfo::match(const char* string) {
if (SkStrStartsWith(string, '-') && strlen(string) > 1) {
string++;
- // Allow one or two dashes
+ const SkString* compareName;
if (SkStrStartsWith(string, '-') && strlen(string) > 1) {
string++;
+ // There were two dashes. Compare against full name.
+ compareName = &fName;
+ } else {
+ // One dash. Compare against the short name.
+ compareName = &fShortName;
}
if (kBool_FlagType == fFlagType) {
// In this case, go ahead and set the value.
- if (fName.equals(string) || fShortName.equals(string)) {
+ if (compareName->equals(string)) {
*fBoolValue = true;
return true;
}
if (SkStrStartsWith(string, "no") && strlen(string) > 2) {
string += 2;
- if (fName.equals(string) || fShortName.equals(string)) {
+ // Only allow "no" to be prepended to the full name.
+ if (fName.equals(string)) {
*fBoolValue = false;
return true;
}
@@ -63,15 +69,17 @@ bool SkFlagInfo::match(const char* string) {
if (equalIndex > 0) {
// The string has an equal sign. Check to see if the string matches.
SkString flag(string, equalIndex);
- if (flag.equals(fName) || flag.equals(fShortName)) {
+ if (flag.equals(*compareName)) {
// Check to see if the remainder beyond the equal sign is true or false:
string += equalIndex + 1;
parse_bool_arg(string, fBoolValue);
return true;
+ } else {
+ return false;
}
}
}
- return fName.equals(string) || fShortName.equals(string);
+ return compareName->equals(string);
} else {
// Has no dash
return false;
@@ -143,8 +151,7 @@ void SkCommandLineFlags::Parse(int argc, char** argv) {
// Only allow calling this function once.
static bool gOnce;
if (gOnce) {
- SkDebugf("Parse should only be called once at the beginning"
- " of main!\n");
+ SkDebugf("Parse should only be called once at the beginning of main!\n");
SkASSERT(false);
return;
}
@@ -153,8 +160,7 @@ void SkCommandLineFlags::Parse(int argc, char** argv) {
bool helpPrinted = false;
// Loop over argv, starting with 1, since the first is just the name of the program.
for (int i = 1; i < argc; i++) {
- if (0 == strcmp("-h", argv[i]) || 0 == strcmp("--h", argv[i])
- || 0 == strcmp("-help", argv[i]) || 0 == strcmp("--help", argv[i])) {
+ if (0 == strcmp("-h", argv[i]) || 0 == strcmp("--help", argv[i])) {
// Print help message.
SkTDArray<const char*> helpFlags;
for (int j = i + 1; j < argc; j++) {

Powered by Google App Engine
This is Rietveld 408576698