@@ -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);
@@ -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"
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@redhat.com> --- 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(-)