]> git.saurik.com Git - apt.git/blobdiff - apt-private/private-download.cc
edsp: support generic and solver-specific configs
[apt.git] / apt-private / private-download.cc
index dcb604f2a526a7cc39d21922592ad7f9da34a944..1ae0f4a0eb679f833956cd32b3ae47d4d4553679 100644 (file)
@@ -27,6 +27,7 @@
 #include <fcntl.h>
 #include <sys/vfs.h>
 #include <sys/statvfs.h>
+#include <sys/stat.h>
 #include <errno.h>
 
 #include <apti18n.h>
@@ -108,7 +109,7 @@ bool AcquireRun(pkgAcquire &Fetcher, int const PulseInterval, bool * const Failu
       uri.User.clear();
       uri.Password.clear();
       std::string descUri = std::string(uri);
-      _error->Error(_("Failed to fetch %s  %s\n"), descUri.c_str(),
+      _error->Error(_("Failed to fetch %s  %s"), descUri.c_str(),
            (*I)->ErrorText.c_str());
 
       if (Failure != NULL)
@@ -224,6 +225,7 @@ bool DoDownload(CommandLine &CmdL)
         std::ifstream src((*I)->DestFile.c_str(), std::ios::binary);
         std::ofstream dst(filename.c_str(), std::ios::binary);
         dst << src.rdbuf();
+        chmod(filename.c_str(), 0644);
       }
    }
    return Failed == false;
@@ -244,6 +246,8 @@ bool DoChangelog(CommandLine &CmdL)
 
    bool const downOnly = _config->FindB("APT::Get::Download-Only", false);
    bool const printOnly = _config->FindB("APT::Get::Print-URIs", false);
+   if (printOnly)
+      _config->CndSet("Acquire::Changelogs::AlwaysOnline", true);
 
    aptAcquireWithTextStatus Fetcher;
    for (APT::VersionList::const_iterator Ver = verset.begin();
@@ -307,12 +311,18 @@ bool DoClean(CommandLine &)
    }
 
    pkgAcquire Fetcher;
-   Fetcher.GetLock(archivedir);
-   Fetcher.Clean(archivedir);
-   Fetcher.Clean(archivedir + "partial/");
+   if (archivedir.empty() == false && FileExists(archivedir) == true &&
+        Fetcher.GetLock(archivedir) == true)
+   {
+      Fetcher.Clean(archivedir);
+      Fetcher.Clean(archivedir + "partial/");
+   }
 
-   Fetcher.GetLock(listsdir);
-   Fetcher.Clean(listsdir + "partial/");
+   if (listsdir.empty() == false && FileExists(listsdir) == true &&
+        Fetcher.GetLock(listsdir) == true)
+   {
+      Fetcher.Clean(listsdir + "partial/");
+   }
 
    pkgCacheFile::RemoveCaches();
 
@@ -336,11 +346,15 @@ bool DoClean(CommandLine &)
 };
 bool DoAutoClean(CommandLine &)
 {
+   std::string const archivedir = _config->FindDir("Dir::Cache::Archives");
+   if (FileExists(archivedir) == false)
+      return true;
+
    // Lock the archive directory
    FileFd Lock;
    if (_config->FindB("Debug::NoLocking",false) == false)
    {
-      int lock_fd = GetLock(_config->FindDir("Dir::Cache::Archives") + "lock");
+      int lock_fd = GetLock(flCombine(archivedir, "lock"));
       if (lock_fd < 0)
         return _error->Error(_("Unable to lock the download directory"));
       Lock.Fd(lock_fd);
@@ -352,7 +366,7 @@ bool DoAutoClean(CommandLine &)
 
    LogCleaner Cleaner;
 
-   return Cleaner.Go(_config->FindDir("Dir::Cache::archives"),*Cache) &&
-      Cleaner.Go(_config->FindDir("Dir::Cache::archives") + "partial/",*Cache);
+   return Cleaner.Go(archivedir, *Cache) &&
+      Cleaner.Go(flCombine(archivedir, "partial/"), *Cache);
 }
                                                                        /*}}}*/