From: David Zeuthen Date: Sun, 8 Nov 2009 17:25:55 +0000 (-0500) Subject: gudev: Fix up GUdevDeviceNumber X-Git-Tag: 174~730 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;ds=sidebyside;h=4e3664f22b39c3efa33f5778a651a083b5e1f544;p=elogind.git gudev: Fix up GUdevDeviceNumber Actually dev_t is an unsigned quad type (e.g. 64-bit even on 32-bit x86) so defining it to be an integer is wrong and not future proof. Thus, redefine it to actually be a dev_t (as originally wanted) and instead add a work-around for GNOME bug #584517, see https://bugzilla.gnome.org/show_bug.cgi?id=584517 for details. This way, GObject Introspection will still work. This change is technically an API/ABI break but - all released GUdev versions requires the user to understand that the API/ABI is unstable by requiring the G_UDEV_API_IS_SUBJECT_TO_CHANGE symbols to be defined - functions using GUdevDeviceNumber are rarely used so we don't bump the so number. Signed-off-by: David Zeuthen --- diff --git a/Makefile.am b/Makefile.am index 2185614c4..92598a60c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -378,7 +378,7 @@ extras/gudev/GUdev-1.0.gir: extras/gudev/libgudev-1.0.la $(G_IR_SCANNER) Makefil --pkg=gobject-2.0 \ -I$(top_srcdir)/extras \ -D_GUDEV_COMPILATION \ - -DG_UDEV_API_IS_SUBJECT_TO_CHANGE \ + -D_GUDEV_WORK_AROUND_DEV_T_BUG \ $(top_srcdir)/extras/gudev/gudev.h \ $(top_srcdir)/extras/gudev/gudevtypes.h \ $(top_srcdir)/extras/gudev/gudevenums.h \ diff --git a/extras/gudev/gudevtypes.h b/extras/gudev/gudevtypes.h index 66156723f..b95cf9752 100644 --- a/extras/gudev/gudevtypes.h +++ b/extras/gudev/gudevtypes.h @@ -26,6 +26,7 @@ #define __G_UDEV_TYPES_H__ #include +#include G_BEGIN_DECLS @@ -36,9 +37,13 @@ typedef struct _GUdevDevice GUdevDevice; * GUdevDeviceNumber: * * Corresponds to the standard #dev_t type as defined by POSIX (Until - * bug 584517 is resolved this is aliased to an integer). + * bug 584517 is resolved this work-around is needed). */ -typedef int GUdevDeviceNumber; +#ifdef _GUDEV_WORK_AROUND_DEV_T_BUG +typedef guint64 GUdevDeviceNumber; /* __UQUAD_TYPE */ +#else +typedef dev_t GUdevDeviceNumber; +#endif G_END_DECLS