1 void add_to_keyfile (KeyFile kf
, DConf
.Client client
, string topdir
, string? rel
= "") {
2 var this_dir
= topdir
+ rel
;
6 this_group
= rel
.slice (0, -1);
11 foreach (var item
in client
.list (this_dir
)) {
12 if (item
.has_suffix ("/")) {
13 add_to_keyfile (kf
, client
, topdir
, rel
+ item
);
15 var val
= client
.read (this_dir
+ item
);
18 kf
.set_value (this_group
, item
, val
.print (true));
24 void dconf_dump (string[] args
) throws Error
{
25 var client
= new DConf
.Client ();
26 var kf
= new
KeyFile ();
29 DConf
.verify_dir (dir
);
31 add_to_keyfile (kf
, client
, dir
);
32 print ("%s", kf
.to_data ());
35 KeyFile
keyfile_from_stdin () throws Error
{
39 var s
= new
StringBuilder ();
40 while ((tmp
= stdin
.gets (buffer
)) != null) {
44 var kf
= new
KeyFile ();
45 kf
.load_from_data (s
.str
, s
.len
, 0);
50 void dconf_load (string[] args
) throws Error
{
52 DConf
.verify_dir (dir
);
54 var changeset
= new DConf
.Changeset ();
55 var kf
= keyfile_from_stdin ();
57 foreach (var group
in kf
.get_groups ()) {
58 foreach (var key
in kf
.get_keys (group
)) {
59 var path
= dir
+ (group
== "/" ?
"" : group
+ "/") + key
;
60 DConf
.verify_key (path
);
61 changeset
.set (path
, Variant
.parse (null, kf
.get_value (group
, key
)));
65 var client
= new DConf
.Client ();
66 client
.change_sync (changeset
);