< prev index next >

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

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


 212                 mode |= amode;
 213             else
 214                 mode &= ~amode;
 215             if (chmod(path, mode) >= 0) {
 216                 rv = JNI_TRUE;
 217             }
 218         }
 219     } END_PLATFORM_STRING(env, path);
 220     return rv;
 221 }
 222 
 223 JNIEXPORT jlong JNICALL
 224 Java_java_io_UnixFileSystem_getLastModifiedTime(JNIEnv *env, jobject this,
 225                                                 jobject file)
 226 {
 227     jlong rv = 0;
 228 
 229     WITH_FIELD_PLATFORM_STRING(env, file, ids.path, path) {
 230         struct stat64 sb;
 231         if (stat64(path, &sb) == 0) {
 232 #ifndef MACOSX
 233             rv  = (jlong)sb.st_mtim.tv_sec * 1000;
 234             rv += (jlong)sb.st_mtim.tv_nsec / 1000000;

 235 #else

 236             rv  = (jlong)sb.st_mtimespec.tv_sec * 1000;
 237             rv += (jlong)sb.st_mtimespec.tv_nsec / 1000000;




 238 #endif
 239         }
 240     } END_PLATFORM_STRING(env, path);
 241     return rv;
 242 }
 243 
 244 
 245 JNIEXPORT jlong JNICALL
 246 Java_java_io_UnixFileSystem_getLength(JNIEnv *env, jobject this,
 247                                       jobject file)
 248 {
 249     jlong rv = 0;
 250 
 251     WITH_FIELD_PLATFORM_STRING(env, file, ids.path, path) {
 252         struct stat64 sb;
 253         if (stat64(path, &sb) == 0) {
 254             rv = sb.st_size;
 255         }
 256     } END_PLATFORM_STRING(env, path);
 257     return rv;


 402                 rv = JNI_TRUE;
 403             }
 404         } END_PLATFORM_STRING(env, toPath);
 405     } END_PLATFORM_STRING(env, fromPath);
 406     return rv;
 407 }
 408 
 409 JNIEXPORT jboolean JNICALL
 410 Java_java_io_UnixFileSystem_setLastModifiedTime(JNIEnv *env, jobject this,
 411                                                 jobject file, jlong time)
 412 {
 413     jboolean rv = JNI_FALSE;
 414 
 415     WITH_FIELD_PLATFORM_STRING(env, file, ids.path, path) {
 416         struct stat64 sb;
 417 
 418         if (stat64(path, &sb) == 0) {
 419             struct timeval tv[2];
 420 
 421             /* Preserve access time */
 422 #ifndef MACOSX
 423             tv[0].tv_sec = sb.st_atim.tv_sec;
 424             tv[0].tv_usec = sb.st_atim.tv_nsec / 1000;
 425 #else

 426             tv[0].tv_sec = sb.st_atimespec.tv_sec;
 427             tv[0].tv_usec = sb.st_atimespec.tv_nsec / 1000;




 428 #endif
 429 
 430             /* Change last-modified time */
 431             tv[1].tv_sec = time / 1000;
 432             tv[1].tv_usec = (time % 1000) * 1000;
 433 
 434             if (utimes(path, tv) == 0)
 435                 rv = JNI_TRUE;
 436         }
 437     } END_PLATFORM_STRING(env, path);
 438 
 439     return rv;
 440 }
 441 
 442 
 443 JNIEXPORT jboolean JNICALL
 444 Java_java_io_UnixFileSystem_setReadOnly(JNIEnv *env, jobject this,
 445                                         jobject file)
 446 {
 447     jboolean rv = JNI_FALSE;
 448 
 449     WITH_FIELD_PLATFORM_STRING(env, file, ids.path, path) {




 212                 mode |= amode;
 213             else
 214                 mode &= ~amode;
 215             if (chmod(path, mode) >= 0) {
 216                 rv = JNI_TRUE;
 217             }
 218         }
 219     } END_PLATFORM_STRING(env, path);
 220     return rv;
 221 }
 222 
 223 JNIEXPORT jlong JNICALL
 224 Java_java_io_UnixFileSystem_getLastModifiedTime(JNIEnv *env, jobject this,
 225                                                 jobject file)
 226 {
 227     jlong rv = 0;
 228 
 229     WITH_FIELD_PLATFORM_STRING(env, file, ids.path, path) {
 230         struct stat64 sb;
 231         if (stat64(path, &sb) == 0) {
 232 #ifdef _AIX
 233             /* AIX 5.3 backward compatibility. */
 234             rv = 1000 * (jlong)sb.st_mtime;
 235             rv +=  (jlong)sb.st_mtime_n / 1000000;
 236 #else
 237 #ifdef MACOSX
 238             rv  = (jlong)sb.st_mtimespec.tv_sec * 1000;
 239             rv += (jlong)sb.st_mtimespec.tv_nsec / 1000000;
 240 #else
 241             rv  = (jlong)sb.st_mtim.tv_sec * 1000;
 242             rv += (jlong)sb.st_mtim.tv_nsec / 1000000;
 243 #endif
 244 #endif
 245         }
 246     } END_PLATFORM_STRING(env, path);
 247     return rv;
 248 }
 249 
 250 
 251 JNIEXPORT jlong JNICALL
 252 Java_java_io_UnixFileSystem_getLength(JNIEnv *env, jobject this,
 253                                       jobject file)
 254 {
 255     jlong rv = 0;
 256 
 257     WITH_FIELD_PLATFORM_STRING(env, file, ids.path, path) {
 258         struct stat64 sb;
 259         if (stat64(path, &sb) == 0) {
 260             rv = sb.st_size;
 261         }
 262     } END_PLATFORM_STRING(env, path);
 263     return rv;


 408                 rv = JNI_TRUE;
 409             }
 410         } END_PLATFORM_STRING(env, toPath);
 411     } END_PLATFORM_STRING(env, fromPath);
 412     return rv;
 413 }
 414 
 415 JNIEXPORT jboolean JNICALL
 416 Java_java_io_UnixFileSystem_setLastModifiedTime(JNIEnv *env, jobject this,
 417                                                 jobject file, jlong time)
 418 {
 419     jboolean rv = JNI_FALSE;
 420 
 421     WITH_FIELD_PLATFORM_STRING(env, file, ids.path, path) {
 422         struct stat64 sb;
 423 
 424         if (stat64(path, &sb) == 0) {
 425             struct timeval tv[2];
 426 
 427             /* Preserve access time */
 428 #ifdef _AIX
 429             tv[0].tv_sec = sb.st_atime;
 430             tv[0].tv_usec = sb.st_atime_n / 1000;
 431 #else
 432 #ifdef MACOSX
 433             tv[0].tv_sec = sb.st_atimespec.tv_sec;
 434             tv[0].tv_usec = sb.st_atimespec.tv_nsec / 1000;
 435 #else
 436             tv[0].tv_sec = sb.st_atim.tv_sec;
 437             tv[0].tv_usec = sb.st_atim.tv_nsec / 1000;
 438 #endif
 439 #endif

 440             /* Change last-modified time */
 441             tv[1].tv_sec = time / 1000;
 442             tv[1].tv_usec = (time % 1000) * 1000;
 443 
 444             if (utimes(path, tv) == 0)
 445                 rv = JNI_TRUE;
 446         }
 447     } END_PLATFORM_STRING(env, path);
 448 
 449     return rv;
 450 }
 451 
 452 
 453 JNIEXPORT jboolean JNICALL
 454 Java_java_io_UnixFileSystem_setReadOnly(JNIEnv *env, jobject this,
 455                                         jobject file)
 456 {
 457     jboolean rv = JNI_FALSE;
 458 
 459     WITH_FIELD_PLATFORM_STRING(env, file, ids.path, path) {


< prev index next >