"Fossies" - the Fresh Open Source Software Archive

Member "sitecopy-0.16.6/lib/expat/xmltok/xmltok_ns.c" (10 Oct 2004, 2418 Bytes) of archive /linux/www/sitecopy-0.16.6.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "xmltok_ns.c" see the Fossies "Dox" file reference documentation.

    1 const ENCODING *NS(XmlGetUtf8InternalEncoding)(void)
    2 {
    3   return &ns(internal_utf8_encoding).enc;
    4 }
    5 
    6 const ENCODING *NS(XmlGetUtf16InternalEncoding)(void)
    7 {
    8 #if XML_BYTE_ORDER == 12
    9   return &ns(internal_little2_encoding).enc;
   10 #elif XML_BYTE_ORDER == 21
   11   return &ns(internal_big2_encoding).enc;
   12 #else
   13   const short n = 1;
   14   return *(const char *)&n ? &ns(internal_little2_encoding).enc : &ns(internal_big2_encoding).enc;
   15 #endif
   16 }
   17 
   18 static
   19 const ENCODING *NS(encodings)[] = {
   20   &ns(latin1_encoding).enc,
   21   &ns(ascii_encoding).enc,
   22   &ns(utf8_encoding).enc,
   23   &ns(big2_encoding).enc,
   24   &ns(big2_encoding).enc,
   25   &ns(little2_encoding).enc,
   26   &ns(utf8_encoding).enc /* NO_ENC */
   27 };
   28 
   29 static
   30 int NS(initScanProlog)(const ENCODING *enc, const char *ptr, const char *end,
   31                const char **nextTokPtr)
   32 {
   33   return initScan(NS(encodings), (const INIT_ENCODING *)enc, XML_PROLOG_STATE, ptr, end, nextTokPtr);
   34 }
   35 
   36 static
   37 int NS(initScanContent)(const ENCODING *enc, const char *ptr, const char *end,
   38                const char **nextTokPtr)
   39 {
   40   return initScan(NS(encodings), (const INIT_ENCODING *)enc, XML_CONTENT_STATE, ptr, end, nextTokPtr);
   41 }
   42 
   43 int NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr, const char *name)
   44 {
   45   int i = getEncodingIndex(name);
   46   if (i == UNKNOWN_ENC)
   47     return 0;
   48   SET_INIT_ENC_INDEX(p, i);
   49   p->initEnc.scanners[XML_PROLOG_STATE] = NS(initScanProlog);
   50   p->initEnc.scanners[XML_CONTENT_STATE] = NS(initScanContent);
   51   p->initEnc.updatePosition = initUpdatePosition;
   52   p->encPtr = encPtr;
   53   *encPtr = &(p->initEnc);
   54   return 1;
   55 }
   56 
   57 static
   58 const ENCODING *NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end)
   59 {
   60 #define ENCODING_MAX 128
   61   char buf[ENCODING_MAX];
   62   char *p = buf;
   63   int i;
   64   XmlUtf8Convert(enc, &ptr, end, &p, p + ENCODING_MAX - 1);
   65   if (ptr != end)
   66     return 0;
   67   *p = 0;
   68   if (streqci(buf, "UTF-16") && enc->minBytesPerChar == 2)
   69     return enc;
   70   i = getEncodingIndex(buf);
   71   if (i == UNKNOWN_ENC)
   72     return 0;
   73   return NS(encodings)[i];
   74 }
   75 
   76 int NS(XmlParseXmlDecl)(int isGeneralTextEntity,
   77             const ENCODING *enc,
   78             const char *ptr,
   79             const char *end,
   80             const char **badPtr,
   81             const char **versionPtr,
   82             const char **encodingName,
   83             const ENCODING **encoding,
   84             int *standalone)
   85 {
   86   return doParseXmlDecl(NS(findEncoding),
   87             isGeneralTextEntity,
   88             enc,
   89             ptr,
   90             end,
   91             badPtr,
   92             versionPtr,
   93             encodingName,
   94             encoding,
   95             standalone);
   96 }