try relative to current working dir if can't find archive (need to search relative to .map too)

This commit is contained in:
Jonathan 2022-07-29 04:49:54 -04:00
parent 3ee28fc416
commit b1b4cb0e09
1 changed files with 23 additions and 11 deletions

View File

@ -214,18 +214,8 @@ void clear()
directories.clear();
}
std::shared_ptr<archive_like> addArchive(const path &p, bool external)
inline std::shared_ptr<archive_like> addArchiveInternal(const path &p, bool external)
{
if (p.empty()) {
logging::funcprint("WARNING: can't add empty archive path\n");
return nullptr;
}
if (!exists(p)) {
logging::funcprint("WARNING: archive '{}' not found\n", p);
return nullptr;
}
if (is_directory(p)) {
for (auto &dir : directories) {
if (equivalent(dir->pathname, p)) {
@ -267,6 +257,28 @@ std::shared_ptr<archive_like> addArchive(const path &p, bool external)
return nullptr;
}
std::shared_ptr<archive_like> addArchive(const path &p, bool external)
{
if (p.empty()) {
logging::funcprint("WARNING: can't add empty archive path\n");
return nullptr;
}
if (!exists(p)) {
// check relative
path filename = p.filename();
if (!exists(filename)) {
logging::funcprint("WARNING: archive '{}' not found\n", p);
return nullptr;
}
return addArchiveInternal(filename, external);
}
return addArchiveInternal(p, external);
}
resolve_result where(const path &p, bool prefer_loose)
{
// check direct archive loading first; it can't ever