summaryrefslogtreecommitdiff
path: root/src/tmate/config.vala
diff options
context:
space:
mode:
Diffstat (limited to 'src/tmate/config.vala')
-rw-r--r--src/tmate/config.vala39
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();
}
}
}