2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / libjava / java / io / natFileDescriptorEcos.cc
blob2f879128fff9cb5db8ed7d34b8240f96693ff49e
1 // natFileDescriptor.cc - Native part of FileDescriptor class.
3 /* Copyright (C) 1998, 1999, 2001, 2002 Free Software Foundation
5 This file is part of libgcj.
7 This software is copyrighted work licensed under the terms of the
8 Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
9 details. */
11 #include <config.h>
13 #include <errno.h>
14 #include <string.h>
15 #include <sys/types.h>
16 #include <sys/stat.h>
17 #include <sys/param.h>
19 #include <gcj/cni.h>
20 #include <jvm.h>
21 #include <java/io/FileDescriptor.h>
22 #include <java/io/SyncFailedException.h>
23 #include <java/io/IOException.h>
24 #include <java/io/EOFException.h>
25 #include <java/lang/ArrayIndexOutOfBoundsException.h>
26 #include <java/lang/NullPointerException.h>
27 #include <java/lang/String.h>
28 #include <java/io/FileNotFoundException.h>
30 extern "C" void diag_write_char (char c);
32 static void
33 diag_write (char *data, int len)
35 while (len > 0)
37 diag_write_char (*data++);
38 len--;
42 #define NO_FSYNC_MESSAGE "sync unsupported"
44 void
45 java::io::FileDescriptor::init(void)
47 in = new java::io::FileDescriptor(0);
48 out = new java::io::FileDescriptor(1);
49 err = new java::io::FileDescriptor(2);
52 jboolean
53 java::io::FileDescriptor::valid (void)
55 return true;
58 void
59 java::io::FileDescriptor::sync (void)
61 // Some files don't support fsync. We don't bother reporting these
62 // as errors.
63 #ifdef HAVE_FSYNC
64 #else
65 throw new SyncFailedException (JvNewStringLatin1 (NO_FSYNC_MESSAGE));
66 #endif
69 jint
70 java::io::FileDescriptor::open (jstring path, jint jflags)
72 return fd;
75 void
76 java::io::FileDescriptor::write (jint b)
78 char d = (char) b;
79 ::diag_write (&d, 1);
82 void
83 java::io::FileDescriptor::write (jbyteArray b, jint offset, jint len)
85 if (! b)
86 throw new java::lang::NullPointerException;
87 if (offset < 0 || len < 0 || offset + len > JvGetArrayLength (b))
88 throw new java::lang::ArrayIndexOutOfBoundsException;
89 char *bytes = (char *)elements (b) + offset;
90 ::diag_write (bytes, len);
93 void
94 java::io::FileDescriptor::close (void)
98 void
99 java::io::FileDescriptor::setLength (long)
103 jint
104 java::io::FileDescriptor::seek (jlong pos, jint whence, jboolean)
106 JvAssert (whence == SET || whence == CUR);
107 return 0;
110 jlong
111 java::io::FileDescriptor::getLength (void)
113 return 0;
116 jlong
117 java::io::FileDescriptor::getFilePointer (void)
119 return 0;
122 jint
123 java::io::FileDescriptor::read (void)
125 return 0;
128 jint
129 java::io::FileDescriptor::read (jbyteArray buffer, jint offset, jint count)
131 return 0;
134 jint
135 java::io::FileDescriptor::available (void)
137 return 0;