From 6cb966520215498ce67bb426dc9282a5dd33336a Mon Sep 17 00:00:00 2001 From: Thomas Goyne Date: Sat, 2 Feb 2013 07:29:55 -0800 Subject: [PATCH] Support extensions with multiple dots in agi::fs::HasExtension --- aegisub/libaegisub/common/fs.cpp | 6 ++++-- aegisub/src/subtitle_format_encore.cpp | 4 ---- aegisub/src/subtitle_format_encore.h | 1 - aegisub/src/subtitle_format_transtation.cpp | 4 ---- aegisub/src/subtitle_format_transtation.h | 1 - 5 files changed, 4 insertions(+), 12 deletions(-) diff --git a/aegisub/libaegisub/common/fs.cpp b/aegisub/libaegisub/common/fs.cpp index ecdd30c6e..26c1a99c4 100644 --- a/aegisub/libaegisub/common/fs.cpp +++ b/aegisub/libaegisub/common/fs.cpp @@ -100,7 +100,9 @@ namespace agi { namespace fs { } bool HasExtension(path const& p, std::string const& ext) { - if (!p.has_extension()) return ext.empty(); - return boost::iequals(p.extension().string().substr(1), ext); + auto filename = p.filename().string(); + if (filename.size() < ext.size() + 1) return false; + if (filename[filename.size() - ext.size() - 1] != '.') return false; + return boost::iends_with(filename, ext); } } } diff --git a/aegisub/src/subtitle_format_encore.cpp b/aegisub/src/subtitle_format_encore.cpp index baf5920bb..08f5e325e 100644 --- a/aegisub/src/subtitle_format_encore.cpp +++ b/aegisub/src/subtitle_format_encore.cpp @@ -57,10 +57,6 @@ std::vector EncoreSubtitleFormat::GetWriteWildcards() const { return formats; } -bool EncoreSubtitleFormat::CanWriteFile(agi::fs::path const& filename) const { - return boost::iends_with(filename.string(), ".encore.txt"); -} - void EncoreSubtitleFormat::WriteFile(const AssFile *src, agi::fs::path const& filename, std::string const&) const { agi::vfr::Framerate fps = AskForFPS(false, true); if (!fps.IsLoaded()) return; diff --git a/aegisub/src/subtitle_format_encore.h b/aegisub/src/subtitle_format_encore.h index 109e8ea73..5d5008386 100644 --- a/aegisub/src/subtitle_format_encore.h +++ b/aegisub/src/subtitle_format_encore.h @@ -38,6 +38,5 @@ class EncoreSubtitleFormat : public SubtitleFormat { public: EncoreSubtitleFormat(); std::vector GetWriteWildcards() const override; - bool CanWriteFile(agi::fs::path const& filename) const override; void WriteFile(const AssFile *src, agi::fs::path const& filename, std::string const&) const override; }; diff --git a/aegisub/src/subtitle_format_transtation.cpp b/aegisub/src/subtitle_format_transtation.cpp index 4daf326eb..061c7560f 100644 --- a/aegisub/src/subtitle_format_transtation.cpp +++ b/aegisub/src/subtitle_format_transtation.cpp @@ -61,10 +61,6 @@ std::vector TranStationSubtitleFormat::GetWriteWildcards() const { return formats; } -bool TranStationSubtitleFormat::CanWriteFile(agi::fs::path const& filename) const { - return boost::iends_with(filename.string(), ".transtation.txt"); -} - void TranStationSubtitleFormat::WriteFile(const AssFile *src, agi::fs::path const& filename, std::string const& encoding) const { agi::vfr::Framerate fps = AskForFPS(false, true); if (!fps.IsLoaded()) return; diff --git a/aegisub/src/subtitle_format_transtation.h b/aegisub/src/subtitle_format_transtation.h index 6b951e34b..174e2e197 100644 --- a/aegisub/src/subtitle_format_transtation.h +++ b/aegisub/src/subtitle_format_transtation.h @@ -42,7 +42,6 @@ class TranStationSubtitleFormat : public SubtitleFormat { public: TranStationSubtitleFormat(); - bool CanWriteFile(agi::fs::path const& filename) const override; std::vector GetWriteWildcards() const override; void WriteFile(const AssFile *src, agi::fs::path const& filename, std::string const& encoding) const override; };