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 <davidz@redhat.com>
--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 \
#define __G_UDEV_TYPES_H__
#include <gudev/gudevenums.h>
+#include <sys/types.h>
G_BEGIN_DECLS
* 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