< prev index next >

src/java.base/unix/native/libjava/UnixFileSystem_md.c

Print this page
rev 17281 : 8181207: 8177809 breaks AIX 5.3, 6.1 builds
Reviewed-by:

@@ -227,17 +227,22 @@
     jlong rv = 0;
 
     WITH_FIELD_PLATFORM_STRING(env, file, ids.path, path) {
         struct stat64 sb;
         if (stat64(path, &sb) == 0) {
+#ifdef _AIX
+            /* AIX 5.3 backward compatibility. */
+            rv = 1000 * (jlong)sb.st_mtime;
+#else
 #ifndef MACOSX
             rv  = (jlong)sb.st_mtim.tv_sec * 1000;
             rv += (jlong)sb.st_mtim.tv_nsec / 1000000;
 #else
             rv  = (jlong)sb.st_mtimespec.tv_sec * 1000;
             rv += (jlong)sb.st_mtimespec.tv_nsec / 1000000;
 #endif
+#endif
         }
     } END_PLATFORM_STRING(env, path);
     return rv;
 }
 

@@ -417,18 +422,22 @@
 
         if (stat64(path, &sb) == 0) {
             struct timeval tv[2];
 
             /* Preserve access time */
+#ifdef _AIX
+            tv[0].tv_sec = sb.st_atime;
+            tv[0].tv_usec = 0;
+#else
 #ifndef MACOSX
             tv[0].tv_sec = sb.st_atim.tv_sec;
             tv[0].tv_usec = sb.st_atim.tv_nsec / 1000;
 #else
             tv[0].tv_sec = sb.st_atimespec.tv_sec;
             tv[0].tv_usec = sb.st_atimespec.tv_nsec / 1000;
 #endif
-
+#endif
             /* Change last-modified time */
             tv[1].tv_sec = time / 1000;
             tv[1].tv_usec = (time % 1000) * 1000;
 
             if (utimes(path, tv) == 0)
< prev index next >