diff options
author | Sebastian Pipping <sebastian@pipping.org> | 2022-02-14 03:46:57 +0100 |
---|---|---|
committer | Sebastian Pipping <sebastian@pipping.org> | 2022-02-20 19:05:36 +0100 |
commit | a4ffcb1231fbb5aeef286e476776c491f7ba6684 (patch) | |
tree | 8849118726a0dbcf150a7aefd46d37084ad0b204 | |
parent | 8dd2e709e9774b99e6bddb1a6d46d9dccb0f3505 (diff) | |
download | libexpat-git-a4ffcb1231fbb5aeef286e476776c491f7ba6684.tar.gz |
lib: Add string length function xcslen for static re-use
-rw-r--r-- | expat/CMakeLists.txt | 1 | ||||
-rw-r--r-- | expat/lib/Makefile.am | 1 | ||||
-rw-r--r-- | expat/lib/xcsinc.c | 48 |
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 +} |