summaryrefslogtreecommitdiff
path: root/apt-private/private-cmndline.cc
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2015-11-29 13:12:38 +0100
committerDavid Kalnischkies <david@kalnischkies.de>2015-11-29 13:12:38 +0100
commit90986d4dbbd38e2e89f986d621e301304210452e (patch)
treecb7959bfc62be9765e55d2591f71a532f832a896 /apt-private/private-cmndline.cc
parent875a9e54ba956dace823866bca7935f6ab8e8d06 (diff)
use function pointers instead of weak symbols for cmdline parsing
Passing function pointers around while working on this was very icky, but if weak symbols are too much to ask for… Reverts "do not use "-Wl,-Bsymbolic-functions" during the build to avoid breakage" aka a5fc9be36211a290a7abc3ca2a8bf98943bc1f57.
Diffstat (limited to 'apt-private/private-cmndline.cc')
-rw-r--r--apt-private/private-cmndline.cc16
1 files changed, 7 insertions, 9 deletions
diff --git a/apt-private/private-cmndline.cc b/apt-private/private-cmndline.cc
index 9c5eae470..6cffbcb48 100644
--- a/apt-private/private-cmndline.cc
+++ b/apt-private/private-cmndline.cc
@@ -378,7 +378,8 @@ static void ShowHelpListCommands(std::vector<aptDispatchWithHelp> const &Cmds)/*
}
}
/*}}}*/
-static bool ShowCommonHelp(APT_CMD const Binary, CommandLine &CmdL, std::vector<aptDispatchWithHelp> const &Cmds)/*{{{*/
+static bool ShowCommonHelp(APT_CMD const Binary, CommandLine &CmdL, std::vector<aptDispatchWithHelp> const &Cmds,/*{{{*/
+ bool (*ShowHelp)(CommandLine &))
{
std::cout << PACKAGE << " " << PACKAGE_VERSION << " (" << COMMON_ARCH << ")" << std::endl;
if (_config->FindB("version") == true && Binary != APT_CMD::APT_GET)
@@ -442,7 +443,8 @@ static void BinarySpecificConfiguration(char const * const Binary) /*{{{*/
}
/*}}}*/
std::vector<CommandLine::Dispatch> ParseCommandLine(CommandLine &CmdL, APT_CMD const Binary,/*{{{*/
- Configuration * const * const Cnf, pkgSystem ** const Sys, int const argc, const char *argv[])
+ Configuration * const * const Cnf, pkgSystem ** const Sys, int const argc, const char *argv[],
+ bool (*ShowHelp)(CommandLine &), std::vector<aptDispatchWithHelp> (*GetCommands)(void))
{
if (Cnf != NULL && pkgInitConfig(**Cnf) == false)
{
@@ -477,7 +479,7 @@ std::vector<CommandLine::Dispatch> ParseCommandLine(CommandLine &CmdL, APT_CMD c
(Sys != NULL && pkgInitSystem(*_config, *Sys) == false))
{
if (_config->FindB("version") == true)
- ShowCommonHelp(Binary, CmdL, CmdsWithHelp);
+ ShowCommonHelp(Binary, CmdL, CmdsWithHelp, ShowHelp);
_error->DumpErrors();
exit(100);
@@ -487,12 +489,12 @@ std::vector<CommandLine::Dispatch> ParseCommandLine(CommandLine &CmdL, APT_CMD c
if (_config->FindB("help") == true || _config->FindB("version") == true ||
(CmdL.FileSize() > 0 && strcmp(CmdL.FileList[0], "help") == 0))
{
- ShowCommonHelp(Binary, CmdL, CmdsWithHelp);
+ ShowCommonHelp(Binary, CmdL, CmdsWithHelp, ShowHelp);
exit(0);
}
if (Cmds.empty() == false && CmdL.FileSize() == 0)
{
- ShowCommonHelp(Binary, CmdL, CmdsWithHelp);
+ ShowCommonHelp(Binary, CmdL, CmdsWithHelp, ShowHelp);
exit(1);
}
return Cmds;
@@ -514,7 +516,3 @@ unsigned short DispatchCommandLine(CommandLine &CmdL, std::vector<CommandLine::D
return Errors == true ? 100 : 0;
}
/*}}}*/
-
-// weak symbols
-bool ShowHelp(CommandLine &) { return false; }
-std::vector<aptDispatchWithHelp> GetCommands() { return {}; }