diff options
author | David Kalnischkies <david@kalnischkies.de> | 2015-11-29 13:12:38 +0100 |
---|---|---|
committer | David Kalnischkies <david@kalnischkies.de> | 2015-11-29 13:12:38 +0100 |
commit | 90986d4dbbd38e2e89f986d621e301304210452e (patch) | |
tree | cb7959bfc62be9765e55d2591f71a532f832a896 /apt-private/private-cmndline.cc | |
parent | 875a9e54ba956dace823866bca7935f6ab8e8d06 (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.cc | 16 |
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 {}; } |