source: trunk/gcc/libjava/java/io/natFileDescriptorEcos.cc

Last change on this file was 1392, checked in by bird, 21 years ago

This commit was generated by cvs2svn to compensate for changes in r1391,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 2.5 KB
Line 
1// natFileDescriptor.cc - Native part of FileDescriptor class.
2
3/* Copyright (C) 1998, 1999, 2001, 2002 Free Software Foundation
4
5 This file is part of libgcj.
6
7This software is copyrighted work licensed under the terms of the
8Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
9details. */
10
11#include <config.h>
12
13#include <errno.h>
14#include <string.h>
15#include <sys/types.h>
16#include <sys/stat.h>
17#include <sys/param.h>
18
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>
29
30extern "C" void diag_write_char (char c);
31
32static void
33diag_write (char *data, int len)
34{
35 while (len > 0)
36 {
37 diag_write_char (*data++);
38 len--;
39 }
40}
41
42#define NO_FSYNC_MESSAGE "sync unsupported"
43
44void
45java::io::FileDescriptor::init(void)
46{
47 in = new java::io::FileDescriptor(0);
48 out = new java::io::FileDescriptor(1);
49 err = new java::io::FileDescriptor(2);
50}
51
52jboolean
53java::io::FileDescriptor::valid (void)
54{
55 return true;
56}
57
58void
59java::io::FileDescriptor::sync (void)
60{
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
67}
68
69jint
70java::io::FileDescriptor::open (jstring path, jint jflags)
71{
72 return fd;
73}
74
75void
76java::io::FileDescriptor::write (jint b)
77{
78 char d = (char) b;
79 ::diag_write (&d, 1);
80}
81
82void
83java::io::FileDescriptor::write (jbyteArray b, jint offset, jint len)
84{
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);
91}
92
93void
94java::io::FileDescriptor::close (void)
95{
96}
97
98void
99java::io::FileDescriptor::setLength (long)
100{
101}
102
103jint
104java::io::FileDescriptor::seek (jlong pos, jint whence, jboolean)
105{
106 JvAssert (whence == SET || whence == CUR);
107 return 0;
108}
109
110jlong
111java::io::FileDescriptor::length (void)
112{
113 return 0;
114}
115
116jlong
117java::io::FileDescriptor::getFilePointer (void)
118{
119 return 0;
120}
121
122jint
123java::io::FileDescriptor::read (void)
124{
125 return 0;
126}
127
128jint
129java::io::FileDescriptor::read (jbyteArray buffer, jint offset, jint count)
130{
131 return 0;
132}
133
134jint
135java::io::FileDescriptor::available (void)
136{
137 return 0;
138}
Note: See TracBrowser for help on using the repository browser.