- int CurLine = 0;
- while (F.eof() == false)
- {
- F.getline(Buffer,sizeof(Buffer));
- CurLine++;
- _strtabexpand(Buffer,sizeof(Buffer));
- _strstrip(Buffer);
-
- // Comment or blank
- if (Buffer[0] == '#' || Buffer[0] == 0)
- continue;
-
- // Grok it
- string Type;
- string URI;
- Item Itm;
- char *C = Buffer;
- if (ParseQuoteWord(C,Type) == false)
- return _error->Error("Malformed line %u in source list %s (type)",CurLine,File.c_str());
- if (ParseQuoteWord(C,URI) == false)
- return _error->Error("Malformed line %u in source list %s (URI)",CurLine,File.c_str());
- if (ParseQuoteWord(C,Itm.Dist) == false)
- return _error->Error("Malformed line %u in source list %s (dist)",CurLine,File.c_str());
- if (Itm.SetType(Type) == false)
- return _error->Error("Malformed line %u in source list %s (type parse)",CurLine,File.c_str());
- if (Itm.SetURI(URI) == false)
- return _error->Error("Malformed line %u in source list %s (URI parse)",CurLine,File.c_str());
-
- // Check for an absolute dists specification.
- if (Itm.Dist.empty() == false && Itm.Dist[Itm.Dist.size() - 1] == '/')
+ string Enabled = Tags.FindS("Enabled");
+ if (Enabled.empty() == false && StringToBool(Enabled) == false)
+ return true;
+
+ std::map<char const * const, std::pair<char const * const, bool> > mapping;
+#define APT_PLUSMINUS(X, Y) \
+ mapping.insert(std::make_pair(X, std::make_pair(Y, true))); \
+ mapping.insert(std::make_pair(X "Add", std::make_pair(Y "+", true))); \
+ mapping.insert(std::make_pair(X "Remove", std::make_pair(Y "-", true)))
+ APT_PLUSMINUS("Architectures", "arch");
+ APT_PLUSMINUS("Languages", "lang");
+ APT_PLUSMINUS("Targets", "target");
+#undef APT_PLUSMINUS
+ mapping.insert(std::make_pair("Trusted", std::make_pair("trusted", false)));
+ mapping.insert(std::make_pair("Check-Valid-Until", std::make_pair("check-valid-until", false)));
+ mapping.insert(std::make_pair("Valid-Until-Min", std::make_pair("valid-until-min", false)));
+ mapping.insert(std::make_pair("Valid-Until-Max", std::make_pair("valid-until-max", false)));
+ mapping.insert(std::make_pair("Signed-By", std::make_pair("signed-by", false)));
+ mapping.insert(std::make_pair("PDiffs", std::make_pair("pdiffs", false)));
+ mapping.insert(std::make_pair("By-Hash", std::make_pair("by-hash", false)));
+
+ for (std::map<char const * const, std::pair<char const * const, bool> >::const_iterator m = mapping.begin(); m != mapping.end(); ++m)
+ if (Tags.Exists(m->first))