diff options
author | klondike <klondike@xiscosoft.es> | 2012-11-19 03:43:35 +0100 |
---|---|---|
committer | klondike <klondike@xiscosoft.es> | 2012-11-19 03:43:35 +0100 |
commit | e0b2bb0a47754d0887cecbb3f69f6f7bdcd1addb (patch) | |
tree | 095e577a148cb0997ce34492ece283561323e43e | |
parent | d68f6556449d3533bf368baa8631fbbcef125133 (diff) |
Check for unshare on the configure and provide an inline replacement when not available
-rw-r--r-- | configure.ac | 10 | ||||
-rw-r--r-- | src/test/test-udev.c | 11 |
2 files changed, 14 insertions, 7 deletions
diff --git a/configure.ac b/configure.ac index 87385e406c..d609ef2604 100644 --- a/configure.ac +++ b/configure.ac @@ -188,6 +188,16 @@ AC_SUBST(ACL_LIBS) AM_CONDITIONAL([HAVE_ACL], [test "x$have_acl" != xno]) # ------------------------------------------------------------------------------ + +AC_CHECK_DECL([unshare], + [AC_DEFINE(HAVE_UNSHARE, 1, [Define if unshare is declared])], + [AC_CHECK_DECL([SYS_unshare], + [ ] , + [AC_MSG_ERROR([*** unshare nor SYS_unshare found.])], + [#include <syscall.h>])], + [#include <sched.h>]) + +# ------------------------------------------------------------------------------ AC_ARG_WITH(firmware-path, AS_HELP_STRING([--with-firmware-path=DIR[[[:DIR[...]]]]], [Firmware search path (default=ROOTPREFIX/lib/firmware/updates:ROOTPREFIX/lib/firmware)]), diff --git a/src/test/test-udev.c b/src/test/test-udev.c index ff3bbbc8d3..8f2aee4a47 100644 --- a/src/test/test-udev.c +++ b/src/test/test-udev.c @@ -31,16 +31,13 @@ #include <sched.h> #include <sys/mount.h> #include <sys/signalfd.h> -#include <sys/syscall.h> #include "udev.h" -#ifndef SYS_unshare -#error "libc fails to set SYS_unshare: please file a bug report with eudev" -#endif - -#ifndef unshare -#define unshare(__X) syscall(SYS_unshare, __X) +#ifndef HAVE_UNSHARE +#include <sys/syscall.h> +/* Provide our own replacement with local reach*/ +static inline int unshare (int x) { return syscall(SYS_unshare, x); } #endif void udev_main_log(struct udev *udev, int priority, |