X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/11e7af846822e893604052db7822de016fb97417..bebdca4bf63ae661c60bc1e0f4e03e6bbb7a7cc5:/apt-pkg/deb/debsrcrecords.cc diff --git a/apt-pkg/deb/debsrcrecords.cc b/apt-pkg/deb/debsrcrecords.cc index bfbb9e202..7a06e30b9 100644 --- a/apt-pkg/deb/debsrcrecords.cc +++ b/apt-pkg/deb/debsrcrecords.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: debsrcrecords.cc,v 1.1 1999/04/04 01:17:29 jgg Exp $ +// $Id: debsrcrecords.cc,v 1.3 1999/04/07 05:30:18 jgg Exp $ /* ###################################################################### Debian Source Package Records - Parser implementation for Debian style @@ -15,6 +15,7 @@ #include #include +#include /*}}}*/ // SrcRecordParser::Binaries - Return the binaries field /*{{{*/ @@ -61,3 +62,42 @@ const char **debSrcRecordParser::Binaries() return StaticBinList; } /*}}}*/ +// SrcRecordParser::Files - Return a list of files for this source /*{{{*/ +// --------------------------------------------------------------------- +/* This parses the list of files and returns it, each file is required to have + a complete source package */ +bool debSrcRecordParser::Files(vector &List) +{ + List.erase(List.begin(),List.end()); + + string Files = Sect.FindS("Files"); + if (Files.empty() == true) + return false; + + // Stash the / terminated directory prefix + string Base = Sect.FindS("Directory"); + if (Base.empty() == false && Base[Base.length()-1] != '/') + Base += '/'; + + // Iterate over the entire list grabbing each triplet + const char *C = Files.c_str(); + while (*C != 0) + { + pkgSrcRecords::File F; + string Size; + + // Parse each of the elements + if (ParseQuoteWord(C,F.MD5Hash) == false || + ParseQuoteWord(C,Size) == false || + ParseQuoteWord(C,F.Path) == false) + return _error->Error("Error parsing file record"); + + // Parse the size and append the directory + F.Size = atoi(Size.c_str()); + F.Path = Base + F.Path; + List.push_back(F); + } + + return true; +} + /*}}}*/