diff -u ./source3/lib/system.c.orig ./source3/lib/system.c --- ./source3/lib/system.c.orig 2010-05-17 06:51:23.000000000 -0500 +++ ./source3/lib/system.c 2010-05-27 07:13:48.000000000 -0500 @@ -534,8 +534,12 @@ dst->st_ex_mtime = get_mtimespec(src); dst->st_ex_ctime = get_ctimespec(src); make_create_timespec(src, dst, fake_dir_create_times); +#ifdef HAVE_STAT_ST_BLKSIZE dst->st_ex_blksize = src->st_blksize; +#endif +#ifdef HAVE_STAT_ST_BLOCKS dst->st_ex_blocks = src->st_blocks; +#endif #ifdef HAVE_STAT_ST_FLAGS dst->st_ex_flags = src->st_flags; @@ -1205,17 +1209,15 @@ int sys_setgroups(gid_t UNUSED(primary_gid), int setlen, gid_t *gidset) { -#if !defined(HAVE_SETGROUPS) - errno = ENOSYS; - return -1; -#endif /* HAVE_SETGROUPS */ - #if defined(USE_BSD_SETGROUPS) return sys_bsd_setgroups(primary_gid, setlen, gidset); #elif defined(HAVE_BROKEN_GETGROUPS) return sys_broken_setgroups(setlen, gidset); -#else +#elif defined(HAVE_SETGROUPS) return setgroups(setlen, gidset); +#else + errno = ENOSYS; + return -1; #endif }