summaryrefslogtreecommitdiff
path: root/src/OptionParser.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-11-11 01:59:23 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-11-11 01:59:23 +0900
commit35a3f41346150e4ca378f3b488dca0af729bad96 (patch)
tree7f256d62f8fd55c62a276be0a1f9387e1c025e62 /src/OptionParser.cc
parent787bfd75dabaec2ff269cc0c1661046679ad91fe (diff)
Made Pref::k_, OptionHandler::getName() and getDescription() const char*.
Diffstat (limited to 'src/OptionParser.cc')
-rw-r--r--src/OptionParser.cc16
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;