1 /* class: java/io/FileInputStream */
4 * Class: java/io/FileInputStream
8 JNIEXPORT s4 JNICALL Java_java_io_FileInputStream_available ( JNIEnv *env , struct java_io_FileInputStream* this)
13 r1 = fstat (this->fd->fd, &buffer);
14 r2 = lseek(this->fd->fd, 0, SEEK_CUR);
16 if ( (r1 >= 0) && (r2 >= 0) )
17 return buffer.st_size - r2;
19 exceptionptr = native_new_and_init (class_java_io_IOException);
23 * Class: java/io/FileInputStream
27 JNIEXPORT void JNICALL Java_java_io_FileInputStream_close ( JNIEnv *env , struct java_io_FileInputStream* this)
29 if (this->fd->fd >= 0) {
30 s4 r = close (this->fd->fd);
33 exceptionptr = native_new_and_init (class_java_io_IOException);
37 * Class: java/io/FileInputStream
41 JNIEXPORT void JNICALL Java_java_io_FileInputStream_initIDs ( JNIEnv *env )
47 * Class: java/io/FileInputStream
49 * Signature: (Ljava/lang/String;)V
51 JNIEXPORT void JNICALL Java_java_io_FileInputStream_open ( JNIEnv *env , struct java_io_FileInputStream* this, struct java_lang_String* name)
54 char *fname = javastring_tochar ((java_objectheader*)name);
56 if (!fname) goto fail;
58 fd = open (fname, O_RDONLY, 0);
61 threadedFileDescriptor(fd);
67 printf("failed to open: %s\n",fname);
69 exceptionptr = native_new_and_init (class_java_io_IOException);
74 * Class: java/io/FileInputStream
78 JNIEXPORT s4 JNICALL Java_java_io_FileInputStream_read ( JNIEnv *env , struct java_io_FileInputStream* this)
82 r = threadedRead (this->fd->fd, (char *) buffer, 1);
84 if (r>0) return buffer[0];
87 exceptionptr = native_new_and_init (class_java_io_IOException);
91 * Class: java/io/FileInputStream
95 JNIEXPORT s4 JNICALL Java_java_io_FileInputStream_readBytes ( JNIEnv *env , struct java_io_FileInputStream* this, java_bytearray* buffer, s4 start, s4 len)
97 s4 ret = threadedRead (this->fd->fd, (char *) buffer->data+start, len);
98 if (ret>0) return ret;
99 if (ret==0) return -1;
101 exceptionptr = native_new_and_init (class_java_io_IOException);
105 * Class: java/io/FileInputStream
109 JNIEXPORT s8 JNICALL Java_java_io_FileInputStream_skip ( JNIEnv *env , struct java_io_FileInputStream* this, s8 numbytes)
111 s4 ret = lseek (this->fd->fd, builtin_l2i(numbytes), SEEK_CUR);
112 if (ret>0) return builtin_i2l(ret);
113 if (ret==0) return builtin_i2l(-1);
115 exceptionptr = native_new_and_init (class_java_io_IOException);
116 return builtin_i2l(0);