/src/libexpat/expat/lib/xmltok_ns.c
Line | Count | Source |
1 | | /* This file is included! |
2 | | __ __ _ |
3 | | ___\ \/ /_ __ __ _| |_ |
4 | | / _ \\ /| '_ \ / _` | __| |
5 | | | __// \| |_) | (_| | |_ |
6 | | \___/_/\_\ .__/ \__,_|\__| |
7 | | |_| XML parser |
8 | | |
9 | | Copyright (c) 1997-2000 Thai Open Source Software Center Ltd |
10 | | Copyright (c) 2000 Clark Cooper <coopercc@users.sourceforge.net> |
11 | | Copyright (c) 2002 Greg Stein <gstein@users.sourceforge.net> |
12 | | Copyright (c) 2002 Fred L. Drake, Jr. <fdrake@users.sourceforge.net> |
13 | | Copyright (c) 2002-2006 Karl Waclawek <karl@waclawek.net> |
14 | | Copyright (c) 2017-2021 Sebastian Pipping <sebastian@pipping.org> |
15 | | Copyright (c) 2025 Alfonso Gregory <gfunni234@gmail.com> |
16 | | Licensed under the MIT license: |
17 | | |
18 | | Permission is hereby granted, free of charge, to any person obtaining |
19 | | a copy of this software and associated documentation files (the |
20 | | "Software"), to deal in the Software without restriction, including |
21 | | without limitation the rights to use, copy, modify, merge, publish, |
22 | | distribute, sublicense, and/or sell copies of the Software, and to permit |
23 | | persons to whom the Software is furnished to do so, subject to the |
24 | | following conditions: |
25 | | |
26 | | The above copyright notice and this permission notice shall be included |
27 | | in all copies or substantial portions of the Software. |
28 | | |
29 | | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
30 | | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
31 | | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN |
32 | | NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, |
33 | | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR |
34 | | OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE |
35 | | USE OR OTHER DEALINGS IN THE SOFTWARE. |
36 | | */ |
37 | | |
38 | | #ifdef XML_TOK_NS_C |
39 | | |
40 | | const ENCODING * |
41 | 11.1k | NS(XmlGetUtf8InternalEncoding)(void) { |
42 | 11.1k | return &ns(internal_utf8_encoding).enc; |
43 | 11.1k | } Unexecuted instantiation: XmlGetUtf8InternalEncoding XmlGetUtf8InternalEncodingNS Line | Count | Source | 41 | 11.1k | NS(XmlGetUtf8InternalEncoding)(void) { | 42 | 11.1k | return &ns(internal_utf8_encoding).enc; | 43 | 11.1k | } |
|
44 | | |
45 | | const ENCODING * |
46 | 0 | NS(XmlGetUtf16InternalEncoding)(void) { |
47 | 0 | # if BYTEORDER == 1234 |
48 | 0 | return &ns(internal_little2_encoding).enc; |
49 | | # elif BYTEORDER == 4321 |
50 | | return &ns(internal_big2_encoding).enc; |
51 | | # else |
52 | | const short n = 1; |
53 | | return (*(const char *)&n ? &ns(internal_little2_encoding).enc |
54 | | : &ns(internal_big2_encoding).enc); |
55 | | # endif |
56 | 0 | } Unexecuted instantiation: XmlGetUtf16InternalEncoding Unexecuted instantiation: XmlGetUtf16InternalEncodingNS |
57 | | |
58 | | static const ENCODING *const NS(encodings)[] = { |
59 | | &ns(latin1_encoding).enc, &ns(ascii_encoding).enc, |
60 | | &ns(utf8_encoding).enc, &ns(big2_encoding).enc, |
61 | | &ns(big2_encoding).enc, &ns(little2_encoding).enc, |
62 | | &ns(utf8_encoding).enc /* NO_ENC */ |
63 | | }; |
64 | | |
65 | | static int PTRCALL |
66 | | NS(initScanProlog)(const ENCODING *enc, const char *ptr, const char *end, |
67 | 11.1k | const char **nextTokPtr) { |
68 | 11.1k | return initScan(NS(encodings), (const INIT_ENCODING *)enc, XML_PROLOG_STATE, |
69 | 11.1k | ptr, end, nextTokPtr); |
70 | 11.1k | } Unexecuted instantiation: xmltok.c:initScanProlog xmltok.c:initScanPrologNS Line | Count | Source | 67 | 11.1k | const char **nextTokPtr) { | 68 | 11.1k | return initScan(NS(encodings), (const INIT_ENCODING *)enc, XML_PROLOG_STATE, | 69 | 11.1k | ptr, end, nextTokPtr); | 70 | 11.1k | } |
|
71 | | |
72 | | static int PTRCALL |
73 | | NS(initScanContent)(const ENCODING *enc, const char *ptr, const char *end, |
74 | 0 | const char **nextTokPtr) { |
75 | 0 | return initScan(NS(encodings), (const INIT_ENCODING *)enc, XML_CONTENT_STATE, |
76 | 0 | ptr, end, nextTokPtr); |
77 | 0 | } Unexecuted instantiation: xmltok.c:initScanContent Unexecuted instantiation: xmltok.c:initScanContentNS |
78 | | |
79 | | int |
80 | | NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr, |
81 | 22.3k | const char *name) { |
82 | 22.3k | int i = getEncodingIndex(name); |
83 | 22.3k | if (i == UNKNOWN_ENC) |
84 | 0 | return 0; |
85 | 22.3k | SET_INIT_ENC_INDEX(p, i); |
86 | 22.3k | p->initEnc.scanners[XML_PROLOG_STATE] = NS(initScanProlog); |
87 | 22.3k | p->initEnc.scanners[XML_CONTENT_STATE] = NS(initScanContent); |
88 | 22.3k | p->initEnc.updatePosition = initUpdatePosition; |
89 | 22.3k | p->encPtr = encPtr; |
90 | 22.3k | *encPtr = &(p->initEnc); |
91 | 22.3k | return 1; |
92 | 22.3k | } Line | Count | Source | 81 | 11.1k | const char *name) { | 82 | 11.1k | int i = getEncodingIndex(name); | 83 | 11.1k | if (i == UNKNOWN_ENC) | 84 | 0 | return 0; | 85 | 11.1k | SET_INIT_ENC_INDEX(p, i); | 86 | 11.1k | p->initEnc.scanners[XML_PROLOG_STATE] = NS(initScanProlog); | 87 | 11.1k | p->initEnc.scanners[XML_CONTENT_STATE] = NS(initScanContent); | 88 | 11.1k | p->initEnc.updatePosition = initUpdatePosition; | 89 | 11.1k | p->encPtr = encPtr; | 90 | 11.1k | *encPtr = &(p->initEnc); | 91 | 11.1k | return 1; | 92 | 11.1k | } |
Line | Count | Source | 81 | 11.1k | const char *name) { | 82 | 11.1k | int i = getEncodingIndex(name); | 83 | 11.1k | if (i == UNKNOWN_ENC) | 84 | 0 | return 0; | 85 | 11.1k | SET_INIT_ENC_INDEX(p, i); | 86 | 11.1k | p->initEnc.scanners[XML_PROLOG_STATE] = NS(initScanProlog); | 87 | 11.1k | p->initEnc.scanners[XML_CONTENT_STATE] = NS(initScanContent); | 88 | 11.1k | p->initEnc.updatePosition = initUpdatePosition; | 89 | 11.1k | p->encPtr = encPtr; | 90 | 11.1k | *encPtr = &(p->initEnc); | 91 | 11.1k | return 1; | 92 | 11.1k | } |
|
93 | | |
94 | | static const ENCODING * |
95 | 0 | NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end) { |
96 | 0 | # define ENCODING_MAX 128 |
97 | 0 | char buf[ENCODING_MAX] = ""; |
98 | 0 | char *p = buf; |
99 | 0 | int i; |
100 | 0 | XmlUtf8Convert(enc, &ptr, end, &p, p + ENCODING_MAX - 1); |
101 | 0 | if (ptr != end) |
102 | 0 | return NULL; |
103 | 0 | *p = 0; |
104 | 0 | if (streqci(buf, KW_UTF_16) && enc->minBytesPerChar == 2) |
105 | 0 | return enc; |
106 | 0 | i = getEncodingIndex(buf); |
107 | 0 | if (i == UNKNOWN_ENC) |
108 | 0 | return NULL; |
109 | 0 | return NS(encodings)[i]; |
110 | 0 | } Unexecuted instantiation: xmltok.c:findEncoding Unexecuted instantiation: xmltok.c:findEncodingNS |
111 | | |
112 | | int |
113 | | NS(XmlParseXmlDecl)(int isGeneralTextEntity, const ENCODING *enc, |
114 | | const char *ptr, const char *end, const char **badPtr, |
115 | | const char **versionPtr, const char **versionEndPtr, |
116 | | const char **encodingName, const ENCODING **encoding, |
117 | 0 | int *standalone) { |
118 | 0 | return doParseXmlDecl(NS(findEncoding), isGeneralTextEntity, enc, ptr, end, |
119 | 0 | badPtr, versionPtr, versionEndPtr, encodingName, |
120 | 0 | encoding, standalone); |
121 | 0 | } Unexecuted instantiation: XmlParseXmlDecl Unexecuted instantiation: XmlParseXmlDeclNS |
122 | | |
123 | | #endif /* XML_TOK_NS_C */ |