OSDN Git Service

2003-05-13 Michael Koch <konqueror@gmx.de>
authormkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 13 May 2003 09:13:31 +0000 (09:13 +0000)
committermkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 13 May 2003 09:13:31 +0000 (09:13 +0000)
       * 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().

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@66755 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/gnu/java/nio/natFileChannelImpl.cc
libjava/java/io/FileDescriptor.java
libjava/java/io/RandomAccessFile.java
libjava/java/io/natFileDescriptorEcos.cc
libjava/java/io/natFileDescriptorPosix.cc
libjava/java/io/natFileDescriptorWin32.cc

index baa470a..363681e 100644 (file)
@@ -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.
index b33a79f..6275b69 100644 (file)
@@ -34,7 +34,7 @@ details.  */
 jlong
 gnu::java::nio::FileChannelImpl::size ()
 {
-  return fd->length ();
+  return fd->getLength ();
 }
 
 jlong
index 296c37f..5c5168c 100644 (file)
@@ -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;
index 990b2dc..0ff2ff6 100644 (file)
@@ -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 ();
   }
 
   /**
index 96744f4..2f87912 100644 (file)
@@ -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;
 }
index ad1dcc4..2ad2d9d 100644 (file)
@@ -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))
index 87f94e8..210eb73 100644 (file)
@@ -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();
 }