104 lines
3.0 KiB
Plaintext
104 lines
3.0 KiB
Plaintext
$OpenBSD: patch-bin_dconf_vala,v 1.1 2011/05/30 15:51:51 ajacoutot Exp $
|
|
|
|
From 8a7c838d9d574dfe16722154ff7e5842cae795e1 Mon Sep 17 00:00:00 2001
|
|
From: Ryan Lortie <desrt@desrt.ca>
|
|
Date: Mon, 09 May 2011 12:42:33 +0000
|
|
Subject: Add 'dconf reset'.
|
|
|
|
From 8046ebb2cc9e84364a4f2f580499e7dbfa4e7b8a Mon Sep 17 00:00:00 2001
|
|
From: Ryan Lortie <desrt@desrt.ca>
|
|
Date: Tue, 10 May 2011 10:18:10 +0000
|
|
Subject: cli: make 'dconf watch' actually write output
|
|
|
|
--- bin/dconf.vala.orig Mon May 30 17:42:20 2011
|
|
+++ bin/dconf.vala Mon May 30 17:42:12 2011
|
|
@@ -49,6 +49,11 @@ void show_help (bool requested, string? command) {
|
|
synopsis = "KEY VALUE";
|
|
break;
|
|
|
|
+ case "reset":
|
|
+ description = "Reset a key or dir. -f is required for dirs.";
|
|
+ synopsis = "[-f] PATH";
|
|
+ break;
|
|
+
|
|
case "update":
|
|
description = "Update the system dconf databases";
|
|
synopsis = "";
|
|
@@ -85,6 +90,7 @@ Commands:
|
|
read Read the value of a key
|
|
list List the contents of a dir
|
|
write Change the value of a key
|
|
+ reset Reset the value of a key or dir
|
|
update Update the system databases
|
|
lock Set a lock on a path
|
|
unlock Clear a lock on a path
|
|
@@ -170,6 +176,27 @@ void dconf_write (string?[] args) throws Error {
|
|
client.write (key, Variant.parse (null, val));
|
|
}
|
|
|
|
+void dconf_reset (string?[] args) throws Error {
|
|
+ var client = new DConf.Client ();
|
|
+ bool force = false;
|
|
+ var index = 2;
|
|
+
|
|
+ if (args[index] == "-f") {
|
|
+ force = true;
|
|
+ index++;
|
|
+ }
|
|
+
|
|
+ var path = args[index];
|
|
+
|
|
+ DConf.verify_path (path);
|
|
+
|
|
+ if (DConf.is_dir (path) && !force) {
|
|
+ throw new OptionError.FAILED ("-f must be given to (recursively) reset entire dirs");
|
|
+ }
|
|
+
|
|
+ client.write (path, null);
|
|
+}
|
|
+
|
|
void dconf_lock (string?[] args) throws Error {
|
|
var client = new DConf.Client ();
|
|
var key = args[2];
|
|
@@ -188,8 +215,31 @@ void dconf_unlock (string?[] args) throws Error {
|
|
client.set_locked (key, false);
|
|
}
|
|
|
|
+void show_path (DConf.Client client, string path) {
|
|
+ if (DConf.is_key (path)) {
|
|
+ var value = client.read (path);
|
|
+
|
|
+ print (" %s\n", value != null ? value.print (true) : "unset");
|
|
+ }
|
|
+}
|
|
+
|
|
+void watch_function (DConf.Client client, string path, string[] items, string tag) {
|
|
+ if (items.length == 0) {
|
|
+ print ("%s\n", path);
|
|
+ show_path (client, path);
|
|
+ print ("\n");
|
|
+ } else {
|
|
+ foreach (var item in items) {
|
|
+ var full = path + item;
|
|
+ print ("%s\n", full);
|
|
+ show_path (client, full);
|
|
+ }
|
|
+ print ("\n");
|
|
+ }
|
|
+}
|
|
+
|
|
void dconf_watch (string?[] args) throws Error {
|
|
- var client = new DConf.Client ();
|
|
+ var client = new DConf.Client (null, watch_function);
|
|
var path = args[2];
|
|
|
|
DConf.verify_path (path);
|
|
@@ -249,6 +299,7 @@ int main (string[] args) {
|
|
CommandMapping ("read", dconf_read),
|
|
CommandMapping ("list", dconf_list),
|
|
CommandMapping ("write", dconf_write),
|
|
+ CommandMapping ("reset", dconf_reset),
|
|
CommandMapping ("update", dconf_update),
|
|
CommandMapping ("lock", dconf_lock),
|
|
CommandMapping ("unlock", dconf_unlock),
|