X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/14341a7ee1ca3dbcdcdbe10ad19b947ce23d972d..766761fd836d9e247daea924809965c21cc65dc7:/apt-pkg/sourcelist.cc diff --git a/apt-pkg/sourcelist.cc b/apt-pkg/sourcelist.cc index 56df976e8..6773b069f 100644 --- a/apt-pkg/sourcelist.cc +++ b/apt-pkg/sourcelist.cc @@ -544,11 +544,17 @@ void pkgSourceList::AddVolatileFile(pkgIndexFile * const File) /*{{{*/ /*}}}*/ bool pkgSourceList::AddVolatileFile(std::string const &File) /*{{{*/ { + // Note: FileExists matches directories and links, too! if (File.empty() || FileExists(File) == false) return false; - if (flExtension(File) == "deb") + std::string const ext = flExtension(File); + if (ext == "deb") AddVolatileFile(new debDebPkgFileIndex(File)); + else if (ext == "dsc") + AddVolatileFile(new debDscFileIndex(File)); + else if (FileExists(flCombine(File, "debian/control"))) + AddVolatileFile(new debDscFileIndex(flCombine(File, "debian/control"))); else return false; @@ -558,7 +564,7 @@ bool pkgSourceList::AddVolatileFile(std::string const &File) /*{{{*/ void pkgSourceList::AddVolatileFiles(CommandLine &CmdL, std::vector * const VolatileCmdL)/*{{{*/ { std::remove_if(CmdL.FileList + 1, CmdL.FileList + 1 + CmdL.FileSize(), [&](char const * const I) { - if (I != nullptr && (I[0] == '/' || (I[0] == '.' && I[1] == '/'))) + if (I != nullptr && (I[0] == '/' || (I[0] == '.' && ((I[1] == '.' && I[2] == '/') || I[1] == '/')))) { if (AddVolatileFile(I)) {