From 26c4c12fb79e40f908b0357a063bb94d104f9f69 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Tue, 4 Sep 2007 09:01:12 +0000 Subject: [PATCH] Add path::branch_path to the PBD::sys::path class This is basically equivalent to Glib::path_get_dirname but returning an empty string(path) if a path doesn't contain any directory components rather than "." git-svn-id: svn://localhost/ardour2/trunk@2403 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/pbd/filesystem.cc | 18 ++++++++++++++++++ libs/pbd/pbd/filesystem.h | 7 +++++++ 2 files changed, 25 insertions(+) diff --git a/libs/pbd/filesystem.cc b/libs/pbd/filesystem.cc index 2412b76761..6aaaec1d81 100644 --- a/libs/pbd/filesystem.cc +++ b/libs/pbd/filesystem.cc @@ -58,6 +58,24 @@ path::operator/=(const char* rhs) return *this; } +path +path::branch_path () const +{ + string dir = Glib::path_get_dirname (m_path); + + /* + * glib returns "." to signify that the path + * has no directory components(branch path) + * whereas boost::filesystem returns an empty + * string + */ + if(dir == ".") + { + return ""; + } + return dir; +} + bool exists (const path & p) { diff --git a/libs/pbd/pbd/filesystem.h b/libs/pbd/pbd/filesystem.h index 8de57e4ea7..a5b0ed5b28 100644 --- a/libs/pbd/pbd/filesystem.h +++ b/libs/pbd/pbd/filesystem.h @@ -86,6 +86,13 @@ public: const string to_string() const { return m_path; } + /** + * @returns the directory component of a path without any trailing + * path separator or an empty string if the path has no directory + * component(branch path). + */ + path branch_path () const; + private: string m_path;