[BACK]Return to xmlfile.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / external / mit / expat / dist / xmlwf

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/external/mit/expat/dist/xmlwf/xmlfile.c between version 1.1.1.1.2.2 and 1.1.1.2

version 1.1.1.1.2.2, 2017/06/21 16:56:33 version 1.1.1.2, 2017/02/04 10:15:57
Line 8 
Line 8 
 #include <string.h>  #include <string.h>
 #include <fcntl.h>  #include <fcntl.h>
   
 #ifdef _WIN32  #ifdef WIN32
 #include "winconfig.h"  #include "winconfig.h"
   #elif defined(MACOS_CLASSIC)
   #include "macconfig.h"
   #elif defined(__amigaos__)
   #include "amigaconfig.h"
   #elif defined(__WATCOMC__)
   #include "watcomconfig.h"
 #elif defined(HAVE_EXPAT_CONFIG_H)  #elif defined(HAVE_EXPAT_CONFIG_H)
 #include <expat_config.h>  #include <expat_config.h>
 #endif /* ndef _WIN32 */  #endif /* ndef WIN32 */
   
 #include "expat.h"  #include "expat.h"
 #include "internal.h"  /* for UNUSED_P only */  #include "internal.h"  /* for UNUSED_P only */
Line 20 
Line 26 
 #include "xmltchar.h"  #include "xmltchar.h"
 #include "filemap.h"  #include "filemap.h"
   
 #if defined(_MSC_VER)  #if (defined(_MSC_VER) || (defined(__WATCOMC__) && !defined(__LINUX__)))
 #include <io.h>  #include <io.h>
 #endif  #endif
   
   #if defined(__amigaos__) && defined(__USE_INLINE__)
   #include <proto/expat.h>
   #endif
   
 #ifdef HAVE_UNISTD_H  #ifdef HAVE_UNISTD_H
 #include <unistd.h>  #include <unistd.h>
 #endif  #endif
Line 48  typedef struct {
Line 58  typedef struct {
   int *retPtr;    int *retPtr;
 } PROCESS_ARGS;  } PROCESS_ARGS;
   
 static int  
 processStream(const XML_Char *filename, XML_Parser parser);  
   
 static void  static void
 reportError(XML_Parser parser, const XML_Char *filename)  reportError(XML_Parser parser, const XML_Char *filename)
 {  {
Line 81  processFile(const void *data, size_t siz
Line 88  processFile(const void *data, size_t siz
     *retPtr = 1;      *retPtr = 1;
 }  }
   
 #if defined(_WIN32)  #if (defined(WIN32) || defined(__WATCOMC__))
   
 static int  static int
 isAsciiLetter(XML_Char c)  isAsciiLetter(XML_Char c)
Line 89  isAsciiLetter(XML_Char c)
Line 96  isAsciiLetter(XML_Char c)
   return (T('a') <= c && c <= T('z')) || (T('A') <= c && c <= T('Z'));    return (T('a') <= c && c <= T('z')) || (T('A') <= c && c <= T('Z'));
 }  }
   
 #endif /* _WIN32 */  #endif /* WIN32 */
   
 static const XML_Char *  static const XML_Char *
 resolveSystemId(const XML_Char *base, const XML_Char *systemId,  resolveSystemId(const XML_Char *base, const XML_Char *systemId,
Line 99  resolveSystemId(const XML_Char *base, co
Line 106  resolveSystemId(const XML_Char *base, co
   *toFree = 0;    *toFree = 0;
   if (!base    if (!base
       || *systemId == T('/')        || *systemId == T('/')
 #if defined(_WIN32)  #if (defined(WIN32) || defined(__WATCOMC__))
       || *systemId == T('\\')        || *systemId == T('\\')
       || (isAsciiLetter(systemId[0]) && systemId[1] == T(':'))        || (isAsciiLetter(systemId[0]) && systemId[1] == T(':'))
 #endif  #endif
Line 113  resolveSystemId(const XML_Char *base, co
Line 120  resolveSystemId(const XML_Char *base, co
   s = *toFree;    s = *toFree;
   if (tcsrchr(s, T('/')))    if (tcsrchr(s, T('/')))
     s = tcsrchr(s, T('/')) + 1;      s = tcsrchr(s, T('/')) + 1;
 #if defined(_WIN32)  #if (defined(WIN32) || defined(__WATCOMC__))
   if (tcsrchr(s, T('\\')))    if (tcsrchr(s, T('\\')))
     s = tcsrchr(s, T('\\')) + 1;      s = tcsrchr(s, T('\\')) + 1;
 #endif  #endif
Line 132  externalEntityRefFilemap(XML_Parser pars
Line 139  externalEntityRefFilemap(XML_Parser pars
   XML_Char *s;    XML_Char *s;
   const XML_Char *filename;    const XML_Char *filename;
   XML_Parser entParser = XML_ExternalEntityParserCreate(parser, context, 0);    XML_Parser entParser = XML_ExternalEntityParserCreate(parser, context, 0);
   int filemapRes;  
   PROCESS_ARGS args;    PROCESS_ARGS args;
   args.retPtr = &result;    args.retPtr = &result;
   args.parser = entParser;    args.parser = entParser;
   filename = resolveSystemId(base, systemId, &s);    filename = resolveSystemId(base, systemId, &s);
   XML_SetBase(entParser, filename);    XML_SetBase(entParser, filename);
   filemapRes = filemap(filename, processFile, &args);    if (!filemap(filename, processFile, &args))
   switch (filemapRes) {  
   case 0:  
     result = 0;      result = 0;
     break;  
   case 2:  
     ftprintf(stderr, T("%s: file too large for memory-mapping")  
         T(", switching to streaming\n"), filename);  
     result = processStream(filename, entParser);  
     break;  
   }  
   free(s);    free(s);
   XML_ParserFree(entParser);    XML_ParserFree(entParser);
   return result;    return result;
Line 236  XML_ProcessFile(XML_Parser parser,
Line 233  XML_ProcessFile(XML_Parser parser,
                                       ? externalEntityRefFilemap                                        ? externalEntityRefFilemap
                                       : externalEntityRefStream);                                        : externalEntityRefStream);
   if (flags & XML_MAP_FILE) {    if (flags & XML_MAP_FILE) {
     int filemapRes;  
     PROCESS_ARGS args;      PROCESS_ARGS args;
     args.retPtr = &result;      args.retPtr = &result;
     args.parser = parser;      args.parser = parser;
     filemapRes = filemap(filename, processFile, &args);      if (!filemap(filename, processFile, &args))
     switch (filemapRes) {  
     case 0:  
       result = 0;        result = 0;
       break;  
     case 2:  
       ftprintf(stderr, T("%s: file too large for memory-mapping")  
           T(", switching to streaming\n"), filename);  
       result = processStream(filename, parser);  
       break;  
     }  
   }    }
   else    else
     result = processStream(filename, parser);      result = processStream(filename, parser);

Legend:
Removed from v.1.1.1.1.2.2  
changed lines
  Added in v.1.1.1.2

CVSweb <webmaster@jp.NetBSD.org>