diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2011-11-11 01:59:23 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2011-11-11 01:59:23 +0900 |
| commit | 35a3f41346150e4ca378f3b488dca0af729bad96 (patch) | |
| tree | 7f256d62f8fd55c62a276be0a1f9387e1c025e62 /src/OptionParser.cc | |
| parent | 787bfd75dabaec2ff269cc0c1661046679ad91fe (diff) | |
Made Pref::k_, OptionHandler::getName() and getDescription() const char*.
Diffstat (limited to 'src/OptionParser.cc')
| -rw-r--r-- | src/OptionParser.cc | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/OptionParser.cc b/src/OptionParser.cc index a1e4090d..2c2709a7 100644 --- a/src/OptionParser.cc +++ b/src/OptionParser.cc @@ -83,9 +83,9 @@ void putOptions(struct option* longOpts, int* plopt, for(; first != last; ++first) { if(*first && !(*first)->isHidden()) { #ifdef HAVE_OPTION_CONST_NAME - (*longOpts).name = (*first)->getName().c_str(); + (*longOpts).name = (*first)->getName(); #else // !HAVE_OPTION_CONST_NAME - (*longOpts).name = strdup((*first)->getName().c_str()); + (*longOpts).name = strdup((*first)->getName()); #endif // !HAVE_OPTION_CONST_NAME switch((*first)->getArgType()) { case OptionHandler::REQ_ARG: @@ -146,7 +146,7 @@ void OptionParser::parseArg handlers_.end()); int lopt; array_ptr<struct option> longOpts(new struct option[numPublicOption+1]); - putOptions(longOpts, &lopt,handlers_.begin(),handlers_.end()); + putOptions(longOpts, &lopt, handlers_.begin(), handlers_.end()); std::string optstring = createOptstring(handlers_.begin(), handlers_.end()); while(1) { int c = getopt_long(argc, argv, optstring.c_str(), longOpts, 0); @@ -245,9 +245,13 @@ OptionParser::findByNameSubstring(const std::string& substring) const std::vector<SharedHandle<OptionHandler> > result; for(std::vector<SharedHandle<OptionHandler> >::const_iterator i = handlers_.begin(), eoi = handlers_.end(); i != eoi; ++i) { - if(*i && !(*i)->isHidden() && - (*i)->getName().find(substring) != std::string::npos) { - result.push_back(*i); + if(*i && !(*i)->isHidden()) { + size_t nameLen = strlen((*i)->getName()); + if(std::search((*i)->getName(), (*i)->getName()+nameLen, + substring.begin(), substring.end()) != + (*i)->getName()+nameLen) { + result.push_back(*i); + } } } return result; |
