diff options
author | Arch Librarian <arch@canonical.com> | 2004-09-20 16:51:25 +0000 |
---|---|---|
committer | Arch Librarian <arch@canonical.com> | 2004-09-20 16:51:25 +0000 |
commit | 7a7fa5f07e59bd17415cb0321d1f98527c2cfea4 (patch) | |
tree | 4bbfc0b595b988d83e7fd69e9e413843689ffb2d | |
parent | 031aa37554d04be406588fb67807124b7f35d4c4 (diff) |
apt-get update works now
Author: jgg
Date: 1998-11-12 04:10:52 GMT
apt-get update works now
-rw-r--r-- | apt-pkg/acquire-item.cc | 11 | ||||
-rw-r--r-- | apt-pkg/acquire.cc | 46 | ||||
-rw-r--r-- | apt-pkg/acquire.h | 5 | ||||
-rw-r--r-- | cmdline/apt-get.cc | 7 |
4 files changed, 60 insertions, 9 deletions
diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index d1233e887..7cd43f4e6 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.9 1998/11/11 06:54:13 jgg Exp $ +// $Id: acquire-item.cc,v 1.10 1998/11/12 04:10:52 jgg Exp $ /* ###################################################################### Acquire Item - Item to acquire @@ -168,13 +168,14 @@ void pkgAcqIndex::Done(string Message,unsigned long Size,string MD5) FinalFile += URItoFileName(Location->PackagesURI()); Rename(DestFile,FinalFile); + /* We restore the original name to DestFile so that the clean operation + will work OK */ + DestFile = _config->FindDir("Dir::State::lists") + "partial/"; + DestFile += URItoFileName(Location->PackagesURI()); + // Remove the compressed version. if (Erase == true) - { - DestFile = _config->FindDir("Dir::State::lists") + "partial/"; - DestFile += URItoFileName(Location->PackagesURI()); unlink(DestFile.c_str()); - } return; } diff --git a/apt-pkg/acquire.cc b/apt-pkg/acquire.cc index 3e22268a7..972a466c5 100644 --- a/apt-pkg/acquire.cc +++ b/apt-pkg/acquire.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: acquire.cc,v 1.13 1998/11/11 23:45:08 jgg Exp $ +// $Id: acquire.cc,v 1.14 1998/11/12 04:10:54 jgg Exp $ /* ###################################################################### Acquire - File Acquiration @@ -23,6 +23,7 @@ #include <apt-pkg/error.h> #include <strutl.h> +#include <dirent.h> #include <sys/time.h> /*}}}*/ @@ -343,7 +344,48 @@ pkgAcquire::Worker *pkgAcquire::WorkerStep(Worker *I) return I->NextAcquire; }; /*}}}*/ - +// pkgAcquire::Clean - Cleans a directory /*{{{*/ +// --------------------------------------------------------------------- +/* This is a bit simplistic, it looks at every file in the dir and sees + if it is part of the download set. */ +bool pkgAcquire::Clean(string Dir) +{ + DIR *D = opendir(Dir.c_str()); + if (D == 0) + return _error->Errno("opendir","Unable to read %s",Dir.c_str()); + + string StartDir = SafeGetCWD(); + if (chdir(Dir.c_str()) != 0) + { + closedir(D); + return _error->Errno("chdir","Unable to change to ",Dir.c_str()); + } + + for (struct dirent *Dir = readdir(D); Dir != 0; Dir = readdir(D)) + { + // Skip some files.. + if (strcmp(Dir->d_name,"lock") == 0 || + strcmp(Dir->d_name,"partial") == 0 || + strcmp(Dir->d_name,".") == 0 || + strcmp(Dir->d_name,"..") == 0) + continue; + + // Look in the get list + vector<Item *>::iterator I = Items.begin(); + for (; I != Items.end(); I++) + if (flNotDir((*I)->DestFile) == Dir->d_name) + break; + + // Nothing found, nuke it + if (I == Items.end()) + unlink(Dir->d_name); + }; + + chdir(StartDir.c_str()); + closedir(D); + return true; +} + /*}}}*/ // Acquire::MethodConfig::MethodConfig - Constructor /*{{{*/ // --------------------------------------------------------------------- /* */ diff --git a/apt-pkg/acquire.h b/apt-pkg/acquire.h index 5d6e5502c..c85a7aef7 100644 --- a/apt-pkg/acquire.h +++ b/apt-pkg/acquire.h @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: acquire.h,v 1.10 1998/11/11 06:54:17 jgg Exp $ +// $Id: acquire.h,v 1.11 1998/11/12 04:10:55 jgg Exp $ /* ###################################################################### Acquire - File Acquiration @@ -98,6 +98,9 @@ class pkgAcquire Worker *WorkerStep(Worker *I); inline Item **ItemsBegin() {return Items.begin();}; inline Item **ItemsEnd() {return Items.end();}; + + // Cleans out the download dir + bool Clean(string Dir); pkgAcquire(pkgAcquireStatus *Log = 0); ~pkgAcquire(); diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index d9aa9cebe..2ed05b8aa 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: apt-get.cc,v 1.6 1998/11/11 23:45:56 jgg Exp $ +// $Id: apt-get.cc,v 1.7 1998/11/12 04:10:56 jgg Exp $ /* ###################################################################### apt-get - Cover for dpkg @@ -472,6 +472,11 @@ bool DoUpdate(CommandLine &) if (Fetcher.Run() == false) return false; + // Clean out any old list files + if (Fetcher.Clean(_config->FindDir("Dir::State::lists")) == false || + Fetcher.Clean(_config->FindDir("Dir::State::lists") + "partial/") == false) + return false; + // Prepare the cache. CacheFile Cache; if (Cache.Open() == false) |