Configure ioctl request argument type [Bug #17759]
This commit is contained in:
parent
d4db18d6ad
commit
c2d9967f78
Notes:
git
2021-06-16 13:17:41 +09:00
30
configure.ac
30
configure.ac
@ -2753,6 +2753,36 @@ AS_IF([test "x$rb_cv_const_page_size" = xyes],
|
|||||||
[AC_DEFINE(HAVE_CONST_PAGE_SIZE, 1)],
|
[AC_DEFINE(HAVE_CONST_PAGE_SIZE, 1)],
|
||||||
[AC_DEFINE(HAVE_CONST_PAGE_SIZE, 0)]
|
[AC_DEFINE(HAVE_CONST_PAGE_SIZE, 0)]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
AS_IF([test "x$ac_cv_func_ioctl" = xyes], [
|
||||||
|
AC_CACHE_CHECK([ioctl request type], rb_cv_ioctl_request_type,
|
||||||
|
[rb_cv_ioctl_request_type=no
|
||||||
|
dnl corresponding NUM2IOCTLREQ needs to be defined
|
||||||
|
for type in "unsigned long:ULONG_MAX" int:INT_MAX; do
|
||||||
|
max=`echo $type | sed 's/.*://'`
|
||||||
|
type=`echo $type | sed 's/:.*//'`
|
||||||
|
RUBY_WERROR_FLAG([
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||||
|
@%:@include <limits.h>
|
||||||
|
@%:@include <sys/types.h>
|
||||||
|
@%:@if defined(HAVE_SYS_IOCTL_H) && !defined(_WIN32)
|
||||||
|
@%:@include <sys/ioctl.h>
|
||||||
|
@%:@endif
|
||||||
|
]], [[
|
||||||
|
$type req = $max;
|
||||||
|
if (ioctl(0, req)) {/* do nothing*/};
|
||||||
|
]])],
|
||||||
|
[rb_cv_ioctl_request_type="$type"])
|
||||||
|
])
|
||||||
|
test "x$rb_cv_ioctl_request_type" = xno || break
|
||||||
|
done])
|
||||||
|
AS_CASE(["$rb_cv_ioctl_request_type"], [no|int], [],
|
||||||
|
["unsigned long"], [
|
||||||
|
AC_DEFINE_UNQUOTED(IOCTL_REQ_TYPE, [$rb_cv_ioctl_request_type])
|
||||||
|
AC_DEFINE_UNQUOTED(NUM2IOCTLREQ(num), [NUM2ULONG(num)])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
: "runtime section" && {
|
: "runtime section" && {
|
||||||
|
4
io.c
4
io.c
@ -9810,8 +9810,8 @@ rb_f_select(int argc, VALUE *argv, VALUE obj)
|
|||||||
return rb_ensure(select_call, (VALUE)&args, select_end, (VALUE)&args);
|
return rb_ensure(select_call, (VALUE)&args, select_end, (VALUE)&args);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (defined(__linux__) && !defined(__ANDROID__)) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__)
|
#ifdef IOCTL_REQ_TYPE
|
||||||
typedef unsigned long ioctl_req_t;
|
typedef IOCTL_REQ_TYPE ioctl_req_t;
|
||||||
# define NUM2IOCTLREQ(num) NUM2ULONG(num)
|
# define NUM2IOCTLREQ(num) NUM2ULONG(num)
|
||||||
#else
|
#else
|
||||||
typedef int ioctl_req_t;
|
typedef int ioctl_req_t;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user