/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class jtux_UFile */

#ifndef _Included_jtux_UFile
#define _Included_jtux_UFile
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     jtux_UFile
 * Method:    access
 * Signature: (Ljava/lang/String;I)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_access
  (JNIEnv *, jclass, jstring, jint);

/*
 * Class:     jtux_UFile
 * Method:    chmod
 * Signature: (Ljava/lang/String;I)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_chmod
  (JNIEnv *, jclass, jstring, jint);

/*
 * Class:     jtux_UFile
 * Method:    chown
 * Signature: (Ljava/lang/String;JJ)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_chown
  (JNIEnv *, jclass, jstring, jlong, jlong);

/*
 * Class:     jtux_UFile
 * Method:    close
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_close
  (JNIEnv *, jclass, jint);

/*
 * Class:     jtux_UFile
 * Method:    dup
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_jtux_UFile_dup
  (JNIEnv *, jclass, jint);

/*
 * Class:     jtux_UFile
 * Method:    dup2
 * Signature: (II)I
 */
JNIEXPORT jint JNICALL Java_jtux_UFile_dup2
  (JNIEnv *, jclass, jint, jint);

/*
 * Class:     jtux_UFile
 * Method:    fchmod
 * Signature: (II)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_fchmod
  (JNIEnv *, jclass, jint, jint);

/*
 * Class:     jtux_UFile
 * Method:    fchown
 * Signature: (IJJ)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_fchown
  (JNIEnv *, jclass, jint, jlong, jlong);

/*
 * Class:     jtux_UFile
 * Method:    fcntl
 * Signature: (III)I
 */
JNIEXPORT jint JNICALL Java_jtux_UFile_fcntl
  (JNIEnv *, jclass, jint, jint, jint);

/*
 * Class:     jtux_UFile
 * Method:    FD_ZERO
 * Signature: (Ljtux/UFile$fd_set;)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_FD_1ZERO
  (JNIEnv *, jclass, jobject);

/*
 * Class:     jtux_UFile
 * Method:    FD_SET
 * Signature: (ILjtux/UFile$fd_set;)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_FD_1SET
  (JNIEnv *, jclass, jint, jobject);

/*
 * Class:     jtux_UFile
 * Method:    FD_CLR
 * Signature: (ILjtux/UFile$fd_set;)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_FD_1CLR
  (JNIEnv *, jclass, jint, jobject);

/*
 * Class:     jtux_UFile
 * Method:    FD_ISSET
 * Signature: (ILjtux/UFile$fd_set;)Z
 */
JNIEXPORT jboolean JNICALL Java_jtux_UFile_FD_1ISSET
  (JNIEnv *, jclass, jint, jobject);

/*
 * Class:     jtux_UFile
 * Method:    fdatasync
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_fdatasync
  (JNIEnv *, jclass, jint);

/*
 * Class:     jtux_UFile
 * Method:    fstat
 * Signature: (ILjtux/UFile$s_stat;)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_fstat
  (JNIEnv *, jclass, jint, jobject);

/*
 * Class:     jtux_UFile
 * Method:    fstatvfs
 * Signature: (ILjtux/UFile$s_statvfs;)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_fstatvfs
  (JNIEnv *, jclass, jint, jobject);

/*
 * Class:     jtux_UFile
 * Method:    fsync
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_fsync
  (JNIEnv *, jclass, jint);

/*
 * Class:     jtux_UFile
 * Method:    ftruncate
 * Signature: (IJ)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_ftruncate
  (JNIEnv *, jclass, jint, jlong);

/*
 * Class:     jtux_UFile
 * Method:    lchown
 * Signature: (Ljava/lang/String;JJ)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_lchown
  (JNIEnv *, jclass, jstring, jlong, jlong);

/*
 * Class:     jtux_UFile
 * Method:    link
 * Signature: (Ljava/lang/String;Ljava/lang/String;)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_link
  (JNIEnv *, jclass, jstring, jstring);

/*
 * Class:     jtux_UFile
 * Method:    lockf
 * Signature: (IIJ)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_lockf
  (JNIEnv *, jclass, jint, jint, jlong);

/*
 * Class:     jtux_UFile
 * Method:    lseek
 * Signature: (IJI)J
 */
JNIEXPORT jlong JNICALL Java_jtux_UFile_lseek
  (JNIEnv *, jclass, jint, jlong, jint);

/*
 * Class:     jtux_UFile
 * Method:    lstat
 * Signature: (Ljava/lang/String;Ljtux/UFile$s_stat;)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_lstat
  (JNIEnv *, jclass, jstring, jobject);

/*
 * Class:     jtux_UFile
 * Method:    mkfifo
 * Signature: (Ljava/lang/String;I)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_mkfifo
  (JNIEnv *, jclass, jstring, jint);

/*
 * Class:     jtux_UFile
 * Method:    mknod
 * Signature: (Ljava/lang/String;II)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_mknod
  (JNIEnv *, jclass, jstring, jint, jlong);

/*
 * Class:     jtux_UFile
 * Method:    mkstemp
 * Signature: (Ljava/lang/StringBuffer;)I
 */
JNIEXPORT jint JNICALL Java_jtux_UFile_mkstemp
  (JNIEnv *, jclass, jobject);

/*
 * Class:     jtux_UFile
 * Method:    open
 * Signature: (Ljava/lang/String;II)I
 */
JNIEXPORT jint JNICALL Java_jtux_UFile_open
  (JNIEnv *, jclass, jstring, jint, jint);

/*
 * Class:     jtux_UFile
 * Method:    pipe
 * Signature: ([I)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_pipe
  (JNIEnv *, jclass, jintArray);

/*
 * Class:     jtux_UFile
 * Method:    poll
 * Signature: ([Ljtux/UFile$s_pollfd;II)I
 */
JNIEXPORT jint JNICALL Java_jtux_UFile_poll
  (JNIEnv *, jclass, jobjectArray, jint, jint);

/*
 * Class:     jtux_UFile
 * Method:    pread
 * Signature: (I[BIJ)I
 */
JNIEXPORT jint JNICALL Java_jtux_UFile_pread
  (JNIEnv *, jclass, jint, jbyteArray, jint, jlong);

/*
 * Class:     jtux_UFile
 * Method:    pselect
 * Signature: (ILjtux/UFile$fd_set;Ljtux/UFile$fd_set;Ljtux/UFile$fd_set;Ljtux/UProcess$s_timespec;Ljtux/UProcess$sigset_t;)I
 */
JNIEXPORT jint JNICALL Java_jtux_UFile_pselect
  (JNIEnv *, jclass, jint, jobject, jobject, jobject, jobject, jobject);

/*
 * Class:     jtux_UFile
 * Method:    pwrite
 * Signature: (I[BIJ)I
 */
JNIEXPORT jint JNICALL Java_jtux_UFile_pwrite
  (JNIEnv *, jclass, jint, jbyteArray, jint, jlong);

/*
 * Class:     jtux_UFile
 * Method:    read
 * Signature: (I[BI)I
 */
JNIEXPORT jint JNICALL Java_jtux_UFile_read
  (JNIEnv *, jclass, jint, jbyteArray, jint);

/*
 * Class:     jtux_UFile
 * Method:    readlink
 * Signature: (Ljava/lang/String;[BI)I
 */
JNIEXPORT jint JNICALL Java_jtux_UFile_readlink
  (JNIEnv *, jclass, jstring, jbyteArray, jint);

/*
 * Class:     jtux_UFile
 * Method:    readv
 * Signature: (I[Ljtux/UFile$s_iovec;I)I
 */
JNIEXPORT jint JNICALL Java_jtux_UFile_readv
  (JNIEnv *, jclass, jint, jobjectArray, jint);

/*
 * Class:     jtux_UFile
 * Method:    rename
 * Signature: (Ljava/lang/String;Ljava/lang/String;)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_rename
  (JNIEnv *, jclass, jstring, jstring);

/*
 * Class:     jtux_UFile
 * Method:    S_ISBLK
 * Signature: (I)Z
 */
JNIEXPORT jboolean JNICALL Java_jtux_UFile_S_1ISBLK
  (JNIEnv *, jclass, jint);

/*
 * Class:     jtux_UFile
 * Method:    S_ISCHR
 * Signature: (I)Z
 */
JNIEXPORT jboolean JNICALL Java_jtux_UFile_S_1ISCHR
  (JNIEnv *, jclass, jint);

/*
 * Class:     jtux_UFile
 * Method:    S_ISDIR
 * Signature: (I)Z
 */
JNIEXPORT jboolean JNICALL Java_jtux_UFile_S_1ISDIR
  (JNIEnv *, jclass, jint);

/*
 * Class:     jtux_UFile
 * Method:    S_ISFIFO
 * Signature: (I)Z
 */
JNIEXPORT jboolean JNICALL Java_jtux_UFile_S_1ISFIFO
  (JNIEnv *, jclass, jint);

/*
 * Class:     jtux_UFile
 * Method:    S_ISLNK
 * Signature: (I)Z
 */
JNIEXPORT jboolean JNICALL Java_jtux_UFile_S_1ISLNK
  (JNIEnv *, jclass, jint);

/*
 * Class:     jtux_UFile
 * Method:    S_ISREG
 * Signature: (I)Z
 */
JNIEXPORT jboolean JNICALL Java_jtux_UFile_S_1ISREG
  (JNIEnv *, jclass, jint);

/*
 * Class:     jtux_UFile
 * Method:    S_ISSOCK
 * Signature: (I)Z
 */
JNIEXPORT jboolean JNICALL Java_jtux_UFile_S_1ISSOCK
  (JNIEnv *, jclass, jint);

/*
 * Class:     jtux_UFile
 * Method:    select
 * Signature: (ILjtux/UFile$fd_set;Ljtux/UFile$fd_set;Ljtux/UFile$fd_set;Ljtux/UProcess$s_timeval;)I
 */
JNIEXPORT jint JNICALL Java_jtux_UFile_select
  (JNIEnv *, jclass, jint, jobject, jobject, jobject, jobject);

/*
 * Class:     jtux_UFile
 * Method:    stat
 * Signature: (Ljava/lang/String;Ljtux/UFile$s_stat;)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_stat
  (JNIEnv *, jclass, jstring, jobject);

/*
 * Class:     jtux_UFile
 * Method:    statvfs
 * Signature: (Ljava/lang/String;Ljtux/UFile$s_statvfs;)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_statvfs
  (JNIEnv *, jclass, jstring, jobject);

/*
 * Class:     jtux_UFile
 * Method:    symlink
 * Signature: (Ljava/lang/String;Ljava/lang/String;)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_symlink
  (JNIEnv *, jclass, jstring, jstring);

/*
 * Class:     jtux_UFile
 * Method:    sync
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_sync
  (JNIEnv *, jclass);

/*
 * Class:     jtux_UFile
 * Method:    truncate
 * Signature: (Ljava/lang/String;J)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_truncate
  (JNIEnv *, jclass, jstring, jlong);

/*
 * Class:     jtux_UFile
 * Method:    unlink
 * Signature: (Ljava/lang/String;)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_unlink
  (JNIEnv *, jclass, jstring);

/*
 * Class:     jtux_UFile
 * Method:    utime
 * Signature: (Ljava/lang/String;Ljtux/UFile$s_utimbuf;)V
 */
JNIEXPORT void JNICALL Java_jtux_UFile_utime
  (JNIEnv *, jclass, jstring, jobject);

/*
 * Class:     jtux_UFile
 * Method:    write
 * Signature: (I[BI)I
 */
JNIEXPORT jint JNICALL Java_jtux_UFile_write
  (JNIEnv *, jclass, jint, jbyteArray, jint);

/*
 * Class:     jtux_UFile
 * Method:    ioctl
 * Signature: (II[B)I
 */
JNIEXPORT jint JNICALL Java_jtux_UFile_ioctl
  (JNIEnv *, jclass, jint, jint, jbyteArray);

/*
 * Class:     jtux_UFile
 * Method:    ioctl2
 * Signature: (III)I
 */
JNIEXPORT jint JNICALL Java_jtux_UFile_ioctl2
  (JNIEnv *, jclass, jint, jint, jint);

/*
 * Class:     jtux_UFile
 * Method:    writev
 * Signature: (I[Ljtux/UFile$s_iovec;I)I
 */
JNIEXPORT jint JNICALL Java_jtux_UFile_writev
  (JNIEnv *, jclass, jint, jobjectArray, jint);

#ifdef __cplusplus
}
#endif
#endif
