aboutsummaryrefslogtreecommitdiff
path: root/libdino/src/util/util.vala
diff options
context:
space:
mode:
Diffstat (limited to 'libdino/src/util/util.vala')
-rw-r--r--libdino/src/util/util.vala32
1 files changed, 32 insertions, 0 deletions
diff --git a/libdino/src/util/util.vala b/libdino/src/util/util.vala
index 553ebbfe..1a95cb36 100644
--- a/libdino/src/util/util.vala
+++ b/libdino/src/util/util.vala
@@ -69,6 +69,38 @@ public static string get_storage_dir() {
return Path.build_filename(Environment.get_user_data_dir(), "dino");
}
+public static string get_cache_dir() {
+ return Path.build_filename(Environment.get_user_cache_dir(), "dino");
+}
+
+public void recurse_delete_folder(File file, string space = "", Cancellable? cancellable = null) throws Error {
+ FileEnumerator enumerator = file.enumerate_children (
+ "standard::*",
+ FileQueryInfoFlags.NOFOLLOW_SYMLINKS,
+ cancellable);
+
+ FileInfo info = null;
+ while (cancellable.is_cancelled () == false && ((info = enumerator.next_file (cancellable)) != null)) {
+ if (info.get_file_type () == FileType.DIRECTORY) {
+ File subdir = file.resolve_relative_path (info.get_name ());
+ recurse_delete_folder(subdir, space + " ", cancellable);
+ } else {
+ FileUtils.remove(file.get_path() + "/" + info.get_name());
+ }
+ }
+ var res = DirUtils.remove(file.get_path());
+ if (res == -1){
+ debug("Error: Folder %s not removed using GLib. Check permissions or ownership ?", file.get_path());
+ }
+ else {
+ debug("Folder %s removed using GLib.", file.get_path());
+ }
+
+ if (cancellable.is_cancelled ()) {
+ throw new IOError.CANCELLED ("I/O Error: Recursive deletion of folder %s was cancelled.", file.get_path());
+ }
+}
+
[CCode (cname = "dino_gettext", cheader_filename = "dino_i18n.h")]
public static extern unowned string _(string s);