summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Pipping <sebastian@pipping.org>2022-02-14 03:46:57 +0100
committerSebastian Pipping <sebastian@pipping.org>2022-02-20 19:05:36 +0100
commita4ffcb1231fbb5aeef286e476776c491f7ba6684 (patch)
tree8849118726a0dbcf150a7aefd46d37084ad0b204
parent8dd2e709e9774b99e6bddb1a6d46d9dccb0f3505 (diff)
downloadlibexpat-git-a4ffcb1231fbb5aeef286e476776c491f7ba6684.tar.gz
lib: Add string length function xcslen for static re-use
-rw-r--r--expat/CMakeLists.txt1
-rw-r--r--expat/lib/Makefile.am1
-rw-r--r--expat/lib/xcsinc.c48
3 files changed, 50 insertions, 0 deletions
diff --git a/expat/CMakeLists.txt b/expat/CMakeLists.txt
index a36b1d06..66a0d1df 100644
--- a/expat/CMakeLists.txt
+++ b/expat/CMakeLists.txt
@@ -386,6 +386,7 @@ set(expat_SRCS
lib/xmlrole.c
lib/xmltok.c
# NOTE: ISO C forbids an empty translation unit
+# lib/xcsinc.c
# lib/xmltok_impl.c
# lib/xmltok_ns.c
)
diff --git a/expat/lib/Makefile.am b/expat/lib/Makefile.am
index d5402496..719ff005 100644
--- a/expat/lib/Makefile.am
+++ b/expat/lib/Makefile.am
@@ -80,6 +80,7 @@ EXTRA_DIST = \
siphash.h \
utf8tab.h \
winconfig.h \
+ xcsinc.c \
xmlrole.h \
xmltok.h \
xmltok_impl.c \
diff --git a/expat/lib/xcsinc.c b/expat/lib/xcsinc.c
new file mode 100644
index 00000000..3597c248
--- /dev/null
+++ b/expat/lib/xcsinc.c
@@ -0,0 +1,48 @@
+/* This file is included from other .c files!
+ __ __ _
+ ___\ \/ /_ __ __ _| |_
+ / _ \\ /| '_ \ / _` | __|
+ | __// \| |_) | (_| | |_
+ \___/_/\_\ .__/ \__,_|\__|
+ |_| XML parser
+
+ Copyright (c) 2022 Sebastian Pipping <sebastian@pipping.org>
+ Licensed under the MIT license:
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to permit
+ persons to whom the Software is furnished to do so, subject to the
+ following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+ NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+static size_t
+xcslen(const XML_Char *s) {
+#ifdef XML_UNICODE
+# ifdef XML_UNICODE_WCHAR_T
+ return wcslen(s);
+# else
+ // XML_Char is unsigned short
+ size_t len = 0;
+ while (s[len]) {
+ len++;
+ }
+ return len;
+# endif
+#else
+ return strlen(s);
+#endif
+}