From b12c7dbb53023d1ea9e7df20137c0ad6ba21b9f0 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Fri, 29 Aug 2008 09:29:07 -0700 Subject: Deal with systems that don't initialize birthtime correctly. Pointed out by SATOH Fumiyasu . Jeremy. (This used to be commit 4f60348c0a934123a8e15bc741076366f6713390) --- source3/lib/time.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'source3') diff --git a/source3/lib/time.c b/source3/lib/time.c index 3cf0cb4f64..8cefef6e23 100644 --- a/source3/lib/time.c +++ b/source3/lib/time.c @@ -860,20 +860,26 @@ struct timespec get_create_timespec(const SMB_STRUCT_STAT *pst,bool fake_dirs) } #if defined(HAVE_STAT_ST_BIRTHTIMESPEC) - return pst->st_birthtimespec; + ret = pst->st_birthtimespec; #elif defined(HAVE_STAT_ST_BIRTHTIMENSEC) ret.tv_sec = pst->st_birthtime; ret.tv_nsec = pst->st_birthtimenspec; - return ret; #elif defined(HAVE_STAT_ST_BIRTHTIME) ret.tv_sec = pst->st_birthtime; ret.tv_nsec = 0; - return ret; #else ret.tv_sec = calc_create_time(pst); ret.tv_nsec = 0; - return ret; #endif + + /* Deal with systems that don't initialize birthtime correctly. + * Pointed out by SATOH Fumiyasu . + */ + if (null_timespec(ret)) { + ret.tv_sec = calc_create_time(pst); + ret.tv_nsec = 0; + } + return ret; } /**************************************************************************** -- cgit