diff options
Diffstat (limited to 'src/tmate/config.vala')
-rw-r--r-- | src/tmate/config.vala | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/src/tmate/config.vala b/src/tmate/config.vala index 8957d02..9f70191 100644 --- a/src/tmate/config.vala +++ b/src/tmate/config.vala @@ -1,9 +1,10 @@ namespace Tmate { - [SingleInstance] - class Config : Object + public class Config : Object { private static HashTable<string, string> cfg; + private File? backing_file = null; + construct { cfg = new HashTable<string, string>(str_hash, str_equal); cfg.insert("server-host", "tty.dev.jadupc.com"); @@ -12,27 +13,32 @@ namespace Tmate cfg.insert("server-ed25519-fingerprint", "SHA256:w/TRuOK0w5qDXNBKdlYlANgZwq3Xg5LSZlBYIwEH8gU"); } - public void @delete(string? path) + ~Config() + { + this.delete(); + } + + public void @delete() { - if (path == null) return; - var fcfg = File.new_for_path(path); + if (backing_file == null) return; try { - fcfg.delete(); + backing_file.delete(); + backing_file = null; } catch (Error e) { print(@"Error: $(e.message)\n"); } } - public new string? @get() + public new string? get_path() { - bool failed = false; - string cfgpath = ".."; + if (null != backing_file) + return backing_file.get_path(); + bool failed = false; try { FileIOStream scfg; - var fcfg = File.new_tmp(".tmate.conf.XXXXXXXXX", out scfg); - var cfgout = new DataOutputStream(scfg.output_stream); - cfgpath = fcfg.get_path(); + backing_file = File.new_tmp(".tmate.conf.XXXXXXXXX", out scfg); + var cfgout = new DataOutputStream(scfg.output_stream); cfg.foreach((key, val) => { try { @@ -46,8 +52,15 @@ namespace Tmate } catch (Error e) { print(@"Error: $(e.message)\n"); failed = true; + if(null != backing_file) + try { + backing_file.delete(); + } catch(Error e) { + print(@"Error: $(e.message)\n"); + } + backing_file = null; } - return failed ? null : cfgpath; + return failed ? null : backing_file.get_path(); } } } |