home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / kaffe-0.5p4-src.tgz / tar.out / contrib / kaffe / lib / native / java.io / FileOutputStream.c < prev    next >
C/C++ Source or Header  |  1996-09-28  |  2KB  |  92 lines

  1. /*
  2.  * java.io.FileOutputStream.c
  3.  *
  4.  * Copyright (c) 1996 Systems Architecture Research Centre,
  5.  *           City University, London, UK.
  6.  *
  7.  * See the file "license.terms" for information on usage and redistribution
  8.  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  9.  *
  10.  * Written by Tim Wilkinson <tim@sarc.city.ac.uk>, February 1996.
  11.  */
  12.  
  13. #include "config.h"
  14. #include <stdio.h>
  15. #include <assert.h>
  16. #if defined(HAVE_IO_H)
  17. #include <io.h>
  18. #endif
  19. #include "defs.h"
  20. #include "files.h"
  21. #include "java.io.stubs/FileOutputStream.h"
  22. #include "java.io.stubs/FileDescriptor.h"
  23. #include "kthread.h"
  24.  
  25. /*
  26.  * Open a file for output.
  27.  */
  28. void
  29. java_io_FileOutputStream_open(struct Hjava_io_FileOutputStream* fh, struct Hjava_lang_String* nm)
  30. {
  31.     int fd;
  32.     char str[MAXPATHLEN];
  33.  
  34.     javaString2CString(nm, str, sizeof(str));
  35.  
  36.     fd = threadedOpen(str, O_WRONLY|O_CREAT|O_BINARY, 0666);
  37.     unhand(unhand(fh)->fd)->fd = fd;
  38.     if (fd < 0) {
  39.         SignalError(0, "java.io.IOException", SYS_ERROR);
  40.     }
  41. }
  42.  
  43. /*
  44.  * Close a file.
  45.  */
  46. void
  47. java_io_FileOutputStream_close(struct Hjava_io_FileOutputStream* fh)
  48. {
  49.     int r;
  50.  
  51.     if (unhand(unhand(fh)->fd)->fd >= 0) {
  52.         r = close(unhand(unhand(fh)->fd)->fd);
  53.         unhand(unhand(fh)->fd)->fd = -1;
  54.         if (r < 0) {
  55.             SignalError(0, "java.io.IOException", SYS_ERROR);
  56.         }
  57.     }
  58. }
  59.  
  60. /*
  61.  * Write bytes to file.
  62.  */
  63. void
  64. java_io_FileOutputStream_writeBytes(struct Hjava_io_FileOutputStream* fh, HArrayOfByte* byteArray, jint start, jint len)
  65. {
  66.     int fd;
  67.     int r;
  68.  
  69.     fd = unhand(unhand(fh)->fd)->fd;
  70.     r = threadedWrite(fd, &unhand(byteArray)->body[start], len);
  71.     if (r < 0) {
  72.         SignalError(0, "java.io.IOException", SYS_ERROR);
  73.     }
  74. }
  75.  
  76. /*
  77.  * Write a byte to file.
  78.  */
  79. void
  80. java_io_FileOutputStream_write(struct Hjava_io_FileOutputStream* fh, jint byte)
  81. {
  82.     int fd;
  83.     int r;
  84.     unsigned char b = byte;
  85.  
  86.     fd = unhand(unhand(fh)->fd)->fd;
  87.     r = threadedWrite(fd, &b, 1);
  88.     if (r < 0) {
  89.         SignalError(0, "java.io.IOException", SYS_ERROR);
  90.     }
  91. }
  92.