[dconf] Add DCONF_ERROR error domain



commit 2fbcd57784e845dfee4425a67ae22e02af264498
Author: Ryan Lortie <desrt desrt ca>
Date:   Sun Nov 24 22:07:36 2013 -0500

    Add DCONF_ERROR error domain
    
    Add a DCONF_ERROR error domain with associated DConfError enum type.
    
    Use this instead of the adhoc approach that we've been taking up to this
    point.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=704638

 client/dconf.h          |    1 +
 common/Makefile.am      |    2 +
 common/dconf-error.c    |   54 +++++++++++++++++++++++++++++++++++++++++++++++
 common/dconf-error.h    |   37 ++++++++++++++++++++++++++++++++
 common/dconf-paths.c    |    5 +--
 docs/dconf-docs.xml     |    1 +
 docs/dconf-sections.txt |    8 +++++++
 engine/dconf-engine.c   |    1 +
 engine/dconf-engine.h   |    8 -------
 9 files changed, 106 insertions(+), 11 deletions(-)
---
diff --git a/client/dconf.h b/client/dconf.h
index d946bd3..02b8371 100644
--- a/client/dconf.h
+++ b/client/dconf.h
@@ -22,6 +22,7 @@
 #ifndef __dconf_h__
 #define __dconf_h__
 
+#include <common/dconf-error.h>
 #include <common/dconf-paths.h>
 #include <common/dconf-changeset.h>
 #include <client/dconf-client.h>
diff --git a/common/Makefile.am b/common/Makefile.am
index 0400298..3435c0f 100644
--- a/common/Makefile.am
+++ b/common/Makefile.am
@@ -3,6 +3,7 @@ include $(top_srcdir)/Makefile.gtester
 dconfcommonincludedir = $(dconfincludedir)/common
 dconfcommoninclude_HEADERS = \
        dconf-changeset.h       \
+       dconf-error.h           \
        dconf-paths.h
 
 noinst_LIBRARIES = libdconf-common.a libdconf-common-shared.a libdconf-common-hidden.a
@@ -10,6 +11,7 @@ noinst_LIBRARIES = libdconf-common.a libdconf-common-shared.a libdconf-common-hi
 libdconf_common_a_CFLAGS = $(glib_CFLAGS) -DG_LOG_DOMAIN=\"dconf\"
 libdconf_common_a_SOURCES = \
        dconf-changeset.c       \
+       dconf-error.c           \
        dconf-paths.c
 
 libdconf_common_shared_a_CFLAGS = $(libdconf_common_a_CFLAGS) -fPIC -DPIC
diff --git a/common/dconf-error.c b/common/dconf-error.c
new file mode 100644
index 0000000..6cf1fee
--- /dev/null
+++ b/common/dconf-error.c
@@ -0,0 +1,54 @@
+/*
+ * Copyright © 2013 Canonical Limited
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the licence, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Ryan Lortie <desrt desrt ca>
+ */
+
+#include "config.h"
+
+#include "dconf-error.h"
+
+/**
+ * SECTION:error
+ * @title: DConfError
+ * @short_description: GError error codes
+ *
+ * These are the error codes that can be returned from dconf APIs.
+ **/
+
+/**
+ * DCONF_ERROR:
+ *
+ * The error domain of DConf.
+ *
+ * Since: 0.20
+ **/
+
+/**
+ * DConfError:
+ * @DCONF_ERROR_FAILED: generic error
+ * @DCONF_ERROR_PATH: the path given for the operation was a valid path
+ *   or was not of the expected type (dir vs. key)
+ * @DCONF_ERROR_NOT_WRITABLE: the given key was not writable
+ *
+ * Possible errors from DConf functions.
+ *
+ * Since: 0.20
+ **/
+
+G_DEFINE_QUARK (dconf_error, dconf_error)
diff --git a/common/dconf-error.h b/common/dconf-error.h
new file mode 100644
index 0000000..ca8e8b2
--- /dev/null
+++ b/common/dconf-error.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright © 2013 Canonical Limited
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the licence, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Ryan Lortie <desrt desrt ca>
+ */
+
+#ifndef __dconf_error_h__
+#define __dconf_error_h__
+
+#include <glib.h>
+
+#define DCONF_ERROR (dconf_error_quark ())
+GQuark dconf_error_quark (void);
+
+typedef enum
+{
+  DCONF_ERROR_FAILED,
+  DCONF_ERROR_PATH,
+  DCONF_ERROR_NOT_WRITABLE
+} DConfError;
+
+#endif /* __dconf_error_h__ */
diff --git a/common/dconf-paths.c b/common/dconf-paths.c
index 834750a..467f525 100644
--- a/common/dconf-paths.c
+++ b/common/dconf-paths.c
@@ -24,6 +24,8 @@
 
 #include "dconf-paths.h"
 
+#include "dconf-error.h"
+
 /**
  * SECTION:paths
  * @title: dconf Paths
@@ -40,9 +42,6 @@
 
 #define vars gchar c, l
 
-#define DCONF_ERROR 0
-#define DCONF_ERROR_PATH 0
-
 #define nonnull \
   if (string == NULL) {                                                 \
     g_set_error (error, DCONF_ERROR, DCONF_ERROR_PATH,                  \
diff --git a/docs/dconf-docs.xml b/docs/dconf-docs.xml
index 58ed7ec..7874d0a 100644
--- a/docs/dconf-docs.xml
+++ b/docs/dconf-docs.xml
@@ -13,6 +13,7 @@
 
   <chapter>
     <title>DConf Client API</title>
+    <xi:include href='xml/error.xml'/>
     <xi:include href='xml/paths.xml'/>
     <xi:include href='xml/changeset.xml'/>
     <xi:include href='xml/client.xml'/>
diff --git a/docs/dconf-sections.txt b/docs/dconf-sections.txt
index f21abc8..e6ad847 100644
--- a/docs/dconf-sections.txt
+++ b/docs/dconf-sections.txt
@@ -1,4 +1,12 @@
 <SECTION>
+<FILE>error</FILE>
+DConfError
+DCONF_ERROR
+<SUBSECTION Standard>
+dconf_error_quark
+</SECTION>
+
+<SECTION>
 <FILE>client</FILE>
 DConfClient
 dconf_client_new
diff --git a/engine/dconf-engine.c b/engine/dconf-engine.c
index 471cb1f..f9c3144 100644
--- a/engine/dconf-engine.c
+++ b/engine/dconf-engine.c
@@ -24,6 +24,7 @@
 #define _XOPEN_SOURCE 600
 #include "dconf-engine.h"
 
+#include "../common/dconf-error.h"
 #include "../gvdb/gvdb-reader.h"
 #include <string.h>
 #include <stdlib.h>
diff --git a/engine/dconf-engine.h b/engine/dconf-engine.h
index a7677d3..0b969a2 100644
--- a/engine/dconf-engine.h
+++ b/engine/dconf-engine.h
@@ -30,14 +30,6 @@ typedef struct _DConfEngine DConfEngine;
 
 typedef struct _DConfEngineCallHandle DConfEngineCallHandle;
 
-typedef enum
-{
-  DCONF_ERROR_FAILED,
-  DCONF_ERROR_NOT_WRITABLE
-} DConfEngineError;
-
-#define DCONF_ERROR (g_quark_from_static_string ("dconf error quark"))
-
 /* These functions need to be implemented by the client library */
 G_GNUC_INTERNAL
 void                    dconf_engine_dbus_init_for_testing              (void);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]