dnl #
-dnl # 6.8.x replaced strlcpy with strscpy. Check for both so we can provide
-dnl # appropriate fallbacks.
+dnl # 6.8 removed strlcpy.
dnl #
AC_DEFUN([ZFS_AC_KERNEL_SRC_STRLCPY], [
ZFS_LINUX_TEST_SRC([kernel_has_strlcpy], [
])
])
-AC_DEFUN([ZFS_AC_KERNEL_SRC_STRSCPY], [
- ZFS_LINUX_TEST_SRC([kernel_has_strscpy], [
- #include <linux/string.h>
- ], [
- const char *src = "goodbye";
- char dst[32];
- ssize_t len;
- len = strscpy(dst, src, sizeof (dst));
- ])
-])
-
AC_DEFUN([ZFS_AC_KERNEL_STRLCPY], [
AC_MSG_CHECKING([whether strlcpy() exists])
ZFS_LINUX_TEST_RESULT([kernel_has_strlcpy], [
AC_MSG_RESULT([no])
])
])
-
-AC_DEFUN([ZFS_AC_KERNEL_STRSCPY], [
- AC_MSG_CHECKING([whether strscpy() exists])
- ZFS_LINUX_TEST_RESULT([kernel_has_strscpy], [
- AC_MSG_RESULT([yes])
- AC_DEFINE(HAVE_KERNEL_STRSCPY, 1,
- [strscpy() exists])
- ], [
- AC_MSG_RESULT([no])
- ])
-])
ZFS_AC_KERNEL_SRC_SET_SPECIAL_STATE
ZFS_AC_KERNEL_SRC_STANDALONE_LINUX_STDARG
ZFS_AC_KERNEL_SRC_STRLCPY
- ZFS_AC_KERNEL_SRC_STRSCPY
ZFS_AC_KERNEL_SRC_PAGEMAP_FOLIO_WAIT_BIT
ZFS_AC_KERNEL_SRC_ADD_DISK
ZFS_AC_KERNEL_SRC_KTHREAD
ZFS_AC_KERNEL_SET_SPECIAL_STATE
ZFS_AC_KERNEL_STANDALONE_LINUX_STDARG
ZFS_AC_KERNEL_STRLCPY
- ZFS_AC_KERNEL_STRSCPY
ZFS_AC_KERNEL_PAGEMAP_FOLIO_WAIT_BIT
ZFS_AC_KERNEL_ADD_DISK
ZFS_AC_KERNEL_KTHREAD
#include <linux/string.h>
-/* Fallbacks for kernel missing strlcpy */
#ifndef HAVE_KERNEL_STRLCPY
-
-#if defined(HAVE_KERNEL_STRSCPY)
/*
* strscpy is strlcpy, but returns an error on truncation. strlcpy is defined
* to return strlen(src), so detect error and override it.
return ((size_t)ret);
return (strlen(src));
}
-#else
-#error "no strlcpy fallback available"
-#endif
-
#endif /* HAVE_KERNEL_STRLCPY */
#endif /* _SPL_STRING_H */