During configure, several ioctl checks omit the correspondig include and a pwritev2 check uses the wrong feature test macro. Also, scrub/unicrash.c omits the appropriate include for u_init/u_cleanup. All of the above lead to implicit function declarations at build time. This commit fixes the same. Signed-off-by: Arjun Shankar <arjun@xxxxxxxxxx> --- We ran into these when trying to port Fedora to modern C: https://fedoraproject.org/wiki/Changes/PortingToModernC https://fedoraproject.org/wiki/Toolchain/PortingToModernC --- m4/package_libcdev.m4 | 7 +++++-- scrub/unicrash.c | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/m4/package_libcdev.m4 b/m4/package_libcdev.m4 index bb1ab49c..f987aa4a 100644 --- a/m4/package_libcdev.m4 +++ b/m4/package_libcdev.m4 @@ -117,6 +117,7 @@ AC_DEFUN([AC_HAVE_FIEMAP], #define _GNU_SOURCE #include <linux/fs.h> #include <linux/fiemap.h> +#include <sys/ioctl.h> ]], [[ struct fiemap *fiemap; ioctl(0, FS_IOC_FIEMAP, (unsigned long)fiemap); @@ -153,7 +154,7 @@ AC_DEFUN([AC_HAVE_PWRITEV2], [ AC_MSG_CHECKING([for pwritev2]) AC_LINK_IFELSE( [ AC_LANG_PROGRAM([[ -#define _BSD_SOURCE +#define _GNU_SOURCE #include <sys/uio.h> ]], [[ pwritev2(0, 0, 0, 0, 0); @@ -454,6 +455,7 @@ AC_DEFUN([AC_HAVE_SG_IO], AC_COMPILE_IFELSE( [ AC_LANG_PROGRAM([[ #include <scsi/sg.h> +#include <sys/ioctl.h> ]], [[ struct sg_io_hdr hdr; ioctl(0, SG_IO, &hdr); @@ -471,7 +473,8 @@ AC_DEFUN([AC_HAVE_HDIO_GETGEO], [ AC_MSG_CHECKING([for struct hd_geometry ]) AC_COMPILE_IFELSE( [ AC_LANG_PROGRAM([[ -#include <linux/hdreg.h>, +#include <linux/hdreg.h> +#include <sys/ioctl.h> ]], [[ struct hd_geometry hdr; ioctl(0, HDIO_GETGEO, &hdr); diff --git a/scrub/unicrash.c b/scrub/unicrash.c index 24d4ea58..c645fc73 100644 --- a/scrub/unicrash.c +++ b/scrub/unicrash.c @@ -14,6 +14,7 @@ #include <unicode/ustring.h> #include <unicode/unorm2.h> #include <unicode/uspoof.h> +#include <unicode/uclean.h> #include "libfrog/paths.h" #include "xfs_scrub.h" #include "common.h" -- 2.38.1