summaryrefslogtreecommitdiff
path: root/src/OptionParser.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-04-22 23:38:59 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-04-22 23:38:59 +0900
commit2c0476e6d9033cdf58b9899b165bbddd974e88db (patch)
tree1476e6d5af13b4e90010a6011f5214273d248155 /src/OptionParser.cc
parent211c4ea9f45db6482f76ccc9945ee19fc78f7e9d (diff)
Erase user and password specified in command-line from argv.
The user and password is masked with '*'.
Diffstat (limited to 'src/OptionParser.cc')
-rw-r--r--src/OptionParser.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/OptionParser.cc b/src/OptionParser.cc
index 15e49fa7..c2a00eeb 100644
--- a/src/OptionParser.cc
+++ b/src/OptionParser.cc
@@ -138,7 +138,7 @@ std::string createOptstring(InputIterator first, InputIterator last)
void OptionParser::parseArg
(std::ostream& out, std::vector<std::string>& nonopts,
- int argc, char* const argv[])
+ int argc, char* argv[])
{
size_t numPublicOption = countPublicOption(optionHandlers_.begin(),
optionHandlers_.end());
@@ -165,6 +165,11 @@ void OptionParser::parseArg
out << op->getName() << "=";
if(optarg) {
out << optarg;
+ if(op->getEraseAfterParse()) {
+ for(char* p = optarg; *p != '\0'; ++p) {
+ *p = '*';
+ }
+ }
}
out << "\n";
}