diff options
author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-04-07 14:42:40 +0000 |
---|---|---|
committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-04-07 14:42:40 +0000 |
commit | 2c60951ba0efef23e2b765964b5dc0f1f49438a9 (patch) | |
tree | d96801a16fdf03a5682ef98730fe333a46eef944 /libjava/java/io/FileDescriptor.java | |
parent | 1135eed2207f8f82c589e42ce113a1c2f0310778 (diff) | |
download | ppe42-gcc-2c60951ba0efef23e2b765964b5dc0f1f49438a9.tar.gz ppe42-gcc-2c60951ba0efef23e2b765964b5dc0f1f49438a9.zip |
Initial revision
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26263 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java/io/FileDescriptor.java')
-rw-r--r-- | libjava/java/io/FileDescriptor.java | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/libjava/java/io/FileDescriptor.java b/libjava/java/io/FileDescriptor.java new file mode 100644 index 00000000000..0782b0c8e95 --- /dev/null +++ b/libjava/java/io/FileDescriptor.java @@ -0,0 +1,87 @@ +// FileDescriptor.java - Open file or device + +/* Copyright (C) 1998, 1999 Cygnus Solutions + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.io; + +/** + * @author Tom Tromey <tromey@cygnus.com> + * @date September 24, 1998 + */ + +/* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3 + * "The Java Language Specification", ISBN 0-201-63451-1 + * Status: Complete to 1.1 + */ + +// For now we assume a POSIXy file system. This can be changed later +// if need be. +public final class FileDescriptor +{ + public static final FileDescriptor in = new FileDescriptor (0); + public static final FileDescriptor out = new FileDescriptor (1); + public static final FileDescriptor err = new FileDescriptor (2); + + public native void sync () throws SyncFailedException; + public native boolean valid (); + + + // These are mode values for open(). + static final int READ = 1; + static final int WRITE = 2; + static final int APPEND = 4; + + // These are WHENCE values for seek. + static final int SET = 0; + static final int CUR = 1; + + // Open a file. MODE is a combination of the above mode flags. + FileDescriptor (String path, int mode) throws IOException + { + fd = open (path, mode); + } + + public FileDescriptor () + { + fd = -1; + } + + native int open (String path, int mode) throws IOException; + native void write (int b) throws IOException; + native void write (byte[] b, int offset, int len) + throws IOException, NullPointerException, IndexOutOfBoundsException; + native void close () throws IOException; + native int seek (long pos, int whence) throws IOException; + native long length () throws IOException; + native long getFilePointer () throws IOException; + native int read () throws IOException; + native int read (byte[] bytes, int offset, int len) throws IOException; + native int available () throws IOException; + + + // When collected, close. + protected void finalize () throws IOException + { + if (valid ()) + close (); + } + + // Attach to an already-opened file. This is not private because we + // need access to it from other packages, for instance java.net. + // Ordinarily that wouldn't work, either, but in our case we know + // the access comes from C++, where "package private" is translated + // into "public". Eww. + FileDescriptor (int desc) + { + fd = desc; + } + + // System's notion of file descriptor. + private int fd; +} |