diff options
-rw-r--r-- | apt-pkg/contrib/cmndline.cc | 27 | ||||
-rw-r--r-- | apt-pkg/contrib/cmndline.h | 12 | ||||
-rw-r--r-- | apt-pkg/contrib/md5.h | 3 | ||||
-rw-r--r-- | apt-pkg/init.cc | 3 |
4 files changed, 39 insertions, 6 deletions
diff --git a/apt-pkg/contrib/cmndline.cc b/apt-pkg/contrib/cmndline.cc index 9546eac8f..858a5300a 100644 --- a/apt-pkg/contrib/cmndline.cc +++ b/apt-pkg/contrib/cmndline.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: cmndline.cc,v 1.5 1998/10/24 20:14:34 jgg Exp $ +// $Id: cmndline.cc,v 1.6 1998/11/25 23:54:22 jgg Exp $ /* ###################################################################### Command Line Class - Sophisticated command line parser @@ -302,7 +302,7 @@ bool CommandLine::HandleOpt(int &I,int argc,const char *argv[], return true; } /*}}}*/ -// CommandLine::FileSize - Count the number of filenames /*{{{*/ +// CommandLine::FileSize - Count the number of filenames /*{{{*/ // --------------------------------------------------------------------- /* */ unsigned int CommandLine::FileSize() const @@ -313,3 +313,26 @@ unsigned int CommandLine::FileSize() const return Count; } /*}}}*/ +// CommandLine::DispatchArg - Do something with the first arg /*{{{*/ +// --------------------------------------------------------------------- +/* */ +bool CommandLine::DispatchArg(Dispatch *Map) +{ + 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) + _error->Error("Invalid operation %s",FileList[0]); + return false; +} + /*}}}*/ diff --git a/apt-pkg/contrib/cmndline.h b/apt-pkg/contrib/cmndline.h index f502dfeb6..2e1e05229 100644 --- a/apt-pkg/contrib/cmndline.h +++ b/apt-pkg/contrib/cmndline.h @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: cmndline.h,v 1.3 1998/10/24 20:14:35 jgg Exp $ +// $Id: cmndline.h,v 1.4 1998/11/25 23:54:31 jgg Exp $ /* ###################################################################### Command Line Class - Sophisticated command line parser @@ -52,6 +52,7 @@ class CommandLine { public: struct Args; + struct Dispatch; protected: @@ -77,6 +78,7 @@ class CommandLine bool Parse(int argc,const char **argv); void ShowHelp(); unsigned int FileSize() const; + bool DispatchArg(Dispatch *List); CommandLine(Args *AList,Configuration *Conf); ~CommandLine(); @@ -92,5 +94,11 @@ struct CommandLine::Args inline bool end() {return ShortOpt == 0 && LongOpt == 0;}; inline bool IsBoolean() {return Flags == 0 || (Flags & (Boolean|InvBoolean)) != 0;}; }; - + +struct CommandLine::Dispatch +{ + const char *Match; + bool (*Handler)(CommandLine &); +}; + #endif diff --git a/apt-pkg/contrib/md5.h b/apt-pkg/contrib/md5.h index 43bad010a..84863f7c0 100644 --- a/apt-pkg/contrib/md5.h +++ b/apt-pkg/contrib/md5.h @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: md5.h,v 1.1 1998/10/31 05:19:59 jgg Exp $ +// $Id: md5.h,v 1.2 1998/11/25 23:54:45 jgg Exp $ /* ###################################################################### MD5SumValue - Storage for a MD5Sum @@ -56,6 +56,7 @@ class MD5Summation public: bool Add(const unsigned char *Data,unsigned long Size); + inline bool Add(const char *Data) {return Add((unsigned char *)Data,strlen(Data));}; bool AddFD(int Fd,unsigned long Size); inline bool Add(const unsigned char *Beg,const unsigned char *End) {return Add(Beg,End-Beg);}; diff --git a/apt-pkg/init.cc b/apt-pkg/init.cc index 3343e197f..29926b97a 100644 --- a/apt-pkg/init.cc +++ b/apt-pkg/init.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: init.cc,v 1.13 1998/11/22 03:20:32 jgg Exp $ +// $Id: init.cc,v 1.14 1998/11/25 23:54:06 jgg Exp $ /* ###################################################################### Init - Initialize the package library @@ -33,6 +33,7 @@ bool pkgInitialize(Configuration &Cnf) Cnf.Set("Dir::State::xstatus","xstatus"); Cnf.Set("Dir::State::userstatus","status.user"); Cnf.Set("Dir::State::status","/var/lib/dpkg/status"); + Cnf.Set("Dir::State::cdroms","cdroms.list"); // Cache Cnf.Set("Dir::Cache","/var/cache/apt/"); |