diff --git a/ChangeLog b/ChangeLog index 7a5099f1..d0fc8277 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-09-07 Nicolas François + + * libmisc/copydir.c, configure.in: Check for the presence of + st_mtim and st_mtimensec, as for st_atim and st_atimensec. + 2008-09-07 Nicolas François * src/gpasswd.c: Document the long options in the usage. diff --git a/configure.in b/configure.in index ebbb6d5c..8da687a4 100644 --- a/configure.in +++ b/configure.in @@ -54,6 +54,8 @@ AC_HEADER_STAT AC_CHECK_MEMBERS([struct stat.st_rdev]) AC_CHECK_MEMBERS([struct stat.st_atim]) AC_CHECK_MEMBERS([struct stat.st_atimensec]) +AC_CHECK_MEMBERS([struct stat.st_mtim]) +AC_CHECK_MEMBERS([struct stat.st_mtimensec]) AC_HEADER_TIME AC_STRUCT_TM diff --git a/libmisc/copydir.c b/libmisc/copydir.c index cdd20370..a9aec98a 100644 --- a/libmisc/copydir.c +++ b/libmisc/copydir.c @@ -288,19 +288,26 @@ static int copy_entry (const char *src, const char *dst, if (LSTAT (src, &sb) == -1) { /* If we cannot stat the file, do not care. */ } else { -#ifdef HAVE_STRUCT_STAT_ST_ATIM +#ifdef HAVE_STRUCT_STAT_ST_ATIM mt[0].tv_sec = sb.st_atim.tv_sec; mt[0].tv_usec = sb.st_atim.tv_nsec / 1000; +#else + mt[0].tv_sec = sb.st_atime; +#ifdef HAVE_STRUCT_STAT_ST_ATIMENSEC + mt[0].tv_usec = sb.st_atimensec / 1000; +#else + mt[0].tv_usec = 0; +#endif +#endif + +#ifdef HAVE_STRUCT_STAT_ST_MTIM mt[1].tv_sec = sb.st_mtim.tv_sec; mt[1].tv_usec = sb.st_mtim.tv_nsec / 1000; #else - mt[0].tv_sec = sb.st_atime; mt[1].tv_sec = sb.st_mtime; -#ifdef HAVE_STRUCT_STAT_ST_ATIMENSEC - mt[0].tv_usec = sb.st_atimensec / 1000; +#ifdef HAVE_STRUCT_STAT_ST_MTIMENSEC mt[1].tv_usec = sb.st_mtimensec / 1000; #else - mt[0].tv_usec = 0; mt[1].tv_usec = 0; #endif #endif