diff --git a/ChangeLog b/ChangeLog index 399641ba..668703d7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -12,6 +12,10 @@ for the definition of uid_t and gid_t. * lib/pwmem.c: do not include , "pwio.h" is sufficient here. + * configure.in: Check if the stat structure has a st_atim or + st_atimensec field. + * libmisc/copydir.c: Conditionally use the stat's st_atim and + st_atimensec fields. 2008-08-26 Nicolas François diff --git a/libmisc/copydir.c b/libmisc/copydir.c index b887303c..cdd20370 100644 --- a/libmisc/copydir.c +++ b/libmisc/copydir.c @@ -288,16 +288,21 @@ 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 { -#if defined(_BSD_SOURCE) || defined(_SVID_SOURCE) +#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; 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[0].tv_usec = sb.st_atimensec / 1000; mt[1].tv_sec = sb.st_mtime; +#ifdef HAVE_STRUCT_STAT_ST_ATIMENSEC + mt[0].tv_usec = sb.st_atimensec / 1000; mt[1].tv_usec = sb.st_mtimensec / 1000; +#else + mt[0].tv_usec = 0; + mt[1].tv_usec = 0; +#endif #endif if (S_ISDIR (sb.st_mode)) {