8214077: test java/io/File/SetLastModified.java fails on ARM32
Replace uses of stat with stat64 in java.base Reviewed-by: alanb
This commit is contained in:
parent
b83df1e1fc
commit
1d7662e428
@ -138,13 +138,13 @@ void os_getCmdlineAndUserInfo(JNIEnv *env, jobject jinfo, pid_t pid) {
|
||||
char *args = NULL;
|
||||
jstring cmdexe = NULL;
|
||||
char fn[32];
|
||||
struct stat stat_buf;
|
||||
struct stat64 stat_buf;
|
||||
|
||||
/*
|
||||
* Stat /proc/<pid> to get the user id
|
||||
*/
|
||||
snprintf(fn, sizeof fn, "/proc/%d", pid);
|
||||
if (stat(fn, &stat_buf) == 0) {
|
||||
if (stat64(fn, &stat_buf) == 0) {
|
||||
unix_getUserInfo(env, jinfo, stat_buf.st_uid);
|
||||
JNU_CHECK_EXCEPTION(env);
|
||||
}
|
||||
|
@ -56,6 +56,12 @@
|
||||
#define fileclose fclose
|
||||
#endif
|
||||
|
||||
#if defined(_ALLBSD_SOURCE)
|
||||
#define stat64 stat
|
||||
#define lstat64 lstat
|
||||
#define fstat64 fstat
|
||||
#endif
|
||||
|
||||
#if defined(__linux__) || defined(_ALLBSD_SOURCE)
|
||||
static const char *ETC_TIMEZONE_FILE = "/etc/timezone";
|
||||
static const char *ZONEINFO_DIR = "/usr/share/zoneinfo";
|
||||
@ -115,7 +121,7 @@ static char *
|
||||
findZoneinfoFile(char *buf, size_t size, const char *dir)
|
||||
{
|
||||
DIR *dirp = NULL;
|
||||
struct stat statbuf;
|
||||
struct stat64 statbuf;
|
||||
struct dirent *dp = NULL;
|
||||
char *pathname = NULL;
|
||||
int fd = -1;
|
||||
@ -156,7 +162,7 @@ findZoneinfoFile(char *buf, size_t size, const char *dir)
|
||||
if (pathname == NULL) {
|
||||
break;
|
||||
}
|
||||
RESTARTABLE(stat(pathname, &statbuf), res);
|
||||
RESTARTABLE(stat64(pathname, &statbuf), res);
|
||||
if (res == -1) {
|
||||
break;
|
||||
}
|
||||
@ -219,7 +225,7 @@ findZoneinfoFile(char *buf, size_t size, const char *dir)
|
||||
static char *
|
||||
getPlatformTimeZoneID()
|
||||
{
|
||||
struct stat statbuf;
|
||||
struct stat64 statbuf;
|
||||
char *tz = NULL;
|
||||
FILE *fp;
|
||||
int fd;
|
||||
@ -256,7 +262,7 @@ getPlatformTimeZoneID()
|
||||
/*
|
||||
* Next, try /etc/localtime to find the zone ID.
|
||||
*/
|
||||
RESTARTABLE(lstat(DEFAULT_ZONEINFO_FILE, &statbuf), res);
|
||||
RESTARTABLE(lstat64(DEFAULT_ZONEINFO_FILE, &statbuf), res);
|
||||
if (res == -1) {
|
||||
return NULL;
|
||||
}
|
||||
@ -296,7 +302,7 @@ getPlatformTimeZoneID()
|
||||
return NULL;
|
||||
}
|
||||
|
||||
RESTARTABLE(fstat(fd, &statbuf), res);
|
||||
RESTARTABLE(fstat64(fd, &statbuf), res);
|
||||
if (res == -1) {
|
||||
(void) close(fd);
|
||||
return NULL;
|
||||
@ -557,7 +563,7 @@ cleanupScf(scf_handle_t *h,
|
||||
static char *
|
||||
getSolarisDefaultZoneID() {
|
||||
char *tz = NULL;
|
||||
struct stat statbuf;
|
||||
struct stat64 statbuf;
|
||||
size_t size;
|
||||
char *buf;
|
||||
int fd;
|
||||
@ -597,7 +603,7 @@ getSolarisDefaultZoneID() {
|
||||
}
|
||||
cleanupScf(h, snap, inst, pg, prop, val, tz);
|
||||
|
||||
RESTARTABLE(stat(DEFAULT_ZONEINFO_FILE, &statbuf), res);
|
||||
RESTARTABLE(stat64(DEFAULT_ZONEINFO_FILE, &statbuf), res);
|
||||
if (res == -1) {
|
||||
return NULL;
|
||||
}
|
||||
|
@ -69,6 +69,7 @@
|
||||
#if defined(_ALLBSD_SOURCE)
|
||||
#ifndef MACOSX
|
||||
#define statvfs64 statvfs
|
||||
#define stat64 stat
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@ -121,8 +122,8 @@ Java_java_io_UnixFileSystem_canonicalize0(JNIEnv *env, jobject this,
|
||||
static jboolean
|
||||
statMode(const char *path, int *mode)
|
||||
{
|
||||
struct stat sb;
|
||||
if (stat(path, &sb) == 0) {
|
||||
struct stat64 sb;
|
||||
if (stat64(path, &sb) == 0) {
|
||||
*mode = sb.st_mode;
|
||||
return JNI_TRUE;
|
||||
}
|
||||
@ -229,8 +230,8 @@ Java_java_io_UnixFileSystem_getLastModifiedTime(JNIEnv *env, jobject this,
|
||||
jlong rv = 0;
|
||||
|
||||
WITH_FIELD_PLATFORM_STRING(env, file, ids.path, path) {
|
||||
struct stat sb;
|
||||
if (stat(path, &sb) == 0) {
|
||||
struct stat64 sb;
|
||||
if (stat64(path, &sb) == 0) {
|
||||
#if defined(_AIX)
|
||||
rv = (jlong)sb.st_mtime * 1000;
|
||||
rv += (jlong)sb.st_mtime_n / 1000000;
|
||||
@ -254,8 +255,8 @@ Java_java_io_UnixFileSystem_getLength(JNIEnv *env, jobject this,
|
||||
jlong rv = 0;
|
||||
|
||||
WITH_FIELD_PLATFORM_STRING(env, file, ids.path, path) {
|
||||
struct stat sb;
|
||||
if (stat(path, &sb) == 0) {
|
||||
struct stat64 sb;
|
||||
if (stat64(path, &sb) == 0) {
|
||||
rv = sb.st_size;
|
||||
}
|
||||
} END_PLATFORM_STRING(env, path);
|
||||
@ -408,9 +409,9 @@ Java_java_io_UnixFileSystem_setLastModifiedTime(JNIEnv *env, jobject this,
|
||||
jboolean rv = JNI_FALSE;
|
||||
|
||||
WITH_FIELD_PLATFORM_STRING(env, file, ids.path, path) {
|
||||
struct stat sb;
|
||||
struct stat64 sb;
|
||||
|
||||
if (stat(path, &sb) == 0) {
|
||||
if (stat64(path, &sb) == 0) {
|
||||
struct timeval tv[2];
|
||||
|
||||
/* Preserve access time */
|
||||
|
Loading…
x
Reference in New Issue
Block a user