diff options
author | Arch Librarian <arch@canonical.com> | 2004-09-20 16:53:24 +0000 |
---|---|---|
committer | Arch Librarian <arch@canonical.com> | 2004-09-20 16:53:24 +0000 |
commit | 36375005d9e971d2fdfc62224671f009ce7adaf9 (patch) | |
tree | 4793d82c73be374f8f7a629237af2d73874fb468 /apt-pkg | |
parent | 36f610f18a9a12c02ba89c6bb84726f7ed3ba7ad (diff) |
working apt-get source
Author: jgg
Date: 1999-04-07 05:30:17 GMT
working apt-get source
Diffstat (limited to 'apt-pkg')
-rw-r--r-- | apt-pkg/acquire-item.cc | 91 | ||||
-rw-r--r-- | apt-pkg/acquire-item.h | 26 | ||||
-rw-r--r-- | apt-pkg/contrib/fileutl.h | 5 | ||||
-rw-r--r-- | apt-pkg/deb/debrecords.cc | 10 | ||||
-rw-r--r-- | apt-pkg/deb/debrecords.h | 3 | ||||
-rw-r--r-- | apt-pkg/deb/debsrcrecords.cc | 6 | ||||
-rw-r--r-- | apt-pkg/pkgrecords.h | 5 | ||||
-rw-r--r-- | apt-pkg/sourcelist.cc | 29 | ||||
-rw-r--r-- | apt-pkg/sourcelist.h | 5 | ||||
-rw-r--r-- | apt-pkg/srcrecords.cc | 4 | ||||
-rw-r--r-- | apt-pkg/srcrecords.h | 10 |
11 files changed, 147 insertions, 47 deletions
diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index 0b1d2a5ba..7e178c3b4 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: acquire-item.cc,v 1.26 1999/03/27 03:02:38 jgg Exp $ +// $Id: acquire-item.cc,v 1.27 1999/04/07 05:30:17 jgg Exp $ /* ###################################################################### Acquire Item - Item to acquire @@ -20,6 +20,7 @@ #include <apt-pkg/configuration.h> #include <apt-pkg/error.h> #include <apt-pkg/strutl.h> +#include <apt-pkg/fileutl.h> #include <sys/stat.h> #include <unistd.h> @@ -236,14 +237,6 @@ void pkgAcqIndex::Done(string Message,unsigned long Size,string MD5) Mode = "gzip"; } /*}}}*/ -// AcqIndex::Describe - Describe the Item /*{{{*/ -// --------------------------------------------------------------------- -/* */ -string pkgAcqIndex::Describe() -{ - return Location->PackagesURI(); -} - /*}}}*/ // AcqIndexRel::pkgAcqIndexRel - Constructor /*{{{*/ // --------------------------------------------------------------------- @@ -322,14 +315,6 @@ void pkgAcqIndexRel::Done(string Message,unsigned long Size,string MD5) Rename(DestFile,FinalFile); } /*}}}*/ -// AcqIndexRel::Describe - Describe the Item /*{{{*/ -// --------------------------------------------------------------------- -/* */ -string pkgAcqIndexRel::Describe() -{ - return Location->ReleaseURI(); -} - /*}}}*/ // AcqIndexRel::Failed - Silence failure messages for missing rel files /*{{{*/ // --------------------------------------------------------------------- /* */ @@ -526,14 +511,6 @@ void pkgAcqArchive::Done(string Message,unsigned long Size,string Md5Hash) Complete = true; } /*}}}*/ -// AcqArchive::Describe - Describe the Item /*{{{*/ -// --------------------------------------------------------------------- -/* */ -string pkgAcqArchive::Describe() -{ - return Desc.URI; -} - /*}}}*/ // AcqArchive::Failed - Failure handler /*{{{*/ // --------------------------------------------------------------------- /* Here we try other sources */ @@ -558,3 +535,67 @@ void pkgAcqArchive::Failed(string Message,pkgAcquire::MethodConfig *Cnf) } } /*}}}*/ + +// AcqFile::pkgAcqFile - Constructor /*{{{*/ +// --------------------------------------------------------------------- +/* The file is added to the queue */ +pkgAcqFile::pkgAcqFile(pkgAcquire *Owner,string URI,string MD5, + unsigned long Size,string Dsc,string ShortDesc) : + Item(Owner), MD5(MD5) +{ + DestFile = flNotDir(URI); + + // Create the item + Desc.URI = URI; + Desc.Description = Dsc; + Desc.Owner = this; + + // Set the short description to the archive component + Desc.ShortDesc = ShortDesc; + + // Get the transfer sizes + FileSize = Size; + struct stat Buf; + if (stat(DestFile.c_str(),&Buf) == 0) + { + // Hmm, the partial file is too big, erase it + if ((unsigned)Buf.st_size > Size) + unlink(DestFile.c_str()); + else + PartialSize = Buf.st_size; + } + + QueueURI(Desc); +} + /*}}}*/ +// AcqFile::Done - Item downloaded OK /*{{{*/ +// --------------------------------------------------------------------- +/* */ +void pkgAcqFile::Done(string Message,unsigned long Size,string MD5) +{ + Item::Done(Message,Size,MD5); + + string FileName = LookupTag(Message,"Filename"); + if (FileName.empty() == true) + { + Status = StatError; + ErrorText = "Method gave a blank filename"; + return; + } + + Complete = true; + + // The files timestamp matches + if (StringToBool(LookupTag(Message,"IMS-Hit"),false) == true) + return; + + // We have to copy it into place + if (FileName != DestFile) + { + Local = true; + Desc.URI = "copy:" + FileName; + QueueURI(Desc); + return; + } +} + /*}}}*/ diff --git a/apt-pkg/acquire-item.h b/apt-pkg/acquire-item.h index e5e7c701d..205537eae 100644 --- a/apt-pkg/acquire-item.h +++ b/apt-pkg/acquire-item.h @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: acquire-item.h,v 1.17 1999/03/27 03:02:38 jgg Exp $ +// $Id: acquire-item.h,v 1.18 1999/04/07 05:30:17 jgg Exp $ /* ###################################################################### Acquire Item - Item to acquire @@ -65,10 +65,10 @@ class pkgAcquire::Item virtual void Done(string Message,unsigned long Size,string Md5Hash); virtual void Start(string Message,unsigned long Size); virtual string Custom600Headers() {return string();}; + virtual string DescURI() = 0; // Inquire functions virtual string MD5Sum() {return string();}; - virtual string Describe() = 0; Item(pkgAcquire *Owner); virtual ~Item(); @@ -89,7 +89,7 @@ class pkgAcqIndex : public pkgAcquire::Item // Specialized action members virtual void Done(string Message,unsigned long Size,string Md5Hash); virtual string Custom600Headers(); - virtual string Describe(); + virtual string DescURI() {return Location->PackagesURI();}; pkgAcqIndex(pkgAcquire *Owner,const pkgSourceList::Item *Location); }; @@ -108,7 +108,7 @@ class pkgAcqIndexRel : public pkgAcquire::Item virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); virtual void Done(string Message,unsigned long Size,string Md5Hash); virtual string Custom600Headers(); - virtual string Describe(); + virtual string DescURI() {return Location->ReleaseURI();}; pkgAcqIndexRel(pkgAcquire *Owner,const pkgSourceList::Item *Location); }; @@ -136,12 +136,28 @@ class pkgAcqArchive : public pkgAcquire::Item // Specialized action members virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); virtual void Done(string Message,unsigned long Size,string Md5Hash); - virtual string Describe(); virtual string MD5Sum() {return MD5;}; + virtual string DescURI() {return Desc.URI;}; pkgAcqArchive(pkgAcquire *Owner,pkgSourceList *Sources, pkgRecords *Recs,pkgCache::VerIterator const &Version, string &StoreFilename); }; +// Fetch a generic file to the current directory +class pkgAcqFile : public pkgAcquire::Item +{ + pkgAcquire::ItemDesc Desc; + string MD5; + + public: + + // Specialized action members + virtual void Done(string Message,unsigned long Size,string Md5Hash); + virtual string DescURI() {return Desc.URI;}; + + pkgAcqFile(pkgAcquire *Owner,string URI,string MD5,unsigned long Size, + string Desc,string ShortDesc); +}; + #endif diff --git a/apt-pkg/contrib/fileutl.h b/apt-pkg/contrib/fileutl.h index 1bcb263c5..b0719bf3e 100644 --- a/apt-pkg/contrib/fileutl.h +++ b/apt-pkg/contrib/fileutl.h @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: fileutl.h,v 1.15 1999/03/15 08:10:39 jgg Exp $ +// $Id: fileutl.h,v 1.16 1999/04/07 05:30:18 jgg Exp $ /* ###################################################################### File Utilities @@ -49,6 +49,7 @@ class FileFd // Simple manipulators inline int Fd() {return iFd;}; + inline void Fd(int fd) {iFd = fd1;}; inline bool IsOpen() {return iFd >= 0;}; inline bool Failed() {return (Flags & Fail) == Fail;}; inline void EraseOnFailure() {Flags |= DelOnFail;}; @@ -56,7 +57,7 @@ class FileFd inline string &Name() {return FileName;}; FileFd(string FileName,OpenMode Mode,unsigned long Perms = 0666); - FileFd(int Fd) : iFd(Fd), Flags(AutoClose) {}; + FileFd(int Fd = -1) : iFd(Fd), Flags(AutoClose) {}; FileFd(int Fd,bool) : iFd(Fd), Flags(0) {}; virtual ~FileFd(); }; diff --git a/apt-pkg/deb/debrecords.cc b/apt-pkg/deb/debrecords.cc index a2005914d..f86287b11 100644 --- a/apt-pkg/deb/debrecords.cc +++ b/apt-pkg/deb/debrecords.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: debrecords.cc,v 1.6 1999/03/29 19:28:52 jgg Exp $ +// $Id: debrecords.cc,v 1.7 1999/04/07 05:30:18 jgg Exp $ /* ###################################################################### Debian Package Records - Parser for debian package records @@ -75,3 +75,11 @@ string debRecordParser::LongDesc() return Section.FindS("Description"); } /*}}}*/ +// debRecordParser::SourcePkg - Return the source package name if any /*{{{*/ +// --------------------------------------------------------------------- +/* */ +string debRecordParser::SourcePkg() +{ + return Section.FindS("Source"); +} + /*}}}*/ diff --git a/apt-pkg/deb/debrecords.h b/apt-pkg/deb/debrecords.h index b91d07092..9191ebcda 100644 --- a/apt-pkg/deb/debrecords.h +++ b/apt-pkg/deb/debrecords.h @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: debrecords.h,v 1.5 1999/03/29 19:28:52 jgg Exp $ +// $Id: debrecords.h,v 1.6 1999/04/07 05:30:18 jgg Exp $ /* ###################################################################### Debian Package Records - Parser for debian package records @@ -36,6 +36,7 @@ class debRecordParser : public pkgRecords::Parser // These refer to the archive file for the Version virtual string FileName(); virtual string MD5Hash(); + virtual string SourcePkg(); // These are some general stats about the package virtual string Maintainer(); diff --git a/apt-pkg/deb/debsrcrecords.cc b/apt-pkg/deb/debsrcrecords.cc index fa8407c51..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.2 1999/04/04 08:07:39 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 @@ -75,10 +75,10 @@ bool debSrcRecordParser::Files(vector<pkgSrcRecords::File> &List) return false; // Stash the / terminated directory prefix - string Base = Sect.FindS("Directory:"); + 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) diff --git a/apt-pkg/pkgrecords.h b/apt-pkg/pkgrecords.h index 9fc30acd2..b5205f1ac 100644 --- a/apt-pkg/pkgrecords.h +++ b/apt-pkg/pkgrecords.h @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: pkgrecords.h,v 1.3 1998/11/13 04:23:35 jgg Exp $ +// $Id: pkgrecords.h,v 1.4 1999/04/07 05:30:17 jgg Exp $ /* ###################################################################### Package Records - Allows access to complete package description records @@ -67,12 +67,13 @@ class pkgRecords::Parser // These refer to the archive file for the Version virtual string FileName() {return string();}; virtual string MD5Hash() {return string();}; + virtual string SourcePkg() {return string();}; // These are some general stats about the package virtual string Maintainer() {return string();}; virtual string ShortDesc() {return string();}; virtual string LongDesc() {return string();}; - + virtual ~Parser() {}; }; diff --git a/apt-pkg/sourcelist.cc b/apt-pkg/sourcelist.cc index bea2d91c8..c4f225fde 100644 --- a/apt-pkg/sourcelist.cc +++ b/apt-pkg/sourcelist.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: sourcelist.cc,v 1.12 1999/03/05 19:36:49 jgg Exp $ +// $Id: sourcelist.cc,v 1.13 1999/04/07 05:30:17 jgg Exp $ /* ###################################################################### List of Sources @@ -316,6 +316,33 @@ string pkgSourceList::Item::ArchiveURI(string File) const return Res; } /*}}}*/ +// SourceList::Item::SourceInfo - Returns an info line for a source /*{{{*/ +// --------------------------------------------------------------------- +/* */ +string pkgSourceList::Item::SourceInfo(string Pkg,string Ver,string Comp) const +{ + string Res; + switch (Type) + { + case DebSrc: + case Deb: + Res += SiteOnly(URI) + ' '; + if (Dist[Dist.size() - 1] == '/') + Res += Dist; + else + Res += Dist + '/' + Section; + + Res += " "; + Res += Pkg; + Res += " "; + Res += Ver; + if (Comp.empty() == false) + Res += " (" + Comp + ")"; + break; + }; + return Res; +} + /*}}}*/ // SourceList::Item::SiteOnly - Strip off the path part of a URI /*{{{*/ // --------------------------------------------------------------------- /* */ diff --git a/apt-pkg/sourcelist.h b/apt-pkg/sourcelist.h index bbf2dba4e..37accc5ab 100644 --- a/apt-pkg/sourcelist.h +++ b/apt-pkg/sourcelist.h @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: sourcelist.h,v 1.7 1999/03/02 18:35:24 jgg Exp $ +// $Id: sourcelist.h,v 1.8 1999/04/07 05:30:18 jgg Exp $ /* ###################################################################### SourceList - Manage a list of sources @@ -48,7 +48,8 @@ class pkgSourceList string PackagesURI() const; string PackagesInfo() const; string ReleaseURI() const; - string ReleaseInfo() const; + string ReleaseInfo() const; + string SourceInfo(string Pkg,string Ver,string Comp) const; string SiteOnly(string URI) const; string ArchiveInfo(pkgCache::VerIterator Ver) const; string ArchiveURI(string File) const; diff --git a/apt-pkg/srcrecords.cc b/apt-pkg/srcrecords.cc index 05be79a5a..23d3a5fc0 100644 --- a/apt-pkg/srcrecords.cc +++ b/apt-pkg/srcrecords.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: srcrecords.cc,v 1.1 1999/04/04 01:17:29 jgg Exp $ +// $Id: srcrecords.cc,v 1.2 1999/04/07 05:30:18 jgg Exp $ /* ###################################################################### Source Package Records - Allows access to source package records @@ -63,7 +63,7 @@ pkgSrcRecords::pkgSrcRecords(pkgSourceList &List) : Files(0), Current(0) return; } - Files[Count] = new debSrcRecordParser(FD); + Files[Count] = new debSrcRecordParser(FD,I); Count++; } diff --git a/apt-pkg/srcrecords.h b/apt-pkg/srcrecords.h index 253a3283e..c7ff17fc2 100644 --- a/apt-pkg/srcrecords.h +++ b/apt-pkg/srcrecords.h @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: srcrecords.h,v 1.2 1999/04/04 08:07:39 jgg Exp $ +// $Id: srcrecords.h,v 1.3 1999/04/07 05:30:18 jgg Exp $ /* ###################################################################### Source Package Records - Allows access to source package records @@ -36,9 +36,12 @@ class pkgSrcRecords class Parser { FileFd *File; - + pkgSourceList::const_iterator SrcItem; + public: + inline pkgSourceList::const_iterator Source() const {return SrcItem;}; + virtual bool Restart() = 0; virtual bool Step() = 0; virtual bool Jump(unsigned long Off) = 0; @@ -51,7 +54,8 @@ class pkgSrcRecords virtual const char **Binaries() = 0; virtual bool Files(vector<File> &F) = 0; - Parser(FileFd *File) : File(File) {}; + Parser(FileFd *File,pkgSourceList::const_iterator SrcItem) : File(File), + SrcItem(SrcItem) {}; virtual ~Parser() {delete File;}; }; |