diff --git a/libs/pbd/filesystem.cc b/libs/pbd/filesystem.cc index ea45b1da44..3c96f5b001 100644 --- a/libs/pbd/filesystem.cc +++ b/libs/pbd/filesystem.cc @@ -162,6 +162,22 @@ basename (const path & p) return base.substr (0, n); } +string +extension (const path & p) +{ + string base = Glib::path_get_basename (p.to_string()); + + string::size_type n = base.rfind ('.'); + + if (n != string::npos) + { + return base.substr(n); + } + + return string(); + +} + } // namespace sys } // namespace PBD diff --git a/libs/pbd/pbd/filesystem.h b/libs/pbd/pbd/filesystem.h index b5f328acf4..5e94138bd8 100644 --- a/libs/pbd/pbd/filesystem.h +++ b/libs/pbd/pbd/filesystem.h @@ -172,6 +172,15 @@ void copy_file(const path & from_path, const path & to_path); */ string basename (const path& p); +/** + * @return If the filename contains a dot, return a substring of the + * filename starting the rightmost dot to the end of the string, otherwise + * an empty string. + * + * @param p a file path. + */ +string extension (const path& p); + } // namespace sys } // namespace PBD