3
#include "cmdline_parse.h"
5
#include <apt-pkg/error.h>
9
void parse_cmdline(vector<arg_parser *> parsers, int argc, char *argv[])
11
// Assumes that argv[0] is useless (ie, the command name)
18
for(int i=0; i<parsers.size() && !done; ++i)
19
done=parsers[i].parse_arg(argc, argv);
22
_error->Error("Invalid command-line option '%s'", argv[argc]);
24
if(_error->PendingError())
29
class dashopt_parser:public arg_parser
33
sigc::slot0<void> callback;
36
bool parse_arg(int argc, char *argv[], int &loc)
42
if(longopt && !strcmp(argv[loc]+2, longopt))
50
else if(shortopt && argv[loc][1]==shortopt && argv[loc][2]='\0')
63
class dashopt_witharg_parser:public arg_parser
67
sigc::slot1<void, std::string> callback;
70
bool parse_arg(int argc, char *argv[], int &loc)
76
if(longopt && !strcmp(argv[loc]+2, longopt))
84
else if(shortopt && argv[loc][1]==shortopt && argv[loc][2]='\0')