+++ /dev/null
-/*
- * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v. 2.0, which is available at
- * http://www.eclipse.org/legal/epl-2.0.
- *
- * This Source Code may also be made available under the following Secondary
- * Licenses when the conditions for such availability set forth in the
- * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
- * version 2 with the GNU Classpath Exception, which is available at
- * https://www.gnu.org/software/classpath/license.html.
- *
- * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
- */
-
-package com.sun.mail.mbox;
-
-import java.io.File;
-import java.io.FileDescriptor;
-import java.util.StringTokenizer;
-
-public class UNIXFile extends File {
- protected static final boolean loaded;
- protected static final int lockType;
-
- private static final long serialVersionUID = -7972156315284146651L;
-
- public UNIXFile(String name) {
- super(name);
- }
-
- // lock type enum
- protected static final int NONE = 0;
- protected static final int NATIVE = 1;
- protected static final int JAVA = 2;
-
- static {
- String lt = System.getProperty("mail.mbox.locktype", "native");
- int type = NATIVE;
- if (lt.equalsIgnoreCase("none"))
- type = NONE;
- else if (lt.equalsIgnoreCase("java"))
- type = JAVA;
- lockType = type;
-
- boolean lloaded = false;
- if (lockType == NATIVE) {
- try {
- System.loadLibrary("mbox");
- lloaded = true;
- } catch (UnsatisfiedLinkError e) {
- String classpath = System.getProperty("java.class.path");
- String sep = System.getProperty("path.separator");
- String arch = System.getProperty("os.arch");
- StringTokenizer st = new StringTokenizer(classpath, sep);
- while (st.hasMoreTokens()) {
- String path = st.nextToken();
- if (path.endsWith("/classes") ||
- path.endsWith("/mail.jar") ||
- path.endsWith("/javax.mail.jar")) {
- int i = path.lastIndexOf('/');
- String libdir = path.substring(0, i + 1) + "lib/";
- String lib = libdir + arch + "/libmbox.so";
- try {
- System.load(lib);
- lloaded = true;
- break;
- } catch (UnsatisfiedLinkError e2) {
- lib = libdir + "libmbox.so";
- try {
- System.load(lib);
- lloaded = true;
- break;
- } catch (UnsatisfiedLinkError e3) {
- continue;
- }
- }
- }
- }
- }
- }
- loaded = lloaded;
- if (loaded)
- initIDs(FileDescriptor.class, FileDescriptor.in);
- }
-
- /**
- * Return the access time of the file.
- */
- public static long lastAccessed(File file) {
- return lastAccessed0(file.getPath());
- }
-
- public long lastAccessed() {
- return lastAccessed0(getPath());
- }
-
- private static native void initIDs(Class<FileDescriptor> fdClass,
- FileDescriptor stdin);
-
- /**
- * Lock the file referred to by fd. The string mode is "r"
- * for a read lock or "rw" for a write lock. Don't block
- * if lock can't be acquired.
- */
- public static boolean lock(FileDescriptor fd, String mode) {
- return lock(fd, mode, false);
- }
-
- /**
- * Lock the file referred to by fd. The string mode is "r"
- * for a read lock or "rw" for a write lock. If block is set,
- * block waiting for the lock if necessary.
- */
- private static boolean lock(FileDescriptor fd, String mode, boolean block) {
- //return loaded && lock0(fd, mode);
- if (loaded) {
- boolean ret;
- //System.out.println("UNIXFile.lock(" + fd + ", " + mode + ")");
- ret = lock0(fd, mode, block);
- //System.out.println("UNIXFile.lock returns " + ret);
- return ret;
- }
- return false;
- }
-
- private static native boolean lock0(FileDescriptor fd, String mode,
- boolean block);
-
- public static native long lastAccessed0(String name);
-}