- std::string Src;
- pkgSrcRecords::Parser *Last = 0;
- std::unique_ptr<pkgSrcRecords::Parser> LastOwner;
-
- // an unpacked debian source tree
- using APT::String::Startswith;
- if ((Startswith(*I, "./") || Startswith(*I, "/")) &&
- DirectoryExists(*I))
- {
- ioprintf(c1out, _("Note, using directory '%s' to get the build dependencies\n"), *I);
- // FIXME: how can we make this more elegant?
- std::string TypeName = "Debian control file";
- pkgIndexFile::Type *Type = pkgIndexFile::Type::GetType(TypeName.c_str());
- if(Type != NULL)
- LastOwner.reset(Last = Type->CreateSrcPkgParser(*I));
- }
- // if its a local file (e.g. .dsc) use this
- else if (FileExists(*I))
- {
- ioprintf(c1out, _("Note, using file '%s' to get the build dependencies\n"), *I);
-
- // see if we can get a parser for this pkgIndexFile type
- std::string TypeName = "Debian " + flExtension(*I) + " file";
- pkgIndexFile::Type *Type = pkgIndexFile::Type::GetType(TypeName.c_str());
- if(Type != NULL)
- LastOwner.reset(Last = Type->CreateSrcPkgParser(*I));
- } else {
- // normal case, search the cache for the source file
- Last = FindSrc(*I,SrcRecs,Src,Cache);
- }
-
- if (Last == 0)
- return _error->Error(_("Unable to find a source package for %s"),Src.c_str());
-
- // Process the build-dependencies