X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/54cf15cb909b722a69d73850ad66bfad6cee66fa..a3eaf9544039a9adfef159e8185f376f19b15c68:/apt-pkg/acquire-item.cc?ds=sidebyside diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index 7639dd59a..ddaf260ea 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.38 1999/10/17 07:30:23 jgg Exp $ +// $Id: acquire-item.cc,v 1.40 1999/10/31 06:32:27 jgg Exp $ /* ###################################################################### Acquire Item - Item to acquire @@ -567,6 +567,8 @@ pkgAcqFile::pkgAcqFile(pkgAcquire *Owner,string URI,string MD5, unsigned long Size,string Dsc,string ShortDesc) : Item(Owner), Md5Hash(MD5) { + Retries = _config->FindI("Acquire::Retries",0); + DestFile = flNotDir(URI); // Create the item @@ -636,12 +638,41 @@ void pkgAcqFile::Done(string Message,unsigned long Size,string MD5) return; } + // Erase the file if it is a symlink so we can overwrite it + struct stat St; + if (lstat(DestFile.c_str(),&St) == 0) + { + if (S_ISLNK(St.st_mode) != 0) + unlink(DestFile.c_str()); + } + + // Symlink the file if (symlink(FileName.c_str(),DestFile.c_str()) != 0) { - ErrorText = "Link to " + DestFile + "failure "; + ErrorText = "Link to " + DestFile + " failure "; Status = StatError; Complete = false; } } } /*}}}*/ +// AcqFile::Failed - Failure handler /*{{{*/ +// --------------------------------------------------------------------- +/* Here we try other sources */ +void pkgAcqFile::Failed(string Message,pkgAcquire::MethodConfig *Cnf) +{ + ErrorText = LookupTag(Message,"Message"); + + // This is the retry counter + if (Retries != 0 && + Cnf->LocalOnly == false && + StringToBool(LookupTag(Message,"Transient-Failure"),false) == true) + { + Retries--; + QueueURI(Desc); + return; + } + + Item::Failed(Message,Cnf); +} + /*}}}*/