Add UDisksError error domain and use it
authorDavid Zeuthen <davidz@redhat.com>
Wed, 8 Sep 2010 21:25:28 +0000 (17:25 -0400)
committerDavid Zeuthen <davidz@redhat.com>
Wed, 8 Sep 2010 21:25:28 +0000 (17:25 -0400)
Signed-off-by: David Zeuthen <davidz@redhat.com>
src/Makefile.am
src/tests/Makefile.am
src/udisksfilesystemimpl.c
udisks/Makefile.am
udisks/udisks.h
udisks/udisksenums.h [new file with mode: 0644]
udisks/udisksenumtypes.c.template [new file with mode: 0644]
udisks/udisksenumtypes.h.template [new file with mode: 0644]
udisks/udiskserror.c [new file with mode: 0644]
udisks/udiskserror.h [new file with mode: 0644]

index 95f7442..39dc417 100644 (file)
@@ -16,7 +16,7 @@ INCLUDES = \
        -DPACKAGE_LOCALE_DIR=\""$(localedir)"\"                 \
        -DPACKAGE_LIB_DIR=\""$(libdir)"\"                       \
        -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT                 \
-       -DUDISKS_API_IS_SUBJECT_TO_CHANGE                       \
+       -DUDISKS_COMPILATION                                    \
        $(POLKIT_GOBJECT_1_CFLAGS)                              \
        $(GUDEV_CFLAGS)                                         \
        $(GLIB_CFLAGS)                                          \
@@ -87,7 +87,7 @@ udisks_daemon_CFLAGS =                                        \
 udisks_daemon_LDADD =                                  \
        $(GLIB_LIBS)                                    \
        $(GIO_LIBS)                                     \
-       $(top_builddir)/src/libudisks-daemon.la         \
+       libudisks-daemon.la                             \
        $(NULL)
 
 # ----------------------------------------------------------------------------------------------------
index 31e7370..32e9769 100644 (file)
@@ -16,7 +16,7 @@ INCLUDES = \
        -DPACKAGE_LOCALE_DIR=\""$(localedir)"\"                 \
        -DPACKAGE_LIB_DIR=\""$(libdir)"\"                       \
        -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT                 \
-       -DUDISKS_API_IS_SUBJECT_TO_CHANGE                       \
+       -DUDISKS_COMPILATION                                    \
        -DUDISKS_TEST_DIR=\""$(builddir)"\"                     \
        $(POLKIT_GOBJECT_1_CFLAGS)                              \
        $(GUDEV_CFLAGS)                                         \
index 1d33173..d2a53a9 100644 (file)
@@ -89,8 +89,8 @@ mount_on_job_completed (UDisksJob    *job,
   if (!success)
     {
       g_dbus_method_invocation_return_error (invocation,
-                                             G_DBUS_ERROR,
-                                             G_DBUS_ERROR_FAILED,
+                                             UDISKS_ERROR,
+                                             UDISKS_ERROR_FAILED,
                                              "Mounting the device failed: %s",
                                              message);
     }
@@ -119,7 +119,7 @@ handle_mount (UDisksFilesystem       *interface,
   job = UDISKS_JOB (udisks_daemon_launch_spawned_job (daemon,
                                                       NULL, /* GCancellable */
                                                       NULL, /* input string */
-                                                      "sleep %d", 2));
+                                                      "/bin/false"));
   /* this blows a little bit - would be nice to have an easier way to
    * get back to the object from the job
    */
index 312cfe3..5c909d5 100644 (file)
@@ -14,6 +14,7 @@ INCLUDES = \
        -DPACKAGE_LOCALE_DIR=\""$(localedir)"\"                 \
        -DPACKAGE_LIB_DIR=\""$(libdir)"\"                       \
        -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT                 \
+       -DUDISKS_COMPILATION                                    \
        $(GLIB_CFLAGS)                                          \
        $(GIO_CFLAGS)                                           \
        $(NULL)
@@ -27,6 +28,18 @@ generated-bindings.stamp : Makefile.am $(top_srcdir)/data/org.freedesktop.UDisks
                $(top_srcdir)/data/org.freedesktop.UDisks.xml                           \
                $(NULL)
 
+udisksenumtypes.h: udisksenums.h udisksenumtypes.h.template
+       ( top_builddir=`cd $(top_builddir) && pwd`; \
+        cd $(srcdir) && glib-mkenums --template udisksenumtypes.h.template udisksenums.h ) | \
+          sed 's,U_TYPE_DISKS,UDISKS_TYPE,' | sed 's,u_disks,udisks,' > \
+          udisksenumtypes.h.tmp && mv udisksenumtypes.h.tmp udisksenumtypes.h
+
+udisksenumtypes.c: udisksenums.h udisksenumtypes.c.template
+       ( top_builddir=`cd $(top_builddir) && pwd`; \
+        cd $(srcdir) && glib-mkenums --template udisksenumtypes.c.template udisksenums.h ) | \
+          sed 's,U_TYPE_DISKS,UDISKS_TYPE,' | sed 's,u_disks,udisks,' > \
+          udisksenumtypes.c.tmp && mv udisksenumtypes.c.tmp udisksenumtypes.c
+
 BUILT_SOURCES =                                                                                \
        generated-bindings.stamp                                                        \
        generated-bindings.h                                                            \
@@ -39,28 +52,34 @@ BUILT_SOURCES =                                                                             \
        generated-udiskslinuxsysfsdevice.h      generated-udiskslinuxsysfsdevice.c      \
        generated-udisksfilesystem.h            generated-udisksfilesystem.c            \
        generated-udisksjob.h                   generated-udisksjob.c                   \
+       udisksenumtypes.h                       udisksenumtypes.c                       \
        $(NULL)
 
 lib_LTLIBRARIES=libudisks.la
 
 libudisksincludedir=$(includedir)/udisks-1.2/udisks
+
 libudisksinclude_HEADERS=
-       udisks.h                                        \
-       generated-bindings.h                            \
-       generated-udiskslinuxsysfsdevice.h              \
-       generated-udisksblockdevice.h                   \
-       generated-udisksblockdeviceprobed.h             \
-       generated-udisksfilesystem.h                    \
-       generated-udisksjob.h                           \
+       udisks.h                                                                        \
+       udisksenums.h                                                                   \
+       udisksenumtypes.h                                                               \
+       udiskserror.h                                                                   \
+       generated-bindings.h                                                            \
+       generated-udiskslinuxsysfsdevice.h                                              \
+       generated-udisksblockdevice.h                                                   \
+       generated-udisksblockdeviceprobed.h                                             \
+       generated-udisksfilesystem.h                                                    \
+       generated-udisksjob.h                                                           \
        $(NULL)
 
-libudisks_la_SOURCES =                                 \
-       $(BUILT_SOURCES)                                \
+libudisks_la_SOURCES =                                                                 \
+       $(BUILT_SOURCES)                                                                \
+       udisksenums.h                                                                   \
+       udiskserror.h                           udiskserror.c                           \
        $(NULL)
 
 libudisks_la_CPPFLAGS =                                \
        -DG_LOG_DOMAIN=\"libudisks\"                    \
-       $(AM_CPPFLAGS)                                  \
        $(NULL)
 
 libudisks_la_CFLAGS =                                  \
index 14fe8f5..dd33396 100644 (file)
 #ifndef __UDISKS_H__
 #define __UDISKS_H__
 
-#ifndef UDISKS_API_IS_SUBJECT_TO_CHANGE
+#if !defined(UDISKS_API_IS_SUBJECT_TO_CHANGE) && !defined(UDISKS_COMPILATION)
 #error  libudisks is unstable API. You must define UDISKS_API_IS_SUBJECT_TO_CHANGE before including udisks/udisks.h
 #endif
 
+#define __UDISKS_INSIDE_UDISKS_H__
+#include <udisks/udiskstypes.h>
+#include <udisks/udisksenums.h>
+#include <udisks/udisksenumtypes.h>
+#include <udisks/udiskserror.h>
 #include <udisks/generated-bindings.h>
+#undef __UDISKS_INSIDE_UDISKS_H__
 
 #endif /* __UDISKS_H__ */
diff --git a/udisks/udisksenums.h b/udisks/udisksenums.h
new file mode 100644 (file)
index 0000000..e822548
--- /dev/null
@@ -0,0 +1,45 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
+ *
+ * Copyright (C) 2007-2010 David Zeuthen <zeuthen@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ */
+
+#if !defined (__UDISKS_INSIDE_UDISKS_H__) && !defined (UDISKS_COMPILATION)
+#error "Only <udisks/udisks.h> can be included directly."
+#endif
+
+#ifndef __UDISKS_ENUMS_H__
+#define __UDISKS_ENUMS_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+/**
+ * UDisksError:
+ * @UDISKS_ERROR_FAILED: The operation failed.
+ *
+ *  Error codes for the #UDISKS_ERROR error domain.
+ */
+typedef enum
+{
+  UDISKS_ERROR_FAILED
+} UDisksError;
+
+G_END_DECLS
+
+#endif /* __UDISKS_ENUMS_H__ */
diff --git a/udisks/udisksenumtypes.c.template b/udisks/udisksenumtypes.c.template
new file mode 100644 (file)
index 0000000..12f074c
--- /dev/null
@@ -0,0 +1,40 @@
+/*** BEGIN file-header ***/
+#include "udisksenums.h"
+#include "udisksenumtypes.h"
+
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+/* enumerations from "@filename@" */
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+GType
+@enum_name@_get_type (void)
+{
+  static volatile gsize g_define_type_id__volatile = 0;
+
+  if (g_once_init_enter (&g_define_type_id__volatile))
+    {
+      static const G@Type@Value values[] = {
+/*** END value-header ***/
+
+/*** BEGIN value-production ***/
+        { @VALUENAME@, "@VALUENAME@", "@valuenick@" },
+/*** END value-production ***/
+
+/*** BEGIN value-tail ***/
+        { 0, NULL, NULL }
+      };
+      GType g_define_type_id =
+        g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);
+      g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
+    }
+
+  return g_define_type_id__volatile;
+}
+
+/*** END value-tail ***/
+
+/*** BEGIN file-tail ***/
+/*** END file-tail ***/
diff --git a/udisks/udisksenumtypes.h.template b/udisks/udisksenumtypes.h.template
new file mode 100644 (file)
index 0000000..02f353a
--- /dev/null
@@ -0,0 +1,24 @@
+/*** BEGIN file-header ***/
+#ifndef __UDISKS_ENUM_TYPES_H__
+#define __UDISKS_ENUM_TYPES_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+
+/* enumerations from "@filename@" */
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+GType @enum_name@_get_type (void) G_GNUC_CONST;
+#define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type ())
+/*** END value-header ***/
+
+/*** BEGIN file-tail ***/
+G_END_DECLS
+
+#endif /* __UDISKS_ENUM_TYPES_H__ */
+/*** END file-tail ***/
diff --git a/udisks/udiskserror.c b/udisks/udiskserror.c
new file mode 100644 (file)
index 0000000..19a4ae7
--- /dev/null
@@ -0,0 +1,40 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
+ *
+ * Copyright (C) 2007-2010 David Zeuthen <zeuthen@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ */
+
+#include "config.h"
+
+#include "udiskserror.h"
+
+static const GDBusErrorEntry dbus_error_entries[] =
+{
+  {UDISKS_ERROR_FAILED,            "org.freedesktop.UDisks.Error.Failed"},
+};
+
+GQuark
+udisks_error_quark (void)
+{
+  G_STATIC_ASSERT (G_N_ELEMENTS (dbus_error_entries) - 1 == UDISKS_ERROR_FAILED);
+  static volatile gsize quark_volatile = 0;
+  g_dbus_error_register_error_domain ("udisks-error-quark",
+                                      &quark_volatile,
+                                      dbus_error_entries,
+                                      G_N_ELEMENTS (dbus_error_entries));
+  return (GQuark) quark_volatile;
+}
diff --git a/udisks/udiskserror.h b/udisks/udiskserror.h
new file mode 100644 (file)
index 0000000..22d60a9
--- /dev/null
@@ -0,0 +1,45 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
+ *
+ * Copyright (C) 2007-2010 David Zeuthen <zeuthen@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ */
+
+#if !defined (__UDISKS_INSIDE_UDISKS_H__) && !defined (UDISKS_COMPILATION)
+#error "Only <udisks/udisks.h> can be included directly."
+#endif
+
+#ifndef __UDISKS_ERROR_H__
+#define __UDISKS_ERROR_H__
+
+#include <udisks/udiskstypes.h>
+
+G_BEGIN_DECLS
+
+/**
+ * UDISKS_ERROR:
+ *
+ * Error domain for UDisks. Errors in this domain will be form the
+ * #UDisksError enumeration. See #GError for more information on error
+ * domains.
+ */
+#define UDISKS_ERROR (udisks_error_quark ())
+
+GQuark udisks_error_quark (void);
+
+G_END_DECLS
+
+#endif /* __UDISKS_ERROR_H__ */