diff options
author | Michael Koch <konqueror@gmx.de> | 2003-05-13 09:13:31 +0000 |
---|---|---|
committer | Michael Koch <mkoch@gcc.gnu.org> | 2003-05-13 09:13:31 +0000 |
commit | e48d8b88869563f85f2c83108257615f1cc73c76 (patch) | |
tree | 4f31beddee142afb687e3a3b376d800f72755434 | |
parent | aa8f1f579392001a71f98b59e7ead1ed3842f3f6 (diff) | |
download | gcc-e48d8b88869563f85f2c83108257615f1cc73c76.zip gcc-e48d8b88869563f85f2c83108257615f1cc73c76.tar.gz gcc-e48d8b88869563f85f2c83108257615f1cc73c76.tar.bz2 |
2003-05-13 Michael Koch <konqueror@gmx.de>
* java/io/FileDescriptor.java
(SYNC): New constant.
(DSYNC): Likewise.
(getLength): Renamed from lenght() to match classpath's
FileDescriptor.java.
* java/io/RandomAccessFile.java
(RandomAccessFile): Removed unneeded mode check, implemented mode
"rws" and "rwd", merged documentation from classpath.
(setLength): Reformatted.
(length): Use new getLength() of FileDescriptor.
* java/io/natFileDescriptorEcos.cc
(getLength): Renamed from length().
* java/io/natFileDescriptorPosix.cc
(open): Implemented support for SYNC and DSYNC.
(seek): Use getLength() instead of length().
(getLength): Renamed from length().
* java/io/natFileDescriptorWin32.cc
(getLength): Renamed from length().
(seek): Use getLength() instead of length().
(available): Likewise.
* gnu/java/nio/natFileChannelImpl.cc
(size): Use getLength() instead of length().
From-SVN: r66755
-rw-r--r-- | libjava/ChangeLog | 25 | ||||
-rw-r--r-- | libjava/gnu/java/nio/natFileChannelImpl.cc | 2 | ||||
-rw-r--r-- | libjava/java/io/FileDescriptor.java | 4 | ||||
-rw-r--r-- | libjava/java/io/RandomAccessFile.java | 33 | ||||
-rw-r--r-- | libjava/java/io/natFileDescriptorEcos.cc | 2 | ||||
-rw-r--r-- | libjava/java/io/natFileDescriptorPosix.cc | 10 | ||||
-rw-r--r-- | libjava/java/io/natFileDescriptorWin32.cc | 6 |
7 files changed, 61 insertions, 21 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index baa470a..363681e 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,5 +1,30 @@ 2003-05-13 Michael Koch <konqueror@gmx.de> + * java/io/FileDescriptor.java + (SYNC): New constant. + (DSYNC): Likewise. + (getLength): Renamed from lenght() to match classpath's + FileDescriptor.java. + * java/io/RandomAccessFile.java + (RandomAccessFile): Removed unneeded mode check, implemented mode + "rws" and "rwd", merged documentation from classpath. + (setLength): Reformatted. + (length): Use new getLength() of FileDescriptor. + * java/io/natFileDescriptorEcos.cc + (getLength): Renamed from length(). + * java/io/natFileDescriptorPosix.cc + (open): Implemented support for SYNC and DSYNC. + (seek): Use getLength() instead of length(). + (getLength): Renamed from length(). + * java/io/natFileDescriptorWin32.cc + (getLength): Renamed from length(). + (seek): Use getLength() instead of length(). + (available): Likewise. + * gnu/java/nio/natFileChannelImpl.cc + (size): Use getLength() instead of length(). + +2003-05-13 Michael Koch <konqueror@gmx.de> + * gnu/java/nio/ByteBufferImpl.java (ByteBufferImpl): All constructors revised. (slice): Reimplemented. diff --git a/libjava/gnu/java/nio/natFileChannelImpl.cc b/libjava/gnu/java/nio/natFileChannelImpl.cc index b33a79f..6275b69 100644 --- a/libjava/gnu/java/nio/natFileChannelImpl.cc +++ b/libjava/gnu/java/nio/natFileChannelImpl.cc @@ -34,7 +34,7 @@ details. */ jlong gnu::java::nio::FileChannelImpl::size () { - return fd->length (); + return fd->getLength (); } jlong diff --git a/libjava/java/io/FileDescriptor.java b/libjava/java/io/FileDescriptor.java index 296c37f..5c5168c 100644 --- a/libjava/java/io/FileDescriptor.java +++ b/libjava/java/io/FileDescriptor.java @@ -44,6 +44,8 @@ public final class FileDescriptor static final int APPEND = 4; // EXCL is used only when making a temp file. static final int EXCL = 8; + static final int SYNC = 16; + static final int DSYNC = 32; // These are WHENCE values for seek. static final int SET = 0; @@ -71,7 +73,7 @@ public final class FileDescriptor // past the end is ok (and if a subsequent write occurs the file // will grow). native int seek (long pos, int whence, boolean eof_trunc) throws IOException; - native long length () throws IOException; + native long getLength () throws IOException; native long getFilePointer () throws IOException; native int read () throws IOException; native int read (byte[] bytes, int offset, int len) throws IOException; diff --git a/libjava/java/io/RandomAccessFile.java b/libjava/java/io/RandomAccessFile.java index 990b2dc..0ff2ff6 100644 --- a/libjava/java/io/RandomAccessFile.java +++ b/libjava/java/io/RandomAccessFile.java @@ -96,15 +96,17 @@ public class RandomAccessFile implements DataOutput, DataInput /** * This method initializes a new instance of <code>RandomAccessFile</code> * to read from the specified file name with the specified access mode. - * The access mode is either "r" for read only access or "rw" for read - * write access. + * The access mode is either "r" for read only access, "rw" for read + * write access, "rws" for synchronized read/write access of both + * content and metadata, or "rwd" for read/write access + * where only content is required to be synchronous. * <p> * Note that a <code>SecurityManager</code> check is made prior to * opening the file to determine whether or not this file is allowed to * be read or written. * * @param fileName The name of the file to read and/or write - * @param mode "r" for read only or "rw" for read-write access to the file + * @param mode "r", "rw", "rws", or "rwd" * * @exception IllegalArgumentException If <code>mode</code> has an * illegal value @@ -115,16 +117,21 @@ public class RandomAccessFile implements DataOutput, DataInput public RandomAccessFile (String fileName, String mode) throws FileNotFoundException { - // Check the mode - if (!mode.equals("r") && !mode.equals("rw") && !mode.equals("rws") && - !mode.equals("rwd")) - throw new IllegalArgumentException("Bad mode value: " + mode); - int fdmode; - if (mode.compareTo ("r") == 0) + if (mode.equals("r")) fdmode = FileDescriptor.READ; - else if (mode.compareTo ("rw") == 0) + else if (mode.equals("rw")) fdmode = FileDescriptor.READ | FileDescriptor.WRITE; + else if (mode.equals("rws")) + { + fdmode = (FileDescriptor.READ | FileDescriptor.WRITE + | FileDescriptor.SYNC); + } + else if (mode.equals("rwd")) + { + fdmode = (FileDescriptor.READ | FileDescriptor.WRITE + | FileDescriptor.DSYNC); + } else throw new IllegalArgumentException ("invalid mode: " + mode); @@ -197,9 +204,9 @@ public class RandomAccessFile implements DataOutput, DataInput * * @exception IOException If an error occurs */ - public void setLength (long pos) throws IOException + public void setLength (long newLen) throws IOException { - fd.setLength(pos); + fd.setLength (newLen); } /** @@ -211,7 +218,7 @@ public class RandomAccessFile implements DataOutput, DataInput */ public long length () throws IOException { - return fd.length(); + return fd.getLength (); } /** diff --git a/libjava/java/io/natFileDescriptorEcos.cc b/libjava/java/io/natFileDescriptorEcos.cc index 96744f4..2f87912 100644 --- a/libjava/java/io/natFileDescriptorEcos.cc +++ b/libjava/java/io/natFileDescriptorEcos.cc @@ -108,7 +108,7 @@ java::io::FileDescriptor::seek (jlong pos, jint whence, jboolean) } jlong -java::io::FileDescriptor::length (void) +java::io::FileDescriptor::getLength (void) { return 0; } diff --git a/libjava/java/io/natFileDescriptorPosix.cc b/libjava/java/io/natFileDescriptorPosix.cc index ad1dcc4..2ad2d9d 100644 --- a/libjava/java/io/natFileDescriptorPosix.cc +++ b/libjava/java/io/natFileDescriptorPosix.cc @@ -105,6 +105,12 @@ java::io::FileDescriptor::open (jstring path, jint jflags) } } + if ((jflags & SYNC)) + flags |= O_SYNC; + + if ((jflags & DSYNC)) + flags |= O_DSYNC; + int fd = ::open (buf, flags, mode); if (fd == -1 && errno == EMFILE) { @@ -233,7 +239,7 @@ java::io::FileDescriptor::seek (jlong pos, jint whence, jboolean eof_trunc) if (eof_trunc) { - jlong len = length (); + jlong len = getLength (); if (whence == SET) { if (pos > len) @@ -258,7 +264,7 @@ java::io::FileDescriptor::seek (jlong pos, jint whence, jboolean eof_trunc) } jlong -java::io::FileDescriptor::length (void) +java::io::FileDescriptor::getLength (void) { struct stat sb; if (::fstat (fd, &sb)) diff --git a/libjava/java/io/natFileDescriptorWin32.cc b/libjava/java/io/natFileDescriptorWin32.cc index 87f94e8..210eb73 100644 --- a/libjava/java/io/natFileDescriptorWin32.cc +++ b/libjava/java/io/natFileDescriptorWin32.cc @@ -244,7 +244,7 @@ java::io::FileDescriptor::seek (jlong pos, jint whence, jboolean eof_trunc) { JvAssert (whence == SET || whence == CUR); - jlong len = length(); + jlong len = getLength(); jlong here = getFilePointer(); if (eof_trunc @@ -272,7 +272,7 @@ java::io::FileDescriptor::getFilePointer(void) } jlong -java::io::FileDescriptor::length(void) +java::io::FileDescriptor::getLength(void) { DWORD high; DWORD low; @@ -336,5 +336,5 @@ jint java::io::FileDescriptor::available(void) { // FIXME: - return length() - getFilePointer(); + return getLength() - getFilePointer(); } |