From 6079b276a959086ff18302cab752b6d7cfe5ad9f Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 26 Oct 2015 11:42:32 +0100 Subject: move apts cmdline helper type into -private Its not as simple as I initially thought to abstract this enough to make it globally usable, so lets not pollute global namespace with this for now. Git-Dch: Ignore --- apt-private/private-cmndline.cc | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'apt-private/private-cmndline.cc') diff --git a/apt-private/private-cmndline.cc b/apt-private/private-cmndline.cc index c99a0afe0..d80168fda 100644 --- a/apt-private/private-cmndline.cc +++ b/apt-private/private-cmndline.cc @@ -383,7 +383,7 @@ static void BinarySpecificConfiguration(char const * const Binary) /*{{{*/ _config->MoveSubTree(conf.c_str(), NULL); } /*}}}*/ -std::vector ParseCommandLine(CommandLine &CmdL, APT_CMD const Binary,/*{{{*/ +std::vector ParseCommandLine(CommandLine &CmdL, APT_CMD const Binary,/*{{{*/ Configuration * const * const Cnf, pkgSystem ** const Sys, int const argc, const char *argv[]) { if (Cnf != NULL && pkgInitConfig(**Cnf) == false) @@ -395,7 +395,11 @@ std::vector ParseCommandLine(CommandLine &CmdL, A if (likely(argc != 0 && argv[0] != NULL)) BinarySpecificConfiguration(argv[0]); - std::vector const Cmds = GetCommands(); + std::vector const CmdsWithHelp = GetCommands(); + std::vector Cmds; + for (auto const& cmd : CmdsWithHelp) + Cmds.push_back({cmd.Match, cmd.Handler}); + // Args running out of scope invalidates the pointer stored in CmdL, // but we don't use the pointer after this function, so we ignore // this problem for now and figure something out if we have to. @@ -410,7 +414,7 @@ std::vector ParseCommandLine(CommandLine &CmdL, A (Sys != NULL && pkgInitSystem(*_config, *Sys) == false)) { if (_config->FindB("version") == true) - ShowHelp(CmdL, Cmds.data()); + ShowHelp(CmdL, CmdsWithHelp.data()); _error->DumpErrors(); exit(100); @@ -420,18 +424,18 @@ std::vector ParseCommandLine(CommandLine &CmdL, A if (_config->FindB("help") == true || _config->FindB("version") == true || (CmdL.FileSize() > 0 && strcmp(CmdL.FileList[0], "help") == 0)) { - ShowHelp(CmdL, Cmds.data()); + ShowHelp(CmdL, CmdsWithHelp.data()); exit(0); } if (Cmds.empty() == false && CmdL.FileSize() == 0) { - ShowHelp(CmdL, Cmds.data()); + ShowHelp(CmdL, CmdsWithHelp.data()); exit(1); } return Cmds; } /*}}}*/ -unsigned short DispatchCommandLine(CommandLine &CmdL, std::vector const &Cmds) /*{{{*/ +unsigned short DispatchCommandLine(CommandLine &CmdL, std::vector const &Cmds) /*{{{*/ { // Match the operation bool const returned = Cmds.empty() ? true : CmdL.DispatchArg(Cmds.data()); -- cgit v1.2.3