summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/pbd/filesystem.cc14
-rw-r--r--libs/pbd/pbd/filesystem.h12
2 files changed, 26 insertions, 0 deletions
diff --git a/libs/pbd/filesystem.cc b/libs/pbd/filesystem.cc
index 229b22fcb5..aefe6d525c 100644
--- a/libs/pbd/filesystem.cc
+++ b/libs/pbd/filesystem.cc
@@ -94,6 +94,20 @@ create_directories(const path & p)
return true;
}
+bool
+remove(const path & p)
+{
+ if(!exists(p)) return false;
+
+ int error = g_unlink (p.to_string().c_str());
+
+ if(error == -1)
+ {
+ throw filesystem_error(g_strerror(errno), errno);
+ }
+ return true;
+}
+
string
basename (const path & p)
{
diff --git a/libs/pbd/pbd/filesystem.h b/libs/pbd/pbd/filesystem.h
index 8d4bf8dea9..7eca8a7ed3 100644
--- a/libs/pbd/pbd/filesystem.h
+++ b/libs/pbd/pbd/filesystem.h
@@ -94,6 +94,18 @@ bool create_directory(const path & p);
*/
bool create_directories(const path & p);
+/**
+ * Attempt to delete the file at path p as if by the glib function
+ * g_unlink.
+ *
+ * @return true if file existed prior to removing it, false if file
+ * at p did not exist.
+ *
+ * @throw filesystem_error if removing the file failed for any other
+ * reason other than the file did not exist.
+ */
+bool remove(const path & p);
+
string basename (const path& p);
} // namespace sys