$NetBSD: patch-ag,v 1.3 2005/01/09 22:52:14 recht Exp $ --- src/extract.c.orig Mon Sep 13 10:12:04 2004 +++ src/extract.c Sun Jan 9 18:26:07 2005 @@ -195,7 +195,11 @@ mode = cur_info->st_mode ^ invert_permissions; } +#if (defined (__NetBSD__) && NetBSD > 199706 && !defined(NetBSD1_2)) + if (lchmod (file_name, mode) != 0) +#else if (chmod (file_name, mode) != 0) +#endif chmod_error_details (file_name, mode); } @@ -235,7 +239,12 @@ { struct utimbuf utimbuf; +#if !(defined (__NetBSD__) && NetBSD > 199706 && !defined(NetBSD1_2)) if (typeflag != SYMTYPE) +#else + struct timeval tv[2]; +#endif + { /* We do the utime before the chmod because some versions of utime are broken and trash the modes of the file. */ @@ -248,6 +257,7 @@ /* FIXME: incremental_option should set ctime too, but how? */ +#if !(defined (__NetBSD__) && NetBSD > 199706 && !defined(NetBSD1_2)) if (incremental_option) utimbuf.actime = stat_info->st_atime; else @@ -256,6 +266,16 @@ utimbuf.modtime = stat_info->st_mtime; if (utime (file_name, &utimbuf) < 0) +#else + if (incremental_option) + tv[0].tv_sec = stat_info->st_atime; + else + tv[0].tv_sec = start_time; + tv[0].tv_usec = 0; + tv[1].tv_sec = stat_info->st_mtime; + tv[1].tv_usec = 0; + if (lutimes (file_name, tv) < 0) +#endif utime_error (file_name); else {