diff options
author | Michael Vogt <michael.vogt@ubuntu.com> | 2011-11-10 16:32:52 +0100 |
---|---|---|
committer | Michael Vogt <michael.vogt@ubuntu.com> | 2011-11-10 16:32:52 +0100 |
commit | 71ecaad29d8066a494f516efc5efd80860653fe2 (patch) | |
tree | b0769df88e2b6496f23e3d899aeb1c240a3488d9 /apt-pkg/contrib/cmndline.cc | |
parent | a865ed25fa54514224cf4d6f83dd9cf48b7ed02b (diff) | |
parent | 37adedc9d0b66eeae7efb88aebd08dfbc6e06f77 (diff) |
merged from http://bzr.debian.org/bzr/apt/apt/debian-experimental2
Diffstat (limited to 'apt-pkg/contrib/cmndline.cc')
-rw-r--r-- | apt-pkg/contrib/cmndline.cc | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/apt-pkg/contrib/cmndline.cc b/apt-pkg/contrib/cmndline.cc index 5a9944096..159f330a1 100644 --- a/apt-pkg/contrib/cmndline.cc +++ b/apt-pkg/contrib/cmndline.cc @@ -11,11 +11,14 @@ ##################################################################### */ /*}}}*/ // Include files /*{{{*/ +#include<config.h> + +#include <apt-pkg/configuration.h> #include <apt-pkg/cmndline.h> #include <apt-pkg/error.h> #include <apt-pkg/strutl.h> -#include <apti18n.h> +#include <apti18n.h> /*}}}*/ using namespace std; @@ -87,9 +90,8 @@ bool CommandLine::Parse(int argc,const char **argv) Opt++; // Match up to a = against the list - const char *OptEnd = Opt; Args *A; - for (; *OptEnd != 0 && *OptEnd != '='; OptEnd++); + const char *OptEnd = strchrnul(Opt, '='); for (A = ArgList; A->end() == false && stringcasecmp(Opt,OptEnd,A->LongOpt) != 0; A++); @@ -97,9 +99,8 @@ bool CommandLine::Parse(int argc,const char **argv) bool PreceedMatch = false; if (A->end() == true) { - for (; Opt != OptEnd && *Opt != '-'; Opt++); - - if (Opt == OptEnd) + Opt = (const char*) memchr(Opt, '-', OptEnd - Opt); + if (Opt == NULL) return _error->Error(_("Command line option %s is not understood"),argv[I]); Opt++; @@ -194,9 +195,8 @@ bool CommandLine::HandleOpt(int &I,int argc,const char *argv[], // Arbitrary item specification if ((A->Flags & ArbItem) == ArbItem) { - const char *J; - for (J = Argument; *J != 0 && *J != '='; J++); - if (*J == 0) + const char *J = strchr(Argument, '='); + if (J == NULL) return _error->Error(_("Option %s: Configuration item specification must have an =<val>."),argv[I]); // = is trailing @@ -212,8 +212,7 @@ bool CommandLine::HandleOpt(int &I,int argc,const char *argv[], return true; } - const char *I = A->ConfName; - for (; *I != 0 && *I != ' '; I++); + const char *I = strchrnul(A->ConfName, ' '); if (*I == ' ') Conf->Set(string(A->ConfName,0,I-A->ConfName),string(I+1) + Argument); else @@ -269,10 +268,9 @@ bool CommandLine::HandleOpt(int &I,int argc,const char *argv[], // Skip the leading dash const char *J = argv[I]; for (; *J != 0 && *J == '-'; J++); - - const char *JEnd = J; - for (; *JEnd != 0 && *JEnd != '-'; JEnd++); - if (*JEnd != 0) + + const char *JEnd = strchr(J, '-'); + if (JEnd != NULL) { strncpy(Buffer,J,JEnd - J); Buffer[JEnd - J] = 0; @@ -373,9 +371,8 @@ void CommandLine::SaveInConfig(unsigned int const &argc, char const * const * co { // That is possibly an option: Quote it if it includes spaces, // the benefit is that this will eliminate also most false positives - const char* c = &argv[i][j+1]; - for (; *c != '\0' && *c != ' '; ++c); - if (*c == '\0') continue; + const char* c = strchr(&argv[i][j+1], ' '); + if (c == NULL) continue; cmdline[++length] = '"'; closeQuote = true; } |