From 5e449b43ed31a518e13b21363ae3ba1994ce1cd7 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 19 Jun 2019 23:37:40 +0200 Subject: [PATCH] Initialize Command::_name (cherry picked from commit d0a769cb061a13ad880c76e5ea69a76150439853) --- src/libutil/args.cc | 2 ++ src/libutil/args.hh | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/libutil/args.cc b/src/libutil/args.cc index 217495c26..ba15ea571 100644 --- a/src/libutil/args.cc +++ b/src/libutil/args.cc @@ -224,6 +224,7 @@ MultiCommand::MultiCommand(const Commands & commands) if (i == commands.end()) throw UsageError("'%s' is not a recognised command", ss[0]); command = i->second(); + command->_name = ss[0]; }}); } @@ -246,6 +247,7 @@ void MultiCommand::printHelp(const string & programName, std::ostream & out) Table2 table; for (auto & i : commands) { auto command = i.second(); + command->_name = i.first; auto descr = command->description(); if (!descr.empty()) table.push_back(std::make_pair(command->name(), descr)); diff --git a/src/libutil/args.hh b/src/libutil/args.hh index 54336b17b..967efbe1c 100644 --- a/src/libutil/args.hh +++ b/src/libutil/args.hh @@ -195,6 +195,8 @@ struct Command : virtual Args private: std::string _name; + friend class MultiCommand; + public: virtual ~Command() { }