diff options
author | Aylur <[email protected]> | 2024-06-23 11:28:06 +0200 |
---|---|---|
committer | Aylur <[email protected]> | 2024-06-23 11:28:06 +0200 |
commit | b97552032f0cf9e4d79bfaa7fe8bd090c1fe2fdb (patch) | |
tree | 209840059feee9edf21a69209979ad3a65244824 | |
parent | 4e32f62dcd50c545670ef67f9b0f65ed87821426 (diff) |
try catch file utils
-rw-r--r-- | src/file.vala | 81 |
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; + } } } |