Mercurial > hg > openjdk > jdk8u > jdk
changeset 14423:06dcb7564c86
8177809: File.lastModified() is losing milliseconds (always ends in 000)
Summary: Use higher precision time values where available.
Reviewed-by: bchristi, rriggs
author | bpb |
---|---|
date | Thu, 18 May 2017 12:53:19 -0700 |
parents | 3df509b41e51 |
children | 4a65e6e3116a |
files | src/solaris/native/java/io/UnixFileSystem_md.c test/java/io/File/SetLastModified.java |
diffstat | 2 files changed, 17 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/solaris/native/java/io/UnixFileSystem_md.c Fri Apr 23 01:47:38 2021 +0100 +++ b/src/solaris/native/java/io/UnixFileSystem_md.c Thu May 18 12:53:19 2017 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -208,7 +208,13 @@ WITH_FIELD_PLATFORM_STRING(env, file, ids.path, path) { struct stat64 sb; if (stat64(path, &sb) == 0) { - rv = 1000 * (jlong)sb.st_mtime; +#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 } } END_PLATFORM_STRING(env, path); return rv; @@ -392,8 +398,13 @@ struct timeval tv[2]; /* Preserve access time */ - tv[0].tv_sec = sb.st_atime; - tv[0].tv_usec = 0; +#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 /* Change last-modified time */ tv[1].tv_sec = time / 1000;
--- a/test/java/io/File/SetLastModified.java Fri Apr 23 01:47:38 2021 +0100 +++ b/test/java/io/File/SetLastModified.java Thu May 18 12:53:19 2017 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,7 +22,7 @@ */ /* @test - @bug 4091757 6652379 + @bug 4091757 6652379 8177809 @summary Basic test for setLastModified method */