Commit 5da1eaf2 authored by Charles Davis's avatar Charles Davis Committed by Alexandre Julliard

ntdll: Add support for BSD-style creation ("birth") time.

parent ed5e0a6e
...@@ -14177,6 +14177,51 @@ _ACEOF ...@@ -14177,6 +14177,51 @@ _ACEOF
fi fi
ac_fn_c_check_member "$LINENO" "struct stat" "st_birthtime" "ac_cv_member_struct_stat_st_birthtime" "$ac_includes_default"
if test "x$ac_cv_member_struct_stat_st_birthtime" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_STRUCT_STAT_ST_BIRTHTIME 1
_ACEOF
fi
ac_fn_c_check_member "$LINENO" "struct stat" "st_birthtim" "ac_cv_member_struct_stat_st_birthtim" "$ac_includes_default"
if test "x$ac_cv_member_struct_stat_st_birthtim" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_STRUCT_STAT_ST_BIRTHTIM 1
_ACEOF
fi
ac_fn_c_check_member "$LINENO" "struct stat" "st_birthtimespec" "ac_cv_member_struct_stat_st_birthtimespec" "$ac_includes_default"
if test "x$ac_cv_member_struct_stat_st_birthtimespec" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC 1
_ACEOF
fi
ac_fn_c_check_member "$LINENO" "struct stat" "__st_birthtime" "ac_cv_member_struct_stat___st_birthtime" "$ac_includes_default"
if test "x$ac_cv_member_struct_stat___st_birthtime" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_STRUCT_STAT___ST_BIRTHTIME 1
_ACEOF
fi
ac_fn_c_check_member "$LINENO" "struct stat" "__st_birthtim" "ac_cv_member_struct_stat___st_birthtim" "$ac_includes_default"
if test "x$ac_cv_member_struct_stat___st_birthtim" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_STRUCT_STAT___ST_BIRTHTIM 1
_ACEOF
fi
ac_fn_c_check_member "$LINENO" "struct sockaddr_in6" "sin6_scope_id" "ac_cv_member_struct_sockaddr_in6_sin6_scope_id" "#ifdef HAVE_SYS_TYPES_H ac_fn_c_check_member "$LINENO" "struct sockaddr_in6" "sin6_scope_id" "ac_cv_member_struct_sockaddr_in6_sin6_scope_id" "#ifdef HAVE_SYS_TYPES_H
......
...@@ -2269,7 +2269,19 @@ AC_CHECK_MEMBERS([struct option.name],,, ...@@ -2269,7 +2269,19 @@ AC_CHECK_MEMBERS([struct option.name],,,
#endif]) #endif])
dnl Check for stat.st_blocks and ns-resolved times dnl Check for stat.st_blocks and ns-resolved times
AC_CHECK_MEMBERS([struct stat.st_blocks,struct stat.st_mtim,struct stat.st_mtimespec,struct stat.st_ctim,struct stat.st_ctimespec,struct stat.st_atim,struct stat.st_atimespec]) AC_CHECK_MEMBERS([
struct stat.st_blocks,
struct stat.st_mtim,
struct stat.st_mtimespec,
struct stat.st_ctim,
struct stat.st_ctimespec,
struct stat.st_atim,
struct stat.st_atimespec,
struct stat.st_birthtime,
struct stat.st_birthtim,
struct stat.st_birthtimespec,
struct stat.__st_birthtime,
struct stat.__st_birthtim])
dnl Check for sin6_scope_id dnl Check for sin6_scope_id
AC_CHECK_MEMBERS([struct sockaddr_in6.sin6_scope_id],,, AC_CHECK_MEMBERS([struct sockaddr_in6.sin6_scope_id],,,
......
...@@ -1648,7 +1648,21 @@ static inline void get_file_times( const struct stat *st, LARGE_INTEGER *mtime, ...@@ -1648,7 +1648,21 @@ static inline void get_file_times( const struct stat *st, LARGE_INTEGER *mtime,
#elif defined(HAVE_STRUCT_STAT_ST_ATIMESPEC) #elif defined(HAVE_STRUCT_STAT_ST_ATIMESPEC)
atime->QuadPart += st->st_atimespec.tv_nsec / 100; atime->QuadPart += st->st_atimespec.tv_nsec / 100;
#endif #endif
#ifdef HAVE_STRUCT_STAT_ST_BIRTHTIME
RtlSecondsSince1970ToTime( st->st_birthtime, creation );
#ifdef HAVE_STRUCT_STAT_ST_BIRTHTIM
creation->QuadPart += st->st_birthtim.tv_nsec / 100;
#elif defined(HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC)
creation->QuadPart += st->st_birthtimespec.tv_nsec / 100;
#endif
#elif defined(HAVE_STRUCT_STAT___ST_BIRTHTIME)
RtlSecondsSince1970ToTime( st->__st_birthtime, creation );
#ifdef HAVE_STRUCT_STAT___ST_BIRTHTIM
creation->QuadPart += st->__st_birthtim.tv_nsec / 100;
#endif
#else
*creation = *mtime; *creation = *mtime;
#endif
} }
/* fill in the file information that depends on the stat info */ /* fill in the file information that depends on the stat info */
......
...@@ -860,6 +860,15 @@ ...@@ -860,6 +860,15 @@
/* Define to 1 if `st_atimespec' is a member of `struct stat'. */ /* Define to 1 if `st_atimespec' is a member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_ATIMESPEC #undef HAVE_STRUCT_STAT_ST_ATIMESPEC
/* Define to 1 if `st_birthtim' is a member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_BIRTHTIM
/* Define to 1 if `st_birthtime' is a member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_BIRTHTIME
/* Define to 1 if `st_birthtimespec' is a member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC
/* Define to 1 if `st_blocks' is a member of `struct stat'. */ /* Define to 1 if `st_blocks' is a member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_BLOCKS #undef HAVE_STRUCT_STAT_ST_BLOCKS
...@@ -875,6 +884,12 @@ ...@@ -875,6 +884,12 @@
/* Define to 1 if `st_mtimespec' is a member of `struct stat'. */ /* Define to 1 if `st_mtimespec' is a member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_MTIMESPEC #undef HAVE_STRUCT_STAT_ST_MTIMESPEC
/* Define to 1 if `__st_birthtim' is a member of `struct stat'. */
#undef HAVE_STRUCT_STAT___ST_BIRTHTIM
/* Define to 1 if `__st_birthtime' is a member of `struct stat'. */
#undef HAVE_STRUCT_STAT___ST_BIRTHTIME
/* Define to 1 if `tcps_connattempt' is a member of `struct tcpstat'. */ /* Define to 1 if `tcps_connattempt' is a member of `struct tcpstat'. */
#undef HAVE_STRUCT_TCPSTAT_TCPS_CONNATTEMPT #undef HAVE_STRUCT_TCPSTAT_TCPS_CONNATTEMPT
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment