Diff for /np2/common/textfile.c between versions 1.2 and 1.3

version 1.2, 2003/11/07 18:31:24 version 1.3, 2004/06/20 11:19:45
Line 3 Line 3
 #include        "textfile.h"  #include        "textfile.h"
   
   
   static BOOL getnextstrings(TEXTFILEH fh) {
   
           UINT    rsize;
   
           if (!fh) {
                   return(FAILURE);
           }
           if (file_seek((FILEH)fh->fh, fh->fhpos, 0) != fh->fhpos) {
                   return(FAILURE);
           }
           rsize = file_read((FILEH)fh->fh, fh + 1, fh->buffersize);
           if (rsize == (UINT)-1) {
                   return(FAILURE);
           }
           fh->fhpos += rsize;
           fh->pos = 0;
           fh->remain = rsize;
           return(SUCCESS);
   }
   
 TEXTFILEH textfile_open(const char *filename, UINT buffersize) {  TEXTFILEH textfile_open(const char *filename, UINT buffersize) {
   
         FILEH           fh;          FILEH           fh;
Line 12  TEXTFILEH textfile_open(const char *file Line 32  TEXTFILEH textfile_open(const char *file
                 buffersize = 256;                  buffersize = 256;
         }          }
         fh = file_open(filename);          fh = file_open(filename);
         if (fh != FILEH_INVALID) {          if (fh == FILEH_INVALID) {
                 ret = (TEXTFILEH)_MALLOC(sizeof(_TEXTFILE) + buffersize, filename);                  goto tfo_err1;
                 if (ret) {          }
                         ZeroMemory(ret, sizeof(_TEXTFILE) + buffersize);          ret = (TEXTFILEH)_MALLOC(sizeof(_TEXTFILE) + buffersize, filename);
                         ret->fh = (long)fh;          if (ret == NULL) {
                         ret->buffersize = buffersize;                  goto tfo_err2;
                         return(ret);          }
           ZeroMemory(ret, sizeof(_TEXTFILE) + buffersize);
           ret->fh = (long)fh;
           ret->buffersize = buffersize;
   #if defined(OSLANG_UTF8)
           getnextstrings(ret);
           if (ret->remain >= 3) {
                   char *ptr;
                   ptr = ((char *)(ret + 1)) + ret->pos;
                   if ((ptr[0] == (char)0xef) &&
                           (ptr[1] == (char)0xbb) &&
                           (ptr[2] == (char)0xbf)) {
                           ret->pos += 3;
                           ret->remain -= 3;
                 }                  }
                 file_close(fh);  
         }          }
   #endif
           return(ret);
   
   tfo_err2:
           file_close(fh);
   
   tfo_err1:
         return(NULL);          return(NULL);
 }  }
   
   
 void textfile_close(TEXTFILEH fh) {  void textfile_close(TEXTFILEH fh) {
   
         if (fh) {          if (fh) {
Line 34  void textfile_close(TEXTFILEH fh) { Line 72  void textfile_close(TEXTFILEH fh) {
         }          }
 }  }
   
   
 static BOOL getnextstring(TEXTFILEH fh) {  
   
         UINT    rsize;  
   
         if (!fh) {  
                 return(FAILURE);  
         }  
         if (file_seek((FILEH)fh->fh, fh->fhpos, 0) != fh->fhpos) {  
                 return(FAILURE);  
         }  
         rsize = file_read((FILEH)fh->fh, fh + 1, fh->buffersize);  
         if (rsize == (UINT)-1) {  
                 return(FAILURE);  
         }  
         fh->fhpos += rsize;  
         fh->pos = 0;  
         fh->remain = rsize;  
         return(SUCCESS);  
 }  
   
   
 BOOL textfile_read(TEXTFILEH fh, char *buffer, UINT size) {  BOOL textfile_read(TEXTFILEH fh, char *buffer, UINT size) {
   
         char    c = '\0';          char    c = '\0';
Line 67  BOOL textfile_read(TEXTFILEH fh, char *b Line 83  BOOL textfile_read(TEXTFILEH fh, char *b
                 size--;                  size--;
                 crlf = FALSE;                  crlf = FALSE;
                 do {                  do {
                         if ((!fh->remain) && (getnextstring(fh))) {                          if ((!fh->remain) && (getnextstrings(fh))) {
                                 return(FAILURE);                                  return(FAILURE);
                         }                          }
                         if (!fh->remain) {                          if (!fh->remain) {
Line 100  BOOL textfile_read(TEXTFILEH fh, char *b Line 116  BOOL textfile_read(TEXTFILEH fh, char *b
                         }                          }
                 } while(!crlf);                  } while(!crlf);
                 if ((crlf) && (c == 0x0d)) {                  if ((crlf) && (c == 0x0d)) {
                         if ((!fh->remain) && (getnextstring(fh))) {                          if ((!fh->remain) && (getnextstrings(fh))) {
                                 return(FAILURE);                                  return(FAILURE);
                         }                          }
                         if (fh->remain) {                          if (fh->remain) {

Removed from v.1.2  
changed lines
  Added in v.1.3


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