1*56bb7041Schristos# sys_stat_h.m4 serial 33 -*- Autoconf -*- 2*56bb7041Schristosdnl Copyright (C) 2006-2020 Free Software Foundation, Inc. 3*56bb7041Schristosdnl This file is free software; the Free Software Foundation 4*56bb7041Schristosdnl gives unlimited permission to copy and/or distribute it, 5*56bb7041Schristosdnl with or without modifications, as long as this notice is preserved. 6*56bb7041Schristos 7*56bb7041Schristosdnl From Eric Blake. 8*56bb7041Schristosdnl Provide a GNU-like <sys/stat.h>. 9*56bb7041Schristos 10*56bb7041SchristosAC_DEFUN([gl_HEADER_SYS_STAT_H], 11*56bb7041Schristos[ 12*56bb7041Schristos AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) 13*56bb7041Schristos 14*56bb7041Schristos dnl Check for broken stat macros. 15*56bb7041Schristos AC_REQUIRE([AC_HEADER_STAT]) 16*56bb7041Schristos 17*56bb7041Schristos gl_CHECK_NEXT_HEADERS([sys/stat.h]) 18*56bb7041Schristos 19*56bb7041Schristos dnl Ensure the type mode_t gets defined. 20*56bb7041Schristos AC_REQUIRE([AC_TYPE_MODE_T]) 21*56bb7041Schristos 22*56bb7041Schristos dnl Whether to enable precise timestamps in 'struct stat'. 23*56bb7041Schristos m4_ifdef([gl_WINDOWS_STAT_TIMESPEC], [ 24*56bb7041Schristos AC_REQUIRE([gl_WINDOWS_STAT_TIMESPEC]) 25*56bb7041Schristos ], [ 26*56bb7041Schristos WINDOWS_STAT_TIMESPEC=0 27*56bb7041Schristos ]) 28*56bb7041Schristos AC_SUBST([WINDOWS_STAT_TIMESPEC]) 29*56bb7041Schristos 30*56bb7041Schristos dnl Whether to ensure that struct stat.st_size is 64-bit wide. 31*56bb7041Schristos m4_ifdef([gl_LARGEFILE], [ 32*56bb7041Schristos AC_REQUIRE([gl_LARGEFILE]) 33*56bb7041Schristos ], [ 34*56bb7041Schristos WINDOWS_64_BIT_ST_SIZE=0 35*56bb7041Schristos ]) 36*56bb7041Schristos AC_SUBST([WINDOWS_64_BIT_ST_SIZE]) 37*56bb7041Schristos 38*56bb7041Schristos dnl Define types that are supposed to be defined in <sys/types.h> or 39*56bb7041Schristos dnl <sys/stat.h>. 40*56bb7041Schristos AC_CHECK_TYPE([nlink_t], [], 41*56bb7041Schristos [AC_DEFINE([nlink_t], [int], 42*56bb7041Schristos [Define to the type of st_nlink in struct stat, or a supertype.])], 43*56bb7041Schristos [#include <sys/types.h> 44*56bb7041Schristos #include <sys/stat.h>]) 45*56bb7041Schristos 46*56bb7041Schristos dnl Check for declarations of anything we want to poison if the 47*56bb7041Schristos dnl corresponding gnulib module is not in use. 48*56bb7041Schristos gl_WARN_ON_USE_PREPARE([[#include <sys/stat.h> 49*56bb7041Schristos ]], [fchmodat fstat fstatat futimens lchmod lstat mkdirat mkfifo mkfifoat 50*56bb7041Schristos mknod mknodat stat utimensat]) 51*56bb7041Schristos 52*56bb7041Schristos AC_REQUIRE([AC_C_RESTRICT]) 53*56bb7041Schristos]) 54*56bb7041Schristos 55*56bb7041SchristosAC_DEFUN([gl_SYS_STAT_MODULE_INDICATOR], 56*56bb7041Schristos[ 57*56bb7041Schristos dnl Use AC_REQUIRE here, so that the default settings are expanded once only. 58*56bb7041Schristos AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) 59*56bb7041Schristos gl_MODULE_INDICATOR_SET_VARIABLE([$1]) 60*56bb7041Schristos dnl Define it also as a C macro, for the benefit of the unit tests. 61*56bb7041Schristos gl_MODULE_INDICATOR_FOR_TESTS([$1]) 62*56bb7041Schristos]) 63*56bb7041Schristos 64*56bb7041SchristosAC_DEFUN([gl_SYS_STAT_H_DEFAULTS], 65*56bb7041Schristos[ 66*56bb7041Schristos AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) dnl for REPLACE_FCHDIR 67*56bb7041Schristos GNULIB_FCHMODAT=0; AC_SUBST([GNULIB_FCHMODAT]) 68*56bb7041Schristos GNULIB_FSTAT=0; AC_SUBST([GNULIB_FSTAT]) 69*56bb7041Schristos GNULIB_FSTATAT=0; AC_SUBST([GNULIB_FSTATAT]) 70*56bb7041Schristos GNULIB_FUTIMENS=0; AC_SUBST([GNULIB_FUTIMENS]) 71*56bb7041Schristos GNULIB_LCHMOD=0; AC_SUBST([GNULIB_LCHMOD]) 72*56bb7041Schristos GNULIB_LSTAT=0; AC_SUBST([GNULIB_LSTAT]) 73*56bb7041Schristos GNULIB_MKDIRAT=0; AC_SUBST([GNULIB_MKDIRAT]) 74*56bb7041Schristos GNULIB_MKFIFO=0; AC_SUBST([GNULIB_MKFIFO]) 75*56bb7041Schristos GNULIB_MKFIFOAT=0; AC_SUBST([GNULIB_MKFIFOAT]) 76*56bb7041Schristos GNULIB_MKNOD=0; AC_SUBST([GNULIB_MKNOD]) 77*56bb7041Schristos GNULIB_MKNODAT=0; AC_SUBST([GNULIB_MKNODAT]) 78*56bb7041Schristos GNULIB_STAT=0; AC_SUBST([GNULIB_STAT]) 79*56bb7041Schristos GNULIB_UTIMENSAT=0; AC_SUBST([GNULIB_UTIMENSAT]) 80*56bb7041Schristos GNULIB_OVERRIDES_STRUCT_STAT=0; AC_SUBST([GNULIB_OVERRIDES_STRUCT_STAT]) 81*56bb7041Schristos dnl Assume proper GNU behavior unless another module says otherwise. 82*56bb7041Schristos HAVE_FCHMODAT=1; AC_SUBST([HAVE_FCHMODAT]) 83*56bb7041Schristos HAVE_FSTATAT=1; AC_SUBST([HAVE_FSTATAT]) 84*56bb7041Schristos HAVE_FUTIMENS=1; AC_SUBST([HAVE_FUTIMENS]) 85*56bb7041Schristos HAVE_LCHMOD=1; AC_SUBST([HAVE_LCHMOD]) 86*56bb7041Schristos HAVE_LSTAT=1; AC_SUBST([HAVE_LSTAT]) 87*56bb7041Schristos HAVE_MKDIRAT=1; AC_SUBST([HAVE_MKDIRAT]) 88*56bb7041Schristos HAVE_MKFIFO=1; AC_SUBST([HAVE_MKFIFO]) 89*56bb7041Schristos HAVE_MKFIFOAT=1; AC_SUBST([HAVE_MKFIFOAT]) 90*56bb7041Schristos HAVE_MKNOD=1; AC_SUBST([HAVE_MKNOD]) 91*56bb7041Schristos HAVE_MKNODAT=1; AC_SUBST([HAVE_MKNODAT]) 92*56bb7041Schristos HAVE_UTIMENSAT=1; AC_SUBST([HAVE_UTIMENSAT]) 93*56bb7041Schristos REPLACE_FCHMODAT=0; AC_SUBST([REPLACE_FCHMODAT]) 94*56bb7041Schristos REPLACE_FSTAT=0; AC_SUBST([REPLACE_FSTAT]) 95*56bb7041Schristos REPLACE_FSTATAT=0; AC_SUBST([REPLACE_FSTATAT]) 96*56bb7041Schristos REPLACE_FUTIMENS=0; AC_SUBST([REPLACE_FUTIMENS]) 97*56bb7041Schristos REPLACE_LSTAT=0; AC_SUBST([REPLACE_LSTAT]) 98*56bb7041Schristos REPLACE_MKDIR=0; AC_SUBST([REPLACE_MKDIR]) 99*56bb7041Schristos REPLACE_MKFIFO=0; AC_SUBST([REPLACE_MKFIFO]) 100*56bb7041Schristos REPLACE_MKNOD=0; AC_SUBST([REPLACE_MKNOD]) 101*56bb7041Schristos REPLACE_STAT=0; AC_SUBST([REPLACE_STAT]) 102*56bb7041Schristos REPLACE_UTIMENSAT=0; AC_SUBST([REPLACE_UTIMENSAT]) 103*56bb7041Schristos]) 104