Browse Source

configure: improve check for POSIX ioctl

Instead of relying on system #ifdefs which may or may not be correct,
detect the POSIX ioctl signature at configure time.
Ramiro Polla 6 months ago
parent
commit
00b64fca55
2 changed files with 3 additions and 1 deletions
  1. 2 0
      configure
  2. 1 1
      libavdevice/v4l2.c

+ 2 - 0
configure

@@ -2524,6 +2524,7 @@ HAVE_LIST="
     opencl_videotoolbox
     perl
     pod2man
+    posix_ioctl
     texi2html
     xmllint
     zlib_gzip
@@ -7166,6 +7167,7 @@ xmllint --version  > /dev/null 2>&1 && enable xmllint   || disable xmllint
 check_headers linux/fb.h
 check_headers linux/videodev2.h
 test_code cc linux/videodev2.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_sanitized struct_v4l2_frmivalenum_discrete
+test_code cc sys/ioctl.h "int ioctl(int, int, ...)" && enable posix_ioctl
 
 # check V4L2 codecs available in the API
 if enabled v4l2_m2m; then

+ 1 - 1
libavdevice/v4l2.c

@@ -111,7 +111,7 @@ struct video_data {
     int (*open_f)(const char *file, int oflag, ...);
     int (*close_f)(int fd);
     int (*dup_f)(int fd);
-#if defined(__sun) || defined(__BIONIC__) || defined(__musl__) /* POSIX-like */
+#if HAVE_POSIX_IOCTL
     int (*ioctl_f)(int fd, int request, ...);
 #else
     int (*ioctl_f)(int fd, unsigned long int request, ...);