]> git.saurik.com Git - apt.git/blobdiff - apt-private/private-download.cc
reimplement build-dep via apts normal resolver
[apt.git] / apt-private / private-download.cc
index dcb604f2a526a7cc39d21922592ad7f9da34a944..6f672635fa179f6479045171c0a77fbf1bd437d2 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>
@@ -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;
@@ -307,12 +309,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 +344,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 +364,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);
 }
                                                                        /*}}}*/