Diff for /np2/common/textfile.c between versions 1.8 and 1.10

version 1.8, 2005/04/01 15:35:49 version 1.10, 2006/12/10 12:45:46
Line 4 Line 4
 #if defined(SUPPORT_TEXTCNV)  #if defined(SUPPORT_TEXTCNV)
 #include        "textcnv.h"  #include        "textcnv.h"
 #endif  #endif
   #if defined(SUPPORT_ARC)
   #include        "arc.h"
   #else
 #include        "dosio.h"  #include        "dosio.h"
   #endif
   
   
   // ---- arc support?
   
   #if defined(SUPPORT_ARC)
   #define _FILEH                          ARCFH
   #define _FILEH_INVALID          NULL
   #define _FSEEK_SET                      ARCSEEK_SET
   #define _file_open_rb           arcex_fileopen
   #define _file_create            arcex_filecreate
   #define _file_read                      arc_fileread
   #define _file_write                     arc_filewrite
   #define _file_seek                      arc_fileseek
   #define _file_close                     arc_fileclose
   #else
   #define _FILEH                          FILEH
   #define _FILEH_INVALID          FILEH_INVALID
   #define _FSEEK_SET                      FSEEK_SET
   #define _file_open_rb           file_open_rb
   #define _file_create            file_create
   #define _file_read                      file_read
   #define _file_write                     file_write
   #define _file_seek                      file_seek
   #define _file_close                     file_close
   #endif
   
 enum {  enum {
         TFMODE_READ             = 0x01,          TFMODE_READ             = 0x01,
         TFMODE_WRITE    = 0x02          TFMODE_WRITE    = 0x02
Line 25  struct _textfile { Line 53  struct _textfile {
         UINT8   access;          UINT8   access;
         UINT8   xendian;          UINT8   xendian;
 #endif  #endif
         FILEH   fh;          _FILEH  fh;
         long    fpos;          long    fpos;
         UINT8   *buf;          UINT8   *buf;
         UINT    bufsize;          UINT    bufsize;
Line 48  static UINT readbufferA(TEXTFILE tf) { Line 76  static UINT readbufferA(TEXTFILE tf) {
         UINT    rsize;          UINT    rsize;
   
         if (tf->bufrem == 0) {          if (tf->bufrem == 0) {
                 rsize = file_read(tf->fh, tf->buf, tf->bufsize);                  rsize = _file_read(tf->fh, tf->buf, tf->bufsize);
                 rsize = rsize / sizeof(char);                  rsize = rsize / sizeof(char);
                 tf->fpos += rsize * sizeof(char);                  tf->fpos += rsize * sizeof(char);
                 tf->bufpos = 0;                  tf->bufpos = 0;
Line 127  static UINT readbufferW(TEXTFILE tf) { Line 155  static UINT readbufferW(TEXTFILE tf) {
   
         if (tf->bufrem == 0) {          if (tf->bufrem == 0) {
                 buf = tf->buf;                  buf = tf->buf;
                 rsize = file_read(tf->fh, buf, tf->bufsize);                  rsize = _file_read(tf->fh, buf, tf->bufsize);
                 rsize = rsize / sizeof(UINT16);                  rsize = rsize / sizeof(UINT16);
                 tf->fpos += rsize * sizeof(UINT16);                  tf->fpos += rsize * sizeof(UINT16);
                 tf->bufpos = 0;                  tf->bufpos = 0;
Line 237  static BRESULT flushwritebuffer(TEXTFILE Line 265  static BRESULT flushwritebuffer(TEXTFILE
   
         if (tf->bufpos) {          if (tf->bufpos) {
                 size = tf->bufpos * tf->width;                  size = tf->bufpos * tf->width;
                 wsize = file_write(tf->fh, tf->buf, size);                  wsize = _file_write(tf->fh, tf->buf, size);
                 tf->fpos += wsize;                  tf->fpos += wsize;
                 if (wsize != size) {                  if (wsize != size) {
                         return(FAILURE);                          return(FAILURE);
Line 253  const UINT8 *p; Line 281  const UINT8 *p;
         UINT    wsize;          UINT    wsize;
   
         ret = SUCCESS;          ret = SUCCESS;
         p = (char *)buffer;          p = (UINT8 *)buffer;
         while(size) {          while(size) {
                 wsize = min(size, tf->bufrem);                  wsize = min(size, tf->bufrem);
                 if (wsize) {                  if (wsize) {
Line 308  const UINT8 *p; Line 336  const UINT8 *p;
   
 // ----  // ----
   
 static TEXTFILEH registfile(FILEH fh, UINT buffersize,  static TEXTFILEH registfile(_FILEH fh, UINT buffersize,
                                                                                         const UINT8 *hdr, UINT hdrsize) {                                                                                          const UINT8 *hdr, UINT hdrsize) {
   
         UINT            cnvbufsize;          UINT            cnvbufsize;
Line 409  static BRESULT flushfile(TEXTFILE tf) { Line 437  static BRESULT flushfile(TEXTFILE tf) {
         ret = SUCCESS;          ret = SUCCESS;
         if (tf->mode & TFMODE_READ) {          if (tf->mode & TFMODE_READ) {
                 fpos = tf->fpos - (tf->bufrem * tf->width);                  fpos = tf->fpos - (tf->bufrem * tf->width);
                 tf->fpos = file_seek(tf->fh, fpos, FSEEK_SET);                  tf->fpos = _file_seek(tf->fh, fpos, _FSEEK_SET);
                 if (tf->fpos != fpos) {                  if (tf->fpos != fpos) {
                         ret = FAILURE;                          ret = FAILURE;
                 }                  }
Line 417  static BRESULT flushfile(TEXTFILE tf) { Line 445  static BRESULT flushfile(TEXTFILE tf) {
         else if (tf->mode & TFMODE_WRITE) {          else if (tf->mode & TFMODE_WRITE) {
                 if (tf->bufpos) {                  if (tf->bufpos) {
                         size = tf->bufpos * tf->width;                          size = tf->bufpos * tf->width;
                         wsize = file_write(tf->fh, tf->buf, size);                          wsize = _file_write(tf->fh, tf->buf, size);
                         if (wsize != size) {                          if (wsize != size) {
                                 ret = FAILURE;                                  ret = FAILURE;
                         }                          }
Line 425  static BRESULT flushfile(TEXTFILE tf) { Line 453  static BRESULT flushfile(TEXTFILE tf) {
                 }                  }
         }          }
         else {          else {
                 fpos = file_seek(tf->fh, tf->fpos, FSEEK_SET);                  fpos = _file_seek(tf->fh, tf->fpos, _FSEEK_SET);
                 if (tf->fpos != fpos) {                  if (tf->fpos != fpos) {
                         ret = FAILURE;                          ret = FAILURE;
                 }                  }
Line 442  static BRESULT flushfile(TEXTFILE tf) { Line 470  static BRESULT flushfile(TEXTFILE tf) {
   
 TEXTFILEH textfile_open(const OEMCHAR *filename, UINT buffersize) {  TEXTFILEH textfile_open(const OEMCHAR *filename, UINT buffersize) {
   
         FILEH           fh;          _FILEH          fh;
         UINT8           hdr[4];          UINT8           hdr[4];
         UINT            hdrsize;          UINT            hdrsize;
         TEXTFILEH       ret;          TEXTFILEH       ret;
   
         fh = file_open_rb(filename);          fh = _file_open_rb(filename);
         if (fh == FILEH_INVALID) {          if (fh == _FILEH_INVALID) {
                 goto tfo_err;                  goto tfo_err;
         }          }
         hdrsize = file_read(fh, hdr, sizeof(hdr));          hdrsize = _file_read(fh, hdr, sizeof(hdr));
         ret = registfile(fh, buffersize, hdr, hdrsize);          ret = registfile(fh, buffersize, hdr, hdrsize);
         if (ret) {          if (ret) {
                 return(ret);                  return(ret);
         }          }
         file_close(fh);          _file_close(fh);
   
 tfo_err:  tfo_err:
         return(NULL);          return(NULL);
Line 464  tfo_err: Line 492  tfo_err:
   
 TEXTFILEH textfile_create(const OEMCHAR *filename, UINT buffersize) {  TEXTFILEH textfile_create(const OEMCHAR *filename, UINT buffersize) {
   
         FILEH           fh;          _FILEH          fh;
 const UINT8             *hdr;  const UINT8             *hdr;
         UINT            hdrsize;          UINT            hdrsize;
         TEXTFILEH       ret;          TEXTFILEH       ret;
   
         fh = file_create(filename);          fh = _file_create(filename);
         if (fh == FILEH_INVALID) {          if (fh == _FILEH_INVALID) {
                 goto tfc_err1;                  goto tfc_err1;
         }          }
 #if defined(OSLANG_UTF8)  #if defined(OSLANG_UTF8)
Line 483  const UINT8  *hdr; Line 511  const UINT8  *hdr;
         hdr = NULL;          hdr = NULL;
         hdrsize = 0;          hdrsize = 0;
 #endif  #endif
         if ((hdrsize) && (file_write(fh, hdr, hdrsize) != hdrsize)) {          if ((hdrsize) && (_file_write(fh, hdr, hdrsize) != hdrsize)) {
                 goto tfc_err2;                  goto tfc_err2;
         }          }
         ret = registfile(fh, buffersize, hdr, hdrsize);          ret = registfile(fh, buffersize, hdr, hdrsize);
Line 492  const UINT8  *hdr; Line 520  const UINT8  *hdr;
         }          }
   
 tfc_err2:  tfc_err2:
         file_close(fh);          _file_close(fh);
   
 tfc_err1:  tfc_err1:
         return(NULL);          return(NULL);
Line 570  void textfile_close(TEXTFILEH tfh) { Line 598  void textfile_close(TEXTFILEH tfh) {
                 if (tf->mode & TFMODE_WRITE) {                  if (tf->mode & TFMODE_WRITE) {
                         flushfile(tf);                          flushfile(tf);
                 }                  }
                 file_close(tf->fh);                  _file_close(tf->fh);
                 _MFREE(tf);                  _MFREE(tf);
         }          }
 }  }

Removed from v.1.8  
changed lines
  Added in v.1.10


RetroPC.NET-CVS <cvs@retropc.net>