summaryrefslogtreecommitdiff
path: root/apt-pkg/contrib
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2015-10-26 11:42:32 +0100
committerDavid Kalnischkies <david@kalnischkies.de>2015-11-04 18:04:04 +0100
commit6079b276a959086ff18302cab752b6d7cfe5ad9f (patch)
tree151f75397170a05635202a604dd45d1fb9be85ca /apt-pkg/contrib
parent011188e3920f21e6883c2dab956b3d4fb4e8cbfa (diff)
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
Diffstat (limited to 'apt-pkg/contrib')
-rw-r--r--apt-pkg/contrib/cmndline.cc61
-rw-r--r--apt-pkg/contrib/cmndline.h12
2 files changed, 5 insertions, 68 deletions
diff --git a/apt-pkg/contrib/cmndline.cc b/apt-pkg/contrib/cmndline.cc
index d299bbbdf..eb48d1d75 100644
--- a/apt-pkg/contrib/cmndline.cc
+++ b/apt-pkg/contrib/cmndline.cc
@@ -84,43 +84,6 @@ char const * CommandLine::GetCommand(Dispatch const * const Map,
}
return NULL;
}
-char const * CommandLine::GetCommand(DispatchWithHelp const * const Map,
- unsigned int const argc, char const * const * const argv)
-{
- // if there is a -- on the line there must be the word we search for either
- // before it (as -- marks the end of the options) or right after it (as we can't
- // decide if the command is actually an option, given that in theory, you could
- // have parameters named like commands)
- for (size_t i = 1; i < argc; ++i)
- {
- if (strcmp(argv[i], "--") != 0)
- continue;
- // check if command is before --
- for (size_t k = 1; k < i; ++k)
- for (size_t j = 0; Map[j].Match != NULL; ++j)
- if (strcmp(argv[k], Map[j].Match) == 0)
- return Map[j].Match;
- // see if the next token after -- is the command
- ++i;
- if (i < argc)
- for (size_t j = 0; Map[j].Match != NULL; ++j)
- if (strcmp(argv[i], Map[j].Match) == 0)
- return Map[j].Match;
- // we found a --, but not a command
- return NULL;
- }
- // no --, so search for the first word matching a command
- // FIXME: How like is it that an option parameter will be also a valid Match ?
- for (size_t i = 1; i < argc; ++i)
- {
- if (*(argv[i]) == '-')
- continue;
- for (size_t j = 0; Map[j].Match != NULL; ++j)
- if (strcmp(argv[i], Map[j].Match) == 0)
- return Map[j].Match;
- }
- return NULL;
-}
/*}}}*/
// CommandLine::Parse - Main action member /*{{{*/
// ---------------------------------------------------------------------
@@ -411,7 +374,7 @@ unsigned int CommandLine::FileSize() const
}
/*}}}*/
// CommandLine::DispatchArg - Do something with the first arg /*{{{*/
-bool CommandLine::DispatchArg(DispatchWithHelp const * const Map,bool NoMatch)
+bool CommandLine::DispatchArg(Dispatch const * const Map,bool NoMatch)
{
int I;
for (I = 0; Map[I].Match != 0; I++)
@@ -436,26 +399,8 @@ bool CommandLine::DispatchArg(DispatchWithHelp const * const Map,bool NoMatch)
}
bool CommandLine::DispatchArg(Dispatch *Map,bool NoMatch)
{
- int I;
- for (I = 0; Map[I].Match != 0; I++)
- {
- if (strcmp(FileList[0],Map[I].Match) == 0)
- {
- bool Res = Map[I].Handler(*this);
- if (Res == false && _error->PendingError() == false)
- _error->Error("Handler silently failed");
- return Res;
- }
- }
-
- // No matching name
- if (Map[I].Match == 0)
- {
- if (NoMatch == true)
- _error->Error(_("Invalid operation %s"),FileList[0]);
- }
-
- return false;
+ Dispatch const * const Map2 = Map;
+ return DispatchArg(Map2, NoMatch);
}
/*}}}*/
// CommandLine::SaveInConfig - for output later in a logfile or so /*{{{*/
diff --git a/apt-pkg/contrib/cmndline.h b/apt-pkg/contrib/cmndline.h
index 33d9f9f3a..805cb9eae 100644
--- a/apt-pkg/contrib/cmndline.h
+++ b/apt-pkg/contrib/cmndline.h
@@ -84,14 +84,12 @@ class CommandLine
bool Parse(int argc,const char **argv);
void ShowHelp();
unsigned int FileSize() const APT_PURE;
+ // FIXME: merge on next ABI break
bool DispatchArg(Dispatch *List,bool NoMatch = true);
- bool DispatchArg(DispatchWithHelp const * const List,bool NoMatch = true);
+ bool DispatchArg(Dispatch const * const List,bool NoMatch = true);
static char const * GetCommand(Dispatch const * const Map,
unsigned int const argc, char const * const * const argv) APT_PURE;
- static char const * GetCommand(DispatchWithHelp const * const Map,
- unsigned int const argc, char const * const * const argv) APT_PURE;
-
static CommandLine::Args MakeArgs(char ShortOpt, char const *LongOpt,
char const *ConfName, unsigned long Flags) APT_CONST;
@@ -117,11 +115,5 @@ struct CommandLine::Dispatch
const char *Match;
bool (*Handler)(CommandLine &);
};
-struct CommandLine::DispatchWithHelp
-{
- const char *Match;
- bool (*Handler)(CommandLine &);
- const char *Help;
-};
#endif