summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAylur <[email protected]>2024-06-23 11:28:06 +0200
committerAylur <[email protected]>2024-06-23 11:28:06 +0200
commitb97552032f0cf9e4d79bfaa7fe8bd090c1fe2fdb (patch)
tree209840059feee9edf21a69209979ad3a65244824 /src
parent4e32f62dcd50c545670ef67f9b0f65ed87821426 (diff)
try catch file utils
Diffstat (limited to 'src')
-rw-r--r--src/file.vala81
1 files changed, 47 insertions, 34 deletions
diff --git a/src/file.vala b/src/file.vala
index 5f094b4..d8acccc 100644
--- a/src/file.vala
+++ b/src/file.vala
@@ -1,7 +1,11 @@
namespace Astal {
-public string read_file(string path) throws Error {
+public string read_file(string path) {
var str = "";
- FileUtils.get_contents(path, out str, null);
+ try {
+ FileUtils.get_contents(path, out str, null);
+ } catch (Error error) {
+ critical(error.message);
+ }
return str;
}
@@ -11,8 +15,12 @@ public async string read_file_async(string path) throws Error {
return (string)content;
}
-public void write_file(string path, string content) throws Error {
- FileUtils.set_contents(path, content);
+public void write_file(string path, string content) {
+ try {
+ FileUtils.set_contents(path, content);
+ } catch (Error error) {
+ critical(error.message);
+ }
}
public async void write_file_async(string path, string content) throws Error {
@@ -25,44 +33,49 @@ public async void write_file_async(string path, string content) throws Error {
null);
}
-public FileMonitor monitor_file(string path, Closure callback) throws Error {
- var file = File.new_for_path(path);
- var mon = file.monitor(GLib.FileMonitorFlags.NONE);
+public FileMonitor? monitor_file(string path, Closure callback) {
+ try {
+ var file = File.new_for_path(path);
+ var mon = file.monitor(GLib.FileMonitorFlags.NONE);
- mon.changed.connect((file, _file, event) => {
- var f = Value(Type.STRING);
- var e = Value(Type.INT);
- var ret = Value(Type.POINTER);
+ mon.changed.connect((file, _file, event) => {
+ var f = Value(Type.STRING);
+ var e = Value(Type.INT);
+ var ret = Value(Type.POINTER);
- f.set_string(file.get_path());
- e.set_int(event);
+ f.set_string(file.get_path());
+ e.set_int(event);
- callback.invoke(ref ret, { f, e });
- });
+ callback.invoke(ref ret, { f, e });
+ });
- if (FileUtils.test(path, FileTest.IS_DIR)) {
- var enumerator = file.enumerate_children("standard::*",
- FileQueryInfoFlags.NONE, null);
+ if (FileUtils.test(path, FileTest.IS_DIR)) {
+ var enumerator = file.enumerate_children("standard::*",
+ FileQueryInfoFlags.NONE, null);
- var i = enumerator.next_file(null);
- while (i != null) {
- if (i.get_file_type() == FileType.DIRECTORY) {
- var filepath = file.get_child(i.get_name()).get_path();
- if (filepath != null) {
- var m = monitor_file(path, callback);
- mon.notify["cancelled"].connect(() => {
- m.cancel();
- });
+ var i = enumerator.next_file(null);
+ while (i != null) {
+ if (i.get_file_type() == FileType.DIRECTORY) {
+ var filepath = file.get_child(i.get_name()).get_path();
+ if (filepath != null) {
+ var m = monitor_file(path, callback);
+ mon.notify["cancelled"].connect(() => {
+ m.cancel();
+ });
+ }
}
+ i = enumerator.next_file(null);
}
- i = enumerator.next_file(null);
}
- }
- mon.ref();
- mon.notify["cancelled"].connect(() => {
- mon.unref();
- });
- return mon;
+ mon.ref();
+ mon.notify["cancelled"].connect(() => {
+ mon.unref();
+ });
+ return mon;
+ } catch (Error error) {
+ critical(error.message);
+ return null;
+ }
}
}