natfiledescriptorecos.cc
来自「gcc3.2.1源代码」· CC 代码 · 共 134 行
CC
134 行
// natFileDescriptor.cc - Native part of FileDescriptor class./* Copyright (C) 1998, 1999, 2001 Free Software Foundation This file is part of libgcj.This software is copyrighted work licensed under the terms of theLibgcj License. Please consult the file "LIBGCJ_LICENSE" fordetails. */#include <config.h>#include <errno.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/param.h>#include <gcj/cni.h>#include <jvm.h>#include <java/io/FileDescriptor.h>#include <java/io/SyncFailedException.h>#include <java/io/IOException.h>#include <java/io/EOFException.h>#include <java/lang/ArrayIndexOutOfBoundsException.h>#include <java/lang/NullPointerException.h>#include <java/lang/String.h>#include <java/io/FileNotFoundException.h>extern "C" void diag_write_char (char c);static void diag_write (char *data, int len){ while (len > 0) { diag_write_char (*data++); len--; }}#define NO_FSYNC_MESSAGE "sync unsupported"voidjava::io::FileDescriptor::init(void){ in = new java::io::FileDescriptor(0); out = new java::io::FileDescriptor(1); err = new java::io::FileDescriptor(2);}jbooleanjava::io::FileDescriptor::valid (void){ return true;}voidjava::io::FileDescriptor::sync (void){ // Some files don't support fsync. We don't bother reporting these // as errors.#ifdef HAVE_FSYNC#else throw new SyncFailedException (JvNewStringLatin1 (NO_FSYNC_MESSAGE));#endif}jintjava::io::FileDescriptor::open (jstring path, jint jflags){ return fd;}voidjava::io::FileDescriptor::write (jint b){ char d = (char) b; ::diag_write (&d, 1);}voidjava::io::FileDescriptor::write (jbyteArray b, jint offset, jint len){ if (! b) throw new java::lang::NullPointerException; if (offset < 0 || len < 0 || offset + len > JvGetArrayLength (b)) throw new java::lang::ArrayIndexOutOfBoundsException; char *bytes = (char *)elements (b) + offset; ::diag_write (bytes, len);}voidjava::io::FileDescriptor::close (void){}jintjava::io::FileDescriptor::seek (jlong pos, jint whence, jboolean){ JvAssert (whence == SET || whence == CUR); return 0;}jlongjava::io::FileDescriptor::length (void){ return 0;}jlongjava::io::FileDescriptor::getFilePointer (void){ return 0;}jintjava::io::FileDescriptor::read (void){ return 0;}jintjava::io::FileDescriptor::read (jbyteArray buffer, jint offset, jint count){ return 0;}jintjava::io::FileDescriptor::available (void){ return 0;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?