From b77d4806fd5de50d0b017a3e6a19c5bfdef7b3e4 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Mon, 13 Feb 2023 12:47:31 -0800 Subject: [PATCH] v4l2: Define ioctl_req_t for posix/linux case this is an issue seen with musl based linux distros e.g. alpine [1] musl is not going to change this since it breaks ABI/API interfaces Newer compilers are stringent ( e.g. clang16 ) which can now detect signature mismatches in function pointers too, existing code warned but did not error with older clang Fixes gstv4l2object.c:544:23: error: incompatible function pointer types assigning to 'gint (*)(gint, ioctl_req_t, ...)' (aka 'int (*)(int, unsigned long, ...)') from 'int (int, int, ...)' [-Wincompatible-function-pointer-types] v4l2object->ioctl = ioctl; ^ ~~~~~ [1] https://gitlab.alpinelinux.org/alpine/aports/-/issues/7580 Upstream-Status: Submitted [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3950] Signed-off-by: Khem Raj --- sys/v4l2/gstv4l2object.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/v4l2/gstv4l2object.h b/sys/v4l2/gstv4l2object.h index d95b375..5223cbb 100644 --- a/sys/v4l2/gstv4l2object.h +++ b/sys/v4l2/gstv4l2object.h @@ -76,6 +76,8 @@ typedef gboolean (*GstV4l2UpdateFpsFunction) (GstV4l2Object * v4l2object); * 'unsigned long' for the 2nd parameter */ #ifdef __ANDROID__ typedef unsigned ioctl_req_t; +#elif defined(__linux__) && !defined(__GLIBC__) /* musl/linux */ +typedef int ioctl_req_t; #else typedef gulong ioctl_req_t; #endif