core/expat-2.0.1/lib/xmltok_ns.c
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 02 Feb 2016 21:49:24 +0000
changeset 300 b6d834208d33
parent 296 xmlreaderimpl/support/expat-2.0.1/lib/xmltok_ns.c@ea3dbc023c80
permissions -rw-r--r--
ExpatXMLReader and DOM3XMLReader moved to xmlsuite/core package ...to ease usage of the package. Therefore it's no longer needed to also build xmlsuite/xmlreaderimpl in order to actually parse something. Expat should provide a good default.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
172
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
   See the file COPYING for copying permission.
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
*/
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
/* This file is included! */
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
#ifdef XML_TOK_NS_C
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
const ENCODING *
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
NS(XmlGetUtf8InternalEncoding)(void)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
  return &ns(internal_utf8_encoding).enc;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
const ENCODING *
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
NS(XmlGetUtf16InternalEncoding)(void)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
#if BYTEORDER == 1234
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
  return &ns(internal_little2_encoding).enc;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
#elif BYTEORDER == 4321
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
  return &ns(internal_big2_encoding).enc;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
#else
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
  const short n = 1;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
  return (*(const char *)&n
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
          ? &ns(internal_little2_encoding).enc
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
          : &ns(internal_big2_encoding).enc);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
#endif
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
static const ENCODING * const NS(encodings)[] = {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
  &ns(latin1_encoding).enc,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
  &ns(ascii_encoding).enc,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
  &ns(utf8_encoding).enc,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
  &ns(big2_encoding).enc,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
  &ns(big2_encoding).enc,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
  &ns(little2_encoding).enc,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
  &ns(utf8_encoding).enc /* NO_ENC */
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
};
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
static int PTRCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
NS(initScanProlog)(const ENCODING *enc, const char *ptr, const char *end,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
                   const char **nextTokPtr)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
  return initScan(NS(encodings), (const INIT_ENCODING *)enc,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
                  XML_PROLOG_STATE, ptr, end, nextTokPtr);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
static int PTRCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
NS(initScanContent)(const ENCODING *enc, const char *ptr, const char *end,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
                    const char **nextTokPtr)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
  return initScan(NS(encodings), (const INIT_ENCODING *)enc,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
                  XML_CONTENT_STATE, ptr, end, nextTokPtr);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
int
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
                    const char *name)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
  int i = getEncodingIndex(name);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
  if (i == UNKNOWN_ENC)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
    return 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
  SET_INIT_ENC_INDEX(p, i);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
  p->initEnc.scanners[XML_PROLOG_STATE] = NS(initScanProlog);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
  p->initEnc.scanners[XML_CONTENT_STATE] = NS(initScanContent);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
  p->initEnc.updatePosition = initUpdatePosition;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
  p->encPtr = encPtr;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
  *encPtr = &(p->initEnc);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
  return 1;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
static const ENCODING *
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
#define ENCODING_MAX 128
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
  char buf[ENCODING_MAX];
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
  char *p = buf;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
  int i;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
  XmlUtf8Convert(enc, &ptr, end, &p, p + ENCODING_MAX - 1);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
  if (ptr != end)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
    return 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
  *p = 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
  if (streqci(buf, KW_UTF_16) && enc->minBytesPerChar == 2)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
    return enc;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
  i = getEncodingIndex(buf);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
  if (i == UNKNOWN_ENC)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
    return 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
  return NS(encodings)[i];
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
int
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
NS(XmlParseXmlDecl)(int isGeneralTextEntity,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
                    const ENCODING *enc,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
                    const char *ptr,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
                    const char *end,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
                    const char **badPtr,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
                    const char **versionPtr,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
                    const char **versionEndPtr,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
                    const char **encodingName,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
                    const ENCODING **encoding,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
                    int *standalone)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
  return doParseXmlDecl(NS(findEncoding),
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
                        isGeneralTextEntity,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
                        enc,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
                        ptr,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
                        end,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
                        badPtr,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
                        versionPtr,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
                        versionEndPtr,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
                        encodingName,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
                        encoding,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
                        standalone);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
#endif /* XML_TOK_NS_C */