197 lines
6.7 KiB
Java
197 lines
6.7 KiB
Java
/*
|
|
* Copyright (c) 2010, The Broad Institute
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person
|
|
* obtaining a copy of this software and associated documentation
|
|
* files (the "Software"), to deal in the Software without
|
|
* restriction, including without limitation the rights to use,
|
|
* copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
* copies of the Software, and to permit persons to whom the
|
|
* Software is furnished to do so, subject to the following
|
|
* conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be
|
|
* included in all copies or substantial portions of the Software.
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
* OTHER DEALINGS IN THE SOFTWARE.
|
|
*/
|
|
|
|
package org.broadinstitute.sting.jna.clibrary;
|
|
|
|
import com.sun.jna.*;
|
|
import com.sun.jna.ptr.NativeLongByReference;
|
|
|
|
/**
|
|
* Sparse port of the Standard C Library libc -lc.
|
|
*/
|
|
@SuppressWarnings("unused")
|
|
public class LibC {
|
|
|
|
static {
|
|
Native.register("c");
|
|
}
|
|
|
|
/** Operation not permitted */
|
|
public static final int EPERM = 1;
|
|
|
|
/** No such file or directory */
|
|
public static final int ENOENT = 2;
|
|
|
|
/** No such process */
|
|
public static final int ESRCH = 3;
|
|
|
|
/** Interrupted system call */
|
|
public static final int EINTR = 4;
|
|
|
|
/** I/O error */
|
|
public static final int EIO = 5;
|
|
|
|
/** No such device or address */
|
|
public static final int ENXIO = 6;
|
|
|
|
/** Argument list too long */
|
|
public static final int E2BIG = 7;
|
|
|
|
/** Exec format error */
|
|
public static final int ENOEXEC = 8;
|
|
|
|
/** Bad file number */
|
|
public static final int EBADF = 9;
|
|
|
|
/** No child processes */
|
|
public static final int ECHILD = 10;
|
|
|
|
/** Try again */
|
|
public static final int EAGAIN = 11;
|
|
|
|
/** Out of memory */
|
|
public static final int ENOMEM = 12;
|
|
|
|
/** Permission denied */
|
|
public static final int EACCES = 13;
|
|
|
|
/** Bad address */
|
|
public static final int EFAULT = 14;
|
|
|
|
/** Block device required */
|
|
public static final int ENOTBLK = 15;
|
|
|
|
/** Device or resource busy */
|
|
public static final int EBUSY = 16;
|
|
|
|
/** File exists */
|
|
public static final int EEXIST = 17;
|
|
|
|
/** Cross-device link */
|
|
public static final int EXDEV = 18;
|
|
|
|
/** No such device */
|
|
public static final int ENODEV = 19;
|
|
|
|
/** Not a directory */
|
|
public static final int ENOTDIR = 20;
|
|
|
|
/** Is a directory */
|
|
public static final int EISDIR = 21;
|
|
|
|
/** Invalid argument */
|
|
public static final int EINVAL = 22;
|
|
|
|
/** File table overflow */
|
|
public static final int ENFILE = 23;
|
|
|
|
/** Too many open files */
|
|
public static final int EMFILE = 24;
|
|
|
|
/** Not a typewriter */
|
|
public static final int ENOTTY = 25;
|
|
|
|
/** Text file busy */
|
|
public static final int ETXTBSY = 26;
|
|
|
|
/** File too large */
|
|
public static final int EFBIG = 27;
|
|
|
|
/** No space left on device */
|
|
public static final int ENOSPC = 28;
|
|
|
|
/** Illegal seek */
|
|
public static final int ESPIPE = 29;
|
|
|
|
/** Read-only file system */
|
|
public static final int EROFS = 30;
|
|
|
|
/** Too many links */
|
|
public static final int EMLINK = 31;
|
|
|
|
/** Broken pipe */
|
|
public static final int EPIPE = 32;
|
|
|
|
/** Math argument out of domain of func */
|
|
public static final int EDOM = 33;
|
|
|
|
/** Math result not representable */
|
|
public static final int ERANGE = 34;
|
|
|
|
/**
|
|
* Inserts or resets the environment variable name in the current environment list. If the variable name does not exist
|
|
* in the list, it is inserted with the given value. If the variable does exist, the argument overwrite is tested; if overwrite is zero, the
|
|
* variable is not reset, otherwise it is reset to the given value.
|
|
* @param name the environment variable name
|
|
* @param value the given value
|
|
* @param overwrite if overwrite is zero, the variable is not reset, otherwise it is reset to the given value
|
|
* @return the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.
|
|
* @throws LastErrorException [ENOMEM] The function failed because it was unable to allocate memory for the environment.
|
|
*/
|
|
public static native int setenv(String name, String value, int overwrite) throws LastErrorException;
|
|
|
|
/**
|
|
* Obtains the current value of the environment variable, name.
|
|
* @param name the environment variable name
|
|
* @return the value of the environment variable as a NUL-terminated string. If the variable name is not in the current environment, NULL is returned.
|
|
*/
|
|
public static native String getenv(String name);
|
|
|
|
/**
|
|
* The unsetenv() function deletes all instances of the variable name pointed to by name from the list. Note that only the variable name
|
|
* (e.g., "NAME") should be given; "NAME=value" will not work.
|
|
* @param name the environment variable name
|
|
* @return the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.
|
|
* @throws LastErrorException The function failed.
|
|
*/
|
|
public static native int unsetenv(String name) throws LastErrorException;
|
|
|
|
public static class timeval extends Structure {
|
|
public static class ByReference extends timeval implements Structure.ByReference {
|
|
}
|
|
|
|
public static class ByValue extends timeval implements Structure.ByValue {
|
|
}
|
|
|
|
public NativeLong tv_sec;
|
|
public NativeLong tv_usec;
|
|
}
|
|
|
|
/**
|
|
* The time() function returns the value of time in seconds since 0 hours, 0 minutes, 0 seconds, January 1, 1970, Coordinated Universal Time, without including leap seconds. If an error occurs, time() returns the value (time_t)-1.
|
|
* The return value is also stored in *tloc, provided that t is non-null.
|
|
* @param t the value of time in seconds, provided that t is non-null.
|
|
* @return the value of time in seconds
|
|
*/
|
|
public static native NativeLong time(NativeLongByReference t);
|
|
|
|
/**
|
|
* Returns the difference between two calendar times, (time1 - time0), expressed in seconds.
|
|
* @param time1 Time 1
|
|
* @param time0 Time 0
|
|
* @return the difference between two calendar times, (time1 - time0), expressed in seconds.
|
|
*/
|
|
public static native double difftime(NativeLong time1, NativeLong time0);
|
|
}
|