blob: 9f701917466860a7057e979128a5f476b10e39c5 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
namespace Tmate
{
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");
cfg.insert("server-port", "10022");
cfg.insert("server-rsa-fingerprint", "SHA256:QdMBN/QsrS4QyGApxxjt3DZyiysgeRto5YGGjAHRO7g");
cfg.insert("server-ed25519-fingerprint", "SHA256:w/TRuOK0w5qDXNBKdlYlANgZwq3Xg5LSZlBYIwEH8gU");
}
~Config()
{
this.delete();
}
public void @delete()
{
if (backing_file == null) return;
try {
backing_file.delete();
backing_file = null;
} catch (Error e) {
print(@"Error: $(e.message)\n");
}
}
public new string? get_path()
{
if (null != backing_file)
return backing_file.get_path();
bool failed = false;
try {
FileIOStream scfg;
backing_file = File.new_tmp(".tmate.conf.XXXXXXXXX", out scfg);
var cfgout = new DataOutputStream(scfg.output_stream);
cfg.foreach((key, val) => {
try {
if(! failed)
cfgout.put_string(@"set -g tmate-$(key) $(val)\n");
} catch (Error m) {
print(@"Error: $(m.message)\n");
failed = true;
}
});
} 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 : backing_file.get_path();
}
}
}
|