diff options
author | Ryan Lortie <desrt@desrt.ca> | 2010-07-18 23:23:54 -0400 |
---|---|---|
committer | Ryan Lortie <desrt@desrt.ca> | 2010-07-18 23:23:54 -0400 |
commit | 67cb6fa67a608ba5b778e6e0bba9578a0a6ab075 (patch) | |
tree | a168ebcf2cf2291a903ae77c9af1c88c2bca1966 | |
parent | 4c375030eb6254b757b6fa1bba6dbd0c5d69774f (diff) | |
download | dconf-67cb6fa67a608ba5b778e6e0bba9578a0a6ab075.tar.gz |
assorted client API cleanups, vala port of 'dconf'
-rw-r--r-- | bin/.gitignore | 2 | ||||
-rw-r--r-- | bin/Makefile.am | 4 | ||||
-rw-r--r-- | bin/dconf.c | 242 | ||||
-rw-r--r-- | bin/dconf.vala | 56 | ||||
-rw-r--r-- | client/dconf-client.c | 39 | ||||
-rw-r--r-- | client/dconf-client.h | 23 | ||||
-rw-r--r-- | client/dconf.vapi (renamed from editor/dconf.vapi) | 37 | ||||
-rw-r--r-- | common/dconf-paths.c | 80 | ||||
-rw-r--r-- | common/dconf-paths.h | 18 | ||||
-rw-r--r-- | editor/Makefile.am | 2 | ||||
-rw-r--r-- | editor/dconf-model.vala | 4 | ||||
-rw-r--r-- | engine/dconf-engine.c | 16 | ||||
-rw-r--r-- | engine/dconf-engine.h | 4 | ||||
-rw-r--r-- | gsettings/dconfsettingsbackend.c | 2 | ||||
-rw-r--r-- | tests/paths.c | 12 |
15 files changed, 211 insertions, 330 deletions
diff --git a/bin/.gitignore b/bin/.gitignore index 08c4537..b9cdeb5 100644 --- a/bin/.gitignore +++ b/bin/.gitignore @@ -1,4 +1,4 @@ dconf dconf-update -dconf-update.c +*.c *.stamp diff --git a/bin/Makefile.am b/bin/Makefile.am index 5544f82..2f77617 100644 --- a/bin/Makefile.am +++ b/bin/Makefile.am @@ -8,3 +8,7 @@ dconf_LDADD = ../client/libdconf.la $(gio_LIBS) dconf_update_VALAFLAGS = --pkg=posix --pkg=gio-2.0 dconf_update_LDADD = $(gio_LIBS) dconf_update_SOURCES = dconf-update.vala ../gvdb/gvdb-builder.c gvdb.vapi fixes.vapi + +dconf_VALAFLAGS = --pkg=gio-2.0 ../client/dconf.vapi +dconf_LDADD = $(gio_LIBS) ../client/libdconf.la +dconf_SOURCES = dconf.vala diff --git a/bin/dconf.c b/bin/dconf.c deleted file mode 100644 index 5702d9b..0000000 --- a/bin/dconf.c +++ /dev/null @@ -1,242 +0,0 @@ -#include <dconf.h> - -static const gchar * -shift (int *argc, char ***argv) -{ - if (argc == 0) - return NULL; - - (*argc)--; - return *(*argv)++; -} - -static gboolean -grab_args (int argc, - char **argv, - const gchar *description, - GError **error, - gint num, - ...) -{ - va_list ap; - - if (argc != num) - { - g_set_error (error, G_OPTION_ERROR, G_OPTION_ERROR_FAILED, - "require exactly %d arguments: %s", num, description); - return FALSE; - } - - va_start (ap, num); - while (num--) - *va_arg (ap, gchar **) = *argv++; - va_end (ap); - - return TRUE; -} - -static gboolean -ensure (const gchar *type, - const gchar *string, - gboolean (*checker) (const gchar *string), - GError **error) -{ - if (!checker (string)) - { - g_set_error (error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE, - "'%s' is not a dconf %s", string, type); - return FALSE; - } - - return TRUE; -} - -static void -write_done (GObject *object, - GAsyncResult *result, - gpointer user_data) -{ - GError *error = NULL; - - if (!dconf_client_write_finish (DCONF_CLIENT (object), result, NULL, &error)) - g_error ("%s\n", error->message); - - g_print ("done\n"); -} - -static void -do_async_command (DConfClient *client, - int argc, - char **argv) -{ - const gchar *cmd; - - cmd = shift (&argc, &argv); - - if (g_strcmp0 (cmd, "write") == 0) - { - const gchar *key, *strval; - GVariant *value; - - if (!grab_args (argc, argv, "key and value", NULL, 2, &key, &strval)) - g_assert_not_reached (); - - if (!ensure ("key", key, dconf_is_key, NULL)) - g_assert_not_reached (); - - value = g_variant_parse (NULL, strval, NULL, NULL, NULL); - - g_assert (value != NULL); - - return dconf_client_write_async (client, key, value, - NULL, write_done, NULL); - } -} - -static gboolean -do_sync_command (DConfClient *client, - int argc, - char **argv, - GError **error) -{ - const gchar *cmd; - - cmd = shift (&argc, &argv); - - if (g_strcmp0 (cmd, "async") == 0) - { - do_async_command (client, argc, argv); - g_main_loop_run (g_main_loop_new (NULL, FALSE)); - return TRUE; - } - - else if (g_strcmp0 (cmd, "read") == 0) - { - const gchar *key; - GVariant *value; - gchar *printed; - - if (!grab_args (argc, argv, "key", error, 1, &key)) - return FALSE; - - if (!ensure ("key", key, dconf_is_key, error)) - return FALSE; - - value = dconf_client_read (client, key); - - if (value == NULL) - return TRUE; - - printed = g_variant_print (value, TRUE); - g_print ("%s\n", printed); - g_variant_unref (value); - g_free (printed); - - return TRUE; - } - - else if (g_strcmp0 (cmd, "write") == 0) - { - const gchar *key, *strval; - GVariant *value; - - if (!grab_args (argc, argv, "key and value", error, 2, &key, &strval)) - return FALSE; - - if (!ensure ("key", key, dconf_is_key, error)) - return FALSE; - - value = g_variant_parse (NULL, strval, NULL, NULL, error); - - if (value == NULL) - return FALSE; - - return dconf_client_write (client, key, value, NULL, NULL, error); - } - - else if (g_strcmp0 (cmd, "write-many") == 0) - { - g_assert_not_reached (); - } - - else if (g_strcmp0 (cmd, "list") == 0) - { - const gchar *dir; - gchar **list; - - if (!grab_args (argc, argv, "dir", error, 1, &dir)) - return FALSE; - - if (!ensure ("dir", dir, dconf_is_dir, error)) - return FALSE; - - list = dconf_client_list (client, dir, NULL); - - while (*list) - g_print ("%s\n", *list++); - - return TRUE; - } - - else if (g_strcmp0 (cmd, "lock") == 0) - { - const gchar *path; - - if (!grab_args (argc, argv, "path", error, 1, &path)) - return FALSE; - - if (!ensure ("path", path, dconf_is_path, error)) - return FALSE; - - return dconf_client_set_locked (client, path, TRUE, NULL, NULL); - } - - else if (g_strcmp0 (cmd, "unlock") == 0) - { - const gchar *path; - - if (!grab_args (argc, argv, "path", error, 1, &path)) - return FALSE; - - if (!ensure ("path", path, dconf_is_path, error)) - return FALSE; - - return dconf_client_set_locked (client, path, FALSE, NULL, NULL); - } - - else if (g_strcmp0 (cmd, "is-writable") == 0) - { - const gchar *path; - - if (!grab_args (argc, argv, "path", error, 1, &path)) - return FALSE; - - if (!ensure ("path", path, dconf_is_path, error)) - return FALSE; - - return dconf_client_is_writable (client, path, error); - } - - else - { - g_set_error (error, 0, 0, "unknown command"); - return FALSE; - } -} - -int -main (int argc, char **argv) -{ - GError *error = NULL; - DConfClient *client; - - g_type_init (); - g_set_prgname (shift (&argc, &argv)); - - client = dconf_client_new (NULL, FALSE, NULL, NULL, NULL); - - if (!do_sync_command (client, argc, argv, &error)) - g_error ("%s\n", error->message); - - return 0; -} diff --git a/bin/dconf.vala b/bin/dconf.vala new file mode 100644 index 0000000..6276ba7 --- /dev/null +++ b/bin/dconf.vala @@ -0,0 +1,56 @@ + + +void do_read (DConf.Client client, string key) throws Error { + DConf.verify_key (key); + + var result = client.read (key); + if (result != null) { + stdout.puts (result.print (true)); + stdout.putc ('\n'); + } +} + +void do_list (DConf.Client client, string dir) throws Error { + DConf.verify_dir (dir); + + foreach (var item in client.list (dir)) { + stdout.puts (item); + stdout.putc ('\n'); + } +} + +void do_write (DConf.Client client, string key, string val) throws Error { + DConf.verify_key (key); + + client.write (key, Variant.parse (null, val)); +} + +void main (string[] args) { + try { + var client = new DConf.Client (); + + Environment.set_prgname (args[0]); + + switch (args[1]) { + case "read": + do_read (client, args[2]); + break; + + case "list": + do_list (client, args[2]); + break; + + case "write": + do_write (client, args[2], args[3]); + break; + + default: + error ("unknown command"); + break; + } + } catch (Error e) { + stderr.printf ("error: %s\n", e.message); + } +} + +// vim:noet sw=4 ts=4 diff --git a/client/dconf-client.c b/client/dconf-client.c index 9b44397..de6fbba 100644 --- a/client/dconf-client.c +++ b/client/dconf-client.c @@ -31,7 +31,6 @@ struct _DConfClient GDBusConnection *system_bus; DConfEngine *engine; - gboolean will_write; DConfWatchFunc watch_func; gpointer user_data; @@ -256,7 +255,7 @@ dconf_client_service_func (DConfEngineMessage *dcem) /** * dconf_client_new: - * @context: the context string (must by %NULL for now) + * @profile: the dconf profile to use, or %NULL * @will_write: %TRUE if you intend to use the client to write * @watch_func: the function to call when changes occur * @user_data: the user_data to pass to @watch_func @@ -265,23 +264,23 @@ dconf_client_service_func (DConfEngineMessage *dcem) * * Creates a new #DConfClient for the given context. * - * If @will_write is %FALSE then you will not be able to use the created - * client to write. The benefit of this is that when combined with - * @watch_func being %NULL, no connection to D-Bus is required. + * If @profile is non-%NULL then it specifies the name of the profile to + * use. If @profile is %NULL then the DCONF_PROFILE environment + * variable is consulted. If that is unset then the default profile of + * "user" is used. If a profile named "user" is not installed then + * the dconf client is setup to access ~/.config/dconf/user. **/ DConfClient * -dconf_client_new (const gchar *context, - gboolean will_write, - DConfWatchFunc watch_func, - gpointer user_data, - GDestroyNotify notify) +dconf_client_new (const gchar *profile, + DConfWatchFunc watch_func, + gpointer user_data, + GDestroyNotify notify) { DConfClient *client = g_object_new (DCONF_TYPE_CLIENT, NULL); dconf_engine_set_service_func (dconf_client_service_func); - client->engine = dconf_engine_new (); - client->will_write = will_write; + client->engine = dconf_engine_new (profile); client->watch_func = watch_func; client->user_data = user_data; client->notify = notify; @@ -503,7 +502,7 @@ dconf_client_list (DConfClient *client, } /** - * dconf_client_set_locked: + * dconf_client_set_lock: * @client: a #DConfClient * @path: a dconf path * @locked: %TRUE to lock, %FALSE to unlock @@ -522,15 +521,15 @@ dconf_client_list (DConfClient *client, * this database as its defaults. **/ gboolean -dconf_client_set_locked (DConfClient *client, - const gchar *path, - gboolean locked, - GCancellable *cancellable, - GError **error) +dconf_client_set_lock (DConfClient *client, + const gchar *path, + gboolean locked, + GCancellable *cancellable, + GError **error) { DConfEngineMessage dcem; - dconf_engine_set_locked (client->engine, &dcem, path, locked); + dconf_engine_set_lock (client->engine, &dcem, path, locked); return dconf_client_call_sync (client, &dcem, NULL, cancellable, error); } @@ -553,6 +552,7 @@ dconf_client_write_many (DConfClient *client, const gchar *prefix, const gchar * const *rels, GVariant **values, + gsize n_values, gchar **tag, GCancellable *cancellable, GError **error) @@ -570,6 +570,7 @@ dconf_client_write_many_async (DConfClient *client, const gchar *prefix, const gchar * const *rels, GVariant **values, + gsize n_values, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) diff --git a/client/dconf-client.h b/client/dconf-client.h index ba79044..d4d3eab 100644 --- a/client/dconf-client.h +++ b/client/dconf-client.h @@ -41,22 +41,11 @@ typedef void (*DConfWatchFunc) (DConfCl GType dconf_client_get_type (void); -DConfClient * dconf_client_new (const gchar *context, - gboolean will_write, +DConfClient * dconf_client_new (const gchar *profile, DConfWatchFunc watch_func, gpointer user_data, GDestroyNotify notify); -void dconf_client_new_async (const gchar *context, - gboolean will_write, - DConfWatchFunc watch_func, - gpointer watch_func_data, - GDestroyNotify notify, - GAsyncReadyCallback callback, - gpointer user_data); - -DConfClient * dconf_client_new_finish (GAsyncResult *result); - GVariant * dconf_client_read (DConfClient *client, const gchar *key); GVariant * dconf_client_read_default (DConfClient *client, @@ -69,7 +58,7 @@ gchar ** dconf_client_list (DConfCl gsize *length); gboolean dconf_client_is_writable (DConfClient *client, - const gchar *path, + const gchar *key, GError **error); gboolean dconf_client_write (DConfClient *client, @@ -89,18 +78,18 @@ gboolean dconf_client_write_finish (DConfCl gchar **tag, GError **error); -gboolean dconf_client_set_locked (DConfClient *client, +gboolean dconf_client_set_lock (DConfClient *client, const gchar *path, gboolean locked, GCancellable *cancellable, GError **error); -void dconf_client_set_locked_async (DConfClient *client, +void dconf_client_set_lock_async (DConfClient *client, const gchar *path, gboolean locked, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -gboolean dconf_client_set_locked_finish (DConfClient *client, +gboolean dconf_client_set_lock_finish (DConfClient *client, GAsyncResult *result, GError **error); @@ -108,6 +97,7 @@ gboolean dconf_client_write_many (DConfCl const gchar *prefix, const gchar * const *keys, GVariant **values, + gsize n_values, gchar **tag, GCancellable *cancellable, GError **error); @@ -115,6 +105,7 @@ void dconf_client_write_many_async (DConfCl const gchar *prefix, const gchar * const *keys, GVariant **values, + gsize n_values, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); diff --git a/editor/dconf.vapi b/client/dconf.vapi index 52a49b4..75fd7b2 100644 --- a/editor/dconf.vapi +++ b/client/dconf.vapi @@ -5,7 +5,7 @@ namespace DConf { [CCode (cheader_filename = "dconf.h")] public class Client : GLib.Object { [CCode (has_construct_function = false)] - public Client (string context, bool can_write, DConf.WatchFunc? watch_func, GLib.DestroyNotify? notify); + public Client (string? profile = null, owned DConf.WatchFunc? watch_func = null); public bool is_writable (string prefix) throws GLib.Error; [CCode (array_length_type = "gsize")] public string[] list (string prefix); @@ -19,25 +19,42 @@ namespace DConf { public bool watch (string name) throws GLib.Error; public async bool watch_async (string name); public bool watch_finish (GLib.AsyncResult _result); - public bool write (string key, GLib.Variant value, uint64 sequence, GLib.Cancellable? cancellable) throws GLib.Error; + public bool write (string key, GLib.Variant? value, out string? tag = null, GLib.Cancellable? cancellable = null) throws GLib.Error; public async bool write_async (string key, GLib.Variant value, GLib.Cancellable? cancellable) throws GLib.Error; - public bool write_finish (GLib.AsyncResult _result, uint64 sequence) throws GLib.Error; - public bool write_many (string prefix, string keys, out unowned GLib.Variant values, uint64 sequence, GLib.Cancellable? cancellable) throws GLib.Error; + public bool write_finish (GLib.AsyncResult _result, out string? tag = null) throws GLib.Error; + public bool write_many (string prefix, string[] keys, GLib.Variant?[] values, out string? tag = null, GLib.Cancellable? cancellable = null) throws GLib.Error; public async bool write_many_async (string prefix, string keys, out unowned GLib.Variant values, GLib.Cancellable? cancellable) throws GLib.Error; public bool write_many_finish (GLib.AsyncResult _result, uint64 sequence) throws GLib.Error; } + [CCode (cheader_filename = "dconf.h")] public delegate void WatchFunc (DConf.Client client, string path, string items); [CCode (cheader_filename = "dconf.h")] - public static bool is_dir (string str); + public bool is_dir (string str, void *error = null); [CCode (cheader_filename = "dconf.h")] - public static bool is_key (string str); + public bool is_key (string str, void *error = null); [CCode (cheader_filename = "dconf.h")] - public static bool is_path (string str); + public bool is_path (string str, void *error = null); [CCode (cheader_filename = "dconf.h")] - public static bool is_rel (string str); + public bool is_rel (string str, void *error = null); [CCode (cheader_filename = "dconf.h")] - public static bool is_rel_dir (string str); + public bool is_rel_dir (string str, void *error = null); [CCode (cheader_filename = "dconf.h")] - public static bool is_rel_key (string str); + public bool is_rel_key (string str, void *error = null); + + + [CCode (cheader_filename = "dconf.h", cname="dconf_is_dir")] + public void verify_dir (string str) throws GLib.Error; + [CCode (cheader_filename = "dconf.h", cname="dconf_is_key")] + public void verify_key (string str) throws GLib.Error; + [CCode (cheader_filename = "dconf.h", cname="dconf_is_path")] + public void verify_path (string str) throws GLib.Error; + [CCode (cheader_filename = "dconf.h", cname="dconf_is_rel")] + public void verify_rel (string str) throws GLib.Error; + [CCode (cheader_filename = "dconf.h", cname="dconf_is_rel_dir")] + public void verify_rel_dir (string str) throws GLib.Error; + [CCode (cheader_filename = "dconf.h", cname="dconf_is_rel_key")] + public void verify_rel_key (string str) throws GLib.Error; } + +// vim:noet ts=4 sw=4 diff --git a/common/dconf-paths.c b/common/dconf-paths.c index de1e837..f31bab3 100644 --- a/common/dconf-paths.c +++ b/common/dconf-paths.c @@ -24,29 +24,59 @@ #define vars gchar c, l +#define DCONF_ERROR 0 +#define DCONF_ERROR_PATH 0 + #define absolute \ - if ((l = *string++) != '/') \ - return FALSE \ + if ((l = *string++) != '/') \ + { \ + g_set_error (error, DCONF_ERROR, DCONF_ERROR_PATH, \ + "dconf %s must begin with a slash", type); \ + return FALSE; \ + } #define relative \ + if (*string == '/') \ + { \ + g_set_error (error, DCONF_ERROR, DCONF_ERROR_PATH, \ + "dconf %s must not begin with a slash", type); \ + return FALSE; \ + } \ l = '/' #define no_double_slash \ - while ((c = *string++)) \ - { \ - if (c == '/' && l == '/') \ - return FALSE; \ - l = c; \ - } \ + while ((c = *string++)) \ + { \ + if (c == '/' && l == '/') \ + { \ + g_set_error (error, DCONF_ERROR, DCONF_ERROR_PATH, \ + "dconf %s must not contain two " \ + "consecutive slashes", type); \ + return FALSE; \ + } \ + l = c; \ + } \ #define path \ return TRUE #define key \ - return l != '/' + if (l == '/') \ + { \ + g_set_error (error, DCONF_ERROR, DCONF_ERROR_PATH, \ + "dconf %s must not end with a slash", type); \ + return FALSE; \ + } \ + return TRUE #define dir \ - return l == '/' + if (l != '/') \ + { \ + g_set_error (error, DCONF_ERROR, DCONF_ERROR_PATH, \ + "dconf %s must end with a slash", type); \ + return FALSE; \ + } \ + return TRUE @@ -62,9 +92,12 @@ * dconf_is_dir() for examples of each. **/ gboolean -dconf_is_path (const gchar *string) +dconf_is_path (const gchar *string, + GError **error) { +#define type "path" vars; absolute; no_double_slash; path; +#undef type } /** @@ -83,9 +116,12 @@ dconf_is_path (const gchar *string) * keys. **/ gboolean -dconf_is_key (const gchar *string) +dconf_is_key (const gchar *string, + GError **error) { +#define type "key" vars; absolute; no_double_slash; key; +#undef type } /** @@ -105,9 +141,12 @@ dconf_is_key (const gchar *string) * dirs. **/ gboolean -dconf_is_dir (const gchar *string) +dconf_is_dir (const gchar *string, + GError **error) { +#define type "dir" vars; absolute; no_double_slash; dir; +#undef type } /** @@ -123,9 +162,12 @@ dconf_is_dir (const gchar *string) * dconf_is_rel_key() and dconf_is_rel_dir() for examples of each. **/ gboolean -dconf_is_rel (const gchar *string) +dconf_is_rel (const gchar *string, + GError **error) { +#define type "relative path" vars; relative; no_double_slash; path; +#undef type } @@ -144,9 +186,12 @@ dconf_is_rel (const gchar *string) * not relative keys. **/ gboolean -dconf_is_rel_key (const gchar *string) +dconf_is_rel_key (const gchar *string, + GError **error) { +#define type "relative key" vars; relative; no_double_slash; key; +#undef type } /** @@ -166,7 +211,10 @@ dconf_is_rel_key (const gchar *string) * not relative dirs. **/ gboolean -dconf_is_rel_dir (const gchar *string) +dconf_is_rel_dir (const gchar *string, + GError **error) { +#define type "relative dir" vars; relative; no_double_slash; dir; +#undef type } diff --git a/common/dconf-paths.h b/common/dconf-paths.h index c9f3609..6697a86 100644 --- a/common/dconf-paths.h +++ b/common/dconf-paths.h @@ -25,12 +25,18 @@ #include <glib.h> -gboolean dconf_is_path (const gchar *string); -gboolean dconf_is_key (const gchar *string); -gboolean dconf_is_dir (const gchar *string); +gboolean dconf_is_path (const gchar *string, + GError **error); +gboolean dconf_is_key (const gchar *string, + GError **error); +gboolean dconf_is_dir (const gchar *string, + GError **error); -gboolean dconf_is_rel (const gchar *string); -gboolean dconf_is_rel_key (const gchar *string); -gboolean dconf_is_rel_dir (const gchar *string); +gboolean dconf_is_rel (const gchar *string, + GError **error); +gboolean dconf_is_rel_key (const gchar *string, + GError **error); +gboolean dconf_is_rel_dir (const gchar *string, + GError **error); #endif /* _dconf_common_h_ */ diff --git a/editor/Makefile.am b/editor/Makefile.am index e2e77a6..a5ec825 100644 --- a/editor/Makefile.am +++ b/editor/Makefile.am @@ -3,4 +3,4 @@ bin_PROGRAMS = dconf-editor AM_CFLAGS = $(gtk_CFLAGS) $(gee_CFLAGS) $(libxml_CFLAGS) -I$(top_srcdir)/common -I$(top_srcdir)/client AM_VALAFLAGS = --pkg gee-1.0 --pkg gtk+-2.0 --pkg libxml-2.0 dconf_editor_LDADD = ../client/libdconf.la $(gtk_LIBS) $(gee_LIBS) $(libxml_LIBS) -dconf_editor_SOURCES = dconf-editor.vala dconf-model.vala dconf-schema.vala dconf-view.vala dconf.vapi +dconf_editor_SOURCES = dconf-editor.vala dconf-model.vala dconf-schema.vala dconf-view.vala ../client/dconf.vapi diff --git a/editor/dconf-model.vala b/editor/dconf-model.vala index 42f5b3a..4762720 100644 --- a/editor/dconf-model.vala +++ b/editor/dconf-model.vala @@ -51,7 +51,7 @@ public class Key : GLib.Object _value = value; try { - model.client.write(full_name, value, 0, null); + model.client.write(full_name, value); } catch (GLib.Error e) { @@ -459,7 +459,7 @@ public class SettingsModel: GLib.Object, Gtk.TreeModel public SettingsModel() { - client = new DConf.Client("", true, null, null); + client = new DConf.Client (); root = new Directory(this, null, 0, "/", "/"); schemas = new SchemaList(); diff --git a/engine/dconf-engine.c b/engine/dconf-engine.c index 3efa5f1..02e5bf3 100644 --- a/engine/dconf-engine.c +++ b/engine/dconf-engine.c @@ -262,9 +262,8 @@ dconf_engine_load_profile (const gchar *profile, } DConfEngine * -dconf_engine_new (void) +dconf_engine_new (const gchar *profile) { - const gchar *profile; DConfEngine *engine; gint i; @@ -272,7 +271,8 @@ dconf_engine_new (void) engine->ref_count = 1; engine->shm = NULL; - profile = getenv ("DCONF_PROFILE"); + if (profile == NULL) + profile = getenv ("DCONF_PROFILE"); if (profile) { @@ -477,12 +477,12 @@ dconf_engine_write_many (DConfEngine *engine, } void -dconf_engine_set_locked (DConfEngine *engine, - DConfEngineMessage *dcem, - const gchar *path, - gboolean locked) +dconf_engine_set_lock (DConfEngine *engine, + DConfEngineMessage *dcem, + const gchar *path, + gboolean locked) { - dconf_engine_dcem (engine, dcem, "SetLocked", "(sb)", path, locked); + dconf_engine_dcem (engine, dcem, "SetLock", "(sb)", path, locked); } gchar ** diff --git a/engine/dconf-engine.h b/engine/dconf-engine.h index a8e7474..2beda07 100644 --- a/engine/dconf-engine.h +++ b/engine/dconf-engine.h @@ -23,7 +23,7 @@ typedef struct typedef GVariant * (*DConfEngineServiceFunc) (DConfEngineMessage *message); void dconf_engine_set_service_func (DConfEngineServiceFunc func); -DConfEngine * dconf_engine_new (void); +DConfEngine * dconf_engine_new (const gchar *profile); DConfEngine * dconf_engine_new_for_db (DConfEngineServiceFunc *service, const gchar *db_name); guint64 dconf_engine_get_state (DConfEngine *engine); @@ -73,7 +73,7 @@ gboolean dconf_engine_decode_notify (DConfEn const gchar *interface, const gchar *member, GVariant *body); -void dconf_engine_set_locked (DConfEngine *engine, +void dconf_engine_set_lock (DConfEngine *engine, DConfEngineMessage *message, const gchar *path, gboolean locked); diff --git a/gsettings/dconfsettingsbackend.c b/gsettings/dconfsettingsbackend.c index 66c0881..3ed35f3 100644 --- a/gsettings/dconfsettingsbackend.c +++ b/gsettings/dconfsettingsbackend.c @@ -611,7 +611,7 @@ static void dconf_settings_backend_init (DConfSettingsBackend *dcsb) { dconf_engine_set_service_func (dconf_settings_backend_service_func); - dcsb->engine = dconf_engine_new (); + dcsb->engine = dconf_engine_new (NULL); } static void diff --git a/tests/paths.c b/tests/paths.c index 0b6b0ce..a95530e 100644 --- a/tests/paths.c +++ b/tests/paths.c @@ -75,12 +75,12 @@ test_paths (void) const gchar *string = cases[i].string; guint flags; - flags = (dconf_is_path (string) ? 001 : 000) | - (dconf_is_key (string) ? 002 : 000) | - (dconf_is_dir (string) ? 004 : 000) | - (dconf_is_rel (string) ? 010 : 000) | - (dconf_is_rel_key (string) ? 020 : 000) | - (dconf_is_rel_dir (string) ? 040 : 000); + flags = (dconf_is_path (string, NULL) ? 001 : 000) | + (dconf_is_key (string, NULL) ? 002 : 000) | + (dconf_is_dir (string, NULL) ? 004 : 000) | + (dconf_is_rel (string, NULL) ? 010 : 000) | + (dconf_is_rel_key (string, NULL) ? 020 : 000) | + (dconf_is_rel_dir (string, NULL) ? 040 : 000); if (flags != cases[i].flags) { |