diff --git a/lib/imagereader/imagereader.cc b/lib/imagereader/imagereader.cc index 5ea4d360..b1fa0c95 100644 --- a/lib/imagereader/imagereader.cc +++ b/lib/imagereader/imagereader.cc @@ -58,12 +58,10 @@ void ImageReader::updateConfigForFilename(ImageReaderProto* proto, const std::st {".dim", [&]() { proto->mutable_dim(); }}, {".diskcopy", [&]() { proto->mutable_diskcopy(); }}, {".fdi", [&]() { proto->mutable_fdi(); }}, - {".FDI", [&]() { proto->mutable_fdi(); }}, {".img", [&]() { proto->mutable_img(); }}, {".st", [&]() { proto->mutable_img(); }}, {".nsi", [&]() { proto->mutable_nsi(); }}, {".td0", [&]() { proto->mutable_td0(); }}, - {".TD0", [&]() { proto->mutable_td0(); }}, {".xdf", [&]() { proto->mutable_img(); }}, }; diff --git a/lib/utils.cc b/lib/utils.cc index f9b09cc2..d25a127b 100644 --- a/lib/utils.cc +++ b/lib/utils.cc @@ -7,11 +7,15 @@ bool beginsWith(const std::string& value, const std::string& ending) return std::equal(ending.begin(), ending.end(), value.begin()); } +// Case-insensitive for endings within ASCII. bool endsWith(const std::string& value, const std::string& ending) { if (ending.size() > value.size()) return false; - return std::equal(ending.rbegin(), ending.rend(), value.rbegin()); + std::string lowercase(ending.size(), 0); + std::transform(value.rbegin(), value.rbegin() + ending.size(), lowercase.begin(), [](unsigned char c){ return std::tolower(c); }); + return std::equal(ending.rbegin(), ending.rend(), value.rbegin()) || + std::equal(ending.rbegin(), ending.rend(), lowercase.begin()); }