diff options
Diffstat (limited to 'bin/dconf-dump.vala')
-rw-r--r-- | bin/dconf-dump.vala | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/bin/dconf-dump.vala b/bin/dconf-dump.vala deleted file mode 100644 index 26f62d0..0000000 --- a/bin/dconf-dump.vala +++ /dev/null @@ -1,86 +0,0 @@ -void add_to_keyfile (KeyFile kf, DConf.Client client, string topdir, string? rel = "") { - var this_dir = topdir + rel; - string this_group; - - if (rel != "") { - this_group = rel.slice (0, -1); - } else { - this_group = "/"; - } - - var items = client.list (this_dir); - GLib.qsort_with_data<string> (items, sizeof (string), (a, b) => { - var a_dir = a.has_suffix ("/"); - var b_dir = b.has_suffix ("/"); - if (a_dir != b_dir) { - return (int) a_dir - (int) b_dir; - } else { - return GLib.strcmp (a, b); - } - }); - - foreach (var item in items) { - if (item.has_suffix ("/")) { - add_to_keyfile (kf, client, topdir, rel + item); - } else { - var val = client.read (this_dir + item); - - if (val != null) { - kf.set_value (this_group, item, val.print (true)); - } - } - } -} - -void dconf_dump (string[] args) throws Error { - var client = new DConf.Client (); - var kf = new KeyFile (); - var dir = args[2]; - - DConf.verify_dir (dir); - - if (args[3] != null) { - throw new OptionError.FAILED ("too many arguments"); - } - - add_to_keyfile (kf, client, dir); - print ("%s", kf.to_data ()); -} - -KeyFile keyfile_from_stdin () throws Error { - unowned string? tmp; - char buffer[1024]; - - var s = new StringBuilder (); - while ((tmp = stdin.gets (buffer)) != null) { - s.append (tmp); - } - - var kf = new KeyFile (); - kf.load_from_data (s.str, s.len, 0); - - return kf; -} - -void dconf_load (string[] args) throws Error { - var dir = args[2]; - DConf.verify_dir (dir); - - if (args[3] != null) { - throw new OptionError.FAILED ("too many arguments"); - } - - var changeset = new DConf.Changeset (); - var kf = keyfile_from_stdin (); - - foreach (var group in kf.get_groups ()) { - foreach (var key in kf.get_keys (group)) { - var path = dir + (group == "/" ? "" : group + "/") + key; - DConf.verify_key (path); - changeset.set (path, Variant.parse (null, kf.get_value (group, key))); - } - } - - var client = new DConf.Client (); - client.change_sync (changeset); -} |