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 + -
显示快捷键?