]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Fix compilation on newer HP-UX versions
authorRolf Eike Beer <eike@sf-mail.de>
Fri, 6 Jun 2014 15:44:16 +0000 (17:44 +0200)
committerBrad King <brad.king@kitware.com>
Fri, 6 Jun 2014 19:57:50 +0000 (15:57 -0400)
Newer HP-UX versions (e.g. 11.31) also offers F_SETTIMES, but with a
different struct for the timing information.

Suggested-by: Eric Berge <ericmberge@gmail.com>
libarchive/archive_write_disk_posix.c

index 1fac4cecfe8ea70e50be835921f85993af75dd78..ce53dadccc966321e0445fa7b572cc3bb82300c6 100644 (file)
@@ -2862,7 +2862,7 @@ set_time(int fd, int mode, const char *name,
 #endif
 }
 
-#ifdef F_SETTIMES /* Tru64 */
+#ifdef F_SETTIMES
 static int
 set_time_tru64(int fd, int mode, const char *name,
     time_t atime, long atime_nsec,
@@ -2870,19 +2870,21 @@ set_time_tru64(int fd, int mode, const char *name,
     time_t ctime, long ctime_nsec)
 {
        struct attr_timbuf tstamp;
-       struct timeval times[3];
-       times[0].tv_sec = atime;
-       times[0].tv_usec = atime_nsec / 1000;
-       times[1].tv_sec = mtime;
-       times[1].tv_usec = mtime_nsec / 1000;
-       times[2].tv_sec = ctime;
-       times[2].tv_usec = ctime_nsec / 1000;
-       tstamp.atime = times[0];
-       tstamp.mtime = times[1];
-       tstamp.ctime = times[2];
+       tstamp.atime.tv_sec = atime;
+       tstamp.mtime.tv_sec = mtime;
+       tstamp.ctime.tv_sec = ctime;
+#if defined (__hpux) && defined (__ia64)
+       tstamp.atime.tv_nsec = atime_nsec;
+       tstamp.mtime.tv_nsec = mtime_nsec;
+       tstamp.ctime.tv_nsec = ctime_nsec;
+#else
+       tstamp.atimetv_usec = atime_nsec / 1000;
+       tstamp.mtime.tv_usec = mtime_nsec / 1000;
+       tstamp.ctime.tv_usec = ctime_nsec / 1000;
+#endif
        return (fcntl(fd,F_SETTIMES,&tstamp));
 }
-#endif /* Tru64 */
+#endif /* F_SETTIMES */
 
 static int
 set_times(struct archive_write_disk *a,