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 <davidz@redhat.com>
This commit is contained in:
parent
368d325ba8
commit
4e3664f22b
|
@ -378,7 +378,7 @@ extras/gudev/GUdev-1.0.gir: extras/gudev/libgudev-1.0.la $(G_IR_SCANNER) Makefil
|
||||||
--pkg=gobject-2.0 \
|
--pkg=gobject-2.0 \
|
||||||
-I$(top_srcdir)/extras \
|
-I$(top_srcdir)/extras \
|
||||||
-D_GUDEV_COMPILATION \
|
-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/gudev.h \
|
||||||
$(top_srcdir)/extras/gudev/gudevtypes.h \
|
$(top_srcdir)/extras/gudev/gudevtypes.h \
|
||||||
$(top_srcdir)/extras/gudev/gudevenums.h \
|
$(top_srcdir)/extras/gudev/gudevenums.h \
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#define __G_UDEV_TYPES_H__
|
#define __G_UDEV_TYPES_H__
|
||||||
|
|
||||||
#include <gudev/gudevenums.h>
|
#include <gudev/gudevenums.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
@ -36,9 +37,13 @@ typedef struct _GUdevDevice GUdevDevice;
|
||||||
* GUdevDeviceNumber:
|
* GUdevDeviceNumber:
|
||||||
*
|
*
|
||||||
* Corresponds to the standard #dev_t type as defined by POSIX (Until
|
* 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
|
G_END_DECLS
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue