aboutsummaryrefslogtreecommitdiff
path: root/libdino/src/util/util.vala
diff options
context:
space:
mode:
authorMiquel Lionel <lionel@les-miquelots.net>2024-09-22 21:28:39 +0200
committerMiquel Lionel <lionel@les-miquelots.net>2024-09-26 00:11:29 +0200
commite00a6b481cd61ca2969f271d309dba2c20648c92 (patch)
tree1a49a06c895620fff30450283083283344e17b19 /libdino/src/util/util.vala
parentd20553a111af4fb69e19ba8caeb0044035086c43 (diff)
downloaddino-dot-cache-avatars.tar.gz
dino-dot-cache-avatars.zip
Store avatars in the user's cache directory.dot-cache-avatars
- Not anymore in ~/.local/share, where media files are stored. - Already existing ~/.local/share/dino/avatars directory will be moved to ~/.cache/dino/avatars - If both directories already exists, the old one (in ~/.local/share) is removed.
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);