[gnote] Add directory_delete for Gio::File
- From: Aurimas Černius <aurimasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnote] Add directory_delete for Gio::File
- Date: Sat, 6 Apr 2019 16:58:17 +0000 (UTC)
commit 21bf710b00df41ff04a3316666c2ca890ddbb66e
Author: Aurimas Černius <aurisc4 gmail com>
Date: Mon Jul 30 23:04:32 2018 +0300
Add directory_delete for Gio::File
src/sharp/directory.cpp | 26 ++++++++++++++++++++++++++
src/sharp/directory.hpp | 2 +-
2 files changed, 27 insertions(+), 1 deletion(-)
---
diff --git a/src/sharp/directory.cpp b/src/sharp/directory.cpp
index 4f23aa2b..3670dba9 100644
--- a/src/sharp/directory.cpp
+++ b/src/sharp/directory.cpp
@@ -34,6 +34,8 @@
#include "sharp/fileinfo.hpp"
#include "sharp/string.hpp"
+#include "debug.hpp"
+
namespace sharp {
@@ -209,4 +211,28 @@ namespace sharp {
return g_remove(dir.c_str()) == 0;
}
+ bool directory_delete(const Glib::RefPtr<Gio::File> & dir, bool recursive)
+ {
+ if(recursive) {
+ std::vector<Glib::RefPtr<Gio::File>> files;
+ directory_get_files(dir, files);
+ for(auto file : files) {
+ if(!file->remove()) {
+ ERR_OUT("Failed to remove file %s", file->get_uri().c_str());
+ return false;
+ }
+ }
+ files.clear();
+ directory_get_directories(dir, files);
+ for(auto d : files) {
+ if(!directory_delete(d, true)) {
+ ERR_OUT("Failed to remove directory %s", d->get_uri().c_str());
+ return false;
+ }
+ }
+ }
+
+ return dir->remove();
+ }
+
}
diff --git a/src/sharp/directory.hpp b/src/sharp/directory.hpp
index 8562dd70..d3c4ee61 100644
--- a/src/sharp/directory.hpp
+++ b/src/sharp/directory.hpp
@@ -70,7 +70,7 @@ namespace sharp {
bool directory_create(const Glib::ustring & dir);
bool directory_delete(const Glib::ustring & dir, bool recursive);
-
+ bool directory_delete(const Glib::RefPtr<Gio::File> & dir, bool recursive);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]