File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libiconv / srcm4 / stat-time.m4
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Mar 17 13:38:46 2021 UTC (3 years, 3 months ago) by misho
Branches: libiconv, MAIN
CVS tags: v1_16p0, HEAD
libiconv 1.16

    1: # Checks for stat-related time functions.
    2: 
    3: # Copyright (C) 1998-1999, 2001, 2003, 2005-2007, 2009-2019 Free Software
    4: # Foundation, Inc.
    5: 
    6: # This file is free software; the Free Software Foundation
    7: # gives unlimited permission to copy and/or distribute it,
    8: # with or without modifications, as long as this notice is preserved.
    9: 
   10: dnl From Paul Eggert.
   11: 
   12: # st_atim.tv_nsec - Linux, Solaris, Cygwin
   13: # st_atimespec.tv_nsec - FreeBSD, NetBSD, if ! defined _POSIX_SOURCE
   14: # st_atimensec - FreeBSD, NetBSD, if defined _POSIX_SOURCE
   15: # st_atim.st__tim.tv_nsec - UnixWare (at least 2.1.2 through 7.1)
   16: 
   17: # st_birthtimespec - FreeBSD, NetBSD (hidden on OpenBSD 3.9, anyway)
   18: # st_birthtim - Cygwin 1.7.0+
   19: 
   20: AC_DEFUN([gl_STAT_TIME],
   21: [
   22:   AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
   23:   AC_CHECK_HEADERS_ONCE([sys/time.h])
   24: 
   25:   AC_CHECK_MEMBERS([struct stat.st_atim.tv_nsec],
   26:     [AC_CACHE_CHECK([whether struct stat.st_atim is of type struct timespec],
   27:        [ac_cv_typeof_struct_stat_st_atim_is_struct_timespec],
   28:        [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
   29:           [[
   30:             #include <sys/types.h>
   31:             #include <sys/stat.h>
   32:             #if HAVE_SYS_TIME_H
   33:             # include <sys/time.h>
   34:             #endif
   35:             #include <time.h>
   36:             struct timespec ts;
   37:             struct stat st;
   38:           ]],
   39:           [[
   40:             st.st_atim = ts;
   41:           ]])],
   42:           [ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=yes],
   43:           [ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=no])])
   44:      if test $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec = yes; then
   45:        AC_DEFINE([TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC], [1],
   46:          [Define to 1 if the type of the st_atim member of a struct stat is
   47:           struct timespec.])
   48:      fi],
   49:     [AC_CHECK_MEMBERS([struct stat.st_atimespec.tv_nsec], [],
   50:        [AC_CHECK_MEMBERS([struct stat.st_atimensec], [],
   51:           [AC_CHECK_MEMBERS([struct stat.st_atim.st__tim.tv_nsec], [], [],
   52:              [#include <sys/types.h>
   53:               #include <sys/stat.h>])],
   54:           [#include <sys/types.h>
   55:            #include <sys/stat.h>])],
   56:        [#include <sys/types.h>
   57:         #include <sys/stat.h>])],
   58:     [#include <sys/types.h>
   59:      #include <sys/stat.h>])
   60: ])
   61: 
   62: # Check for st_birthtime, a feature from UFS2 (FreeBSD, NetBSD, OpenBSD, etc.)
   63: # and NTFS (Cygwin).
   64: # There was a time when this field was named st_createtime (21 June
   65: # 2002 to 16 July 2002) But that window is very small and applied only
   66: # to development code, so systems still using that configuration are
   67: # not supported.  See revisions 1.10 and 1.11 of FreeBSD's
   68: # src/sys/ufs/ufs/dinode.h.
   69: #
   70: AC_DEFUN([gl_STAT_BIRTHTIME],
   71: [
   72:   AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
   73:   AC_CHECK_HEADERS_ONCE([sys/time.h])
   74:   AC_CHECK_MEMBERS([struct stat.st_birthtimespec.tv_nsec], [],
   75:     [AC_CHECK_MEMBERS([struct stat.st_birthtimensec], [],
   76:       [AC_CHECK_MEMBERS([struct stat.st_birthtim.tv_nsec], [], [],
   77:          [#include <sys/types.h>
   78:           #include <sys/stat.h>])],
   79:        [#include <sys/types.h>
   80:         #include <sys/stat.h>])],
   81:     [#include <sys/types.h>
   82:      #include <sys/stat.h>])
   83: ])

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>