MFV r355071: libbsdxml (expat) 2.2.9.
MFC after: 2 weeks Relnotes: yes
This commit is contained in:
commit
084caaa165
@ -2,6 +2,162 @@ NOTE: We are looking for help with a few things:
|
||||
https://github.com/libexpat/libexpat/labels/help%20wanted
|
||||
If you can help, please get in touch. Thanks!
|
||||
|
||||
Release 2.2.9 Wed Septemper 25 2019
|
||||
Other changes:
|
||||
examples: Drop executable bits from elements.c
|
||||
#349 Windows: Change the name of the Windows DLLs from expat*.dll
|
||||
to libexpat*.dll once more (regression from 2.2.8, first
|
||||
fixed in 1.95.3, issue #61 on SourceForge today,
|
||||
was issue #432456 back then); needs a fix due
|
||||
case-insensitive file systems on Windows and the fact that
|
||||
Perl's XML::Parser::Expat compiles into Expat.dll.
|
||||
#347 Windows: Only define _CRT_RAND_S if not defined
|
||||
Version info bumped from 7:10:6 to 7:11:6
|
||||
|
||||
Special thanks to:
|
||||
Ben Wagner
|
||||
|
||||
Release 2.2.8 Fri Septemper 13 2019
|
||||
Security fixes:
|
||||
#317 #318 CVE-2019-15903 -- Fix heap overflow triggered by
|
||||
XML_GetCurrentLineNumber (or XML_GetCurrentColumnNumber),
|
||||
and deny internal entities closing the doctype;
|
||||
fixed in commit c20b758c332d9a13afbbb276d30db1d183a85d43
|
||||
|
||||
Bug fixes:
|
||||
#240 Fix cases where XML_StopParser did not have any effect
|
||||
when called from inside of an end element handler
|
||||
#341 xmlwf: Fix exit code for operation without "-d DIRECTORY";
|
||||
previously, only "-d DIRECTORY" would give you a proper
|
||||
exit code:
|
||||
# xmlwf -d . <<<'<not well-formed>' 2>/dev/null ; echo $?
|
||||
2
|
||||
# xmlwf <<<'<not well-formed>' 2>/dev/null ; echo $?
|
||||
0
|
||||
Now both cases return exit code 2.
|
||||
|
||||
Other changes:
|
||||
#299 #302 Windows: Replace LoadLibrary hack to access
|
||||
unofficial API function SystemFunction036 (RtlGenRandom)
|
||||
by using official API function rand_s (needs WinXP+)
|
||||
#325 Windows: Drop support for Visual Studio <=7.1/2003
|
||||
and document supported compilers in README.md
|
||||
#286 Windows: Remove COM code from xmlwf; in case it turns
|
||||
out needed later, there will be a dedicated repository
|
||||
below https://github.com/libexpat/ for that code
|
||||
#322 Windows: Remove explicit MSVC solution and project files.
|
||||
You can generate Visual Studio solution files through
|
||||
CMake, e.g.: cmake -G"Visual Studio 15 2017" .
|
||||
#338 xmlwf: Make "xmlwf -h" help output more friendly
|
||||
#339 examples: Improve elements.c
|
||||
#244 #264 Autotools: Add argument --enable-xml-attr-info
|
||||
#239 #301 Autotools: Add arguments
|
||||
--with-getrandom
|
||||
--without-getrandom
|
||||
--with-sys-getrandom
|
||||
--without-sys-getrandom
|
||||
#312 #343 Autotools: Fix linking issues with "./configure LD=clang"
|
||||
Autotools: Fix "make run-xmltest" for out-of-source builds
|
||||
#329 #336 CMake: Pull all options from Expat <=2.2.7 into namespace
|
||||
prefix EXPAT_ with the exception of DOCBOOK_TO_MAN:
|
||||
- BUILD_doc -> EXPAT_BUILD_DOCS (plural)
|
||||
- BUILD_examples -> EXPAT_BUILD_EXAMPLES
|
||||
- BUILD_shared -> EXPAT_SHARED_LIBS
|
||||
- BUILD_tests -> EXPAT_BUILD_TESTS
|
||||
- BUILD_tools -> EXPAT_BUILD_TOOLS
|
||||
- DOCBOOK_TO_MAN -> DOCBOOK_TO_MAN (unchanged)
|
||||
- INSTALL -> EXPAT_ENABLE_INSTALL
|
||||
- MSVC_USE_STATIC_CRT -> EXPAT_MSVC_STATIC_CRT
|
||||
- USE_libbsd -> EXPAT_WITH_LIBBSD
|
||||
- WARNINGS_AS_ERRORS -> EXPAT_WARNINGS_AS_ERRORS
|
||||
- XML_CONTEXT_BYTES -> EXPAT_CONTEXT_BYTES
|
||||
- XML_DEV_URANDOM -> EXPAT_DEV_URANDOM
|
||||
- XML_DTD -> EXPAT_DTD
|
||||
- XML_NS -> EXPAT_NS
|
||||
- XML_UNICODE -> EXPAT_CHAR_TYPE=ushort (!)
|
||||
- XML_UNICODE_WCHAR_T -> EXPAT_CHAR_TYPE=wchar_t (!)
|
||||
#244 #264 CMake: Add argument -DEXPAT_ATTR_INFO=(ON|OFF),
|
||||
default OFF
|
||||
#326 CMake: Add argument -DEXPAT_LARGE_SIZE=(ON|OFF),
|
||||
default OFF
|
||||
#328 CMake: Add argument -DEXPAT_MIN_SIZE=(ON|OFF),
|
||||
default OFF
|
||||
#239 #277 CMake: Add arguments
|
||||
-DEXPAT_WITH_GETRANDOM=(ON|OFF|AUTO), default AUTO
|
||||
-DEXPAT_WITH_SYS_GETRANDOM=(ON|OFF|AUTO), default AUTO
|
||||
#326 CMake: Install expat_config.h to include directory
|
||||
#326 CMake: Generate and install configuration files for
|
||||
future find_package(expat [..] CONFIG [..])
|
||||
CMake: Now produces a summary of applied configuration
|
||||
CMake: Require C++ compiler only when tests are enabled
|
||||
#330 CMake: Fix compilation for 16bit character types,
|
||||
i.e. ex -DXML_UNICODE=ON (and ex -DXML_UNICODE_WCHAR_T=ON)
|
||||
#265 CMake: Fix linking with MinGW
|
||||
#330 CMake: Add full support for MinGW; to enable, use
|
||||
-DCMAKE_TOOLCHAIN_FILE=[expat]/cmake/mingw-toolchain.cmake
|
||||
#330 CMake: Port "make run-xmltest" from GNU Autotools to CMake
|
||||
#316 CMake: Windows: Make binary postfix match MSVC
|
||||
Old: expat[d].lib
|
||||
New: expat[w][d][MD|MT].lib
|
||||
CMake: Migrate files from Windows to Unix line endings
|
||||
#308 CMake: Integrate OSS-Fuzz fuzzers, option
|
||||
-DEXPAT_BUILD_FUZZERS=(ON|OFF), default OFF
|
||||
#14 Drop an OpenVMS support leftover
|
||||
#235 #268 ..
|
||||
#270 #310 ..
|
||||
#313 #331 #333 Address compiler warnings
|
||||
#282 #283 ..
|
||||
#284 #285 Address cppcheck warnings
|
||||
#294 #295 Address Clang Static Analyzer warnings
|
||||
#24 #293 Mass-apply clang-format 9 (and ensure conformance during CI)
|
||||
Version info bumped from 7:9:6 to 7:10:6
|
||||
|
||||
Special thanks to:
|
||||
David Loffredo
|
||||
Joonun Jang
|
||||
Khajapasha Mohammed
|
||||
Kishore Kunche
|
||||
Marco Maggi
|
||||
Mitch Phillips
|
||||
Rolf Ade
|
||||
xantares
|
||||
Zhongyuan Zhou
|
||||
|
||||
Release 2.2.7 Wed June 19 2019
|
||||
Security fixes:
|
||||
#186 #262 CVE-2018-20843 -- Fix extraction of namespace prefixes from
|
||||
XML names; XML names with multiple colons could end up in
|
||||
the wrong namespace, and take a high amount of RAM and CPU
|
||||
resources while processing, opening the door to
|
||||
use for denial-of-service attacks
|
||||
|
||||
Other changes:
|
||||
#195 #197 Autotools/CMake: Utilize -fvisibility=hidden to stop
|
||||
exporting non-API symbols
|
||||
#227 Autotools: Add --without-examples and --without-tests
|
||||
#228 Autotools: Modernize configure.ac
|
||||
#245 #246 Autotools: Fix check for -fvisibility=hidden for Clang
|
||||
#247 #248 Autotools: Fix compilation for lack of docbook2x-man
|
||||
#236 #258 Autotools: Produce .tar.{gz,lz,xz} release archives
|
||||
#212 CMake: Make libdir of pkgconfig expat.pc support multilib
|
||||
#158 #263 CMake: Build man page in PROJECT_BINARY_DIR not _SOURCE_DIR
|
||||
#219 Remove fallback to bcopy, assume that memmove(3) exists
|
||||
#257 Use portable "/usr/bin/env bash" shebang (e.g. for OpenBSD)
|
||||
#243 Windows: Fix syntax of .def module definition files
|
||||
Version info bumped from 7:8:6 to 7:9:6
|
||||
|
||||
Special thanks to:
|
||||
Benjamin Peterson
|
||||
Caolán McNamara
|
||||
Hanno Böck
|
||||
KangLin
|
||||
Kishore Kunche
|
||||
Marco Maggi
|
||||
Rhodri James
|
||||
Sebastian Dröge
|
||||
userwithuid
|
||||
Yury Gribov
|
||||
|
||||
Release 2.2.6 Sun August 12 2018
|
||||
Bug fixes:
|
||||
#170 #206 Avoid doing arithmetic with NULL pointers in XML_GetBuffer
|
||||
|
@ -8,6 +8,7 @@
|
||||
*.pc.in
|
||||
*.vcxproj*
|
||||
*config.h
|
||||
cmake
|
||||
CMake*
|
||||
Configure*
|
||||
amiga
|
||||
|
@ -30,14 +30,21 @@
|
||||
|
||||
AUTOMAKE_OPTIONS = \
|
||||
dist-bzip2 \
|
||||
dist-lzip \
|
||||
dist-xz \
|
||||
foreign \
|
||||
no-dist-gzip \
|
||||
subdir-objects
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
LIBTOOLFLAGS = --verbose
|
||||
|
||||
SUBDIRS = lib examples tests # lib goes first to build first
|
||||
SUBDIRS = lib # lib goes first to build first
|
||||
if WITH_EXAMPLES
|
||||
SUBDIRS += examples
|
||||
endif
|
||||
if WITH_TESTS
|
||||
SUBDIRS += tests
|
||||
endif
|
||||
if WITH_XMLWF
|
||||
SUBDIRS += xmlwf doc
|
||||
endif
|
||||
@ -47,41 +54,19 @@ pkgconfigdir = $(libdir)/pkgconfig
|
||||
|
||||
|
||||
_EXTRA_DIST_CMAKE = \
|
||||
cmake/expat-config.cmake.in \
|
||||
cmake/mingw-toolchain.cmake \
|
||||
\
|
||||
CMakeLists.txt \
|
||||
CMake.README \
|
||||
ConfigureChecks.cmake \
|
||||
expat_config.h.cmake
|
||||
|
||||
_EXTRA_DIST_WINDOWS = \
|
||||
examples/elements.vcxproj \
|
||||
examples/elements.vcxproj.filters \
|
||||
examples/outline.vcxproj \
|
||||
examples/outline.vcxproj.filters \
|
||||
\
|
||||
lib/expat_static.vcxproj \
|
||||
lib/expat_static.vcxproj.filters \
|
||||
lib/expat.vcxproj \
|
||||
lib/expat.vcxproj.filters \
|
||||
lib/expatw_static.vcxproj \
|
||||
lib/expatw_static.vcxproj.filters \
|
||||
lib/expatw.vcxproj \
|
||||
lib/expatw.vcxproj.filters \
|
||||
\
|
||||
tests/benchmark/benchmark.sln \
|
||||
tests/benchmark/benchmark.vcxproj \
|
||||
\
|
||||
tests/runtests.sln \
|
||||
tests/runtests.vcxproj \
|
||||
tests/runtests.vcxproj.filters \
|
||||
\
|
||||
win32/build_expat_iss.bat \
|
||||
win32/expat.iss \
|
||||
win32/MANIFEST.txt \
|
||||
win32/README.txt \
|
||||
\
|
||||
xmlwf/xmlwf.vcxproj \
|
||||
xmlwf/xmlwf.vcxproj.filters \
|
||||
\
|
||||
expat.sln
|
||||
win32/README.txt
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(_EXTRA_DIST_CMAKE) \
|
||||
@ -91,8 +76,13 @@ EXTRA_DIST = \
|
||||
conftools/get-version.sh \
|
||||
conftools/PrintPath \
|
||||
\
|
||||
xmlwf/xmlwf_helpgen.py \
|
||||
xmlwf/xmlwf_helpgen.sh \
|
||||
\
|
||||
Changes \
|
||||
README.md \
|
||||
\
|
||||
fix-xmltest-log.sh \
|
||||
test-driver-wrapper.sh
|
||||
|
||||
|
||||
@ -121,7 +111,8 @@ run-benchmark:
|
||||
$(MAKE) -C tests/benchmark
|
||||
./run.sh tests/benchmark/benchmark@EXEEXT@ -n $(top_srcdir)/../testdata/largefiles/recset.xml 65535 3
|
||||
|
||||
tests/xmlts.zip:
|
||||
.PHONY: download-xmlts-zip
|
||||
download-xmlts-zip:
|
||||
if test "$(XMLTS_ZIP)" = ""; then \
|
||||
wget --output-document=tests/xmlts.zip \
|
||||
https://www.w3.org/XML/Test/xmlts20080827.zip; \
|
||||
@ -129,16 +120,26 @@ tests/xmlts.zip:
|
||||
cp $(XMLTS_ZIP) tests/xmlts.zip; \
|
||||
fi
|
||||
|
||||
tests/xmlconf: tests/xmlts.zip
|
||||
tests/xmlts.zip:
|
||||
$(MAKE) download-xmlts-zip
|
||||
|
||||
.PHONY: extract-xmlts-zip
|
||||
extract-xmlts-zip: tests/xmlts.zip
|
||||
[ -f $(builddir)/tests/xmlts.zip ] || $(MAKE) download-xmlts-zip # vpath workaround
|
||||
cd tests && unzip -q xmlts.zip
|
||||
|
||||
tests/xmlconf: tests/xmlts.zip
|
||||
$(MAKE) extract-xmlts-zip
|
||||
|
||||
.PHONY: run-xmltest
|
||||
run-xmltest: tests/xmlconf
|
||||
if WITH_XMLWF
|
||||
[ -d $(builddir)/tests/xmlconf ] || $(MAKE) extract-xmlts-zip # vpath workaround
|
||||
$(MAKE) -C lib
|
||||
$(MAKE) -C xmlwf
|
||||
tests/xmltest.sh "$(PWD)/run.sh $(PWD)/xmlwf/xmlwf@EXEEXT@" 2>&1 | tee tests/xmltest.log
|
||||
dos2unix tests/xmltest.log
|
||||
diff -u tests/xmltest.log.expected tests/xmltest.log
|
||||
$(srcdir)/tests/xmltest.sh "$(abs_builddir)/run.sh $(abs_builddir)/xmlwf/xmlwf@EXEEXT@" 2>&1 | tee $(builddir)/tests/xmltest.log
|
||||
$(srcdir)/fix-xmltest-log.sh $(builddir)/tests/xmltest.log
|
||||
diff -u $(srcdir)/tests/xmltest.log.expected $(builddir)/tests/xmltest.log
|
||||
else
|
||||
@echo 'ERROR: xmlwf is needed for "make run-xmltest".' >&2
|
||||
@echo 'ERROR: Please re-configure without --without-xmlwf.' >&2
|
||||
@ -147,7 +148,7 @@ endif
|
||||
|
||||
.PHONY: qa
|
||||
qa:
|
||||
./qa.sh address
|
||||
./qa.sh memory
|
||||
./qa.sh undefined
|
||||
./qa.sh coverage
|
||||
QA_COMPILER=clang QA_SANITIZER=address ./qa.sh
|
||||
QA_COMPILER=clang QA_SANITIZER=memory ./qa.sh
|
||||
QA_COMPILER=clang QA_SANITIZER=undefined ./qa.sh
|
||||
QA_COMPILER=gcc QA_PROCESSOR=gcov ./qa.sh
|
||||
|
@ -1,7 +1,7 @@
|
||||
# Makefile.in generated by automake 1.15.1 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2017 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -118,13 +118,22 @@ PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
@WITH_XMLWF_TRUE@am__append_1 = xmlwf doc
|
||||
@WITH_EXAMPLES_TRUE@am__append_1 = examples
|
||||
@WITH_TESTS_TRUE@am__append_2 = tests
|
||||
@WITH_XMLWF_TRUE@am__append_3 = xmlwf doc
|
||||
subdir = .
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/conftools/ac_c_bigendian_cross.m4 \
|
||||
$(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/conftools/ax-require-defined.m4 \
|
||||
$(top_srcdir)/conftools/ax-check-compile-flag.m4 \
|
||||
$(top_srcdir)/conftools/ax-check-link-flag.m4 \
|
||||
$(top_srcdir)/conftools/ax-append-flag.m4 \
|
||||
$(top_srcdir)/conftools/ax-append-compile-flags.m4 \
|
||||
$(top_srcdir)/conftools/ax-append-link-flags.m4 \
|
||||
$(top_srcdir)/conftools/expatcfg-compiler-supports-visibility.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
@ -199,7 +208,7 @@ am__recursive_targets = \
|
||||
$(RECURSIVE_CLEAN_TARGETS) \
|
||||
$(am__extra_recursive_targets)
|
||||
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
|
||||
cscope distdir dist dist-all distcheck
|
||||
cscope distdir distdir-am dist dist-all distcheck
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
|
||||
$(LISP)expat_config.h.in
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
@ -224,14 +233,15 @@ CSCOPE = cscope
|
||||
DIST_SUBDIRS = lib examples tests xmlwf doc
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/expat.pc.in \
|
||||
$(srcdir)/expat_config.h.in $(srcdir)/run.sh.in \
|
||||
$(top_srcdir)/conftools/compile \
|
||||
$(top_srcdir)/conftools/ar-lib $(top_srcdir)/conftools/compile \
|
||||
$(top_srcdir)/conftools/config.guess \
|
||||
$(top_srcdir)/conftools/config.sub \
|
||||
$(top_srcdir)/conftools/install-sh \
|
||||
$(top_srcdir)/conftools/ltmain.sh \
|
||||
$(top_srcdir)/conftools/missing AUTHORS COPYING \
|
||||
conftools/compile conftools/config.guess conftools/config.sub \
|
||||
conftools/install-sh conftools/ltmain.sh conftools/missing
|
||||
conftools/ar-lib conftools/compile conftools/config.guess \
|
||||
conftools/config.sub conftools/depcomp conftools/install-sh \
|
||||
conftools/ltmain.sh conftools/missing
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
top_distdir = $(distdir)
|
||||
@ -267,9 +277,10 @@ am__relativize = \
|
||||
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||
done; \
|
||||
reldir="$$dir2"
|
||||
DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 $(distdir).tar.lz \
|
||||
$(distdir).tar.xz
|
||||
GZIP_ENV = --best
|
||||
DIST_ARCHIVES = $(distdir).tar.bz2
|
||||
DIST_TARGETS = dist-bzip2
|
||||
DIST_TARGETS = dist-lzip dist-xz dist-bzip2 dist-gzip
|
||||
distuninstallcheck_listfiles = find . -type f -print
|
||||
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
|
||||
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
|
||||
@ -402,51 +413,30 @@ top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
AUTOMAKE_OPTIONS = \
|
||||
dist-bzip2 \
|
||||
dist-lzip \
|
||||
dist-xz \
|
||||
foreign \
|
||||
no-dist-gzip \
|
||||
subdir-objects
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
LIBTOOLFLAGS = --verbose
|
||||
SUBDIRS = lib examples tests $(am__append_1)
|
||||
SUBDIRS = lib $(am__append_1) $(am__append_2) $(am__append_3)
|
||||
pkgconfig_DATA = expat.pc
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
_EXTRA_DIST_CMAKE = \
|
||||
cmake/expat-config.cmake.in \
|
||||
cmake/mingw-toolchain.cmake \
|
||||
\
|
||||
CMakeLists.txt \
|
||||
CMake.README \
|
||||
ConfigureChecks.cmake \
|
||||
expat_config.h.cmake
|
||||
|
||||
_EXTRA_DIST_WINDOWS = \
|
||||
examples/elements.vcxproj \
|
||||
examples/elements.vcxproj.filters \
|
||||
examples/outline.vcxproj \
|
||||
examples/outline.vcxproj.filters \
|
||||
\
|
||||
lib/expat_static.vcxproj \
|
||||
lib/expat_static.vcxproj.filters \
|
||||
lib/expat.vcxproj \
|
||||
lib/expat.vcxproj.filters \
|
||||
lib/expatw_static.vcxproj \
|
||||
lib/expatw_static.vcxproj.filters \
|
||||
lib/expatw.vcxproj \
|
||||
lib/expatw.vcxproj.filters \
|
||||
\
|
||||
tests/benchmark/benchmark.sln \
|
||||
tests/benchmark/benchmark.vcxproj \
|
||||
\
|
||||
tests/runtests.sln \
|
||||
tests/runtests.vcxproj \
|
||||
tests/runtests.vcxproj.filters \
|
||||
\
|
||||
win32/build_expat_iss.bat \
|
||||
win32/expat.iss \
|
||||
win32/MANIFEST.txt \
|
||||
win32/README.txt \
|
||||
\
|
||||
xmlwf/xmlwf.vcxproj \
|
||||
xmlwf/xmlwf.vcxproj.filters \
|
||||
\
|
||||
expat.sln
|
||||
win32/README.txt
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(_EXTRA_DIST_CMAKE) \
|
||||
@ -456,8 +446,13 @@ EXTRA_DIST = \
|
||||
conftools/get-version.sh \
|
||||
conftools/PrintPath \
|
||||
\
|
||||
xmlwf/xmlwf_helpgen.py \
|
||||
xmlwf/xmlwf_helpgen.sh \
|
||||
\
|
||||
Changes \
|
||||
README.md \
|
||||
\
|
||||
fix-xmltest-log.sh \
|
||||
test-driver-wrapper.sh
|
||||
|
||||
all: expat_config.h
|
||||
@ -485,8 +480,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
echo ' $(SHELL) ./config.status'; \
|
||||
$(SHELL) ./config.status;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
@ -653,7 +648,10 @@ distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
$(am__remove_distdir)
|
||||
test -d "$(distdir)" || mkdir "$(distdir)"
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
@ -723,11 +721,9 @@ dist-gzip: distdir
|
||||
dist-bzip2: distdir
|
||||
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-lzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-xz: distdir
|
||||
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
|
||||
$(am__post_remove_distdir)
|
||||
@ -994,7 +990,8 @@ run-benchmark:
|
||||
$(MAKE) -C tests/benchmark
|
||||
./run.sh tests/benchmark/benchmark@EXEEXT@ -n $(top_srcdir)/../testdata/largefiles/recset.xml 65535 3
|
||||
|
||||
tests/xmlts.zip:
|
||||
.PHONY: download-xmlts-zip
|
||||
download-xmlts-zip:
|
||||
if test "$(XMLTS_ZIP)" = ""; then \
|
||||
wget --output-document=tests/xmlts.zip \
|
||||
https://www.w3.org/XML/Test/xmlts20080827.zip; \
|
||||
@ -1002,25 +999,35 @@ tests/xmlts.zip:
|
||||
cp $(XMLTS_ZIP) tests/xmlts.zip; \
|
||||
fi
|
||||
|
||||
tests/xmlconf: tests/xmlts.zip
|
||||
tests/xmlts.zip:
|
||||
$(MAKE) download-xmlts-zip
|
||||
|
||||
.PHONY: extract-xmlts-zip
|
||||
extract-xmlts-zip: tests/xmlts.zip
|
||||
[ -f $(builddir)/tests/xmlts.zip ] || $(MAKE) download-xmlts-zip # vpath workaround
|
||||
cd tests && unzip -q xmlts.zip
|
||||
|
||||
tests/xmlconf: tests/xmlts.zip
|
||||
$(MAKE) extract-xmlts-zip
|
||||
|
||||
.PHONY: run-xmltest
|
||||
run-xmltest: tests/xmlconf
|
||||
@WITH_XMLWF_TRUE@ [ -d $(builddir)/tests/xmlconf ] || $(MAKE) extract-xmlts-zip # vpath workaround
|
||||
@WITH_XMLWF_TRUE@ $(MAKE) -C lib
|
||||
@WITH_XMLWF_TRUE@ $(MAKE) -C xmlwf
|
||||
@WITH_XMLWF_TRUE@ tests/xmltest.sh "$(PWD)/run.sh $(PWD)/xmlwf/xmlwf@EXEEXT@" 2>&1 | tee tests/xmltest.log
|
||||
@WITH_XMLWF_TRUE@ dos2unix tests/xmltest.log
|
||||
@WITH_XMLWF_TRUE@ diff -u tests/xmltest.log.expected tests/xmltest.log
|
||||
@WITH_XMLWF_TRUE@ $(srcdir)/tests/xmltest.sh "$(abs_builddir)/run.sh $(abs_builddir)/xmlwf/xmlwf@EXEEXT@" 2>&1 | tee $(builddir)/tests/xmltest.log
|
||||
@WITH_XMLWF_TRUE@ $(srcdir)/fix-xmltest-log.sh $(builddir)/tests/xmltest.log
|
||||
@WITH_XMLWF_TRUE@ diff -u $(srcdir)/tests/xmltest.log.expected $(builddir)/tests/xmltest.log
|
||||
@WITH_XMLWF_FALSE@ @echo 'ERROR: xmlwf is needed for "make run-xmltest".' >&2
|
||||
@WITH_XMLWF_FALSE@ @echo 'ERROR: Please re-configure without --without-xmlwf.' >&2
|
||||
@WITH_XMLWF_FALSE@ @false
|
||||
|
||||
.PHONY: qa
|
||||
qa:
|
||||
./qa.sh address
|
||||
./qa.sh memory
|
||||
./qa.sh undefined
|
||||
./qa.sh coverage
|
||||
QA_COMPILER=clang QA_SANITIZER=address ./qa.sh
|
||||
QA_COMPILER=clang QA_SANITIZER=memory ./qa.sh
|
||||
QA_COMPILER=clang QA_SANITIZER=undefined ./qa.sh
|
||||
QA_COMPILER=gcc QA_PROCESSOR=gcov ./qa.sh
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
|
@ -1,8 +1,9 @@
|
||||
[![Travis CI Build Status](https://travis-ci.org/libexpat/libexpat.svg?branch=master)](https://travis-ci.org/libexpat/libexpat)
|
||||
[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/libexpat/libexpat?svg=true)](https://ci.appveyor.com/project/libexpat/libexpat)
|
||||
[![Packaging status](https://repology.org/badge/tiny-repos/expat.svg)](https://repology.org/metapackage/expat/versions)
|
||||
|
||||
|
||||
# Expat, Release 2.2.6
|
||||
# Expat, Release 2.2.9
|
||||
|
||||
This is Expat, a C library for parsing XML, started by
|
||||
[James Clark](https://en.wikipedia.org/wiki/James_Clark_(programmer)) in 1997.
|
||||
@ -12,6 +13,11 @@ are called when the parser discovers the associated structures in the
|
||||
document being parsed. A start tag is an example of the kind of
|
||||
structures for which you may register handlers.
|
||||
|
||||
Expat supports the following compilers:
|
||||
- GNU GCC >=4.5
|
||||
- LLVM Clang >=3.5
|
||||
- Microsoft Visual Studio >=8.0/2005
|
||||
|
||||
Windows users should use the
|
||||
[`expat_win32` package](https://sourceforge.net/projects/expat/files/expat_win32/),
|
||||
which includes both precompiled libraries and executables, and source code for
|
||||
@ -124,3 +130,59 @@ information.
|
||||
|
||||
A reference manual is available in the file `doc/reference.html` in this
|
||||
distribution.
|
||||
|
||||
|
||||
The CMake build system is still *experimental* and will replace the primary
|
||||
build system based on GNU Autotools at some point when it is ready.
|
||||
For an idea of the available (non-advanced) options for building with CMake:
|
||||
|
||||
```console
|
||||
# rm -f CMakeCache.txt ; cmake -D_EXPAT_HELP=ON -LH . | grep -B1 ':.*=' | sed 's,^--$,,'
|
||||
// Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ...
|
||||
CMAKE_BUILD_TYPE:STRING=
|
||||
|
||||
// Install path prefix, prepended onto install directories.
|
||||
CMAKE_INSTALL_PREFIX:PATH=/usr/local
|
||||
|
||||
// Path to a program.
|
||||
DOCBOOK_TO_MAN:FILEPATH=/usr/bin/docbook2x-man
|
||||
|
||||
// build man page for xmlwf
|
||||
EXPAT_BUILD_DOCS:BOOL=ON
|
||||
|
||||
// build the examples for expat library
|
||||
EXPAT_BUILD_EXAMPLES:BOOL=ON
|
||||
|
||||
// build fuzzers for the expat library
|
||||
EXPAT_BUILD_FUZZERS:BOOL=OFF
|
||||
|
||||
// build the tests for expat library
|
||||
EXPAT_BUILD_TESTS:BOOL=ON
|
||||
|
||||
// build the xmlwf tool for expat library
|
||||
EXPAT_BUILD_TOOLS:BOOL=ON
|
||||
|
||||
// Character type to use (char|ushort|wchar_t) [default=char]
|
||||
EXPAT_CHAR_TYPE:STRING=char
|
||||
|
||||
// install expat files in cmake install target
|
||||
EXPAT_ENABLE_INSTALL:BOOL=ON
|
||||
|
||||
// Use /MT flag (static CRT) when compiling in MSVC
|
||||
EXPAT_MSVC_STATIC_CRT:BOOL=OFF
|
||||
|
||||
// build a shared expat library
|
||||
EXPAT_SHARED_LIBS:BOOL=ON
|
||||
|
||||
// Treat all compiler warnings as errors
|
||||
EXPAT_WARNINGS_AS_ERRORS:BOOL=OFF
|
||||
|
||||
// Make use of getrandom function (ON|OFF|AUTO) [default=AUTO]
|
||||
EXPAT_WITH_GETRANDOM:STRING=AUTO
|
||||
|
||||
// utilize libbsd (for arc4random_buf)
|
||||
EXPAT_WITH_LIBBSD:BOOL=OFF
|
||||
|
||||
// Make use of syscall SYS_getrandom (ON|OFF|AUTO) [default=AUTO]
|
||||
EXPAT_WITH_SYS_GETRANDOM:STRING=AUTO
|
||||
```
|
||||
|
@ -10,8 +10,8 @@ dnl under the terms of the License (based on the MIT/X license) contained
|
||||
dnl in the file COPYING that comes with this distribution.
|
||||
dnl
|
||||
|
||||
dnl Ensure that Expat is configured with autoconf 2.58 or newer
|
||||
AC_PREREQ(2.58)
|
||||
dnl Ensure that Expat is configured with autoconf 2.69 or newer.
|
||||
AC_PREREQ(2.69)
|
||||
|
||||
dnl Get the version number of Expat, using m4's esyscmd() command to run
|
||||
dnl the command at m4-generation time. This allows us to create an m4
|
||||
@ -23,16 +23,18 @@ dnl
|
||||
dnl NOTE: esyscmd() is a GNU M4 extension. Thus, we wrap it in an appropriate
|
||||
dnl test. I believe this test will work, but I don't have a place with non-
|
||||
dnl GNU M4 to test it right now.
|
||||
define([expat_version], ifdef([__gnu__],
|
||||
m4_define([expat_version],
|
||||
m4_ifdef([__gnu__],
|
||||
[esyscmd(conftools/get-version.sh lib/expat.h)],
|
||||
[2.2.x]))
|
||||
AC_INIT(expat, expat_version, expat-bugs@libexpat.org)
|
||||
undefine([expat_version])
|
||||
m4_undefine([expat_version])
|
||||
|
||||
AC_CONFIG_SRCDIR(Makefile.in)
|
||||
AC_CONFIG_AUX_DIR(conftools)
|
||||
AM_INIT_AUTOMAKE
|
||||
AC_CONFIG_SRCDIR([Makefile.in])
|
||||
AC_CONFIG_AUX_DIR([conftools])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
AC_CANONICAL_HOST
|
||||
AM_INIT_AUTOMAKE
|
||||
|
||||
|
||||
dnl
|
||||
@ -47,79 +49,119 @@ dnl If the API changes incompatibly set LIBAGE back to 0
|
||||
dnl
|
||||
|
||||
LIBCURRENT=7 # sync
|
||||
LIBREVISION=8 # with
|
||||
LIBREVISION=11 # with
|
||||
LIBAGE=6 # CMakeLists.txt!
|
||||
|
||||
CPPFLAGS="${CPPFLAGS} -DHAVE_EXPAT_CONFIG_H"
|
||||
AC_CONFIG_HEADER(expat_config.h)
|
||||
AX_APPEND_FLAG([-DHAVE_EXPAT_CONFIG_H], [CPPFLAGS])
|
||||
AC_CONFIG_HEADER([expat_config.h])
|
||||
|
||||
sinclude(conftools/ac_c_bigendian_cross.m4)
|
||||
AM_PROG_AR
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_LN_S
|
||||
AC_PROG_MAKE_SET
|
||||
|
||||
AC_LIBTOOL_WIN32_DLL
|
||||
AC_PROG_LIBTOOL
|
||||
LT_PREREQ([2.4])
|
||||
LT_INIT([win32-dll])
|
||||
|
||||
AC_SUBST(LIBCURRENT)
|
||||
AC_SUBST(LIBREVISION)
|
||||
AC_SUBST(LIBAGE)
|
||||
|
||||
dnl Checks for programs.
|
||||
AC_LANG([C])
|
||||
AC_PROG_CC_C99
|
||||
AC_PROG_CXX
|
||||
AC_PROG_INSTALL
|
||||
|
||||
if test "$GCC" = yes ; then
|
||||
dnl
|
||||
AS_IF([test "$GCC" = yes],
|
||||
[AX_APPEND_COMPILE_FLAGS([-Wall -Wextra], [CFLAGS])
|
||||
dnl Be careful about adding the -fexceptions option; some versions of
|
||||
dnl GCC don't support it and it causes extra warnings that are only
|
||||
dnl distracting; avoid.
|
||||
dnl
|
||||
OLDCFLAGS="$CFLAGS -Wall -Wmissing-prototypes -Wstrict-prototypes"
|
||||
CFLAGS="$OLDCFLAGS -fexceptions"
|
||||
AC_MSG_CHECKING(whether $CC accepts -fexceptions)
|
||||
AC_TRY_LINK( , ,
|
||||
AC_MSG_RESULT(yes),
|
||||
AC_MSG_RESULT(no); CFLAGS="$OLDCFLAGS")
|
||||
if test "x$CXXFLAGS" = x ; then
|
||||
CXXFLAGS=`echo "$CFLAGS" | sed 's/ -Wmissing-prototypes -Wstrict-prototypes//'`
|
||||
fi
|
||||
AX_APPEND_COMPILE_FLAGS([-fexceptions], [CFLAGS])
|
||||
AX_APPEND_COMPILE_FLAGS([-fno-strict-aliasing -Wmissing-prototypes -Wstrict-prototypes], [CFLAGS])
|
||||
AX_APPEND_COMPILE_FLAGS([-pedantic -Wduplicated-cond -Wduplicated-branches -Wlogical-op], [CFLAGS])
|
||||
AX_APPEND_COMPILE_FLAGS([-Wrestrict -Wnull-dereference -Wjump-misses-init -Wdouble-promotion], [CFLAGS])
|
||||
AX_APPEND_COMPILE_FLAGS([-Wshadow -Wformat=2 -Wmisleading-indentation], [CFLAGS])])
|
||||
|
||||
CFLAGS="${CFLAGS} -fno-strict-aliasing"
|
||||
CXXFLAGS="${CXXFLAGS} -fno-strict-aliasing"
|
||||
LDFLAGS="${LDFLAGS} -fno-strict-aliasing"
|
||||
fi
|
||||
AC_LANG_PUSH([C++])
|
||||
AC_PROG_CXX
|
||||
AS_IF([test "$GCC" = yes],
|
||||
[AX_APPEND_COMPILE_FLAGS([-Wall -Wextra], [CXXFLAGS])
|
||||
dnl Be careful about adding the -fexceptions option; some versions of
|
||||
dnl GCC don't support it and it causes extra warnings that are only
|
||||
dnl distracting; avoid.
|
||||
AX_APPEND_COMPILE_FLAGS([-fexceptions], [CXXFLAGS])
|
||||
AX_APPEND_COMPILE_FLAGS([-fno-strict-aliasing], [CXXFLAGS])])
|
||||
AC_LANG_POP([C++])
|
||||
|
||||
AS_IF([test "$GCC" = yes],
|
||||
[AX_APPEND_LINK_FLAGS([-fno-strict-aliasing],[LDFLAGS])])
|
||||
|
||||
dnl patching ${archive_cmds} to affect generation of file "libtool" to fix linking with clang (issue #312)
|
||||
AS_CASE(["$LD"],[*clang*],
|
||||
[AS_CASE(["${host_os}"],
|
||||
[*linux*],[archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'])])
|
||||
|
||||
EXPATCFG_COMPILER_SUPPORTS_VISIBILITY([
|
||||
AX_APPEND_FLAG([-fvisibility=hidden], [CFLAGS])
|
||||
AX_APPEND_FLAG([-DXML_ENABLE_VISIBILITY=1], [CFLAGS])])
|
||||
|
||||
dnl Checks for header files.
|
||||
AC_HEADER_STDC
|
||||
|
||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||
|
||||
dnl Note: Avoid using AC_C_BIGENDIAN because it does not
|
||||
dnl work in a cross compile.
|
||||
AC_C_BIGENDIAN_CROSS
|
||||
dnl We define BYTEORDER to 1234 when the platform is little endian; it
|
||||
dnl defines it to 4321 when the platform is big endian. We also define
|
||||
dnl WORDS_BIGENDIAN to 1 when the platform is big endian.
|
||||
dnl
|
||||
dnl A long time ago (early 2000 years) AC_C_BIGENDIAN was considered
|
||||
dnl wrong when cross compiling, now (2018, GNU Autoconf 2.69) we assume
|
||||
dnl it is fine.
|
||||
AC_C_BIGENDIAN([AC_DEFINE([WORDS_BIGENDIAN], 1)
|
||||
AS_VAR_SET([BYTEORDER], 4321)],
|
||||
[AS_VAR_SET([BYTEORDER], 1234)])
|
||||
AC_DEFINE_UNQUOTED([BYTEORDER], $BYTEORDER, [1234 = LILENDIAN, 4321 = BIGENDIAN])
|
||||
|
||||
AC_C_CONST
|
||||
AC_TYPE_SIZE_T
|
||||
AC_CHECK_FUNCS(memmove bcopy)
|
||||
|
||||
|
||||
AC_ARG_WITH([xmlwf], [
|
||||
AS_HELP_STRING([--without-xmlwf], [do not build xmlwf])], [], [with_xmlwf=yes])
|
||||
AC_ARG_WITH([xmlwf],
|
||||
[AS_HELP_STRING([--without-xmlwf], [do not build xmlwf])],
|
||||
[],
|
||||
[with_xmlwf=yes])
|
||||
AM_CONDITIONAL([WITH_XMLWF], [test x${with_xmlwf} = xyes])
|
||||
|
||||
AM_CONDITIONAL([MINGW], [echo -- "${host}" | ${FGREP} mingw >/dev/null])
|
||||
AC_ARG_WITH([examples],
|
||||
[AS_HELP_STRING([--without-examples], [do not build examples @<:@default=included@:>@])],
|
||||
[],
|
||||
[with_examples=yes])
|
||||
AM_CONDITIONAL([WITH_EXAMPLES], [test x${with_examples} = xyes])
|
||||
|
||||
AC_ARG_WITH([tests],
|
||||
[AS_HELP_STRING([--without-tests], [do not build tests @<:@default=included@:>@])],
|
||||
[],
|
||||
[with_tests=yes])
|
||||
AM_CONDITIONAL([WITH_TESTS], [test x${with_tests} = xyes])
|
||||
|
||||
|
||||
AS_VAR_SET([EXPATCFG_ON_MINGW],[no])
|
||||
AS_CASE("${host_os}",
|
||||
[mingw*],
|
||||
[AS_VAR_SET([EXPATCFG_ON_MINGW],[yes])
|
||||
AC_MSG_NOTICE([detected OS: MinGW])])
|
||||
AM_CONDITIONAL([MINGW], [test x${EXPATCFG_ON_MINGW} = xyes])
|
||||
|
||||
AM_CONDITIONAL([UNICODE], [echo -- "${CPPFLAGS}${CFLAGS}" | ${FGREP} XML_UNICODE >/dev/null])
|
||||
|
||||
|
||||
AC_ARG_WITH([libbsd], [
|
||||
AS_HELP_STRING([--with-libbsd], [utilize libbsd (for arc4random_buf)])
|
||||
], [], [with_libbsd=no])
|
||||
AS_IF([test "x${with_libbsd}" != xno], [
|
||||
AC_CHECK_LIB([bsd], [arc4random_buf], [], [
|
||||
AS_IF([test "x${with_libbsd}" = xyes], [
|
||||
AC_MSG_ERROR([Enforced use of libbsd cannot be satisfied.])
|
||||
])
|
||||
])
|
||||
])
|
||||
AC_ARG_WITH([libbsd],
|
||||
[AS_HELP_STRING([--with-libbsd], [utilize libbsd (for arc4random_buf)])],
|
||||
[],
|
||||
[with_libbsd=no])
|
||||
AS_IF([test "x${with_libbsd}" != xno],
|
||||
[AC_CHECK_LIB([bsd],
|
||||
[arc4random_buf],
|
||||
[],
|
||||
[AS_IF([test "x${with_libbsd}" = xyes],
|
||||
[AC_MSG_ERROR([Enforced use of libbsd cannot be satisfied.])])])])
|
||||
AC_MSG_CHECKING([for arc4random_buf (BSD or libbsd)])
|
||||
AC_LINK_IFELSE([AC_LANG_SOURCE([
|
||||
#include <stdlib.h> /* for arc4random_buf on BSD, for NULL */
|
||||
@ -130,12 +172,10 @@ AC_LINK_IFELSE([AC_LANG_SOURCE([
|
||||
arc4random_buf(NULL, 0U);
|
||||
return 0;
|
||||
}
|
||||
])], [
|
||||
AC_DEFINE([HAVE_ARC4RANDOM_BUF], [1],
|
||||
[Define to 1 if you have the `arc4random_buf' function.])
|
||||
AC_MSG_RESULT([yes])
|
||||
], [
|
||||
AC_MSG_RESULT([no])
|
||||
])],
|
||||
[AC_DEFINE([HAVE_ARC4RANDOM_BUF], [1], [Define to 1 if you have the `arc4random_buf' function.])
|
||||
AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])
|
||||
|
||||
AC_MSG_CHECKING([for arc4random (BSD, macOS or libbsd)])
|
||||
AC_LINK_IFELSE([AC_LANG_SOURCE([
|
||||
@ -148,31 +188,44 @@ AC_LINK_IFELSE([AC_LANG_SOURCE([
|
||||
arc4random();
|
||||
return 0;
|
||||
}
|
||||
])], [
|
||||
AC_DEFINE([HAVE_ARC4RANDOM], [1],
|
||||
[Define to 1 if you have the `arc4random' function.])
|
||||
AC_MSG_RESULT([yes])
|
||||
], [
|
||||
AC_MSG_RESULT([no])
|
||||
])
|
||||
])
|
||||
])],
|
||||
[AC_DEFINE([HAVE_ARC4RANDOM], [1], [Define to 1 if you have the `arc4random' function.])
|
||||
AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])])])
|
||||
|
||||
AC_ARG_WITH([getrandom],
|
||||
[AS_HELP_STRING([--with-getrandom],
|
||||
[enforce the use of getrandom function in the system @<:@default=check@:>@])
|
||||
AS_HELP_STRING([--without-getrandom],
|
||||
[skip auto detect of getrandom @<:@default=check@:>@])],
|
||||
[],
|
||||
[with_getrandom=check])
|
||||
|
||||
AC_MSG_CHECKING([for getrandom (Linux 3.17+, glibc 2.25+)])
|
||||
AS_IF([test "x$with_getrandom" != xno],
|
||||
[AC_MSG_CHECKING([for getrandom (Linux 3.17+, glibc 2.25+)])
|
||||
AC_LINK_IFELSE([AC_LANG_SOURCE([
|
||||
#include <stdlib.h> /* for NULL */
|
||||
#include <sys/random.h>
|
||||
int main() {
|
||||
return getrandom(NULL, 0U, 0U);
|
||||
}
|
||||
])], [
|
||||
AC_DEFINE([HAVE_GETRANDOM], [1],
|
||||
[Define to 1 if you have the `getrandom' function.])
|
||||
AC_MSG_RESULT([yes])
|
||||
], [
|
||||
AC_MSG_RESULT([no])
|
||||
])],
|
||||
[AC_DEFINE([HAVE_GETRANDOM], [1], [Define to 1 if you have the `getrandom' function.])
|
||||
AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])
|
||||
AS_IF([test "x$with_getrandom" = xyes],
|
||||
[AC_MSG_ERROR([enforced the use of getrandom --with-getrandom, but not detected])])])])
|
||||
|
||||
AC_MSG_CHECKING([for syscall SYS_getrandom (Linux 3.17+)])
|
||||
AC_ARG_WITH([sys_getrandom],
|
||||
[AS_HELP_STRING([--with-sys-getrandom],
|
||||
[enforce the use of syscall SYS_getrandom function in the system @<:@default=check@:>@])
|
||||
AS_HELP_STRING([--without-sys-getrandom],
|
||||
[skip auto detect of syscall SYS_getrandom @<:@default=check@:>@])],
|
||||
[],
|
||||
[with_sys_getrandom=check])
|
||||
|
||||
AS_IF([test "x$with_sys_getrandom" != xno],
|
||||
[AC_MSG_CHECKING([for syscall SYS_getrandom (Linux 3.17+)])
|
||||
AC_LINK_IFELSE([AC_LANG_SOURCE([
|
||||
#include <stdlib.h> /* for NULL */
|
||||
#include <unistd.h> /* for syscall */
|
||||
@ -181,26 +234,21 @@ AC_LINK_IFELSE([AC_LANG_SOURCE([
|
||||
syscall(SYS_getrandom, NULL, 0, 0);
|
||||
return 0;
|
||||
}
|
||||
])], [
|
||||
AC_DEFINE([HAVE_SYSCALL_GETRANDOM], [1],
|
||||
[Define to 1 if you have `syscall' and `SYS_getrandom'.])
|
||||
AC_MSG_RESULT([yes])
|
||||
], [
|
||||
AC_MSG_RESULT([no])
|
||||
])
|
||||
])
|
||||
|
||||
])],
|
||||
[AC_DEFINE([HAVE_SYSCALL_GETRANDOM], [1], [Define to 1 if you have `syscall' and `SYS_getrandom'.])
|
||||
AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])
|
||||
AS_IF([test "x$with_sys_getrandom" = xyes],
|
||||
[AC_MSG_ERROR([enforced the use of syscall SYS_getrandom --with-sys-getrandom, but not detected])])])])
|
||||
|
||||
dnl Only needed for xmlwf:
|
||||
AC_CHECK_HEADERS(fcntl.h unistd.h)
|
||||
AC_TYPE_OFF_T
|
||||
AC_FUNC_MMAP
|
||||
|
||||
if test "$ac_cv_func_mmap_fixed_mapped" = "yes"; then
|
||||
FILEMAP=unixfilemap
|
||||
else
|
||||
FILEMAP=readfilemap
|
||||
fi
|
||||
AS_IF([test "$ac_cv_func_mmap_fixed_mapped" = "yes"],
|
||||
[AS_VAR_SET(FILEMAP,unixfilemap)],
|
||||
[AS_VAR_SET(FILEMAP,readfilemap)])
|
||||
AC_SUBST(FILEMAP)
|
||||
|
||||
|
||||
@ -212,6 +260,15 @@ AC_DEFINE([XML_DTD], 1,
|
||||
AC_DEFINE([XML_DEV_URANDOM], 1,
|
||||
[Define to include code reading entropy from `/dev/urandom'.])
|
||||
|
||||
AC_ARG_ENABLE([xml-attr-info],
|
||||
[AS_HELP_STRING([--enable-xml-attr-info],
|
||||
[Enable retrieving the byte offsets for attribute names and values @<:@default=no@:>@])],
|
||||
[],
|
||||
[enable_xml_attr_info=no])
|
||||
AS_IF([test "x${enable_xml_attr_info}" = "xyes"],
|
||||
[AC_DEFINE([XML_ATTR_INFO], 1,
|
||||
[Define to allow retrieving the byte offsets for attribute names and values.])])
|
||||
|
||||
AC_ARG_ENABLE([xml-context],
|
||||
AS_HELP_STRING([--enable-xml-context @<:@COUNT@:>@],
|
||||
[Retain context around the current parse point;
|
||||
@ -219,16 +276,15 @@ AC_ARG_ENABLE([xml-context],
|
||||
AS_HELP_STRING([--disable-xml-context],
|
||||
[Do not retain context around the current parse point]),
|
||||
[enable_xml_context=${enableval}])
|
||||
AS_IF([test "x${enable_xml_context}" != "xno"], [
|
||||
AS_IF([test "x${enable_xml_context}" = "xyes" \
|
||||
-o "x${enable_xml_context}" = "x"], [
|
||||
enable_xml_context=1024
|
||||
])
|
||||
AS_IF([test "x${enable_xml_context}" != "xno"],
|
||||
[AS_IF([test "x${enable_xml_context}" = "xyes" \
|
||||
-o "x${enable_xml_context}" = "x"],
|
||||
[AS_VAR_SET(enable_xml_context,1024)])
|
||||
AC_DEFINE_UNQUOTED([XML_CONTEXT_BYTES], [${enable_xml_context}],
|
||||
[Define to specify how much context to retain around the current parse point.])
|
||||
])
|
||||
[Define to specify how much context to retain around the current parse point.])])
|
||||
|
||||
AC_ARG_WITH([docbook], [AS_HELP_STRING([--with-docbook],
|
||||
AC_ARG_WITH([docbook],
|
||||
[AS_HELP_STRING([--with-docbook],
|
||||
[enforce XML to man page compilation @<:@default=check@:>@])
|
||||
AS_HELP_STRING([--without-docbook],
|
||||
[skip XML to man page compilation @<:@default=check@:>@])],
|
||||
@ -251,14 +307,13 @@ AS_IF([test "x${DOCBOOK_TO_MAN}" != x -a "x$with_docbook" != xno],
|
||||
|
||||
AM_CONDITIONAL(WITH_DOCBOOK, [test "x${DOCBOOK_TO_MAN}" != x])
|
||||
|
||||
AC_CONFIG_FILES([Makefile expat.pc])
|
||||
AC_CONFIG_FILES([
|
||||
doc/Makefile
|
||||
examples/Makefile
|
||||
lib/Makefile
|
||||
tests/Makefile
|
||||
tests/benchmark/Makefile
|
||||
xmlwf/Makefile
|
||||
])
|
||||
AC_CONFIG_FILES([Makefile]
|
||||
[expat.pc]
|
||||
[doc/Makefile]
|
||||
[examples/Makefile]
|
||||
[lib/Makefile]
|
||||
[tests/Makefile]
|
||||
[tests/benchmark/Makefile]
|
||||
[xmlwf/Makefile])
|
||||
AC_CONFIG_FILES([run.sh], [chmod +x run.sh])
|
||||
AC_OUTPUT
|
||||
|
@ -28,14 +28,17 @@
|
||||
# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
# USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
.PHONY: dist-hook # not inside conditional to avoid automake warning
|
||||
|
||||
if WITH_DOCBOOK
|
||||
dist_man_MANS = xmlwf.1
|
||||
|
||||
xmlwf.1: xmlwf.xml
|
||||
if WITH_DOCBOOK
|
||||
-rm -f $@
|
||||
$(DOCBOOK_TO_MAN) $<
|
||||
test -f $@ || mv XMLWF.1 $@
|
||||
else
|
||||
dist-hook:
|
||||
@echo 'ERROR: Configure with --with-docbook for "make dist".' 1>&2
|
||||
@false
|
||||
endif
|
||||
|
@ -1,7 +1,7 @@
|
||||
# Makefile.in generated by automake 1.15.1 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2017 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -122,7 +122,14 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/conftools/ac_c_bigendian_cross.m4 \
|
||||
$(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/conftools/ax-require-defined.m4 \
|
||||
$(top_srcdir)/conftools/ax-check-compile-flag.m4 \
|
||||
$(top_srcdir)/conftools/ax-check-link-flag.m4 \
|
||||
$(top_srcdir)/conftools/ax-append-flag.m4 \
|
||||
$(top_srcdir)/conftools/ax-append-compile-flags.m4 \
|
||||
$(top_srcdir)/conftools/ax-append-link-flags.m4 \
|
||||
$(top_srcdir)/conftools/expatcfg-compiler-supports-visibility.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
@ -310,7 +317,7 @@ target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
dist_man_MANS = xmlwf.1
|
||||
@WITH_DOCBOOK_TRUE@dist_man_MANS = xmlwf.1
|
||||
EXTRA_DIST = \
|
||||
expat.png \
|
||||
reference.html \
|
||||
@ -338,8 +345,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
@ -405,8 +412,12 @@ ctags CTAGS:
|
||||
|
||||
cscope cscopelist:
|
||||
|
||||
@WITH_DOCBOOK_TRUE@dist-hook:
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
@ -436,6 +447,9 @@ distdir: $(DISTFILES)
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$(top_distdir)" distdir="$(distdir)" \
|
||||
dist-hook
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(MANS)
|
||||
@ -544,25 +558,28 @@ uninstall-man: uninstall-man1
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
|
||||
clean-local cscopelist-am ctags-am distclean distclean-generic \
|
||||
distclean-libtool distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-man1 install-pdf install-pdf-am install-ps \
|
||||
install-ps-am install-strip installcheck installcheck-am \
|
||||
installdirs maintainer-clean maintainer-clean-generic \
|
||||
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
|
||||
ps ps-am tags-am uninstall uninstall-am uninstall-man \
|
||||
uninstall-man1
|
||||
clean-local cscopelist-am ctags-am dist-hook distclean \
|
||||
distclean-generic distclean-libtool distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-man install-man1 install-pdf \
|
||||
install-pdf-am install-ps install-ps-am install-strip \
|
||||
installcheck installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
|
||||
uninstall-am uninstall-man uninstall-man1
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
xmlwf.1: xmlwf.xml
|
||||
.PHONY: dist-hook # not inside conditional to avoid automake warning
|
||||
|
||||
@WITH_DOCBOOK_TRUE@xmlwf.1: xmlwf.xml
|
||||
@WITH_DOCBOOK_TRUE@ -rm -f $@
|
||||
@WITH_DOCBOOK_TRUE@ $(DOCBOOK_TO_MAN) $<
|
||||
@WITH_DOCBOOK_TRUE@ test -f $@ || mv XMLWF.1 $@
|
||||
@WITH_DOCBOOK_FALSE@dist-hook:
|
||||
@WITH_DOCBOOK_FALSE@ @echo 'ERROR: Configure with --with-docbook for "make dist".' 1>&2
|
||||
@WITH_DOCBOOK_FALSE@ @false
|
||||
|
||||
|
@ -276,9 +276,11 @@ directions or Unix directions below.</p>
|
||||
|
||||
<p>If you're using the GNU compiler under cygwin, follow the Unix
|
||||
directions in the next section. Otherwise if you have Microsoft's
|
||||
Developer Studio installed, then from Windows Explorer double-click on
|
||||
"expat.vcxproj" in the lib directory and build and install in the usual
|
||||
manner.</p>
|
||||
Developer Studio installed,
|
||||
you can use CMake to generate a <code>.sln</code> file, e.g.
|
||||
<code>
|
||||
cmake -G"Visual Studio 15 2017" -DCMAKE_BUILD_TYPE=RelWithDebInfo .
|
||||
</code>, and build Expat using <code>msbuild /m expat.sln</code> after.</p>
|
||||
|
||||
<p>Alternatively, you may download the Win32 binary package that
|
||||
contains the "expat.h" include file and a pre-built DLL.</p>
|
||||
@ -2152,7 +2154,7 @@ function behavior. In order to have an effect this must be called
|
||||
before parsing has started. Returns 1 if successful, 0 when called
|
||||
after <code>XML_Parse</code> or <code>XML_ParseBuffer</code>.
|
||||
<p><b>Note:</b>This call is optional, as the parser will auto-generate
|
||||
a new random salt value if no value has been set at the start of parsing.
|
||||
a new random salt value if no value has been set at the start of parsing.</p>
|
||||
<p><b>Note:</b>One should not call <code>XML_SetHashSalt</code> with a
|
||||
hash salt value of 0, as this value is used as sentinel value to indicate
|
||||
that <code>XML_SetHashSalt</code> has <b>not</b> been called. Consequently
|
||||
|
@ -1,7 +1,7 @@
|
||||
# Makefile.in generated by automake 1.15.1 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2017 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -124,7 +124,14 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/conftools/ac_c_bigendian_cross.m4 \
|
||||
$(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/conftools/ax-require-defined.m4 \
|
||||
$(top_srcdir)/conftools/ax-check-compile-flag.m4 \
|
||||
$(top_srcdir)/conftools/ax-check-link-flag.m4 \
|
||||
$(top_srcdir)/conftools/ax-append-flag.m4 \
|
||||
$(top_srcdir)/conftools/ax-append-compile-flags.m4 \
|
||||
$(top_srcdir)/conftools/ax-append-link-flags.m4 \
|
||||
$(top_srcdir)/conftools/expatcfg-compiler-supports-visibility.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
@ -158,7 +165,8 @@ am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/conftools/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
am__maybe_remake_depfiles = depfiles
|
||||
am__depfiles_remade = ./$(DEPDIR)/elements.Po ./$(DEPDIR)/outline.Po
|
||||
am__mv = mv -f
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
@ -359,8 +367,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
@ -395,8 +403,14 @@ mostlyclean-compile:
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/outline.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/outline.Po@am__quote@ # am--include-marker
|
||||
|
||||
$(am__depfiles_remade):
|
||||
@$(MKDIR_P) $(@D)
|
||||
@echo '# dummy' >$@-t && $(am__mv) $@-t $@
|
||||
|
||||
am--depfiles: $(am__depfiles_remade)
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@ -477,7 +491,10 @@ cscopelist-am: $(am__tagged_files)
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
@ -547,7 +564,8 @@ clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
|
||||
mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f ./$(DEPDIR)/elements.Po
|
||||
-rm -f ./$(DEPDIR)/outline.Po
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
@ -593,7 +611,8 @@ install-ps-am:
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f ./$(DEPDIR)/elements.Po
|
||||
-rm -f ./$(DEPDIR)/outline.Po
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
@ -614,9 +633,9 @@ uninstall-am:
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
|
||||
clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
|
||||
ctags-am distclean distclean-compile distclean-generic \
|
||||
.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
|
||||
clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
|
||||
ctags ctags-am distclean distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
|
@ -38,11 +38,7 @@
|
||||
#include <expat.h>
|
||||
|
||||
#ifdef XML_LARGE_SIZE
|
||||
# if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400
|
||||
# define XML_FMT_INT_MOD "I64"
|
||||
# else
|
||||
# define XML_FMT_INT_MOD "ll"
|
||||
# endif
|
||||
#else
|
||||
# define XML_FMT_INT_MOD "l"
|
||||
#endif
|
||||
@ -55,8 +51,7 @@
|
||||
#endif
|
||||
|
||||
static void XMLCALL
|
||||
startElement(void *userData, const XML_Char *name, const XML_Char **atts)
|
||||
{
|
||||
startElement(void *userData, const XML_Char *name, const XML_Char **atts) {
|
||||
int i;
|
||||
int *depthPtr = (int *)userData;
|
||||
(void)atts;
|
||||
@ -68,8 +63,7 @@ startElement(void *userData, const XML_Char *name, const XML_Char **atts)
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
endElement(void *userData, const XML_Char *name)
|
||||
{
|
||||
endElement(void *userData, const XML_Char *name) {
|
||||
int *depthPtr = (int *)userData;
|
||||
(void)name;
|
||||
|
||||
@ -77,8 +71,7 @@ endElement(void *userData, const XML_Char *name)
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
main(int argc, char *argv[]) {
|
||||
char buf[BUFSIZ];
|
||||
XML_Parser parser = XML_ParserCreate(NULL);
|
||||
int done;
|
||||
@ -92,10 +85,10 @@ main(int argc, char *argv[])
|
||||
size_t len = fread(buf, 1, sizeof(buf), stdin);
|
||||
done = len < sizeof(buf);
|
||||
if (XML_Parse(parser, buf, (int)len, done) == XML_STATUS_ERROR) {
|
||||
fprintf(stderr,
|
||||
"%" XML_FMT_STR " at line %" XML_FMT_INT_MOD "u\n",
|
||||
fprintf(stderr, "%" XML_FMT_STR " at line %" XML_FMT_INT_MOD "u\n",
|
||||
XML_ErrorString(XML_GetErrorCode(parser)),
|
||||
XML_GetCurrentLineNumber(parser));
|
||||
XML_ParserFree(parser);
|
||||
return 1;
|
||||
}
|
||||
} while (! done);
|
||||
|
@ -36,11 +36,7 @@
|
||||
#include <expat.h>
|
||||
|
||||
#ifdef XML_LARGE_SIZE
|
||||
# if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400
|
||||
# define XML_FMT_INT_MOD "I64"
|
||||
# else
|
||||
# define XML_FMT_INT_MOD "ll"
|
||||
# endif
|
||||
#else
|
||||
# define XML_FMT_INT_MOD "l"
|
||||
#endif
|
||||
@ -58,8 +54,7 @@ char Buff[BUFFSIZE];
|
||||
int Depth;
|
||||
|
||||
static void XMLCALL
|
||||
start(void *data, const XML_Char *el, const XML_Char **attr)
|
||||
{
|
||||
start(void *data, const XML_Char *el, const XML_Char **attr) {
|
||||
int i;
|
||||
(void)data;
|
||||
|
||||
@ -77,8 +72,7 @@ start(void *data, const XML_Char *el, const XML_Char **attr)
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
end(void *data, const XML_Char *el)
|
||||
{
|
||||
end(void *data, const XML_Char *el) {
|
||||
(void)data;
|
||||
(void)el;
|
||||
|
||||
@ -86,8 +80,7 @@ end(void *data, const XML_Char *el)
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
main(int argc, char *argv[]) {
|
||||
XML_Parser p = XML_ParserCreate(NULL);
|
||||
(void)argc;
|
||||
(void)argv;
|
||||
|
@ -1,6 +1,9 @@
|
||||
/* expat_config.h.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */
|
||||
/* Define if building universal (internal helper macro) */
|
||||
#undef AC_APPLE_UNIVERSAL_BUILD
|
||||
|
||||
/* 1234 = LILENDIAN, 4321 = BIGENDIAN */
|
||||
#undef BYTEORDER
|
||||
|
||||
/* Define to 1 if you have the `arc4random' function. */
|
||||
@ -9,9 +12,6 @@
|
||||
/* Define to 1 if you have the `arc4random_buf' function. */
|
||||
#undef HAVE_ARC4RANDOM_BUF
|
||||
|
||||
/* Define to 1 if you have the `bcopy' function. */
|
||||
#undef HAVE_BCOPY
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#undef HAVE_DLFCN_H
|
||||
|
||||
@ -30,9 +30,6 @@
|
||||
/* Define to 1 if you have the `bsd' library (-lbsd). */
|
||||
#undef HAVE_LIBBSD
|
||||
|
||||
/* Define to 1 if you have the `memmove' function. */
|
||||
#undef HAVE_MEMMOVE
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
@ -96,8 +93,21 @@
|
||||
/* Version number of package */
|
||||
#undef VERSION
|
||||
|
||||
/* whether byteorder is bigendian */
|
||||
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
|
||||
significant byte first (like Motorola and SPARC, unlike Intel). */
|
||||
#if defined AC_APPLE_UNIVERSAL_BUILD
|
||||
# if defined __BIG_ENDIAN__
|
||||
# define WORDS_BIGENDIAN 1
|
||||
# endif
|
||||
#else
|
||||
# ifndef WORDS_BIGENDIAN
|
||||
# undef WORDS_BIGENDIAN
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Define to allow retrieving the byte offsets for attribute names and values.
|
||||
*/
|
||||
#undef XML_ATTR_INFO
|
||||
|
||||
/* Define to specify how much context to retain around the current parse
|
||||
point. */
|
||||
|
48
contrib/expat/fix-xmltest-log.sh
Executable file
48
contrib/expat/fix-xmltest-log.sh
Executable file
@ -0,0 +1,48 @@
|
||||
#! /usr/bin/env bash
|
||||
# __ __ _
|
||||
# ___\ \/ /_ __ __ _| |_
|
||||
# / _ \\ /| '_ \ / _` | __|
|
||||
# | __// \| |_) | (_| | |_
|
||||
# \___/_/\_\ .__/ \__,_|\__|
|
||||
# |_| XML parser
|
||||
#
|
||||
# Copyright (c) 2019 Expat development team
|
||||
# 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.
|
||||
|
||||
set -e
|
||||
|
||||
filename="${1:-tests/xmltest.log}"
|
||||
|
||||
dos2unix "${filename}"
|
||||
|
||||
tempfile="$(mktemp)"
|
||||
sed \
|
||||
-e 's/^wine: Call .* msvcrt\.dll\._wperror, aborting$/ibm49i02.dtd: No such file or directory/' \
|
||||
\
|
||||
-e '/^wine: /d' \
|
||||
-e '/^Application tried to create a window, but no driver could be loaded.$/d' \
|
||||
-e '/^Make sure that your X server is running and that $DISPLAY is set correctly.$/d' \
|
||||
-e '/^err:systray:initialize_systray Could not create tray window$/d' \
|
||||
-e '/^In ibm\/invalid\/P49\/: Unhandled exception: unimplemented .\+/d' \
|
||||
\
|
||||
"${filename}" > "${tempfile}"
|
||||
mv "${tempfile}" "${filename}"
|
@ -40,7 +40,6 @@ libexpat_la_LDFLAGS = \
|
||||
-version-info @LIBCURRENT@:@LIBREVISION@:@LIBAGE@
|
||||
|
||||
libexpat_la_SOURCES = \
|
||||
loadlibrary.c \
|
||||
xmlparse.c \
|
||||
xmltok.c \
|
||||
xmlrole.c
|
||||
|
@ -1,7 +1,7 @@
|
||||
# Makefile.in generated by automake 1.15.1 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2017 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -125,7 +125,14 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/conftools/ac_c_bigendian_cross.m4 \
|
||||
$(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/conftools/ax-require-defined.m4 \
|
||||
$(top_srcdir)/conftools/ax-check-compile-flag.m4 \
|
||||
$(top_srcdir)/conftools/ax-check-link-flag.m4 \
|
||||
$(top_srcdir)/conftools/ax-append-flag.m4 \
|
||||
$(top_srcdir)/conftools/ax-append-compile-flags.m4 \
|
||||
$(top_srcdir)/conftools/ax-append-link-flags.m4 \
|
||||
$(top_srcdir)/conftools/expatcfg-compiler-supports-visibility.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
@ -166,8 +173,7 @@ am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(docdir)" \
|
||||
"$(DESTDIR)$(includedir)"
|
||||
LTLIBRARIES = $(lib_LTLIBRARIES)
|
||||
libexpat_la_LIBADD =
|
||||
am_libexpat_la_OBJECTS = loadlibrary.lo xmlparse.lo xmltok.lo \
|
||||
xmlrole.lo
|
||||
am_libexpat_la_OBJECTS = xmlparse.lo xmltok.lo xmlrole.lo
|
||||
libexpat_la_OBJECTS = $(am_libexpat_la_OBJECTS)
|
||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||
@ -190,7 +196,9 @@ am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/conftools/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
am__maybe_remake_depfiles = depfiles
|
||||
am__depfiles_remade = ./$(DEPDIR)/xmlparse.Plo ./$(DEPDIR)/xmlrole.Plo \
|
||||
./$(DEPDIR)/xmltok.Plo
|
||||
am__mv = mv -f
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
@ -378,7 +386,6 @@ libexpat_la_LDFLAGS = \
|
||||
-version-info @LIBCURRENT@:@LIBREVISION@:@LIBAGE@
|
||||
|
||||
libexpat_la_SOURCES = \
|
||||
loadlibrary.c \
|
||||
xmlparse.c \
|
||||
xmltok.c \
|
||||
xmlrole.c
|
||||
@ -428,8 +435,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
@ -485,10 +492,15 @@ mostlyclean-compile:
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loadlibrary.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlparse.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlrole.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmltok.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlparse.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlrole.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmltok.Plo@am__quote@ # am--include-marker
|
||||
|
||||
$(am__depfiles_remade):
|
||||
@$(MKDIR_P) $(@D)
|
||||
@echo '# dummy' >$@-t && $(am__mv) $@-t $@
|
||||
|
||||
am--depfiles: $(am__depfiles_remade)
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@ -611,7 +623,10 @@ cscopelist-am: $(am__tagged_files)
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
@ -684,7 +699,9 @@ clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
|
||||
mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f ./$(DEPDIR)/xmlparse.Plo
|
||||
-rm -f ./$(DEPDIR)/xmlrole.Plo
|
||||
-rm -f ./$(DEPDIR)/xmltok.Plo
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
@ -731,7 +748,9 @@ install-ps-am:
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f ./$(DEPDIR)/xmlparse.Plo
|
||||
-rm -f ./$(DEPDIR)/xmlrole.Plo
|
||||
-rm -f ./$(DEPDIR)/xmltok.Plo
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
@ -753,9 +772,9 @@ uninstall-am: uninstall-docDATA uninstall-includeHEADERS \
|
||||
|
||||
.MAKE: install-am install-data-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
|
||||
clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
|
||||
ctags-am distclean distclean-compile distclean-generic \
|
||||
.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
|
||||
clean-generic clean-libLTLIBRARIES clean-libtool cscopelist-am \
|
||||
ctags ctags-am distclean distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-data-hook install-docDATA install-dvi \
|
||||
|
@ -33,15 +33,6 @@
|
||||
#ifndef Expat_INCLUDED
|
||||
#define Expat_INCLUDED 1
|
||||
|
||||
#ifdef __VMS
|
||||
/* 0 1 2 3 0 1 2 3
|
||||
1234567890123456789012345678901 1234567890123456789012345678901 */
|
||||
#define XML_SetProcessingInstructionHandler XML_SetProcessingInstrHandler
|
||||
#define XML_SetUnparsedEntityDeclHandler XML_SetUnparsedEntDeclHandler
|
||||
#define XML_SetStartNamespaceDeclHandler XML_SetStartNamespcDeclHandler
|
||||
#define XML_SetExternalEntityRefHandlerArg XML_SetExternalEntRefHandlerArg
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "expat_external.h"
|
||||
|
||||
@ -171,7 +162,6 @@ struct XML_cp {
|
||||
XML_Content *children;
|
||||
};
|
||||
|
||||
|
||||
/* This is called for an element declaration. See above for
|
||||
description of the model argument. It's the caller's responsibility
|
||||
to free model when finished with it.
|
||||
@ -181,8 +171,7 @@ typedef void (XMLCALL *XML_ElementDeclHandler) (void *userData,
|
||||
XML_Content *model);
|
||||
|
||||
XMLPARSEAPI(void)
|
||||
XML_SetElementDeclHandler(XML_Parser parser,
|
||||
XML_ElementDeclHandler eldecl);
|
||||
XML_SetElementDeclHandler(XML_Parser parser, XML_ElementDeclHandler eldecl);
|
||||
|
||||
/* The Attlist declaration handler is called for *each* attribute. So
|
||||
a single Attlist declaration with multiple attributes declared will
|
||||
@ -193,16 +182,11 @@ XML_SetElementDeclHandler(XML_Parser parser,
|
||||
true and default is non-NULL, then this is a "#FIXED" default.
|
||||
*/
|
||||
typedef void(XMLCALL *XML_AttlistDeclHandler)(
|
||||
void *userData,
|
||||
const XML_Char *elname,
|
||||
const XML_Char *attname,
|
||||
const XML_Char *att_type,
|
||||
const XML_Char *dflt,
|
||||
int isrequired);
|
||||
void *userData, const XML_Char *elname, const XML_Char *attname,
|
||||
const XML_Char *att_type, const XML_Char *dflt, int isrequired);
|
||||
|
||||
XMLPARSEAPI(void)
|
||||
XML_SetAttlistDeclHandler(XML_Parser parser,
|
||||
XML_AttlistDeclHandler attdecl);
|
||||
XML_SetAttlistDeclHandler(XML_Parser parser, XML_AttlistDeclHandler attdecl);
|
||||
|
||||
/* The XML declaration handler is called for *both* XML declarations
|
||||
and text declarations. The way to distinguish is that the version
|
||||
@ -218,9 +202,7 @@ typedef void (XMLCALL *XML_XmlDeclHandler) (void *userData,
|
||||
int standalone);
|
||||
|
||||
XMLPARSEAPI(void)
|
||||
XML_SetXmlDeclHandler(XML_Parser parser,
|
||||
XML_XmlDeclHandler xmldecl);
|
||||
|
||||
XML_SetXmlDeclHandler(XML_Parser parser, XML_XmlDeclHandler xmldecl);
|
||||
|
||||
typedef struct {
|
||||
void *(*malloc_fcn)(size_t size);
|
||||
@ -248,7 +230,6 @@ XML_ParserCreate(const XML_Char *encoding);
|
||||
XMLPARSEAPI(XML_Parser)
|
||||
XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator);
|
||||
|
||||
|
||||
/* Constructs a new parser using the memory management suite referred to
|
||||
by memsuite. If memsuite is NULL, then use the standard library memory
|
||||
suite. If namespaceSeparator is non-NULL it creates a parser with
|
||||
@ -285,21 +266,17 @@ typedef void (XMLCALL *XML_StartElementHandler) (void *userData,
|
||||
typedef void(XMLCALL *XML_EndElementHandler)(void *userData,
|
||||
const XML_Char *name);
|
||||
|
||||
|
||||
/* s is not 0 terminated. */
|
||||
typedef void(XMLCALL *XML_CharacterDataHandler)(void *userData,
|
||||
const XML_Char *s,
|
||||
int len);
|
||||
const XML_Char *s, int len);
|
||||
|
||||
/* target and data are 0 terminated */
|
||||
typedef void (XMLCALL *XML_ProcessingInstructionHandler) (
|
||||
void *userData,
|
||||
typedef void(XMLCALL *XML_ProcessingInstructionHandler)(void *userData,
|
||||
const XML_Char *target,
|
||||
const XML_Char *data);
|
||||
|
||||
/* data is 0 terminated */
|
||||
typedef void (XMLCALL *XML_CommentHandler) (void *userData,
|
||||
const XML_Char *data);
|
||||
typedef void(XMLCALL *XML_CommentHandler)(void *userData, const XML_Char *data);
|
||||
|
||||
typedef void(XMLCALL *XML_StartCdataSectionHandler)(void *userData);
|
||||
typedef void(XMLCALL *XML_EndCdataSectionHandler)(void *userData);
|
||||
@ -317,15 +294,13 @@ typedef void (XMLCALL *XML_EndCdataSectionHandler) (void *userData);
|
||||
default handler: for example, a comment might be split between
|
||||
multiple calls.
|
||||
*/
|
||||
typedef void (XMLCALL *XML_DefaultHandler) (void *userData,
|
||||
const XML_Char *s,
|
||||
typedef void(XMLCALL *XML_DefaultHandler)(void *userData, const XML_Char *s,
|
||||
int len);
|
||||
|
||||
/* This is called for the start of the DOCTYPE declaration, before
|
||||
any DTD or internal subset is parsed.
|
||||
*/
|
||||
typedef void (XMLCALL *XML_StartDoctypeDeclHandler) (
|
||||
void *userData,
|
||||
typedef void(XMLCALL *XML_StartDoctypeDeclHandler)(void *userData,
|
||||
const XML_Char *doctypeName,
|
||||
const XML_Char *sysid,
|
||||
const XML_Char *pubid,
|
||||
@ -356,19 +331,13 @@ typedef void (XMLCALL *XML_EndDoctypeDeclHandler)(void *userData);
|
||||
that would break binary compatibility.
|
||||
*/
|
||||
typedef void(XMLCALL *XML_EntityDeclHandler)(
|
||||
void *userData,
|
||||
const XML_Char *entityName,
|
||||
int is_parameter_entity,
|
||||
const XML_Char *value,
|
||||
int value_length,
|
||||
const XML_Char *base,
|
||||
const XML_Char *systemId,
|
||||
const XML_Char *publicId,
|
||||
void *userData, const XML_Char *entityName, int is_parameter_entity,
|
||||
const XML_Char *value, int value_length, const XML_Char *base,
|
||||
const XML_Char *systemId, const XML_Char *publicId,
|
||||
const XML_Char *notationName);
|
||||
|
||||
XMLPARSEAPI(void)
|
||||
XML_SetEntityDeclHandler(XML_Parser parser,
|
||||
XML_EntityDeclHandler handler);
|
||||
XML_SetEntityDeclHandler(XML_Parser parser, XML_EntityDeclHandler handler);
|
||||
|
||||
/* OBSOLETE -- OBSOLETE -- OBSOLETE
|
||||
This handler has been superseded by the EntityDeclHandler above.
|
||||
@ -380,19 +349,15 @@ XML_SetEntityDeclHandler(XML_Parser parser,
|
||||
NULL. The other arguments may be.
|
||||
*/
|
||||
typedef void(XMLCALL *XML_UnparsedEntityDeclHandler)(
|
||||
void *userData,
|
||||
const XML_Char *entityName,
|
||||
const XML_Char *base,
|
||||
const XML_Char *systemId,
|
||||
const XML_Char *publicId,
|
||||
void *userData, const XML_Char *entityName, const XML_Char *base,
|
||||
const XML_Char *systemId, const XML_Char *publicId,
|
||||
const XML_Char *notationName);
|
||||
|
||||
/* This is called for a declaration of notation. The base argument is
|
||||
whatever was set by XML_SetBase. The notationName will never be
|
||||
NULL. The other arguments can be.
|
||||
*/
|
||||
typedef void (XMLCALL *XML_NotationDeclHandler) (
|
||||
void *userData,
|
||||
typedef void(XMLCALL *XML_NotationDeclHandler)(void *userData,
|
||||
const XML_Char *notationName,
|
||||
const XML_Char *base,
|
||||
const XML_Char *systemId,
|
||||
@ -404,13 +369,11 @@ typedef void (XMLCALL *XML_NotationDeclHandler) (
|
||||
declaration handlers. For an xmlns attribute, prefix will be
|
||||
NULL. For an xmlns="" attribute, uri will be NULL.
|
||||
*/
|
||||
typedef void (XMLCALL *XML_StartNamespaceDeclHandler) (
|
||||
void *userData,
|
||||
typedef void(XMLCALL *XML_StartNamespaceDeclHandler)(void *userData,
|
||||
const XML_Char *prefix,
|
||||
const XML_Char *uri);
|
||||
|
||||
typedef void (XMLCALL *XML_EndNamespaceDeclHandler) (
|
||||
void *userData,
|
||||
typedef void(XMLCALL *XML_EndNamespaceDeclHandler)(void *userData,
|
||||
const XML_Char *prefix);
|
||||
|
||||
/* This is called if the document is not standalone, that is, it has an
|
||||
@ -458,8 +421,7 @@ typedef int (XMLCALL *XML_NotStandaloneHandler) (void *userData);
|
||||
Note that unlike other handlers the first argument is the parser,
|
||||
not userData.
|
||||
*/
|
||||
typedef int (XMLCALL *XML_ExternalEntityRefHandler) (
|
||||
XML_Parser parser,
|
||||
typedef int(XMLCALL *XML_ExternalEntityRefHandler)(XML_Parser parser,
|
||||
const XML_Char *context,
|
||||
const XML_Char *base,
|
||||
const XML_Char *systemId,
|
||||
@ -475,8 +437,7 @@ typedef int (XMLCALL *XML_ExternalEntityRefHandler) (
|
||||
the event would be out of sync with the reporting of the
|
||||
declarations or attribute values
|
||||
*/
|
||||
typedef void (XMLCALL *XML_SkippedEntityHandler) (
|
||||
void *userData,
|
||||
typedef void(XMLCALL *XML_SkippedEntityHandler)(void *userData,
|
||||
const XML_Char *entityName,
|
||||
int is_parameter_entity);
|
||||
|
||||
@ -554,23 +515,19 @@ typedef struct {
|
||||
If info does not describe a suitable encoding, then the parser will
|
||||
return an XML_UNKNOWN_ENCODING error.
|
||||
*/
|
||||
typedef int (XMLCALL *XML_UnknownEncodingHandler) (
|
||||
void *encodingHandlerData,
|
||||
typedef int(XMLCALL *XML_UnknownEncodingHandler)(void *encodingHandlerData,
|
||||
const XML_Char *name,
|
||||
XML_Encoding *info);
|
||||
|
||||
XMLPARSEAPI(void)
|
||||
XML_SetElementHandler(XML_Parser parser,
|
||||
XML_StartElementHandler start,
|
||||
XML_SetElementHandler(XML_Parser parser, XML_StartElementHandler start,
|
||||
XML_EndElementHandler end);
|
||||
|
||||
XMLPARSEAPI(void)
|
||||
XML_SetStartElementHandler(XML_Parser parser,
|
||||
XML_StartElementHandler handler);
|
||||
XML_SetStartElementHandler(XML_Parser parser, XML_StartElementHandler handler);
|
||||
|
||||
XMLPARSEAPI(void)
|
||||
XML_SetEndElementHandler(XML_Parser parser,
|
||||
XML_EndElementHandler handler);
|
||||
XML_SetEndElementHandler(XML_Parser parser, XML_EndElementHandler handler);
|
||||
|
||||
XMLPARSEAPI(void)
|
||||
XML_SetCharacterDataHandler(XML_Parser parser,
|
||||
@ -580,8 +537,7 @@ XMLPARSEAPI(void)
|
||||
XML_SetProcessingInstructionHandler(XML_Parser parser,
|
||||
XML_ProcessingInstructionHandler handler);
|
||||
XMLPARSEAPI(void)
|
||||
XML_SetCommentHandler(XML_Parser parser,
|
||||
XML_CommentHandler handler);
|
||||
XML_SetCommentHandler(XML_Parser parser, XML_CommentHandler handler);
|
||||
|
||||
XMLPARSEAPI(void)
|
||||
XML_SetCdataSectionHandler(XML_Parser parser,
|
||||
@ -601,20 +557,17 @@ XML_SetEndCdataSectionHandler(XML_Parser parser,
|
||||
default handler, or to the skipped entity handler, if one is set.
|
||||
*/
|
||||
XMLPARSEAPI(void)
|
||||
XML_SetDefaultHandler(XML_Parser parser,
|
||||
XML_DefaultHandler handler);
|
||||
XML_SetDefaultHandler(XML_Parser parser, XML_DefaultHandler handler);
|
||||
|
||||
/* This sets the default handler but does not inhibit expansion of
|
||||
internal entities. The entity reference will not be passed to the
|
||||
default handler.
|
||||
*/
|
||||
XMLPARSEAPI(void)
|
||||
XML_SetDefaultHandlerExpand(XML_Parser parser,
|
||||
XML_DefaultHandler handler);
|
||||
XML_SetDefaultHandlerExpand(XML_Parser parser, XML_DefaultHandler handler);
|
||||
|
||||
XMLPARSEAPI(void)
|
||||
XML_SetDoctypeDeclHandler(XML_Parser parser,
|
||||
XML_StartDoctypeDeclHandler start,
|
||||
XML_SetDoctypeDeclHandler(XML_Parser parser, XML_StartDoctypeDeclHandler start,
|
||||
XML_EndDoctypeDeclHandler end);
|
||||
|
||||
XMLPARSEAPI(void)
|
||||
@ -622,16 +575,14 @@ XML_SetStartDoctypeDeclHandler(XML_Parser parser,
|
||||
XML_StartDoctypeDeclHandler start);
|
||||
|
||||
XMLPARSEAPI(void)
|
||||
XML_SetEndDoctypeDeclHandler(XML_Parser parser,
|
||||
XML_EndDoctypeDeclHandler end);
|
||||
XML_SetEndDoctypeDeclHandler(XML_Parser parser, XML_EndDoctypeDeclHandler end);
|
||||
|
||||
XMLPARSEAPI(void)
|
||||
XML_SetUnparsedEntityDeclHandler(XML_Parser parser,
|
||||
XML_UnparsedEntityDeclHandler handler);
|
||||
|
||||
XMLPARSEAPI(void)
|
||||
XML_SetNotationDeclHandler(XML_Parser parser,
|
||||
XML_NotationDeclHandler handler);
|
||||
XML_SetNotationDeclHandler(XML_Parser parser, XML_NotationDeclHandler handler);
|
||||
|
||||
XMLPARSEAPI(void)
|
||||
XML_SetNamespaceDeclHandler(XML_Parser parser,
|
||||
@ -659,8 +610,7 @@ XML_SetExternalEntityRefHandler(XML_Parser parser,
|
||||
instead of the parser object.
|
||||
*/
|
||||
XMLPARSEAPI(void)
|
||||
XML_SetExternalEntityRefHandlerArg(XML_Parser parser,
|
||||
void *arg);
|
||||
XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg);
|
||||
|
||||
XMLPARSEAPI(void)
|
||||
XML_SetSkippedEntityHandler(XML_Parser parser,
|
||||
@ -740,7 +690,6 @@ XML_UseParserAsHandlerArg(XML_Parser parser);
|
||||
XMLPARSEAPI(enum XML_Error)
|
||||
XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD);
|
||||
|
||||
|
||||
/* Sets the base to be used for resolving relative URIs in system
|
||||
identifiers in declarations. Resolving relative identifiers is
|
||||
left to the application: this value will be passed through as the
|
||||
@ -863,12 +812,7 @@ XML_StopParser(XML_Parser parser, XML_Bool resumable);
|
||||
XMLPARSEAPI(enum XML_Status)
|
||||
XML_ResumeParser(XML_Parser parser);
|
||||
|
||||
enum XML_Parsing {
|
||||
XML_INITIALIZED,
|
||||
XML_PARSING,
|
||||
XML_FINISHED,
|
||||
XML_SUSPENDED
|
||||
};
|
||||
enum XML_Parsing { XML_INITIALIZED, XML_PARSING, XML_FINISHED, XML_SUSPENDED };
|
||||
|
||||
typedef struct {
|
||||
enum XML_Parsing parsing;
|
||||
@ -900,8 +844,7 @@ XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status);
|
||||
Otherwise returns a new XML_Parser object.
|
||||
*/
|
||||
XMLPARSEAPI(XML_Parser)
|
||||
XML_ExternalEntityParserCreate(XML_Parser parser,
|
||||
const XML_Char *context,
|
||||
XML_ExternalEntityParserCreate(XML_Parser parser, const XML_Char *context,
|
||||
const XML_Char *encoding);
|
||||
|
||||
enum XML_ParamEntityParsing {
|
||||
@ -945,8 +888,7 @@ XML_SetParamEntityParsing(XML_Parser parser,
|
||||
Note: If parser == NULL, the function will do nothing and return 0.
|
||||
*/
|
||||
XMLPARSEAPI(int)
|
||||
XML_SetHashSalt(XML_Parser parser,
|
||||
unsigned long hash_salt);
|
||||
XML_SetHashSalt(XML_Parser parser, unsigned long hash_salt);
|
||||
|
||||
/* If XML_Parse or XML_ParseBuffer have returned XML_STATUS_ERROR, then
|
||||
XML_GetErrorCode returns information about the error.
|
||||
@ -995,9 +937,7 @@ XML_GetCurrentByteCount(XML_Parser parser);
|
||||
the handler that makes the call.
|
||||
*/
|
||||
XMLPARSEAPI(const char *)
|
||||
XML_GetInputContext(XML_Parser parser,
|
||||
int *offset,
|
||||
int *size);
|
||||
XML_GetInputContext(XML_Parser parser, int *offset, int *size);
|
||||
|
||||
/* For backwards compatibility with previous versions. */
|
||||
#define XML_GetErrorLineNumber XML_GetCurrentLineNumber
|
||||
@ -1070,13 +1010,12 @@ typedef struct {
|
||||
XMLPARSEAPI(const XML_Feature *)
|
||||
XML_GetFeatureList(void);
|
||||
|
||||
|
||||
/* Expat follows the semantic versioning convention.
|
||||
See http://semver.org.
|
||||
*/
|
||||
#define XML_MAJOR_VERSION 2
|
||||
#define XML_MINOR_VERSION 2
|
||||
#define XML_MICRO_VERSION 6
|
||||
#define XML_MICRO_VERSION 9
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -35,10 +35,6 @@
|
||||
|
||||
/* External API definitions */
|
||||
|
||||
#if defined(_MSC_EXTENSIONS) && !defined(__BEOS__) && !defined(__CYGWIN__)
|
||||
# define XML_USE_MSC_EXTENSIONS 1
|
||||
#endif
|
||||
|
||||
/* Expat tries very hard to make the API boundary very specifically
|
||||
defined. There are two macros defined to control this boundary;
|
||||
each of these can be defined before including this header to
|
||||
@ -81,19 +77,22 @@
|
||||
# endif
|
||||
#endif /* not defined XMLCALL */
|
||||
|
||||
|
||||
#if ! defined(XML_STATIC) && ! defined(XMLIMPORT)
|
||||
# ifndef XML_BUILDING_EXPAT
|
||||
/* using Expat from an application */
|
||||
|
||||
# ifdef XML_USE_MSC_EXTENSIONS
|
||||
# if defined(_MSC_EXTENSIONS) && ! defined(__BEOS__) && ! defined(__CYGWIN__)
|
||||
# define XMLIMPORT __declspec(dllimport)
|
||||
# endif
|
||||
|
||||
# endif
|
||||
#endif /* not defined XML_STATIC */
|
||||
|
||||
#if !defined(XMLIMPORT) && defined(__GNUC__) && (__GNUC__ >= 4)
|
||||
#ifndef XML_ENABLE_VISIBILITY
|
||||
# define XML_ENABLE_VISIBILITY 0
|
||||
#endif
|
||||
|
||||
#if ! defined(XMLIMPORT) && XML_ENABLE_VISIBILITY
|
||||
# define XMLIMPORT __attribute__((visibility("default")))
|
||||
#endif
|
||||
|
||||
@ -102,13 +101,15 @@
|
||||
# define XMLIMPORT
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96))
|
||||
#if defined(__GNUC__) \
|
||||
&& (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96))
|
||||
# define XML_ATTR_MALLOC __attribute__((__malloc__))
|
||||
#else
|
||||
# define XML_ATTR_MALLOC
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
|
||||
#if defined(__GNUC__) \
|
||||
&& ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
|
||||
# define XML_ATTR_ALLOC_SIZE(x) __attribute__((__alloc_size__(x)))
|
||||
#else
|
||||
# define XML_ATTR_ALLOC_SIZE(x)
|
||||
@ -143,13 +144,8 @@ typedef char XML_LChar;
|
||||
#endif /* XML_UNICODE */
|
||||
|
||||
#ifdef XML_LARGE_SIZE /* Use large integers for file/stream positions. */
|
||||
# if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400
|
||||
typedef __int64 XML_Index;
|
||||
typedef unsigned __int64 XML_Size;
|
||||
# else
|
||||
typedef long long XML_Index;
|
||||
typedef unsigned long long XML_Size;
|
||||
# endif
|
||||
#else
|
||||
typedef long XML_Index;
|
||||
typedef unsigned long XML_Size;
|
||||
|
@ -102,22 +102,21 @@
|
||||
#endif
|
||||
|
||||
#ifndef UNUSED_P
|
||||
# ifdef __GNUC__
|
||||
# define UNUSED_P(p) UNUSED_ ## p __attribute__((__unused__))
|
||||
# else
|
||||
# define UNUSED_P(p) UNUSED_ ## p
|
||||
# define UNUSED_P(p) (void)p
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef XML_ENABLE_VISIBILITY
|
||||
# if XML_ENABLE_VISIBILITY
|
||||
__attribute__((visibility("default")))
|
||||
# endif
|
||||
#endif
|
||||
void
|
||||
_INTERNAL_trim_to_complete_utf8_characters(const char * from, const char ** fromLimRef);
|
||||
|
||||
_INTERNAL_trim_to_complete_utf8_characters(const char *from,
|
||||
const char **fromLimRef);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -31,152 +31,106 @@
|
||||
*/
|
||||
|
||||
static const unsigned namingBitmap[] = {
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0x00000000, 0x04000000, 0x87FFFFFE, 0x07FFFFFE,
|
||||
0x00000000, 0x00000000, 0xFF7FFFFF, 0xFF7FFFFF,
|
||||
0xFFFFFFFF, 0x7FF3FFFF, 0xFFFFFDFE, 0x7FFFFFFF,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE00F, 0xFC31FFFF,
|
||||
0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xF80001FF, 0x00000003, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0xFFFFD740, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD,
|
||||
0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF,
|
||||
0xFFFF0003, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF,
|
||||
0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE,
|
||||
0x0000007F, 0x00000000, 0xFFFF0000, 0x000707FF,
|
||||
0x00000000, 0x07FFFFFE, 0x000007FE, 0xFFFE0000,
|
||||
0xFFFFFFFF, 0x7CFFFFFF, 0x002F7FFF, 0x00000060,
|
||||
0xFFFFFFE0, 0x23FFFFFF, 0xFF000000, 0x00000003,
|
||||
0xFFF99FE0, 0x03C5FDFF, 0xB0000000, 0x00030003,
|
||||
0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000,
|
||||
0xFFFBAFE0, 0x23EDFDFF, 0x00000000, 0x00000001,
|
||||
0xFFF99FE0, 0x23CDFDFF, 0xB0000000, 0x00000003,
|
||||
0xD63DC7E0, 0x03BFC718, 0x00000000, 0x00000000,
|
||||
0xFFFDDFE0, 0x03EFFDFF, 0x00000000, 0x00000003,
|
||||
0xFFFDDFE0, 0x03EFFDFF, 0x40000000, 0x00000003,
|
||||
0xFFFDDFE0, 0x03FFFDFF, 0x00000000, 0x00000003,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0xFFFFFFFE, 0x000D7FFF, 0x0000003F, 0x00000000,
|
||||
0xFEF02596, 0x200D6CAE, 0x0000001F, 0x00000000,
|
||||
0x00000000, 0x00000000, 0xFFFFFEFF, 0x000003FF,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0xFFFFFFFF, 0xFFFF003F, 0x007FFFFF,
|
||||
0x0007DAED, 0x50000000, 0x82315001, 0x002C62AB,
|
||||
0x40000000, 0xF580C900, 0x00000007, 0x02010800,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0x0FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF,
|
||||
0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF,
|
||||
0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF,
|
||||
0x00000000, 0x00004C40, 0x00000000, 0x00000000,
|
||||
0x00000007, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000080, 0x000003FE, 0xFFFFFFFE, 0xFFFFFFFF,
|
||||
0x001FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x07FFFFFF,
|
||||
0xFFFFFFE0, 0x00001FFF, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x07FF6000, 0x87FFFFFE, 0x07FFFFFE,
|
||||
0x00000000, 0x00800000, 0xFF7FFFFF, 0xFF7FFFFF,
|
||||
0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xF80001FF, 0x00030003, 0x00000000,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000003,
|
||||
0xFFFFD7C0, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD,
|
||||
0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF,
|
||||
0xFFFF007B, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF,
|
||||
0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE,
|
||||
0xFFFE007F, 0xBBFFFFFB, 0xFFFF0016, 0x000707FF,
|
||||
0x00000000, 0x07FFFFFE, 0x0007FFFF, 0xFFFF03FF,
|
||||
0xFFFFFFFF, 0x7CFFFFFF, 0xFFEF7FFF, 0x03FF3DFF,
|
||||
0xFFFFFFEE, 0xF3FFFFFF, 0xFF1E3FFF, 0x0000FFCF,
|
||||
0xFFF99FEE, 0xD3C5FDFF, 0xB080399F, 0x0003FFCF,
|
||||
0xFFF987E4, 0xD36DFDFF, 0x5E003987, 0x001FFFC0,
|
||||
0xFFFBAFEE, 0xF3EDFDFF, 0x00003BBF, 0x0000FFC1,
|
||||
0xFFF99FEE, 0xF3CDFDFF, 0xB0C0398F, 0x0000FFC3,
|
||||
0xD63DC7EC, 0xC3BFC718, 0x00803DC7, 0x0000FF80,
|
||||
0xFFFDDFEE, 0xC3EFFDFF, 0x00603DDF, 0x0000FFC3,
|
||||
0xFFFDDFEC, 0xC3EFFDFF, 0x40603DDF, 0x0000FFC3,
|
||||
0xFFFDDFEC, 0xC3FFFDFF, 0x00803DCF, 0x0000FFC3,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0xFFFFFFFE, 0x07FF7FFF, 0x03FF7FFF, 0x00000000,
|
||||
0xFEF02596, 0x3BFF6CAE, 0x03FF3F5F, 0x00000000,
|
||||
0x03000000, 0xC2A003FF, 0xFFFFFEFF, 0xFFFE03FF,
|
||||
0xFEBF0FDF, 0x02FE3FFF, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x1FFF0000, 0x00000002,
|
||||
0x000000A0, 0x003EFFFE, 0xFFFFFFFE, 0xFFFFFFFF,
|
||||
0x661FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x77FFFFFF,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x04000000,
|
||||
0x87FFFFFE, 0x07FFFFFE, 0x00000000, 0x00000000, 0xFF7FFFFF, 0xFF7FFFFF,
|
||||
0xFFFFFFFF, 0x7FF3FFFF, 0xFFFFFDFE, 0x7FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFE00F, 0xFC31FFFF, 0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xF80001FF, 0x00000003, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0xFFFFD740, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD,
|
||||
0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF, 0xFFFF0003, 0xFFFFFFFF,
|
||||
0xFFFF199F, 0x033FCFFF, 0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE,
|
||||
0x0000007F, 0x00000000, 0xFFFF0000, 0x000707FF, 0x00000000, 0x07FFFFFE,
|
||||
0x000007FE, 0xFFFE0000, 0xFFFFFFFF, 0x7CFFFFFF, 0x002F7FFF, 0x00000060,
|
||||
0xFFFFFFE0, 0x23FFFFFF, 0xFF000000, 0x00000003, 0xFFF99FE0, 0x03C5FDFF,
|
||||
0xB0000000, 0x00030003, 0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000,
|
||||
0xFFFBAFE0, 0x23EDFDFF, 0x00000000, 0x00000001, 0xFFF99FE0, 0x23CDFDFF,
|
||||
0xB0000000, 0x00000003, 0xD63DC7E0, 0x03BFC718, 0x00000000, 0x00000000,
|
||||
0xFFFDDFE0, 0x03EFFDFF, 0x00000000, 0x00000003, 0xFFFDDFE0, 0x03EFFDFF,
|
||||
0x40000000, 0x00000003, 0xFFFDDFE0, 0x03FFFDFF, 0x00000000, 0x00000003,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFE, 0x000D7FFF,
|
||||
0x0000003F, 0x00000000, 0xFEF02596, 0x200D6CAE, 0x0000001F, 0x00000000,
|
||||
0x00000000, 0x00000000, 0xFFFFFEFF, 0x000003FF, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0xFFFFFFFF, 0xFFFF003F, 0x007FFFFF, 0x0007DAED, 0x50000000,
|
||||
0x82315001, 0x002C62AB, 0x40000000, 0xF580C900, 0x00000007, 0x02010800,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0FFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0x03FFFFFF, 0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF,
|
||||
0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF, 0x00000000, 0x00004C40,
|
||||
0x00000000, 0x00000000, 0x00000007, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000080, 0x000003FE, 0xFFFFFFFE, 0xFFFFFFFF, 0x001FFFFF, 0xFFFFFFFE,
|
||||
0xFFFFFFFF, 0x07FFFFFF, 0xFFFFFFE0, 0x00001FFF, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000000F,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x07FF6000, 0x87FFFFFE, 0x07FFFFFE,
|
||||
0x00000000, 0x00800000, 0xFF7FFFFF, 0xFF7FFFFF, 0x00FFFFFF, 0x00000000,
|
||||
0xFFFF0000, 0xFFFFFFFF, 0xFFFFFFFF, 0xF80001FF, 0x00030003, 0x00000000,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000003, 0xFFFFD7C0, 0xFFFFFFFB,
|
||||
0x547F7FFF, 0x000FFFFD, 0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF,
|
||||
0xFFFF007B, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF, 0x00000000, 0xFFFE0000,
|
||||
0x027FFFFF, 0xFFFFFFFE, 0xFFFE007F, 0xBBFFFFFB, 0xFFFF0016, 0x000707FF,
|
||||
0x00000000, 0x07FFFFFE, 0x0007FFFF, 0xFFFF03FF, 0xFFFFFFFF, 0x7CFFFFFF,
|
||||
0xFFEF7FFF, 0x03FF3DFF, 0xFFFFFFEE, 0xF3FFFFFF, 0xFF1E3FFF, 0x0000FFCF,
|
||||
0xFFF99FEE, 0xD3C5FDFF, 0xB080399F, 0x0003FFCF, 0xFFF987E4, 0xD36DFDFF,
|
||||
0x5E003987, 0x001FFFC0, 0xFFFBAFEE, 0xF3EDFDFF, 0x00003BBF, 0x0000FFC1,
|
||||
0xFFF99FEE, 0xF3CDFDFF, 0xB0C0398F, 0x0000FFC3, 0xD63DC7EC, 0xC3BFC718,
|
||||
0x00803DC7, 0x0000FF80, 0xFFFDDFEE, 0xC3EFFDFF, 0x00603DDF, 0x0000FFC3,
|
||||
0xFFFDDFEC, 0xC3EFFDFF, 0x40603DDF, 0x0000FFC3, 0xFFFDDFEC, 0xC3FFFDFF,
|
||||
0x00803DCF, 0x0000FFC3, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0xFFFFFFFE, 0x07FF7FFF, 0x03FF7FFF, 0x00000000, 0xFEF02596, 0x3BFF6CAE,
|
||||
0x03FF3F5F, 0x00000000, 0x03000000, 0xC2A003FF, 0xFFFFFEFF, 0xFFFE03FF,
|
||||
0xFEBF0FDF, 0x02FE3FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x1FFF0000, 0x00000002,
|
||||
0x000000A0, 0x003EFFFE, 0xFFFFFFFE, 0xFFFFFFFF, 0x661FFFFF, 0xFFFFFFFE,
|
||||
0xFFFFFFFF, 0x77FFFFFF,
|
||||
};
|
||||
static const unsigned char nmstrtPages[] = {
|
||||
0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00,
|
||||
0x00, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
|
||||
0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13,
|
||||
0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x15, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x09, 0x0A, 0x0B,
|
||||
0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13, 0x00, 0x14, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x15, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
static const unsigned char namePages[] = {
|
||||
0x19, 0x03, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x00,
|
||||
0x00, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25,
|
||||
0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13,
|
||||
0x26, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x27, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x19, 0x03, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x00, 0x00, 0x1F, 0x20, 0x21,
|
||||
0x22, 0x23, 0x24, 0x25, 0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13, 0x26, 0x14, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x27, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
|
@ -11,6 +11,10 @@
|
||||
* --------------------------------------------------------------------------
|
||||
* HISTORY:
|
||||
*
|
||||
* 2019-08-03 (Sebastian Pipping)
|
||||
* - Mark part of sip24_valid as to be excluded from clang-format
|
||||
* - Re-format code using clang-format 9
|
||||
*
|
||||
* 2018-07-08 (Anton Maklakov)
|
||||
* - Add "fall through" markers for GCC's -Wimplicit-fallthrough
|
||||
*
|
||||
@ -102,7 +106,6 @@
|
||||
# include <stdint.h> /* uint64_t uint32_t uint8_t */
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Workaround to not require a C++11 compiler for using ULL suffix
|
||||
* if this code is included and compiled as C++; related GCC warning is:
|
||||
@ -110,29 +113,26 @@
|
||||
*/
|
||||
#define _SIP_ULL(high, low) (((uint64_t)high << 32) | low)
|
||||
|
||||
|
||||
#define SIP_ROTL(x, b) (uint64_t)(((x) << (b)) | ((x) >> (64 - (b))))
|
||||
|
||||
#define SIP_U32TO8_LE(p, v) \
|
||||
(p)[0] = (uint8_t)((v) >> 0); (p)[1] = (uint8_t)((v) >> 8); \
|
||||
(p)[2] = (uint8_t)((v) >> 16); (p)[3] = (uint8_t)((v) >> 24);
|
||||
(p)[0] = (uint8_t)((v) >> 0); \
|
||||
(p)[1] = (uint8_t)((v) >> 8); \
|
||||
(p)[2] = (uint8_t)((v) >> 16); \
|
||||
(p)[3] = (uint8_t)((v) >> 24);
|
||||
|
||||
#define SIP_U64TO8_LE(p, v) \
|
||||
SIP_U32TO8_LE((p) + 0, (uint32_t)((v) >> 0)); \
|
||||
SIP_U32TO8_LE((p) + 4, (uint32_t)((v) >> 32));
|
||||
|
||||
#define SIP_U8TO64_LE(p) \
|
||||
(((uint64_t)((p)[0]) << 0) | \
|
||||
((uint64_t)((p)[1]) << 8) | \
|
||||
((uint64_t)((p)[2]) << 16) | \
|
||||
((uint64_t)((p)[3]) << 24) | \
|
||||
((uint64_t)((p)[4]) << 32) | \
|
||||
((uint64_t)((p)[5]) << 40) | \
|
||||
((uint64_t)((p)[6]) << 48) | \
|
||||
((uint64_t)((p)[7]) << 56))
|
||||
(((uint64_t)((p)[0]) << 0) | ((uint64_t)((p)[1]) << 8) \
|
||||
| ((uint64_t)((p)[2]) << 16) | ((uint64_t)((p)[3]) << 24) \
|
||||
| ((uint64_t)((p)[4]) << 32) | ((uint64_t)((p)[5]) << 40) \
|
||||
| ((uint64_t)((p)[6]) << 48) | ((uint64_t)((p)[7]) << 56))
|
||||
|
||||
|
||||
#define SIPHASH_INITIALIZER { 0, 0, 0, 0, { 0 }, 0, 0 }
|
||||
#define SIPHASH_INITIALIZER \
|
||||
{ 0, 0, 0, 0, {0}, 0, 0 }
|
||||
|
||||
struct siphash {
|
||||
uint64_t v0, v1, v2, v3;
|
||||
@ -141,7 +141,6 @@ struct siphash {
|
||||
uint64_t c;
|
||||
}; /* struct siphash */
|
||||
|
||||
|
||||
#define SIP_KEYLEN 16
|
||||
|
||||
struct sipkey {
|
||||
@ -150,26 +149,27 @@ struct sipkey {
|
||||
|
||||
#define sip_keyof(k) sip_tokey(&(struct sipkey){{0}}, (k))
|
||||
|
||||
static struct sipkey *sip_tokey(struct sipkey *key, const void *src) {
|
||||
static struct sipkey *
|
||||
sip_tokey(struct sipkey *key, const void *src) {
|
||||
key->k[0] = SIP_U8TO64_LE((const unsigned char *)src);
|
||||
key->k[1] = SIP_U8TO64_LE((const unsigned char *)src + 8);
|
||||
return key;
|
||||
} /* sip_tokey() */
|
||||
|
||||
|
||||
#ifdef SIPHASH_TOBIN
|
||||
|
||||
# define sip_binof(v) sip_tobin((unsigned char[8]){0}, (v))
|
||||
|
||||
static void *sip_tobin(void *dst, uint64_t u64) {
|
||||
static void *
|
||||
sip_tobin(void *dst, uint64_t u64) {
|
||||
SIP_U64TO8_LE((unsigned char *)dst, u64);
|
||||
return dst;
|
||||
} /* sip_tobin() */
|
||||
|
||||
#endif /* SIPHASH_TOBIN */
|
||||
|
||||
|
||||
static void sip_round(struct siphash *H, const int rounds) {
|
||||
static void
|
||||
sip_round(struct siphash *H, const int rounds) {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < rounds; i++) {
|
||||
@ -193,9 +193,8 @@ static void sip_round(struct siphash *H, const int rounds) {
|
||||
}
|
||||
} /* sip_round() */
|
||||
|
||||
|
||||
static struct siphash *sip24_init(struct siphash *H,
|
||||
const struct sipkey *key) {
|
||||
static struct siphash *
|
||||
sip24_init(struct siphash *H, const struct sipkey *key) {
|
||||
H->v0 = _SIP_ULL(0x736f6d65U, 0x70736575U) ^ key->k[0];
|
||||
H->v1 = _SIP_ULL(0x646f7261U, 0x6e646f6dU) ^ key->k[1];
|
||||
H->v2 = _SIP_ULL(0x6c796765U, 0x6e657261U) ^ key->k[0];
|
||||
@ -207,11 +206,10 @@ static struct siphash *sip24_init(struct siphash *H,
|
||||
return H;
|
||||
} /* sip24_init() */
|
||||
|
||||
|
||||
#define sip_endof(a) (&(a)[sizeof(a) / sizeof *(a)])
|
||||
|
||||
static struct siphash *sip24_update(struct siphash *H, const void *src,
|
||||
size_t len) {
|
||||
static struct siphash *
|
||||
sip24_update(struct siphash *H, const void *src, size_t len) {
|
||||
const unsigned char *p = (const unsigned char *)src, *pe = p + len;
|
||||
uint64_t m;
|
||||
|
||||
@ -234,27 +232,35 @@ static struct siphash *sip24_update(struct siphash *H, const void *src,
|
||||
return H;
|
||||
} /* sip24_update() */
|
||||
|
||||
|
||||
static uint64_t sip24_final(struct siphash *H) {
|
||||
static uint64_t
|
||||
sip24_final(struct siphash *H) {
|
||||
const char left = (char)(H->p - H->buf);
|
||||
uint64_t b = (H->c + left) << 56;
|
||||
|
||||
switch (left) {
|
||||
case 7: b |= (uint64_t)H->buf[6] << 48;
|
||||
case 7:
|
||||
b |= (uint64_t)H->buf[6] << 48;
|
||||
/* fall through */
|
||||
case 6: b |= (uint64_t)H->buf[5] << 40;
|
||||
case 6:
|
||||
b |= (uint64_t)H->buf[5] << 40;
|
||||
/* fall through */
|
||||
case 5: b |= (uint64_t)H->buf[4] << 32;
|
||||
case 5:
|
||||
b |= (uint64_t)H->buf[4] << 32;
|
||||
/* fall through */
|
||||
case 4: b |= (uint64_t)H->buf[3] << 24;
|
||||
case 4:
|
||||
b |= (uint64_t)H->buf[3] << 24;
|
||||
/* fall through */
|
||||
case 3: b |= (uint64_t)H->buf[2] << 16;
|
||||
case 3:
|
||||
b |= (uint64_t)H->buf[2] << 16;
|
||||
/* fall through */
|
||||
case 2: b |= (uint64_t)H->buf[1] << 8;
|
||||
case 2:
|
||||
b |= (uint64_t)H->buf[1] << 8;
|
||||
/* fall through */
|
||||
case 1: b |= (uint64_t)H->buf[0] << 0;
|
||||
case 1:
|
||||
b |= (uint64_t)H->buf[0] << 0;
|
||||
/* fall through */
|
||||
case 0: break;
|
||||
case 0:
|
||||
break;
|
||||
}
|
||||
|
||||
H->v3 ^= b;
|
||||
@ -266,14 +272,12 @@ static uint64_t sip24_final(struct siphash *H) {
|
||||
return H->v0 ^ H->v1 ^ H->v2 ^ H->v3;
|
||||
} /* sip24_final() */
|
||||
|
||||
|
||||
static uint64_t siphash24(const void *src, size_t len,
|
||||
const struct sipkey *key) {
|
||||
static uint64_t
|
||||
siphash24(const void *src, size_t len, const struct sipkey *key) {
|
||||
struct siphash state = SIPHASH_INITIALIZER;
|
||||
return sip24_final(sip24_update(sip24_init(&state, key), src, len));
|
||||
} /* siphash24() */
|
||||
|
||||
|
||||
/*
|
||||
* SipHash-2-4 output with
|
||||
* k = 00 01 02 ...
|
||||
@ -285,7 +289,9 @@ static uint64_t siphash24(const void *src, size_t len,
|
||||
* ...
|
||||
* in = 00 01 02 ... 3e (63 bytes)
|
||||
*/
|
||||
static int sip24_valid(void) {
|
||||
static int
|
||||
sip24_valid(void) {
|
||||
/* clang-format off */
|
||||
static const unsigned char vectors[64][8] = {
|
||||
{ 0x31, 0x0e, 0x0e, 0xdd, 0x47, 0xdb, 0x6f, 0x72, },
|
||||
{ 0xfd, 0x67, 0xdc, 0x93, 0xc5, 0x39, 0xf8, 0x74, },
|
||||
@ -352,6 +358,8 @@ static int sip24_valid(void) {
|
||||
{ 0x57, 0x5f, 0xf2, 0x8e, 0x60, 0x38, 0x1b, 0xe5, },
|
||||
{ 0x72, 0x45, 0x06, 0xeb, 0x4c, 0x32, 0x8a, 0x95, }
|
||||
};
|
||||
/* clang-format on */
|
||||
|
||||
unsigned char in[64];
|
||||
struct sipkey k;
|
||||
size_t i;
|
||||
@ -369,12 +377,12 @@ static int sip24_valid(void) {
|
||||
return 1;
|
||||
} /* sip24_valid() */
|
||||
|
||||
|
||||
#ifdef SIPHASH_MAIN
|
||||
|
||||
# include <stdio.h>
|
||||
|
||||
int main(void) {
|
||||
int
|
||||
main(void) {
|
||||
const int ok = sip24_valid();
|
||||
|
||||
if (ok)
|
||||
@ -387,5 +395,4 @@ int main(void) {
|
||||
|
||||
#endif /* SIPHASH_MAIN */
|
||||
|
||||
|
||||
#endif /* SIPHASH_H */
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -113,11 +113,8 @@ enum {
|
||||
};
|
||||
|
||||
typedef struct prolog_state {
|
||||
int (PTRCALL *handler) (struct prolog_state *state,
|
||||
int tok,
|
||||
const char *ptr,
|
||||
const char *end,
|
||||
const ENCODING *enc);
|
||||
int(PTRCALL *handler)(struct prolog_state *state, int tok, const char *ptr,
|
||||
const char *end, const ENCODING *enc);
|
||||
unsigned level;
|
||||
int role_none;
|
||||
#ifdef XML_DTD
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -38,13 +38,15 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
/* The following token may be returned by XmlContentTok */
|
||||
#define XML_TOK_TRAILING_RSQB -5 /* ] or ]] at the end of the scan; might be
|
||||
#define XML_TOK_TRAILING_RSQB \
|
||||
-5 /* ] or ]] at the end of the scan; might be \
|
||||
start of illegal ]]> sequence */
|
||||
/* The following tokens may be returned by both XmlPrologTok and
|
||||
XmlContentTok.
|
||||
*/
|
||||
#define XML_TOK_NONE -4 /* The string to be scanned is empty */
|
||||
#define XML_TOK_TRAILING_CR -3 /* A CR at the end of the scan;
|
||||
#define XML_TOK_TRAILING_CR \
|
||||
-3 /* A CR at the end of the scan; \
|
||||
might be part of CRLF sequence */
|
||||
#define XML_TOK_PARTIAL_CHAR -2 /* only part of a multibyte sequence */
|
||||
#define XML_TOK_PARTIAL -1 /* only part of a token */
|
||||
@ -153,46 +155,35 @@ typedef struct {
|
||||
struct encoding;
|
||||
typedef struct encoding ENCODING;
|
||||
|
||||
typedef int (PTRCALL *SCANNER)(const ENCODING *,
|
||||
const char *,
|
||||
const char *,
|
||||
typedef int(PTRCALL *SCANNER)(const ENCODING *, const char *, const char *,
|
||||
const char **);
|
||||
|
||||
enum XML_Convert_Result {
|
||||
XML_CONVERT_COMPLETED = 0,
|
||||
XML_CONVERT_INPUT_INCOMPLETE = 1,
|
||||
XML_CONVERT_OUTPUT_EXHAUSTED = 2 /* and therefore potentially input remaining as well */
|
||||
XML_CONVERT_OUTPUT_EXHAUSTED
|
||||
= 2 /* and therefore potentially input remaining as well */
|
||||
};
|
||||
|
||||
struct encoding {
|
||||
SCANNER scanners[XML_N_STATES];
|
||||
SCANNER literalScanners[XML_N_LITERAL_TYPES];
|
||||
int (PTRCALL *nameMatchesAscii)(const ENCODING *,
|
||||
const char *,
|
||||
const char *,
|
||||
int(PTRCALL *nameMatchesAscii)(const ENCODING *, const char *, const char *,
|
||||
const char *);
|
||||
int(PTRFASTCALL *nameLength)(const ENCODING *, const char *);
|
||||
const char *(PTRFASTCALL *skipS)(const ENCODING *, const char *);
|
||||
int (PTRCALL *getAtts)(const ENCODING *enc,
|
||||
const char *ptr,
|
||||
int attsMax,
|
||||
int(PTRCALL *getAtts)(const ENCODING *enc, const char *ptr, int attsMax,
|
||||
ATTRIBUTE *atts);
|
||||
int(PTRFASTCALL *charRefNumber)(const ENCODING *enc, const char *ptr);
|
||||
int (PTRCALL *predefinedEntityName)(const ENCODING *,
|
||||
const char *,
|
||||
int(PTRCALL *predefinedEntityName)(const ENCODING *, const char *,
|
||||
const char *);
|
||||
void (PTRCALL *updatePosition)(const ENCODING *,
|
||||
const char *ptr,
|
||||
const char *end,
|
||||
POSITION *);
|
||||
int (PTRCALL *isPublicId)(const ENCODING *enc,
|
||||
const char *ptr,
|
||||
const char *end,
|
||||
const char **badPtr);
|
||||
void(PTRCALL *updatePosition)(const ENCODING *, const char *ptr,
|
||||
const char *end, POSITION *);
|
||||
int(PTRCALL *isPublicId)(const ENCODING *enc, const char *ptr,
|
||||
const char *end, const char **badPtr);
|
||||
enum XML_Convert_Result(PTRCALL *utf8Convert)(const ENCODING *enc,
|
||||
const char **fromP,
|
||||
const char *fromLim,
|
||||
char **toP,
|
||||
const char *fromLim, char **toP,
|
||||
const char *toLim);
|
||||
enum XML_Convert_Result(PTRCALL *utf16Convert)(const ENCODING *enc,
|
||||
const char **fromP,
|
||||
@ -225,7 +216,6 @@ struct encoding {
|
||||
the prolog outside literals, comments and processing instructions.
|
||||
*/
|
||||
|
||||
|
||||
#define XmlTok(enc, state, ptr, end, nextTokPtr) \
|
||||
(((enc)->scanners[state])(enc, ptr, end, nextTokPtr))
|
||||
|
||||
@ -260,17 +250,14 @@ struct encoding {
|
||||
#define XmlNameMatchesAscii(enc, ptr1, end1, ptr2) \
|
||||
(((enc)->nameMatchesAscii)(enc, ptr1, end1, ptr2))
|
||||
|
||||
#define XmlNameLength(enc, ptr) \
|
||||
(((enc)->nameLength)(enc, ptr))
|
||||
#define XmlNameLength(enc, ptr) (((enc)->nameLength)(enc, ptr))
|
||||
|
||||
#define XmlSkipS(enc, ptr) \
|
||||
(((enc)->skipS)(enc, ptr))
|
||||
#define XmlSkipS(enc, ptr) (((enc)->skipS)(enc, ptr))
|
||||
|
||||
#define XmlGetAttributes(enc, ptr, attsMax, atts) \
|
||||
(((enc)->getAtts)(enc, ptr, attsMax, atts))
|
||||
|
||||
#define XmlCharRefNumber(enc, ptr) \
|
||||
(((enc)->charRefNumber)(enc, ptr))
|
||||
#define XmlCharRefNumber(enc, ptr) (((enc)->charRefNumber)(enc, ptr))
|
||||
|
||||
#define XmlPredefinedEntityName(enc, ptr, end) \
|
||||
(((enc)->predefinedEntityName)(enc, ptr, end))
|
||||
@ -292,16 +279,11 @@ typedef struct {
|
||||
const ENCODING **encPtr;
|
||||
} INIT_ENCODING;
|
||||
|
||||
int XmlParseXmlDecl(int isGeneralTextEntity,
|
||||
const ENCODING *enc,
|
||||
const char *ptr,
|
||||
const char *end,
|
||||
const char **badPtr,
|
||||
const char **versionPtr,
|
||||
const char **versionEndPtr,
|
||||
int XmlParseXmlDecl(int isGeneralTextEntity, const ENCODING *enc,
|
||||
const char *ptr, const char *end, const char **badPtr,
|
||||
const char **versionPtr, const char **versionEndPtr,
|
||||
const char **encodingNamePtr,
|
||||
const ENCODING **namedEncodingPtr,
|
||||
int *standalonePtr);
|
||||
const ENCODING **namedEncodingPtr, int *standalonePtr);
|
||||
|
||||
int XmlInitEncoding(INIT_ENCODING *, const ENCODING **, const char *name);
|
||||
const ENCODING *XmlGetUtf8InternalEncoding(void);
|
||||
@ -310,33 +292,21 @@ int FASTCALL XmlUtf8Encode(int charNumber, char *buf);
|
||||
int FASTCALL XmlUtf16Encode(int charNumber, unsigned short *buf);
|
||||
int XmlSizeOfUnknownEncoding(void);
|
||||
|
||||
|
||||
typedef int(XMLCALL *CONVERTER)(void *userData, const char *p);
|
||||
|
||||
ENCODING *
|
||||
XmlInitUnknownEncoding(void *mem,
|
||||
int *table,
|
||||
CONVERTER convert,
|
||||
ENCODING *XmlInitUnknownEncoding(void *mem, int *table, CONVERTER convert,
|
||||
void *userData);
|
||||
|
||||
int XmlParseXmlDeclNS(int isGeneralTextEntity,
|
||||
const ENCODING *enc,
|
||||
const char *ptr,
|
||||
const char *end,
|
||||
const char **badPtr,
|
||||
const char **versionPtr,
|
||||
const char **versionEndPtr,
|
||||
int XmlParseXmlDeclNS(int isGeneralTextEntity, const ENCODING *enc,
|
||||
const char *ptr, const char *end, const char **badPtr,
|
||||
const char **versionPtr, const char **versionEndPtr,
|
||||
const char **encodingNamePtr,
|
||||
const ENCODING **namedEncodingPtr,
|
||||
int *standalonePtr);
|
||||
const ENCODING **namedEncodingPtr, int *standalonePtr);
|
||||
|
||||
int XmlInitEncodingNS(INIT_ENCODING *, const ENCODING **, const char *name);
|
||||
const ENCODING *XmlGetUtf8InternalEncodingNS(void);
|
||||
const ENCODING *XmlGetUtf16InternalEncodingNS(void);
|
||||
ENCODING *
|
||||
XmlInitUnknownEncodingNS(void *mem,
|
||||
int *table,
|
||||
CONVERTER convert,
|
||||
ENCODING *XmlInitUnknownEncodingNS(void *mem, int *table, CONVERTER convert,
|
||||
void *userData);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -116,12 +116,9 @@
|
||||
# define PREFIX(ident) ident
|
||||
# endif
|
||||
|
||||
# define HAS_CHARS(enc, ptr, end, count) (end - ptr >= count * MINBPC(enc))
|
||||
|
||||
#define HAS_CHARS(enc, ptr, end, count) \
|
||||
(end - ptr >= count * MINBPC(enc))
|
||||
|
||||
#define HAS_CHAR(enc, ptr, end) \
|
||||
HAS_CHARS(enc, ptr, end, 1)
|
||||
# define HAS_CHAR(enc, ptr, end) HAS_CHARS(enc, ptr, end, 1)
|
||||
|
||||
# define REQUIRE_CHARS(enc, ptr, end, count) \
|
||||
{ \
|
||||
@ -130,16 +127,13 @@
|
||||
} \
|
||||
}
|
||||
|
||||
#define REQUIRE_CHAR(enc, ptr, end) \
|
||||
REQUIRE_CHARS(enc, ptr, end, 1)
|
||||
|
||||
# define REQUIRE_CHAR(enc, ptr, end) REQUIRE_CHARS(enc, ptr, end, 1)
|
||||
|
||||
/* ptr points to character following "<!-" */
|
||||
|
||||
static int PTRCALL
|
||||
PREFIX(scanComment)(const ENCODING *enc, const char *ptr,
|
||||
const char *end, const char **nextTokPtr)
|
||||
{
|
||||
PREFIX(scanComment)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
const char **nextTokPtr) {
|
||||
if (HAS_CHAR(enc, ptr, end)) {
|
||||
if (! CHAR_MATCHES(enc, ptr, ASCII_MINUS)) {
|
||||
*nextTokPtr = ptr;
|
||||
@ -175,9 +169,8 @@ PREFIX(scanComment)(const ENCODING *enc, const char *ptr,
|
||||
/* ptr points to character following "<!" */
|
||||
|
||||
static int PTRCALL
|
||||
PREFIX(scanDecl)(const ENCODING *enc, const char *ptr,
|
||||
const char *end, const char **nextTokPtr)
|
||||
{
|
||||
PREFIX(scanDecl)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
const char **nextTokPtr) {
|
||||
REQUIRE_CHAR(enc, ptr, end);
|
||||
switch (BYTE_TYPE(enc, ptr)) {
|
||||
case BT_MINUS:
|
||||
@ -199,12 +192,17 @@ PREFIX(scanDecl)(const ENCODING *enc, const char *ptr,
|
||||
REQUIRE_CHARS(enc, ptr, end, 2);
|
||||
/* don't allow <!ENTITY% foo "whatever"> */
|
||||
switch (BYTE_TYPE(enc, ptr + MINBPC(enc))) {
|
||||
case BT_S: case BT_CR: case BT_LF: case BT_PERCNT:
|
||||
case BT_S:
|
||||
case BT_CR:
|
||||
case BT_LF:
|
||||
case BT_PERCNT:
|
||||
*nextTokPtr = ptr;
|
||||
return XML_TOK_INVALID;
|
||||
}
|
||||
/* fall through */
|
||||
case BT_S: case BT_CR: case BT_LF:
|
||||
case BT_S:
|
||||
case BT_CR:
|
||||
case BT_LF:
|
||||
*nextTokPtr = ptr;
|
||||
return XML_TOK_DECL_OPEN;
|
||||
case BT_NMSTRT:
|
||||
@ -220,10 +218,10 @@ PREFIX(scanDecl)(const ENCODING *enc, const char *ptr,
|
||||
}
|
||||
|
||||
static int PTRCALL
|
||||
PREFIX(checkPiTarget)(const ENCODING *UNUSED_P(enc), const char *ptr,
|
||||
const char *end, int *tokPtr)
|
||||
{
|
||||
PREFIX(checkPiTarget)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
int *tokPtr) {
|
||||
int upper = 0;
|
||||
UNUSED_P(enc);
|
||||
*tokPtr = XML_TOK_PI;
|
||||
if (end - ptr != MINBPC(enc) * 3)
|
||||
return 1;
|
||||
@ -265,9 +263,8 @@ PREFIX(checkPiTarget)(const ENCODING *UNUSED_P(enc), const char *ptr,
|
||||
/* ptr points to character following "<?" */
|
||||
|
||||
static int PTRCALL
|
||||
PREFIX(scanPi)(const ENCODING *enc, const char *ptr,
|
||||
const char *end, const char **nextTokPtr)
|
||||
{
|
||||
PREFIX(scanPi)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
const char **nextTokPtr) {
|
||||
int tok;
|
||||
const char *target = ptr;
|
||||
REQUIRE_CHAR(enc, ptr, end);
|
||||
@ -280,7 +277,9 @@ PREFIX(scanPi)(const ENCODING *enc, const char *ptr,
|
||||
while (HAS_CHAR(enc, ptr, end)) {
|
||||
switch (BYTE_TYPE(enc, ptr)) {
|
||||
CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
|
||||
case BT_S: case BT_CR: case BT_LF:
|
||||
case BT_S:
|
||||
case BT_CR:
|
||||
case BT_LF:
|
||||
if (! PREFIX(checkPiTarget)(enc, target, ptr, &tok)) {
|
||||
*nextTokPtr = ptr;
|
||||
return XML_TOK_INVALID;
|
||||
@ -324,12 +323,12 @@ PREFIX(scanPi)(const ENCODING *enc, const char *ptr,
|
||||
}
|
||||
|
||||
static int PTRCALL
|
||||
PREFIX(scanCdataSection)(const ENCODING *UNUSED_P(enc), const char *ptr,
|
||||
const char *end, const char **nextTokPtr)
|
||||
{
|
||||
static const char CDATA_LSQB[] = { ASCII_C, ASCII_D, ASCII_A,
|
||||
ASCII_T, ASCII_A, ASCII_LSQB };
|
||||
PREFIX(scanCdataSection)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
const char **nextTokPtr) {
|
||||
static const char CDATA_LSQB[]
|
||||
= {ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, ASCII_LSQB};
|
||||
int i;
|
||||
UNUSED_P(enc);
|
||||
/* CDATA[ */
|
||||
REQUIRE_CHARS(enc, ptr, end, 6);
|
||||
for (i = 0; i < 6; i++, ptr += MINBPC(enc)) {
|
||||
@ -343,9 +342,8 @@ PREFIX(scanCdataSection)(const ENCODING *UNUSED_P(enc), const char *ptr,
|
||||
}
|
||||
|
||||
static int PTRCALL
|
||||
PREFIX(cdataSectionTok)(const ENCODING *enc, const char *ptr,
|
||||
const char *end, const char **nextTokPtr)
|
||||
{
|
||||
PREFIX(cdataSectionTok)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
const char **nextTokPtr) {
|
||||
if (ptr >= end)
|
||||
return XML_TOK_NONE;
|
||||
if (MINBPC(enc) > 1) {
|
||||
@ -396,7 +394,9 @@ PREFIX(cdataSectionTok)(const ENCODING *enc, const char *ptr,
|
||||
} \
|
||||
ptr += n; \
|
||||
break;
|
||||
LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
|
||||
LEAD_CASE(2)
|
||||
LEAD_CASE(3)
|
||||
LEAD_CASE(4)
|
||||
# undef LEAD_CASE
|
||||
case BT_NONXML:
|
||||
case BT_MALFORM:
|
||||
@ -418,9 +418,8 @@ PREFIX(cdataSectionTok)(const ENCODING *enc, const char *ptr,
|
||||
/* ptr points to character following "</" */
|
||||
|
||||
static int PTRCALL
|
||||
PREFIX(scanEndTag)(const ENCODING *enc, const char *ptr,
|
||||
const char *end, const char **nextTokPtr)
|
||||
{
|
||||
PREFIX(scanEndTag)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
const char **nextTokPtr) {
|
||||
REQUIRE_CHAR(enc, ptr, end);
|
||||
switch (BYTE_TYPE(enc, ptr)) {
|
||||
CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
|
||||
@ -431,10 +430,14 @@ PREFIX(scanEndTag)(const ENCODING *enc, const char *ptr,
|
||||
while (HAS_CHAR(enc, ptr, end)) {
|
||||
switch (BYTE_TYPE(enc, ptr)) {
|
||||
CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
|
||||
case BT_S: case BT_CR: case BT_LF:
|
||||
case BT_S:
|
||||
case BT_CR:
|
||||
case BT_LF:
|
||||
for (ptr += MINBPC(enc); HAS_CHAR(enc, ptr, end); ptr += MINBPC(enc)) {
|
||||
switch (BYTE_TYPE(enc, ptr)) {
|
||||
case BT_S: case BT_CR: case BT_LF:
|
||||
case BT_S:
|
||||
case BT_CR:
|
||||
case BT_LF:
|
||||
break;
|
||||
case BT_GT:
|
||||
*nextTokPtr = ptr + MINBPC(enc);
|
||||
@ -466,9 +469,8 @@ PREFIX(scanEndTag)(const ENCODING *enc, const char *ptr,
|
||||
/* ptr points to character following "&#X" */
|
||||
|
||||
static int PTRCALL
|
||||
PREFIX(scanHexCharRef)(const ENCODING *enc, const char *ptr,
|
||||
const char *end, const char **nextTokPtr)
|
||||
{
|
||||
PREFIX(scanHexCharRef)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
const char **nextTokPtr) {
|
||||
if (HAS_CHAR(enc, ptr, end)) {
|
||||
switch (BYTE_TYPE(enc, ptr)) {
|
||||
case BT_DIGIT:
|
||||
@ -498,9 +500,8 @@ PREFIX(scanHexCharRef)(const ENCODING *enc, const char *ptr,
|
||||
/* ptr points to character following "&#" */
|
||||
|
||||
static int PTRCALL
|
||||
PREFIX(scanCharRef)(const ENCODING *enc, const char *ptr,
|
||||
const char *end, const char **nextTokPtr)
|
||||
{
|
||||
PREFIX(scanCharRef)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
const char **nextTokPtr) {
|
||||
if (HAS_CHAR(enc, ptr, end)) {
|
||||
if (CHAR_MATCHES(enc, ptr, ASCII_x))
|
||||
return PREFIX(scanHexCharRef)(enc, ptr + MINBPC(enc), end, nextTokPtr);
|
||||
@ -531,8 +532,7 @@ PREFIX(scanCharRef)(const ENCODING *enc, const char *ptr,
|
||||
|
||||
static int PTRCALL
|
||||
PREFIX(scanRef)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
const char **nextTokPtr)
|
||||
{
|
||||
const char **nextTokPtr) {
|
||||
REQUIRE_CHAR(enc, ptr, end);
|
||||
switch (BYTE_TYPE(enc, ptr)) {
|
||||
CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
|
||||
@ -560,8 +560,7 @@ PREFIX(scanRef)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
|
||||
static int PTRCALL
|
||||
PREFIX(scanAtts)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
const char **nextTokPtr)
|
||||
{
|
||||
const char **nextTokPtr) {
|
||||
# ifdef XML_NS
|
||||
int hadColon = 0;
|
||||
# endif
|
||||
@ -585,7 +584,9 @@ PREFIX(scanAtts)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
}
|
||||
break;
|
||||
# endif
|
||||
case BT_S: case BT_CR: case BT_LF:
|
||||
case BT_S:
|
||||
case BT_CR:
|
||||
case BT_LF:
|
||||
for (;;) {
|
||||
int t;
|
||||
|
||||
@ -605,8 +606,7 @@ PREFIX(scanAtts)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
}
|
||||
}
|
||||
/* fall through */
|
||||
case BT_EQUALS:
|
||||
{
|
||||
case BT_EQUALS: {
|
||||
int open;
|
||||
# ifdef XML_NS
|
||||
hadColon = 0;
|
||||
@ -637,8 +637,7 @@ PREFIX(scanAtts)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
break;
|
||||
switch (t) {
|
||||
INVALID_CASES(ptr, nextTokPtr)
|
||||
case BT_AMP:
|
||||
{
|
||||
case BT_AMP: {
|
||||
int tok = PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, &ptr);
|
||||
if (tok <= 0) {
|
||||
if (tok == XML_TOK_INVALID)
|
||||
@ -676,7 +675,9 @@ PREFIX(scanAtts)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
REQUIRE_CHAR(enc, ptr, end);
|
||||
switch (BYTE_TYPE(enc, ptr)) {
|
||||
CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
|
||||
case BT_S: case BT_CR: case BT_LF:
|
||||
case BT_S:
|
||||
case BT_CR:
|
||||
case BT_LF:
|
||||
continue;
|
||||
case BT_GT:
|
||||
gt:
|
||||
@ -712,8 +713,7 @@ PREFIX(scanAtts)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
|
||||
static int PTRCALL
|
||||
PREFIX(scanLt)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
const char **nextTokPtr)
|
||||
{
|
||||
const char **nextTokPtr) {
|
||||
# ifdef XML_NS
|
||||
int hadColon;
|
||||
# endif
|
||||
@ -727,8 +727,7 @@ PREFIX(scanLt)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
case BT_MINUS:
|
||||
return PREFIX(scanComment)(enc, ptr + MINBPC(enc), end, nextTokPtr);
|
||||
case BT_LSQB:
|
||||
return PREFIX(scanCdataSection)(enc, ptr + MINBPC(enc),
|
||||
end, nextTokPtr);
|
||||
return PREFIX(scanCdataSection)(enc, ptr + MINBPC(enc), end, nextTokPtr);
|
||||
}
|
||||
*nextTokPtr = ptr;
|
||||
return XML_TOK_INVALID;
|
||||
@ -764,8 +763,9 @@ PREFIX(scanLt)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
}
|
||||
break;
|
||||
# endif
|
||||
case BT_S: case BT_CR: case BT_LF:
|
||||
{
|
||||
case BT_S:
|
||||
case BT_CR:
|
||||
case BT_LF: {
|
||||
ptr += MINBPC(enc);
|
||||
while (HAS_CHAR(enc, ptr, end)) {
|
||||
switch (BYTE_TYPE(enc, ptr)) {
|
||||
@ -774,7 +774,9 @@ PREFIX(scanLt)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
goto gt;
|
||||
case BT_SOL:
|
||||
goto sol;
|
||||
case BT_S: case BT_CR: case BT_LF:
|
||||
case BT_S:
|
||||
case BT_CR:
|
||||
case BT_LF:
|
||||
ptr += MINBPC(enc);
|
||||
continue;
|
||||
default:
|
||||
@ -809,8 +811,7 @@ PREFIX(scanLt)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
|
||||
static int PTRCALL
|
||||
PREFIX(contentTok)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
const char **nextTokPtr)
|
||||
{
|
||||
const char **nextTokPtr) {
|
||||
if (ptr >= end)
|
||||
return XML_TOK_NONE;
|
||||
if (MINBPC(enc) > 1) {
|
||||
@ -868,7 +869,9 @@ PREFIX(contentTok)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
} \
|
||||
ptr += n; \
|
||||
break;
|
||||
LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
|
||||
LEAD_CASE(2)
|
||||
LEAD_CASE(3)
|
||||
LEAD_CASE(4)
|
||||
# undef LEAD_CASE
|
||||
case BT_RSQB:
|
||||
if (HAS_CHARS(enc, ptr, end, 2)) {
|
||||
@ -908,12 +911,14 @@ PREFIX(contentTok)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
|
||||
static int PTRCALL
|
||||
PREFIX(scanPercent)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
const char **nextTokPtr)
|
||||
{
|
||||
const char **nextTokPtr) {
|
||||
REQUIRE_CHAR(enc, ptr, end);
|
||||
switch (BYTE_TYPE(enc, ptr)) {
|
||||
CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
|
||||
case BT_S: case BT_LF: case BT_CR: case BT_PERCNT:
|
||||
case BT_S:
|
||||
case BT_LF:
|
||||
case BT_CR:
|
||||
case BT_PERCNT:
|
||||
*nextTokPtr = ptr;
|
||||
return XML_TOK_PERCENT;
|
||||
default:
|
||||
@ -936,8 +941,7 @@ PREFIX(scanPercent)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
|
||||
static int PTRCALL
|
||||
PREFIX(scanPoundName)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
const char **nextTokPtr)
|
||||
{
|
||||
const char **nextTokPtr) {
|
||||
REQUIRE_CHAR(enc, ptr, end);
|
||||
switch (BYTE_TYPE(enc, ptr)) {
|
||||
CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
|
||||
@ -948,8 +952,13 @@ PREFIX(scanPoundName)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
while (HAS_CHAR(enc, ptr, end)) {
|
||||
switch (BYTE_TYPE(enc, ptr)) {
|
||||
CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
|
||||
case BT_CR: case BT_LF: case BT_S:
|
||||
case BT_RPAR: case BT_GT: case BT_PERCNT: case BT_VERBAR:
|
||||
case BT_CR:
|
||||
case BT_LF:
|
||||
case BT_S:
|
||||
case BT_RPAR:
|
||||
case BT_GT:
|
||||
case BT_PERCNT:
|
||||
case BT_VERBAR:
|
||||
*nextTokPtr = ptr;
|
||||
return XML_TOK_POUND_NAME;
|
||||
default:
|
||||
@ -961,10 +970,8 @@ PREFIX(scanPoundName)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
}
|
||||
|
||||
static int PTRCALL
|
||||
PREFIX(scanLit)(int open, const ENCODING *enc,
|
||||
const char *ptr, const char *end,
|
||||
const char **nextTokPtr)
|
||||
{
|
||||
PREFIX(scanLit)(int open, const ENCODING *enc, const char *ptr, const char *end,
|
||||
const char **nextTokPtr) {
|
||||
while (HAS_CHAR(enc, ptr, end)) {
|
||||
int t = BYTE_TYPE(enc, ptr);
|
||||
switch (t) {
|
||||
@ -978,8 +985,12 @@ PREFIX(scanLit)(int open, const ENCODING *enc,
|
||||
return -XML_TOK_LITERAL;
|
||||
*nextTokPtr = ptr;
|
||||
switch (BYTE_TYPE(enc, ptr)) {
|
||||
case BT_S: case BT_CR: case BT_LF:
|
||||
case BT_GT: case BT_PERCNT: case BT_LSQB:
|
||||
case BT_S:
|
||||
case BT_CR:
|
||||
case BT_LF:
|
||||
case BT_GT:
|
||||
case BT_PERCNT:
|
||||
case BT_LSQB:
|
||||
return XML_TOK_LITERAL;
|
||||
default:
|
||||
return XML_TOK_INVALID;
|
||||
@ -994,8 +1005,7 @@ PREFIX(scanLit)(int open, const ENCODING *enc,
|
||||
|
||||
static int PTRCALL
|
||||
PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
const char **nextTokPtr)
|
||||
{
|
||||
const char **nextTokPtr) {
|
||||
int tok;
|
||||
if (ptr >= end)
|
||||
return XML_TOK_NONE;
|
||||
@ -1013,8 +1023,7 @@ PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
return PREFIX(scanLit)(BT_QUOT, enc, ptr + MINBPC(enc), end, nextTokPtr);
|
||||
case BT_APOS:
|
||||
return PREFIX(scanLit)(BT_APOS, enc, ptr + MINBPC(enc), end, nextTokPtr);
|
||||
case BT_LT:
|
||||
{
|
||||
case BT_LT: {
|
||||
ptr += MINBPC(enc);
|
||||
REQUIRE_CHAR(enc, ptr, end);
|
||||
switch (BYTE_TYPE(enc, ptr)) {
|
||||
@ -1041,13 +1050,15 @@ PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
return -XML_TOK_PROLOG_S;
|
||||
}
|
||||
/* fall through */
|
||||
case BT_S: case BT_LF:
|
||||
case BT_S:
|
||||
case BT_LF:
|
||||
for (;;) {
|
||||
ptr += MINBPC(enc);
|
||||
if (! HAS_CHAR(enc, ptr, end))
|
||||
break;
|
||||
switch (BYTE_TYPE(enc, ptr)) {
|
||||
case BT_S: case BT_LF:
|
||||
case BT_S:
|
||||
case BT_LF:
|
||||
break;
|
||||
case BT_CR:
|
||||
/* don't split CR/LF pair */
|
||||
@ -1099,8 +1110,12 @@ PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
case BT_PLUS:
|
||||
*nextTokPtr = ptr + MINBPC(enc);
|
||||
return XML_TOK_CLOSE_PAREN_PLUS;
|
||||
case BT_CR: case BT_LF: case BT_S:
|
||||
case BT_GT: case BT_COMMA: case BT_VERBAR:
|
||||
case BT_CR:
|
||||
case BT_LF:
|
||||
case BT_S:
|
||||
case BT_GT:
|
||||
case BT_COMMA:
|
||||
case BT_VERBAR:
|
||||
case BT_RPAR:
|
||||
*nextTokPtr = ptr;
|
||||
return XML_TOK_CLOSE_PAREN;
|
||||
@ -1131,7 +1146,9 @@ PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
} \
|
||||
*nextTokPtr = ptr; \
|
||||
return XML_TOK_INVALID;
|
||||
LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
|
||||
LEAD_CASE(2)
|
||||
LEAD_CASE(3)
|
||||
LEAD_CASE(4)
|
||||
# undef LEAD_CASE
|
||||
case BT_NMSTRT:
|
||||
case BT_HEX:
|
||||
@ -1166,9 +1183,15 @@ PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
while (HAS_CHAR(enc, ptr, end)) {
|
||||
switch (BYTE_TYPE(enc, ptr)) {
|
||||
CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
|
||||
case BT_GT: case BT_RPAR: case BT_COMMA:
|
||||
case BT_VERBAR: case BT_LSQB: case BT_PERCNT:
|
||||
case BT_S: case BT_CR: case BT_LF:
|
||||
case BT_GT:
|
||||
case BT_RPAR:
|
||||
case BT_COMMA:
|
||||
case BT_VERBAR:
|
||||
case BT_LSQB:
|
||||
case BT_PERCNT:
|
||||
case BT_S:
|
||||
case BT_CR:
|
||||
case BT_LF:
|
||||
*nextTokPtr = ptr;
|
||||
return tok;
|
||||
# ifdef XML_NS
|
||||
@ -1221,9 +1244,8 @@ PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
}
|
||||
|
||||
static int PTRCALL
|
||||
PREFIX(attributeValueTok)(const ENCODING *enc, const char *ptr,
|
||||
const char *end, const char **nextTokPtr)
|
||||
{
|
||||
PREFIX(attributeValueTok)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
const char **nextTokPtr) {
|
||||
const char *start;
|
||||
if (ptr >= end)
|
||||
return XML_TOK_NONE;
|
||||
@ -1239,8 +1261,12 @@ PREFIX(attributeValueTok)(const ENCODING *enc, const char *ptr,
|
||||
while (HAS_CHAR(enc, ptr, end)) {
|
||||
switch (BYTE_TYPE(enc, ptr)) {
|
||||
# define LEAD_CASE(n) \
|
||||
case BT_LEAD ## n: ptr += n; break;
|
||||
LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
|
||||
case BT_LEAD##n: \
|
||||
ptr += n; \
|
||||
break;
|
||||
LEAD_CASE(2)
|
||||
LEAD_CASE(3)
|
||||
LEAD_CASE(4)
|
||||
# undef LEAD_CASE
|
||||
case BT_AMP:
|
||||
if (ptr == start)
|
||||
@ -1287,9 +1313,8 @@ PREFIX(attributeValueTok)(const ENCODING *enc, const char *ptr,
|
||||
}
|
||||
|
||||
static int PTRCALL
|
||||
PREFIX(entityValueTok)(const ENCODING *enc, const char *ptr,
|
||||
const char *end, const char **nextTokPtr)
|
||||
{
|
||||
PREFIX(entityValueTok)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
const char **nextTokPtr) {
|
||||
const char *start;
|
||||
if (ptr >= end)
|
||||
return XML_TOK_NONE;
|
||||
@ -1305,8 +1330,12 @@ PREFIX(entityValueTok)(const ENCODING *enc, const char *ptr,
|
||||
while (HAS_CHAR(enc, ptr, end)) {
|
||||
switch (BYTE_TYPE(enc, ptr)) {
|
||||
# define LEAD_CASE(n) \
|
||||
case BT_LEAD ## n: ptr += n; break;
|
||||
LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
|
||||
case BT_LEAD##n: \
|
||||
ptr += n; \
|
||||
break;
|
||||
LEAD_CASE(2)
|
||||
LEAD_CASE(3)
|
||||
LEAD_CASE(4)
|
||||
# undef LEAD_CASE
|
||||
case BT_AMP:
|
||||
if (ptr == start)
|
||||
@ -1315,8 +1344,7 @@ PREFIX(entityValueTok)(const ENCODING *enc, const char *ptr,
|
||||
return XML_TOK_DATA_CHARS;
|
||||
case BT_PERCNT:
|
||||
if (ptr == start) {
|
||||
int tok = PREFIX(scanPercent)(enc, ptr + MINBPC(enc),
|
||||
end, nextTokPtr);
|
||||
int tok = PREFIX(scanPercent)(enc, ptr + MINBPC(enc), end, nextTokPtr);
|
||||
return (tok == XML_TOK_PERCENT) ? XML_TOK_INVALID : tok;
|
||||
}
|
||||
*nextTokPtr = ptr;
|
||||
@ -1352,9 +1380,8 @@ PREFIX(entityValueTok)(const ENCODING *enc, const char *ptr,
|
||||
# ifdef XML_DTD
|
||||
|
||||
static int PTRCALL
|
||||
PREFIX(ignoreSectionTok)(const ENCODING *enc, const char *ptr,
|
||||
const char *end, const char **nextTokPtr)
|
||||
{
|
||||
PREFIX(ignoreSectionTok)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
const char **nextTokPtr) {
|
||||
int level = 0;
|
||||
if (MINBPC(enc) > 1) {
|
||||
size_t n = end - ptr;
|
||||
@ -1406,8 +1433,7 @@ PREFIX(ignoreSectionTok)(const ENCODING *enc, const char *ptr,
|
||||
|
||||
static int PTRCALL
|
||||
PREFIX(isPublicId)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
const char **badPtr)
|
||||
{
|
||||
const char **badPtr) {
|
||||
ptr += MINBPC(enc);
|
||||
end -= MINBPC(enc);
|
||||
for (; HAS_CHAR(enc, ptr, end); ptr += MINBPC(enc)) {
|
||||
@ -1466,9 +1492,8 @@ PREFIX(isPublicId)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
*/
|
||||
|
||||
static int PTRCALL
|
||||
PREFIX(getAtts)(const ENCODING *enc, const char *ptr,
|
||||
int attsMax, ATTRIBUTE *atts)
|
||||
{
|
||||
PREFIX(getAtts)(const ENCODING *enc, const char *ptr, int attsMax,
|
||||
ATTRIBUTE *atts) {
|
||||
enum { other, inName, inValue } state = inName;
|
||||
int nAtts = 0;
|
||||
int open = 0; /* defined when state == inValue;
|
||||
@ -1485,8 +1510,12 @@ PREFIX(getAtts)(const ENCODING *enc, const char *ptr,
|
||||
state = inName; \
|
||||
}
|
||||
# define LEAD_CASE(n) \
|
||||
case BT_LEAD ## n: START_NAME ptr += (n - MINBPC(enc)); break;
|
||||
LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
|
||||
case BT_LEAD##n: \
|
||||
START_NAME ptr += (n - MINBPC(enc)); \
|
||||
break;
|
||||
LEAD_CASE(2)
|
||||
LEAD_CASE(3)
|
||||
LEAD_CASE(4)
|
||||
# undef LEAD_CASE
|
||||
case BT_NONASCII:
|
||||
case BT_NMSTRT:
|
||||
@ -1500,8 +1529,7 @@ PREFIX(getAtts)(const ENCODING *enc, const char *ptr,
|
||||
atts[nAtts].valuePtr = ptr + MINBPC(enc);
|
||||
state = inValue;
|
||||
open = BT_QUOT;
|
||||
}
|
||||
else if (open == BT_QUOT) {
|
||||
} else if (open == BT_QUOT) {
|
||||
state = other;
|
||||
if (nAtts < attsMax)
|
||||
atts[nAtts].valueEnd = ptr;
|
||||
@ -1514,8 +1542,7 @@ PREFIX(getAtts)(const ENCODING *enc, const char *ptr,
|
||||
atts[nAtts].valuePtr = ptr + MINBPC(enc);
|
||||
state = inValue;
|
||||
open = BT_APOS;
|
||||
}
|
||||
else if (open == BT_APOS) {
|
||||
} else if (open == BT_APOS) {
|
||||
state = other;
|
||||
if (nAtts < attsMax)
|
||||
atts[nAtts].valueEnd = ptr;
|
||||
@ -1529,16 +1556,15 @@ PREFIX(getAtts)(const ENCODING *enc, const char *ptr,
|
||||
case BT_S:
|
||||
if (state == inName)
|
||||
state = other;
|
||||
else if (state == inValue
|
||||
&& nAtts < attsMax
|
||||
&& atts[nAtts].normalized
|
||||
else if (state == inValue && nAtts < attsMax && atts[nAtts].normalized
|
||||
&& (ptr == atts[nAtts].valuePtr
|
||||
|| BYTE_TO_ASCII(enc, ptr) != ASCII_SPACE
|
||||
|| BYTE_TO_ASCII(enc, ptr + MINBPC(enc)) == ASCII_SPACE
|
||||
|| BYTE_TYPE(enc, ptr + MINBPC(enc)) == open))
|
||||
atts[nAtts].normalized = 0;
|
||||
break;
|
||||
case BT_CR: case BT_LF:
|
||||
case BT_CR:
|
||||
case BT_LF:
|
||||
/* This case ensures that the first attribute name is counted
|
||||
Apart from that we could just change state on the quote. */
|
||||
if (state == inName)
|
||||
@ -1559,29 +1585,44 @@ PREFIX(getAtts)(const ENCODING *enc, const char *ptr,
|
||||
}
|
||||
|
||||
static int PTRFASTCALL
|
||||
PREFIX(charRefNumber)(const ENCODING *UNUSED_P(enc), const char *ptr)
|
||||
{
|
||||
PREFIX(charRefNumber)(const ENCODING *enc, const char *ptr) {
|
||||
int result = 0;
|
||||
/* skip &# */
|
||||
UNUSED_P(enc);
|
||||
ptr += 2 * MINBPC(enc);
|
||||
if (CHAR_MATCHES(enc, ptr, ASCII_x)) {
|
||||
for (ptr += MINBPC(enc);
|
||||
!CHAR_MATCHES(enc, ptr, ASCII_SEMI);
|
||||
for (ptr += MINBPC(enc); ! CHAR_MATCHES(enc, ptr, ASCII_SEMI);
|
||||
ptr += MINBPC(enc)) {
|
||||
int c = BYTE_TO_ASCII(enc, ptr);
|
||||
switch (c) {
|
||||
case ASCII_0: case ASCII_1: case ASCII_2: case ASCII_3: case ASCII_4:
|
||||
case ASCII_5: case ASCII_6: case ASCII_7: case ASCII_8: case ASCII_9:
|
||||
case ASCII_0:
|
||||
case ASCII_1:
|
||||
case ASCII_2:
|
||||
case ASCII_3:
|
||||
case ASCII_4:
|
||||
case ASCII_5:
|
||||
case ASCII_6:
|
||||
case ASCII_7:
|
||||
case ASCII_8:
|
||||
case ASCII_9:
|
||||
result <<= 4;
|
||||
result |= (c - ASCII_0);
|
||||
break;
|
||||
case ASCII_A: case ASCII_B: case ASCII_C:
|
||||
case ASCII_D: case ASCII_E: case ASCII_F:
|
||||
case ASCII_A:
|
||||
case ASCII_B:
|
||||
case ASCII_C:
|
||||
case ASCII_D:
|
||||
case ASCII_E:
|
||||
case ASCII_F:
|
||||
result <<= 4;
|
||||
result += 10 + (c - ASCII_A);
|
||||
break;
|
||||
case ASCII_a: case ASCII_b: case ASCII_c:
|
||||
case ASCII_d: case ASCII_e: case ASCII_f:
|
||||
case ASCII_a:
|
||||
case ASCII_b:
|
||||
case ASCII_c:
|
||||
case ASCII_d:
|
||||
case ASCII_e:
|
||||
case ASCII_f:
|
||||
result <<= 4;
|
||||
result += 10 + (c - ASCII_a);
|
||||
break;
|
||||
@ -1589,8 +1630,7 @@ PREFIX(charRefNumber)(const ENCODING *UNUSED_P(enc), const char *ptr)
|
||||
if (result >= 0x110000)
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
for (; ! CHAR_MATCHES(enc, ptr, ASCII_SEMI); ptr += MINBPC(enc)) {
|
||||
int c = BYTE_TO_ASCII(enc, ptr);
|
||||
result *= 10;
|
||||
@ -1603,9 +1643,9 @@ PREFIX(charRefNumber)(const ENCODING *UNUSED_P(enc), const char *ptr)
|
||||
}
|
||||
|
||||
static int PTRCALL
|
||||
PREFIX(predefinedEntityName)(const ENCODING *UNUSED_P(enc), const char *ptr,
|
||||
const char *end)
|
||||
{
|
||||
PREFIX(predefinedEntityName)(const ENCODING *enc, const char *ptr,
|
||||
const char *end) {
|
||||
UNUSED_P(enc);
|
||||
switch ((end - ptr) / MINBPC(enc)) {
|
||||
case 2:
|
||||
if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_t)) {
|
||||
@ -1657,9 +1697,9 @@ PREFIX(predefinedEntityName)(const ENCODING *UNUSED_P(enc), const char *ptr,
|
||||
}
|
||||
|
||||
static int PTRCALL
|
||||
PREFIX(nameMatchesAscii)(const ENCODING *UNUSED_P(enc), const char *ptr1,
|
||||
const char *end1, const char *ptr2)
|
||||
{
|
||||
PREFIX(nameMatchesAscii)(const ENCODING *enc, const char *ptr1,
|
||||
const char *end1, const char *ptr2) {
|
||||
UNUSED_P(enc);
|
||||
for (; *ptr2; ptr1 += MINBPC(enc), ptr2++) {
|
||||
if (end1 - ptr1 < MINBPC(enc)) {
|
||||
/* This line cannot be executed. The incoming data has already
|
||||
@ -1676,14 +1716,17 @@ PREFIX(nameMatchesAscii)(const ENCODING *UNUSED_P(enc), const char *ptr1,
|
||||
}
|
||||
|
||||
static int PTRFASTCALL
|
||||
PREFIX(nameLength)(const ENCODING *enc, const char *ptr)
|
||||
{
|
||||
PREFIX(nameLength)(const ENCODING *enc, const char *ptr) {
|
||||
const char *start = ptr;
|
||||
for (;;) {
|
||||
switch (BYTE_TYPE(enc, ptr)) {
|
||||
# define LEAD_CASE(n) \
|
||||
case BT_LEAD ## n: ptr += n; break;
|
||||
LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
|
||||
case BT_LEAD##n: \
|
||||
ptr += n; \
|
||||
break;
|
||||
LEAD_CASE(2)
|
||||
LEAD_CASE(3)
|
||||
LEAD_CASE(4)
|
||||
# undef LEAD_CASE
|
||||
case BT_NONASCII:
|
||||
case BT_NMSTRT:
|
||||
@ -1703,8 +1746,7 @@ PREFIX(nameLength)(const ENCODING *enc, const char *ptr)
|
||||
}
|
||||
|
||||
static const char *PTRFASTCALL
|
||||
PREFIX(skipS)(const ENCODING *enc, const char *ptr)
|
||||
{
|
||||
PREFIX(skipS)(const ENCODING *enc, const char *ptr) {
|
||||
for (;;) {
|
||||
switch (BYTE_TYPE(enc, ptr)) {
|
||||
case BT_LF:
|
||||
@ -1719,18 +1761,17 @@ PREFIX(skipS)(const ENCODING *enc, const char *ptr)
|
||||
}
|
||||
|
||||
static void PTRCALL
|
||||
PREFIX(updatePosition)(const ENCODING *enc,
|
||||
const char *ptr,
|
||||
const char *end,
|
||||
POSITION *pos)
|
||||
{
|
||||
PREFIX(updatePosition)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
POSITION *pos) {
|
||||
while (HAS_CHAR(enc, ptr, end)) {
|
||||
switch (BYTE_TYPE(enc, ptr)) {
|
||||
# define LEAD_CASE(n) \
|
||||
case BT_LEAD##n: \
|
||||
ptr += n; \
|
||||
break;
|
||||
LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
|
||||
LEAD_CASE(2)
|
||||
LEAD_CASE(3)
|
||||
LEAD_CASE(4)
|
||||
# undef LEAD_CASE
|
||||
case BT_LF:
|
||||
pos->columnNumber = (XML_Size)-1;
|
||||
|
@ -31,43 +31,43 @@
|
||||
*/
|
||||
|
||||
enum {
|
||||
BT_NONXML,
|
||||
BT_MALFORM,
|
||||
BT_LT,
|
||||
BT_AMP,
|
||||
BT_RSQB,
|
||||
BT_LEAD2,
|
||||
BT_LEAD3,
|
||||
BT_LEAD4,
|
||||
BT_TRAIL,
|
||||
BT_CR,
|
||||
BT_LF,
|
||||
BT_GT,
|
||||
BT_QUOT,
|
||||
BT_APOS,
|
||||
BT_EQUALS,
|
||||
BT_QUEST,
|
||||
BT_EXCL,
|
||||
BT_SOL,
|
||||
BT_SEMI,
|
||||
BT_NUM,
|
||||
BT_LSQB,
|
||||
BT_S,
|
||||
BT_NMSTRT,
|
||||
BT_COLON,
|
||||
BT_HEX,
|
||||
BT_DIGIT,
|
||||
BT_NAME,
|
||||
BT_MINUS,
|
||||
BT_NONXML, /* e.g. noncharacter-FFFF */
|
||||
BT_MALFORM, /* illegal, with regard to encoding */
|
||||
BT_LT, /* less than = "<" */
|
||||
BT_AMP, /* ampersand = "&" */
|
||||
BT_RSQB, /* right square bracket = "[" */
|
||||
BT_LEAD2, /* lead byte of a 2-byte UTF-8 character */
|
||||
BT_LEAD3, /* lead byte of a 3-byte UTF-8 character */
|
||||
BT_LEAD4, /* lead byte of a 4-byte UTF-8 character */
|
||||
BT_TRAIL, /* trailing unit, e.g. second 16-bit unit of a 4-byte char. */
|
||||
BT_CR, /* carriage return = "\r" */
|
||||
BT_LF, /* line feed = "\n" */
|
||||
BT_GT, /* greater than = ">" */
|
||||
BT_QUOT, /* quotation character = "\"" */
|
||||
BT_APOS, /* aposthrophe = "'" */
|
||||
BT_EQUALS, /* equal sign = "=" */
|
||||
BT_QUEST, /* question mark = "?" */
|
||||
BT_EXCL, /* exclamation mark = "!" */
|
||||
BT_SOL, /* solidus, slash = "/" */
|
||||
BT_SEMI, /* semicolon = ";" */
|
||||
BT_NUM, /* number sign = "#" */
|
||||
BT_LSQB, /* left square bracket = "[" */
|
||||
BT_S, /* white space, e.g. "\t", " "[, "\r"] */
|
||||
BT_NMSTRT, /* non-hex name start letter = "G".."Z" + "g".."z" + "_" */
|
||||
BT_COLON, /* colon = ":" */
|
||||
BT_HEX, /* hex letter = "A".."F" + "a".."f" */
|
||||
BT_DIGIT, /* digit = "0".."9" */
|
||||
BT_NAME, /* dot and middle dot = "." + chr(0xb7) */
|
||||
BT_MINUS, /* minus = "-" */
|
||||
BT_OTHER, /* known not to be a name or name start character */
|
||||
BT_NONASCII, /* might be a name or name start character */
|
||||
BT_PERCNT,
|
||||
BT_LPAR,
|
||||
BT_RPAR,
|
||||
BT_AST,
|
||||
BT_PLUS,
|
||||
BT_COMMA,
|
||||
BT_VERBAR
|
||||
BT_PERCNT, /* percent sign = "%" */
|
||||
BT_LPAR, /* left parenthesis = "(" */
|
||||
BT_RPAR, /* right parenthesis = "(" */
|
||||
BT_AST, /* asterisk = "*" */
|
||||
BT_PLUS, /* plus sign = "+" */
|
||||
BT_COMMA, /* comma = "," */
|
||||
BT_VERBAR /* vertical bar = "|" */
|
||||
};
|
||||
|
||||
#include <stddef.h>
|
||||
|
@ -33,56 +33,47 @@
|
||||
#ifdef XML_TOK_NS_C
|
||||
|
||||
const ENCODING *
|
||||
NS(XmlGetUtf8InternalEncoding)(void)
|
||||
{
|
||||
NS(XmlGetUtf8InternalEncoding)(void) {
|
||||
return &ns(internal_utf8_encoding).enc;
|
||||
}
|
||||
|
||||
const ENCODING *
|
||||
NS(XmlGetUtf16InternalEncoding)(void)
|
||||
{
|
||||
NS(XmlGetUtf16InternalEncoding)(void) {
|
||||
# if BYTEORDER == 1234
|
||||
return &ns(internal_little2_encoding).enc;
|
||||
# elif BYTEORDER == 4321
|
||||
return &ns(internal_big2_encoding).enc;
|
||||
# else
|
||||
const short n = 1;
|
||||
return (*(const char *)&n
|
||||
? &ns(internal_little2_encoding).enc
|
||||
return (*(const char *)&n ? &ns(internal_little2_encoding).enc
|
||||
: &ns(internal_big2_encoding).enc);
|
||||
# endif
|
||||
}
|
||||
|
||||
static const ENCODING *const NS(encodings)[] = {
|
||||
&ns(latin1_encoding).enc,
|
||||
&ns(ascii_encoding).enc,
|
||||
&ns(utf8_encoding).enc,
|
||||
&ns(big2_encoding).enc,
|
||||
&ns(big2_encoding).enc,
|
||||
&ns(little2_encoding).enc,
|
||||
&ns(latin1_encoding).enc, &ns(ascii_encoding).enc,
|
||||
&ns(utf8_encoding).enc, &ns(big2_encoding).enc,
|
||||
&ns(big2_encoding).enc, &ns(little2_encoding).enc,
|
||||
&ns(utf8_encoding).enc /* NO_ENC */
|
||||
};
|
||||
|
||||
static int PTRCALL
|
||||
NS(initScanProlog)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
const char **nextTokPtr)
|
||||
{
|
||||
return initScan(NS(encodings), (const INIT_ENCODING *)enc,
|
||||
XML_PROLOG_STATE, ptr, end, nextTokPtr);
|
||||
const char **nextTokPtr) {
|
||||
return initScan(NS(encodings), (const INIT_ENCODING *)enc, XML_PROLOG_STATE,
|
||||
ptr, end, nextTokPtr);
|
||||
}
|
||||
|
||||
static int PTRCALL
|
||||
NS(initScanContent)(const ENCODING *enc, const char *ptr, const char *end,
|
||||
const char **nextTokPtr)
|
||||
{
|
||||
return initScan(NS(encodings), (const INIT_ENCODING *)enc,
|
||||
XML_CONTENT_STATE, ptr, end, nextTokPtr);
|
||||
const char **nextTokPtr) {
|
||||
return initScan(NS(encodings), (const INIT_ENCODING *)enc, XML_CONTENT_STATE,
|
||||
ptr, end, nextTokPtr);
|
||||
}
|
||||
|
||||
int
|
||||
NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr,
|
||||
const char *name)
|
||||
{
|
||||
const char *name) {
|
||||
int i = getEncodingIndex(name);
|
||||
if (i == UNKNOWN_ENC)
|
||||
return 0;
|
||||
@ -96,8 +87,7 @@ NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr,
|
||||
}
|
||||
|
||||
static const ENCODING *
|
||||
NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end)
|
||||
{
|
||||
NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end) {
|
||||
# define ENCODING_MAX 128
|
||||
char buf[ENCODING_MAX];
|
||||
char *p = buf;
|
||||
@ -115,28 +105,14 @@ NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end)
|
||||
}
|
||||
|
||||
int
|
||||
NS(XmlParseXmlDecl)(int isGeneralTextEntity,
|
||||
const ENCODING *enc,
|
||||
const char *ptr,
|
||||
const char *end,
|
||||
const char **badPtr,
|
||||
const char **versionPtr,
|
||||
const char **versionEndPtr,
|
||||
const char **encodingName,
|
||||
const ENCODING **encoding,
|
||||
int *standalone)
|
||||
{
|
||||
return doParseXmlDecl(NS(findEncoding),
|
||||
isGeneralTextEntity,
|
||||
enc,
|
||||
ptr,
|
||||
end,
|
||||
badPtr,
|
||||
versionPtr,
|
||||
versionEndPtr,
|
||||
encodingName,
|
||||
encoding,
|
||||
standalone);
|
||||
NS(XmlParseXmlDecl)(int isGeneralTextEntity, const ENCODING *enc,
|
||||
const char *ptr, const char *end, const char **badPtr,
|
||||
const char **versionPtr, const char **versionEndPtr,
|
||||
const char **encodingName, const ENCODING **encoding,
|
||||
int *standalone) {
|
||||
return doParseXmlDecl(NS(findEncoding), isGeneralTextEntity, enc, ptr, end,
|
||||
badPtr, versionPtr, versionEndPtr, encodingName,
|
||||
encoding, standalone);
|
||||
}
|
||||
|
||||
#endif /* XML_TOK_NS_C */
|
||||
|
@ -1,4 +1,4 @@
|
||||
#! /bin/bash
|
||||
#! /usr/bin/env bash
|
||||
# __ __ _
|
||||
# ___\ \/ /_ __ __ _| |_
|
||||
# / _ \\ /| '_ \ / _` | __|
|
||||
|
@ -1,7 +1,7 @@
|
||||
# Makefile.in generated by automake 1.15.1 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2017 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -125,7 +125,14 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/conftools/ac_c_bigendian_cross.m4 \
|
||||
$(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/conftools/ax-require-defined.m4 \
|
||||
$(top_srcdir)/conftools/ax-check-compile-flag.m4 \
|
||||
$(top_srcdir)/conftools/ax-check-link-flag.m4 \
|
||||
$(top_srcdir)/conftools/ax-append-flag.m4 \
|
||||
$(top_srcdir)/conftools/ax-append-compile-flags.m4 \
|
||||
$(top_srcdir)/conftools/ax-append-link-flags.m4 \
|
||||
$(top_srcdir)/conftools/expatcfg-compiler-supports-visibility.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
@ -169,7 +176,10 @@ am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/conftools/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
am__maybe_remake_depfiles = depfiles
|
||||
am__depfiles_remade = ./$(DEPDIR)/chardata.Po ./$(DEPDIR)/memcheck.Po \
|
||||
./$(DEPDIR)/minicheck.Po ./$(DEPDIR)/runtests.Po \
|
||||
./$(DEPDIR)/runtestspp.Po ./$(DEPDIR)/structdata.Po
|
||||
am__mv = mv -f
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
@ -231,7 +241,7 @@ am__recursive_targets = \
|
||||
$(RECURSIVE_CLEAN_TARGETS) \
|
||||
$(am__extra_recursive_targets)
|
||||
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
|
||||
check recheck distdir
|
||||
check recheck distdir distdir-am
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
@ -660,8 +670,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
@ -673,14 +683,6 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
clean-noinstLIBRARIES:
|
||||
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
|
||||
|
||||
libruntests.a: $(libruntests_a_OBJECTS) $(libruntests_a_DEPENDENCIES) $(EXTRA_libruntests_a_DEPENDENCIES)
|
||||
$(AM_V_at)-rm -f libruntests.a
|
||||
$(AM_V_AR)$(libruntests_a_AR) libruntests.a $(libruntests_a_OBJECTS) $(libruntests_a_LIBADD)
|
||||
$(AM_V_at)$(RANLIB) libruntests.a
|
||||
|
||||
clean-checkPROGRAMS:
|
||||
@list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
|
||||
echo " rm -f" $$list; \
|
||||
@ -690,6 +692,14 @@ clean-checkPROGRAMS:
|
||||
echo " rm -f" $$list; \
|
||||
rm -f $$list
|
||||
|
||||
clean-noinstLIBRARIES:
|
||||
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
|
||||
|
||||
libruntests.a: $(libruntests_a_OBJECTS) $(libruntests_a_DEPENDENCIES) $(EXTRA_libruntests_a_DEPENDENCIES)
|
||||
$(AM_V_at)-rm -f libruntests.a
|
||||
$(AM_V_AR)$(libruntests_a_AR) libruntests.a $(libruntests_a_OBJECTS) $(libruntests_a_LIBADD)
|
||||
$(AM_V_at)$(RANLIB) libruntests.a
|
||||
|
||||
runtests$(EXEEXT): $(runtests_OBJECTS) $(runtests_DEPENDENCIES) $(EXTRA_runtests_DEPENDENCIES)
|
||||
@rm -f runtests$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(runtests_OBJECTS) $(runtests_LDADD) $(LIBS)
|
||||
@ -704,12 +714,18 @@ mostlyclean-compile:
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chardata.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memcheck.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minicheck.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/runtests.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/runtestspp.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/structdata.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chardata.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memcheck.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minicheck.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/runtests.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/runtestspp.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/structdata.Po@am__quote@ # am--include-marker
|
||||
|
||||
$(am__depfiles_remade):
|
||||
@$(MKDIR_P) $(@D)
|
||||
@echo '# dummy' >$@-t && $(am__mv) $@-t $@
|
||||
|
||||
am--depfiles: $(am__depfiles_remade)
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@ -978,7 +994,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
|
||||
fi; \
|
||||
$$success || exit 1
|
||||
|
||||
check-TESTS:
|
||||
check-TESTS: $(check_PROGRAMS)
|
||||
@list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
|
||||
@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
|
||||
@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
|
||||
@ -1028,7 +1044,10 @@ runtestspp.log: runtestspp$(EXEEXT)
|
||||
@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
|
||||
@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
@ -1129,7 +1148,12 @@ clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
|
||||
clean-noinstLIBRARIES mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f ./$(DEPDIR)/chardata.Po
|
||||
-rm -f ./$(DEPDIR)/memcheck.Po
|
||||
-rm -f ./$(DEPDIR)/minicheck.Po
|
||||
-rm -f ./$(DEPDIR)/runtests.Po
|
||||
-rm -f ./$(DEPDIR)/runtestspp.Po
|
||||
-rm -f ./$(DEPDIR)/structdata.Po
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
@ -1175,7 +1199,12 @@ install-ps-am:
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f ./$(DEPDIR)/chardata.Po
|
||||
-rm -f ./$(DEPDIR)/memcheck.Po
|
||||
-rm -f ./$(DEPDIR)/minicheck.Po
|
||||
-rm -f ./$(DEPDIR)/runtests.Po
|
||||
-rm -f ./$(DEPDIR)/runtestspp.Po
|
||||
-rm -f ./$(DEPDIR)/structdata.Po
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
@ -1196,20 +1225,21 @@ uninstall-am:
|
||||
|
||||
.MAKE: $(am__recursive_targets) check-am install-am install-strip
|
||||
|
||||
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
|
||||
check-TESTS check-am clean clean-checkPROGRAMS clean-generic \
|
||||
clean-libtool clean-noinstLIBRARIES cscopelist-am ctags \
|
||||
ctags-am distclean distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs installdirs-am maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
recheck tags tags-am uninstall uninstall-am
|
||||
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
|
||||
am--depfiles check check-TESTS check-am clean \
|
||||
clean-checkPROGRAMS clean-generic clean-libtool \
|
||||
clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \
|
||||
distclean-compile distclean-generic distclean-libtool \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||
mostlyclean mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
|
||||
uninstall uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
# Makefile.in generated by automake 1.15.1 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2017 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -124,7 +124,14 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/conftools/ac_c_bigendian_cross.m4 \
|
||||
$(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/conftools/ax-require-defined.m4 \
|
||||
$(top_srcdir)/conftools/ax-check-compile-flag.m4 \
|
||||
$(top_srcdir)/conftools/ax-check-link-flag.m4 \
|
||||
$(top_srcdir)/conftools/ax-append-flag.m4 \
|
||||
$(top_srcdir)/conftools/ax-append-compile-flags.m4 \
|
||||
$(top_srcdir)/conftools/ax-append-link-flags.m4 \
|
||||
$(top_srcdir)/conftools/expatcfg-compiler-supports-visibility.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
@ -155,7 +162,8 @@ am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/conftools/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
am__maybe_remake_depfiles = depfiles
|
||||
am__depfiles_remade = ./$(DEPDIR)/benchmark.Po
|
||||
am__mv = mv -f
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
@ -357,8 +365,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
@ -389,7 +397,13 @@ mostlyclean-compile:
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/benchmark.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/benchmark.Po@am__quote@ # am--include-marker
|
||||
|
||||
$(am__depfiles_remade):
|
||||
@$(MKDIR_P) $(@D)
|
||||
@echo '# dummy' >$@-t && $(am__mv) $@-t $@
|
||||
|
||||
am--depfiles: $(am__depfiles_remade)
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@ -470,7 +484,10 @@ cscopelist-am: $(am__tagged_files)
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
@ -540,7 +557,7 @@ clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
|
||||
mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f ./$(DEPDIR)/benchmark.Po
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
@ -586,7 +603,7 @@ install-ps-am:
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f ./$(DEPDIR)/benchmark.Po
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
@ -607,9 +624,9 @@ uninstall-am:
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
|
||||
clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
|
||||
ctags-am distclean distclean-compile distclean-generic \
|
||||
.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
|
||||
clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
|
||||
ctags ctags-am distclean distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
|
@ -49,15 +49,13 @@
|
||||
#endif
|
||||
|
||||
static void
|
||||
usage(const char *prog, int rc)
|
||||
{
|
||||
fprintf(stderr,
|
||||
"usage: %s [-n] filename bufferSize nr_of_loops\n", prog);
|
||||
usage(const char *prog, int rc) {
|
||||
fprintf(stderr, "usage: %s [-n] filename bufferSize nr_of_loops\n", prog);
|
||||
exit(rc);
|
||||
}
|
||||
|
||||
int main (int argc, char *argv[])
|
||||
{
|
||||
int
|
||||
main(int argc, char *argv[]) {
|
||||
XML_Parser parser;
|
||||
char *XMLBuf, *XMLBufEnd, *XMLBufPtr;
|
||||
FILE *fd;
|
||||
@ -72,8 +70,7 @@ int main (int argc, char *argv[])
|
||||
if (argv[1][1] == 'n' && argv[1][2] == '\0') {
|
||||
ns = 1;
|
||||
j = 1;
|
||||
}
|
||||
else
|
||||
} else
|
||||
usage(argv[0], 1);
|
||||
}
|
||||
}
|
||||
@ -95,8 +92,7 @@ int main (int argc, char *argv[])
|
||||
bufferSize = atoi(argv[j + 2]);
|
||||
nrOfLoops = atoi(argv[j + 3]);
|
||||
if (bufferSize <= 0 || nrOfLoops <= 0) {
|
||||
fprintf (stderr,
|
||||
"buffer size and nr of loops must be greater than zero.\n");
|
||||
fprintf(stderr, "buffer size and nr of loops must be greater than zero.\n");
|
||||
exit(3);
|
||||
}
|
||||
|
||||
@ -123,7 +119,7 @@ int main (int argc, char *argv[])
|
||||
parseBufferSize = bufferSize;
|
||||
if (! XML_Parse(parser, XMLBufPtr, parseBufferSize, isFinal)) {
|
||||
fprintf(stderr,
|
||||
"error '%" XML_FMT_STR "' at line %" XML_FMT_INT_MOD \
|
||||
"error '%" XML_FMT_STR "' at line %" XML_FMT_INT_MOD
|
||||
"u character %" XML_FMT_INT_MOD "u\n",
|
||||
XML_ErrorString(XML_GetErrorCode(parser)),
|
||||
XML_GetCurrentLineNumber(parser),
|
||||
|
@ -41,10 +41,8 @@
|
||||
|
||||
#include "chardata.h"
|
||||
|
||||
|
||||
static int
|
||||
xmlstrlen(const XML_Char *s)
|
||||
{
|
||||
xmlstrlen(const XML_Char *s) {
|
||||
int len = 0;
|
||||
assert(s != NULL);
|
||||
while (s[len] != 0)
|
||||
@ -52,17 +50,14 @@ xmlstrlen(const XML_Char *s)
|
||||
return len;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
CharData_Init(CharData *storage)
|
||||
{
|
||||
CharData_Init(CharData *storage) {
|
||||
assert(storage != NULL);
|
||||
storage->count = -1;
|
||||
}
|
||||
|
||||
void
|
||||
CharData_AppendXMLChars(CharData *storage, const XML_Char *s, int len)
|
||||
{
|
||||
CharData_AppendXMLChars(CharData *storage, const XML_Char *s, int len) {
|
||||
int maxchars;
|
||||
|
||||
assert(storage != NULL);
|
||||
@ -76,15 +71,13 @@ CharData_AppendXMLChars(CharData *storage, const XML_Char *s, int len)
|
||||
len = (maxchars - storage->count);
|
||||
}
|
||||
if (len + storage->count < (int)sizeof(storage->data)) {
|
||||
memcpy(storage->data + storage->count, s,
|
||||
len * sizeof(storage->data[0]));
|
||||
memcpy(storage->data + storage->count, s, len * sizeof(storage->data[0]));
|
||||
storage->count += len;
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
CharData_CheckXMLChars(CharData *storage, const XML_Char *expected)
|
||||
{
|
||||
CharData_CheckXMLChars(CharData *storage, const XML_Char *expected) {
|
||||
char buffer[1024];
|
||||
int len = xmlstrlen(expected);
|
||||
int count;
|
||||
|
@ -42,20 +42,17 @@ extern "C" {
|
||||
# include "expat.h" /* need XML_Char */
|
||||
# endif
|
||||
|
||||
|
||||
typedef struct {
|
||||
int count; /* # of chars, < 0 if not set */
|
||||
XML_Char data[2048];
|
||||
} CharData;
|
||||
|
||||
|
||||
void CharData_Init(CharData *storage);
|
||||
|
||||
void CharData_AppendXMLChars(CharData *storage, const XML_Char *s, int len);
|
||||
|
||||
int CharData_CheckXMLChars(CharData *storage, const XML_Char *s);
|
||||
|
||||
|
||||
#endif /* XML_CHARDATA_H */
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -34,7 +34,6 @@
|
||||
#include <stdlib.h>
|
||||
#include "memcheck.h"
|
||||
|
||||
|
||||
/* Structures to keep track of what has been allocated. Speed isn't a
|
||||
* big issue for the tests this is required for, so we will use a
|
||||
* doubly-linked list to make deletion easier.
|
||||
@ -52,11 +51,9 @@ static AllocationEntry *alloc_tail = NULL;
|
||||
|
||||
static AllocationEntry *find_allocation(void *ptr);
|
||||
|
||||
|
||||
/* Allocate some memory and keep track of it. */
|
||||
void *
|
||||
tracking_malloc(size_t size)
|
||||
{
|
||||
tracking_malloc(size_t size) {
|
||||
AllocationEntry *entry = malloc(sizeof(AllocationEntry));
|
||||
|
||||
if (entry == NULL) {
|
||||
@ -85,8 +82,7 @@ tracking_malloc(size_t size)
|
||||
}
|
||||
|
||||
static AllocationEntry *
|
||||
find_allocation(void *ptr)
|
||||
{
|
||||
find_allocation(void *ptr) {
|
||||
AllocationEntry *entry;
|
||||
|
||||
for (entry = alloc_head; entry != NULL; entry = entry->next) {
|
||||
@ -99,8 +95,7 @@ find_allocation(void *ptr)
|
||||
|
||||
/* Free some memory and remove the tracking for it */
|
||||
void
|
||||
tracking_free(void *ptr)
|
||||
{
|
||||
tracking_free(void *ptr) {
|
||||
AllocationEntry *entry;
|
||||
|
||||
if (ptr == NULL) {
|
||||
@ -128,8 +123,7 @@ tracking_free(void *ptr)
|
||||
|
||||
/* Reallocate some memory and keep track of it */
|
||||
void *
|
||||
tracking_realloc(void *ptr, size_t size)
|
||||
{
|
||||
tracking_realloc(void *ptr, size_t size) {
|
||||
AllocationEntry *entry;
|
||||
|
||||
if (ptr == NULL) {
|
||||
@ -181,18 +175,16 @@ tracking_realloc(void *ptr, size_t size)
|
||||
}
|
||||
|
||||
int
|
||||
tracking_report(void)
|
||||
{
|
||||
tracking_report(void) {
|
||||
AllocationEntry *entry;
|
||||
|
||||
if (alloc_head == NULL)
|
||||
return 1;
|
||||
|
||||
/* Otherwise we have allocations that haven't been freed */
|
||||
for (entry = alloc_head; entry != NULL; entry = entry->next)
|
||||
{
|
||||
printf("Allocated %lu bytes at %p\n",
|
||||
(long unsigned)entry->num_bytes, entry->allocation);
|
||||
for (entry = alloc_head; entry != NULL; entry = entry->next) {
|
||||
printf("Allocated %lu bytes at %p\n", (long unsigned)entry->num_bytes,
|
||||
entry->allocation);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -44,8 +44,7 @@
|
||||
#include "minicheck.h"
|
||||
|
||||
Suite *
|
||||
suite_create(const char *name)
|
||||
{
|
||||
suite_create(const char *name) {
|
||||
Suite *suite = (Suite *)calloc(1, sizeof(Suite));
|
||||
if (suite != NULL) {
|
||||
suite->name = name;
|
||||
@ -54,8 +53,7 @@ suite_create(const char *name)
|
||||
}
|
||||
|
||||
TCase *
|
||||
tcase_create(const char *name)
|
||||
{
|
||||
tcase_create(const char *name) {
|
||||
TCase *tc = (TCase *)calloc(1, sizeof(TCase));
|
||||
if (tc != NULL) {
|
||||
tc->name = name;
|
||||
@ -64,8 +62,7 @@ tcase_create(const char *name)
|
||||
}
|
||||
|
||||
void
|
||||
suite_add_tcase(Suite *suite, TCase *tc)
|
||||
{
|
||||
suite_add_tcase(Suite *suite, TCase *tc) {
|
||||
assert(suite != NULL);
|
||||
assert(tc != NULL);
|
||||
assert(tc->next_tcase == NULL);
|
||||
@ -75,18 +72,15 @@ suite_add_tcase(Suite *suite, TCase *tc)
|
||||
}
|
||||
|
||||
void
|
||||
tcase_add_checked_fixture(TCase *tc,
|
||||
tcase_setup_function setup,
|
||||
tcase_teardown_function teardown)
|
||||
{
|
||||
tcase_add_checked_fixture(TCase *tc, tcase_setup_function setup,
|
||||
tcase_teardown_function teardown) {
|
||||
assert(tc != NULL);
|
||||
tc->setup = setup;
|
||||
tc->teardown = teardown;
|
||||
}
|
||||
|
||||
void
|
||||
tcase_add_test(TCase *tc, tcase_test_function test)
|
||||
{
|
||||
tcase_add_test(TCase *tc, tcase_test_function test) {
|
||||
assert(tc != NULL);
|
||||
if (tc->allocated == tc->ntests) {
|
||||
int nalloc = tc->allocated + 100;
|
||||
@ -101,8 +95,7 @@ tcase_add_test(TCase *tc, tcase_test_function test)
|
||||
}
|
||||
|
||||
static void
|
||||
tcase_free(TCase *tc)
|
||||
{
|
||||
tcase_free(TCase *tc) {
|
||||
if (! tc) {
|
||||
return;
|
||||
}
|
||||
@ -112,8 +105,7 @@ tcase_free(TCase *tc)
|
||||
}
|
||||
|
||||
static void
|
||||
suite_free(Suite *suite)
|
||||
{
|
||||
suite_free(Suite *suite) {
|
||||
if (! suite) {
|
||||
return;
|
||||
}
|
||||
@ -127,8 +119,7 @@ suite_free(Suite *suite)
|
||||
}
|
||||
|
||||
SRunner *
|
||||
srunner_create(Suite *suite)
|
||||
{
|
||||
srunner_create(Suite *suite) {
|
||||
SRunner *runner = calloc(1, sizeof(SRunner));
|
||||
if (runner != NULL) {
|
||||
runner->suite = suite;
|
||||
@ -143,34 +134,30 @@ static int _check_current_lineno = -1;
|
||||
static char const *_check_current_filename = NULL;
|
||||
|
||||
void
|
||||
_check_set_test_info(char const *function, char const *filename, int lineno)
|
||||
{
|
||||
_check_set_test_info(char const *function, char const *filename, int lineno) {
|
||||
_check_current_function = function;
|
||||
_check_current_lineno = lineno;
|
||||
_check_current_filename = filename;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
add_failure(SRunner *runner, int verbosity)
|
||||
{
|
||||
add_failure(SRunner *runner, int verbosity) {
|
||||
runner->nfailures++;
|
||||
if (verbosity >= CK_VERBOSE) {
|
||||
printf("%s:%d: %s\n", _check_current_filename,
|
||||
_check_current_lineno, _check_current_function);
|
||||
printf("%s:%d: %s\n", _check_current_filename, _check_current_lineno,
|
||||
_check_current_function);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
srunner_run_all(SRunner *runner, int verbosity)
|
||||
{
|
||||
srunner_run_all(SRunner *runner, int verbosity) {
|
||||
Suite *suite;
|
||||
TCase *tc;
|
||||
TCase *volatile tc;
|
||||
assert(runner != NULL);
|
||||
suite = runner->suite;
|
||||
tc = suite->tests;
|
||||
while (tc != NULL) {
|
||||
int i;
|
||||
volatile int i;
|
||||
for (i = 0; i < tc->ntests; ++i) {
|
||||
runner->nchecks++;
|
||||
|
||||
@ -204,18 +191,20 @@ srunner_run_all(SRunner *runner, int verbosity)
|
||||
int passed = runner->nchecks - runner->nfailures;
|
||||
double percentage = ((double)passed) / runner->nchecks;
|
||||
int display = (int)(percentage * 100);
|
||||
printf("%d%%: Checks: %d, Failed: %d\n",
|
||||
display, runner->nchecks, runner->nfailures);
|
||||
printf("%d%%: Checks: %d, Failed: %d\n", display, runner->nchecks,
|
||||
runner->nfailures);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
_fail_unless(int UNUSED_P(condition), const char *UNUSED_P(file), int UNUSED_P(line), const char *msg)
|
||||
{
|
||||
_fail_unless(int condition, const char *file, int line, const char *msg) {
|
||||
/* Always print the error message so it isn't lost. In this case,
|
||||
we have a failure, so there's no reason to be quiet about what
|
||||
it is.
|
||||
*/
|
||||
UNUSED_P(condition);
|
||||
UNUSED_P(file);
|
||||
UNUSED_P(line);
|
||||
if (msg != NULL) {
|
||||
const int has_newline = (msg[strlen(msg) - 1] == '\n');
|
||||
fprintf(stderr, "ERROR: %s%s", msg, has_newline ? "" : "\n");
|
||||
@ -224,15 +213,13 @@ _fail_unless(int UNUSED_P(condition), const char *UNUSED_P(file), int UNUSED_P(l
|
||||
}
|
||||
|
||||
int
|
||||
srunner_ntests_failed(SRunner *runner)
|
||||
{
|
||||
srunner_ntests_failed(SRunner *runner) {
|
||||
assert(runner != NULL);
|
||||
return runner->nfailures;
|
||||
}
|
||||
|
||||
void
|
||||
srunner_free(SRunner *runner)
|
||||
{
|
||||
srunner_free(SRunner *runner) {
|
||||
if (! runner) {
|
||||
return;
|
||||
}
|
||||
|
@ -55,10 +55,13 @@ extern "C" {
|
||||
# define __func__ __FUNCTION__
|
||||
#endif
|
||||
|
||||
#define START_TEST(testname) static void testname(void) { \
|
||||
#define START_TEST(testname) \
|
||||
static void testname(void) { \
|
||||
_check_set_test_info(__func__, __FILE__, __LINE__); \
|
||||
{
|
||||
#define END_TEST } }
|
||||
#define END_TEST \
|
||||
} \
|
||||
}
|
||||
|
||||
#define fail(msg) _fail_unless(0, __FILE__, __LINE__, msg)
|
||||
|
||||
@ -91,11 +94,9 @@ struct TCase {
|
||||
TCase *next_tcase;
|
||||
};
|
||||
|
||||
|
||||
/* Internal helper. */
|
||||
void _check_set_test_info(char const *function,
|
||||
char const *filename, int lineno);
|
||||
|
||||
void _check_set_test_info(char const *function, char const *filename,
|
||||
int lineno);
|
||||
|
||||
/*
|
||||
* Prototypes for the actual implementation.
|
||||
@ -105,8 +106,7 @@ void _fail_unless(int condition, const char *file, int line, const char *msg);
|
||||
Suite *suite_create(const char *name);
|
||||
TCase *tcase_create(const char *name);
|
||||
void suite_add_tcase(Suite *suite, TCase *tc);
|
||||
void tcase_add_checked_fixture(TCase *,
|
||||
tcase_setup_function,
|
||||
void tcase_add_checked_fixture(TCase *, tcase_setup_function,
|
||||
tcase_teardown_function);
|
||||
void tcase_add_test(TCase *tc, tcase_test_function test);
|
||||
SRunner *srunner_create(Suite *suite);
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,6 @@
|
||||
# include "expat_config.h"
|
||||
#endif
|
||||
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
@ -56,10 +55,8 @@
|
||||
# define xcstrcmp(s, t) strcmp((s), (t))
|
||||
#endif
|
||||
|
||||
|
||||
static XML_Char *
|
||||
xmlstrdup(const XML_Char *s)
|
||||
{
|
||||
xmlstrdup(const XML_Char *s) {
|
||||
size_t byte_count = (xcstrlen(s) + 1) * sizeof(XML_Char);
|
||||
XML_Char *dup = malloc(byte_count);
|
||||
|
||||
@ -68,10 +65,8 @@ xmlstrdup(const XML_Char *s)
|
||||
return dup;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
StructData_Init(StructData *storage)
|
||||
{
|
||||
StructData_Init(StructData *storage) {
|
||||
assert(storage != NULL);
|
||||
storage->count = 0;
|
||||
storage->max_count = 0;
|
||||
@ -79,12 +74,8 @@ StructData_Init(StructData *storage)
|
||||
}
|
||||
|
||||
void
|
||||
StructData_AddItem(StructData *storage,
|
||||
const XML_Char *s,
|
||||
int data0,
|
||||
int data1,
|
||||
int data2)
|
||||
{
|
||||
StructData_AddItem(StructData *storage, const XML_Char *s, int data0, int data1,
|
||||
int data2) {
|
||||
StructDataEntry *entry;
|
||||
|
||||
assert(storage != NULL);
|
||||
@ -111,10 +102,8 @@ StructData_AddItem(StructData *storage,
|
||||
* in returning a value from this function.
|
||||
*/
|
||||
void
|
||||
StructData_CheckItems(StructData *storage,
|
||||
const StructDataEntry *expected,
|
||||
int count)
|
||||
{
|
||||
StructData_CheckItems(StructData *storage, const StructDataEntry *expected,
|
||||
int count) {
|
||||
char buffer[1024];
|
||||
int i;
|
||||
|
||||
@ -125,38 +114,42 @@ StructData_CheckItems(StructData *storage,
|
||||
storage->count, count);
|
||||
StructData_Dispose(storage);
|
||||
fail(buffer);
|
||||
}
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
} else {
|
||||
for (i = 0; i < count; i++) {
|
||||
const StructDataEntry *got = &storage->entries[i];
|
||||
const StructDataEntry *want = &expected[i];
|
||||
|
||||
assert(got != NULL);
|
||||
assert(want != NULL);
|
||||
|
||||
if (xcstrcmp(got->str, want->str) != 0) {
|
||||
StructData_Dispose(storage);
|
||||
fail("structure got bad string");
|
||||
}
|
||||
if (got->data0 != want->data0 ||
|
||||
got->data1 != want->data1 ||
|
||||
got->data2 != want->data2) {
|
||||
} else {
|
||||
if (got->data0 != want->data0 || got->data1 != want->data1
|
||||
|| got->data2 != want->data2) {
|
||||
sprintf(buffer,
|
||||
"struct '%" XML_FMT_STR
|
||||
"' expected (%d,%d,%d), got (%d,%d,%d)",
|
||||
got->str,
|
||||
want->data0, want->data1, want->data2,
|
||||
got->data0, got->data1, got->data2);
|
||||
got->str, want->data0, want->data1, want->data2, got->data0,
|
||||
got->data1, got->data2);
|
||||
StructData_Dispose(storage);
|
||||
fail(buffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
StructData_Dispose(StructData *storage)
|
||||
{
|
||||
StructData_Dispose(StructData *storage) {
|
||||
int i;
|
||||
|
||||
assert(storage != NULL);
|
||||
for (i = 0; i < storage->count; i++)
|
||||
free((void *)storage->entries[i].str);
|
||||
free(storage->entries);
|
||||
|
||||
storage->count = 0;
|
||||
storage->entries = NULL;
|
||||
}
|
||||
|
@ -53,22 +53,16 @@ typedef struct {
|
||||
StructDataEntry *entries;
|
||||
} StructData;
|
||||
|
||||
|
||||
void StructData_Init(StructData *storage);
|
||||
|
||||
void StructData_AddItem(StructData *storage,
|
||||
const XML_Char *s,
|
||||
int data0,
|
||||
int data1,
|
||||
int data2);
|
||||
void StructData_AddItem(StructData *storage, const XML_Char *s, int data0,
|
||||
int data1, int data2);
|
||||
|
||||
void StructData_CheckItems(StructData *storage,
|
||||
const StructDataEntry *expected,
|
||||
void StructData_CheckItems(StructData *storage, const StructDataEntry *expected,
|
||||
int count);
|
||||
|
||||
void StructData_Dispose(StructData *storage);
|
||||
|
||||
|
||||
#endif /* XML_STRUCTDATA_H */
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -22,17 +22,16 @@
|
||||
|
||||
shopt -s nullglob
|
||||
|
||||
# Note: OUTPUT must terminate with the directory separator.
|
||||
OUTPUT="$PWD/tests/out/"
|
||||
TS="$PWD/tests/"
|
||||
|
||||
MYDIR="`dirname \"$0\"`"
|
||||
cd "$MYDIR"
|
||||
MYDIR="`pwd`"
|
||||
XMLWF="${1:-`dirname \"$MYDIR\"`/xmlwf/xmlwf}"
|
||||
# XMLWF=/usr/local/bin/xmlwf
|
||||
TS="$MYDIR"
|
||||
# OUTPUT must terminate with the directory separator.
|
||||
OUTPUT="$TS/out/"
|
||||
# OUTPUT=/home/tmp/xml-testsuite-out/
|
||||
# Unicode-aware diff utility
|
||||
DIFF="$TS/udiffer.py"
|
||||
DIFF="${MYDIR}/udiffer.py"
|
||||
|
||||
|
||||
# RunXmlwfNotWF file reldir
|
||||
@ -40,9 +39,7 @@ DIFF="$TS/udiffer.py"
|
||||
RunXmlwfNotWF() {
|
||||
file="$1"
|
||||
reldir="$2"
|
||||
$XMLWF -p "$file" > outfile || return $?
|
||||
read outdata < outfile
|
||||
if test "$outdata" = "" ; then
|
||||
if $XMLWF -p "$file" > /dev/null; then
|
||||
echo "Expected not well-formed: $reldir$file"
|
||||
return 1
|
||||
else
|
||||
@ -133,7 +130,6 @@ for xmldir in ibm/not-wf/P* \
|
||||
RunXmlwfNotWF "$xmlfile" "$xmldir/"
|
||||
UpdateStatus $?
|
||||
done
|
||||
rm outfile
|
||||
done
|
||||
|
||||
cd "$TS/xmlconf/oasis"
|
||||
@ -141,7 +137,6 @@ for xmlfile in *fail*.xml ; do
|
||||
RunXmlwfNotWF "$xmlfile" "oasis/"
|
||||
UpdateStatus $?
|
||||
done
|
||||
rm outfile
|
||||
|
||||
echo "Passed: $SUCCESS"
|
||||
echo "Failed: $ERROR"
|
||||
|
@ -56,6 +56,4 @@ EXTRA_DIST = \
|
||||
xmlfile.h \
|
||||
xmlmime.c \
|
||||
xmlmime.h \
|
||||
xmltchar.h \
|
||||
xmlurl.h \
|
||||
xmlwin32url.cxx
|
||||
xmltchar.h
|
||||
|
@ -1,7 +1,7 @@
|
||||
# Makefile.in generated by automake 1.15.1 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2017 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -125,7 +125,14 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/conftools/ac_c_bigendian_cross.m4 \
|
||||
$(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/conftools/ax-require-defined.m4 \
|
||||
$(top_srcdir)/conftools/ax-check-compile-flag.m4 \
|
||||
$(top_srcdir)/conftools/ax-check-link-flag.m4 \
|
||||
$(top_srcdir)/conftools/ax-append-flag.m4 \
|
||||
$(top_srcdir)/conftools/ax-append-compile-flags.m4 \
|
||||
$(top_srcdir)/conftools/ax-append-link-flags.m4 \
|
||||
$(top_srcdir)/conftools/expatcfg-compiler-supports-visibility.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
@ -161,7 +168,10 @@ am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/conftools/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
am__maybe_remake_depfiles = depfiles
|
||||
am__depfiles_remade = ./$(DEPDIR)/xmlwf-@FILEMAP@.Po \
|
||||
./$(DEPDIR)/xmlwf-codepage.Po ./$(DEPDIR)/xmlwf-xmlfile.Po \
|
||||
./$(DEPDIR)/xmlwf-xmlwf.Po
|
||||
am__mv = mv -f
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
@ -355,9 +365,7 @@ EXTRA_DIST = \
|
||||
xmlfile.h \
|
||||
xmlmime.c \
|
||||
xmlmime.h \
|
||||
xmltchar.h \
|
||||
xmlurl.h \
|
||||
xmlwin32url.cxx
|
||||
xmltchar.h
|
||||
|
||||
all: all-am
|
||||
|
||||
@ -380,8 +388,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
@ -452,10 +460,16 @@ mostlyclean-compile:
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlwf-@FILEMAP@.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlwf-codepage.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlwf-xmlfile.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlwf-xmlwf.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlwf-@FILEMAP@.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlwf-codepage.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlwf-xmlfile.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlwf-xmlwf.Po@am__quote@ # am--include-marker
|
||||
|
||||
$(am__depfiles_remade):
|
||||
@$(MKDIR_P) $(@D)
|
||||
@echo '# dummy' >$@-t && $(am__mv) $@-t $@
|
||||
|
||||
am--depfiles: $(am__depfiles_remade)
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@ -592,7 +606,10 @@ cscopelist-am: $(am__tagged_files)
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
@ -664,7 +681,10 @@ clean: clean-am
|
||||
clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f ./$(DEPDIR)/xmlwf-@FILEMAP@.Po
|
||||
-rm -f ./$(DEPDIR)/xmlwf-codepage.Po
|
||||
-rm -f ./$(DEPDIR)/xmlwf-xmlfile.Po
|
||||
-rm -f ./$(DEPDIR)/xmlwf-xmlwf.Po
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
@ -710,7 +730,10 @@ install-ps-am:
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f ./$(DEPDIR)/xmlwf-@FILEMAP@.Po
|
||||
-rm -f ./$(DEPDIR)/xmlwf-codepage.Po
|
||||
-rm -f ./$(DEPDIR)/xmlwf-xmlfile.Po
|
||||
-rm -f ./$(DEPDIR)/xmlwf-xmlwf.Po
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
@ -731,7 +754,7 @@ uninstall-am: uninstall-binPROGRAMS
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
|
||||
.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
|
||||
clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
|
||||
ctags ctags-am distclean distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
|
@ -40,8 +40,7 @@
|
||||
# include <windows.h>
|
||||
|
||||
int
|
||||
codepageMap(int cp, int *map)
|
||||
{
|
||||
codepageMap(int cp, int *map) {
|
||||
int i;
|
||||
CPINFO info;
|
||||
if (! GetCPInfo(cp, &info) || info.MaxCharSize > 2)
|
||||
@ -62,8 +61,9 @@ codepageMap(int cp, int *map)
|
||||
if (map[i] == -1) {
|
||||
char c = (char)i;
|
||||
unsigned short n;
|
||||
if (MultiByteToWideChar(cp, MB_PRECOMPOSED|MB_ERR_INVALID_CHARS,
|
||||
&c, 1, &n, 1) == 1)
|
||||
if (MultiByteToWideChar(cp, MB_PRECOMPOSED | MB_ERR_INVALID_CHARS, &c, 1,
|
||||
&n, 1)
|
||||
== 1)
|
||||
map[i] = n;
|
||||
}
|
||||
}
|
||||
@ -71,11 +71,11 @@ codepageMap(int cp, int *map)
|
||||
}
|
||||
|
||||
int
|
||||
codepageConvert(int cp, const char *p)
|
||||
{
|
||||
codepageConvert(int cp, const char *p) {
|
||||
unsigned short c;
|
||||
if (MultiByteToWideChar(cp, MB_PRECOMPOSED|MB_ERR_INVALID_CHARS,
|
||||
p, 2, &c, 1) == 1)
|
||||
if (MultiByteToWideChar(cp, MB_PRECOMPOSED | MB_ERR_INVALID_CHARS, p, 2, &c,
|
||||
1)
|
||||
== 1)
|
||||
return c;
|
||||
return -1;
|
||||
}
|
||||
@ -83,14 +83,16 @@ codepageConvert(int cp, const char *p)
|
||||
#else /* not _WIN32 */
|
||||
|
||||
int
|
||||
codepageMap(int UNUSED_P(cp), int *UNUSED_P(map))
|
||||
{
|
||||
codepageMap(int cp, int *map) {
|
||||
UNUSED_P(cp);
|
||||
UNUSED_P(map);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
codepageConvert(int UNUSED_P(cp), const char *UNUSED_P(p))
|
||||
{
|
||||
codepageConvert(int cp, const char *p) {
|
||||
UNUSED_P(cp);
|
||||
UNUSED_P(p);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -33,8 +33,7 @@
|
||||
#define CHARSET_MAX 41
|
||||
|
||||
static const char *
|
||||
getTok(const char **pp)
|
||||
{
|
||||
getTok(const char **pp) {
|
||||
enum { inAtom, inString, init, inComment };
|
||||
int state = init;
|
||||
const char *tokStart = 0;
|
||||
@ -102,8 +101,7 @@ getTok(const char **pp)
|
||||
/* key must be lowercase ASCII */
|
||||
|
||||
static int
|
||||
matchkey(const char *start, const char *end, const char *key)
|
||||
{
|
||||
matchkey(const char *start, const char *end, const char *key) {
|
||||
if (! start)
|
||||
return 0;
|
||||
for (; start != end; start++, key++)
|
||||
@ -113,8 +111,7 @@ matchkey(const char *start, const char *end, const char *key)
|
||||
}
|
||||
|
||||
void
|
||||
getXMLCharset(const char *buf, char *charset)
|
||||
{
|
||||
getXMLCharset(const char *buf, char *charset) {
|
||||
const char *next, *p;
|
||||
|
||||
charset[0] = '\0';
|
||||
@ -151,8 +148,7 @@ getXMLCharset(const char *buf, char *charset)
|
||||
*s++ = *p;
|
||||
}
|
||||
*s++ = '\0';
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
if (next - p > CHARSET_MAX - 1)
|
||||
break;
|
||||
while (p != next)
|
||||
@ -163,15 +159,13 @@ getXMLCharset(const char *buf, char *charset)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
} else
|
||||
p = getTok(&next);
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
main(int argc, char **argv) {
|
||||
char buf[CHARSET_MAX];
|
||||
getXMLCharset(argv[1], buf);
|
||||
printf("charset = \"%s\"\n", buf);
|
||||
|
@ -33,7 +33,6 @@
|
||||
#include <limits.h> /* INT_MAX */
|
||||
#include <stddef.h>
|
||||
|
||||
|
||||
/* The following limit (for XML_Parse's int len) derives from
|
||||
* this loop in xmparse.c:
|
||||
*
|
||||
@ -43,15 +42,12 @@
|
||||
*/
|
||||
#define XML_MAX_CHUNK_LEN (INT_MAX / 2 + 1)
|
||||
|
||||
|
||||
#ifdef XML_UNICODE
|
||||
int filemap(const wchar_t *name,
|
||||
void (*processor)(const void *, size_t,
|
||||
const wchar_t *, void *arg),
|
||||
void (*processor)(const void *, size_t, const wchar_t *, void *arg),
|
||||
void *arg);
|
||||
#else
|
||||
int filemap(const char *name,
|
||||
void (*processor)(const void *, size_t,
|
||||
const char *, void *arg),
|
||||
void (*processor)(const void *, size_t, const char *, void *arg),
|
||||
void *arg);
|
||||
#endif
|
||||
|
@ -79,8 +79,7 @@
|
||||
int
|
||||
filemap(const tchar *name,
|
||||
void (*processor)(const void *, size_t, const tchar *, void *arg),
|
||||
void *arg)
|
||||
{
|
||||
void *arg) {
|
||||
size_t nbytes;
|
||||
int fd;
|
||||
_EXPAT_read_count_t n;
|
||||
|
@ -55,8 +55,7 @@
|
||||
int
|
||||
filemap(const tchar *name,
|
||||
void (*processor)(const void *, size_t, const tchar *, void *arg),
|
||||
void *arg)
|
||||
{
|
||||
void *arg) {
|
||||
int fd;
|
||||
size_t nbytes;
|
||||
struct stat sb;
|
||||
@ -90,8 +89,8 @@ filemap(const tchar *name,
|
||||
close(fd);
|
||||
return 1;
|
||||
}
|
||||
p = (void *)mmap((void *)0, (size_t)nbytes, PROT_READ,
|
||||
MAP_FILE|MAP_PRIVATE, fd, (off_t)0);
|
||||
p = (void *)mmap((void *)0, (size_t)nbytes, PROT_READ, MAP_FILE | MAP_PRIVATE,
|
||||
fd, (off_t)0);
|
||||
if (p == (void *)-1) {
|
||||
tperror(name);
|
||||
close(fd);
|
||||
|
@ -53,8 +53,7 @@ static void win32perror(const TCHAR *);
|
||||
int
|
||||
filemap(const TCHAR *name,
|
||||
void (*processor)(const void *, size_t, const TCHAR *, void *arg),
|
||||
void *arg)
|
||||
{
|
||||
void *arg) {
|
||||
HANDLE f;
|
||||
HANDLE m;
|
||||
DWORD size;
|
||||
@ -105,21 +104,15 @@ filemap(const TCHAR *name,
|
||||
}
|
||||
|
||||
static void
|
||||
win32perror(const TCHAR *s)
|
||||
{
|
||||
win32perror(const TCHAR *s) {
|
||||
LPVOID buf;
|
||||
if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER
|
||||
| FORMAT_MESSAGE_FROM_SYSTEM,
|
||||
NULL,
|
||||
GetLastError(),
|
||||
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
||||
(LPTSTR) &buf,
|
||||
0,
|
||||
if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
|
||||
NULL, GetLastError(),
|
||||
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&buf, 0,
|
||||
NULL)) {
|
||||
_ftprintf(stderr, _T("%s: %s"), s, buf);
|
||||
fflush(stderr);
|
||||
LocalFree(buf);
|
||||
}
|
||||
else
|
||||
} else
|
||||
_ftprintf(stderr, _T("%s: unknown Windows error\n"), s);
|
||||
}
|
||||
|
@ -70,54 +70,44 @@
|
||||
# define READ_SIZE (1024 * 8)
|
||||
#endif
|
||||
|
||||
|
||||
typedef struct {
|
||||
XML_Parser parser;
|
||||
int *retPtr;
|
||||
} PROCESS_ARGS;
|
||||
|
||||
static int
|
||||
processStream(const XML_Char *filename, XML_Parser parser);
|
||||
static int processStream(const XML_Char *filename, XML_Parser parser);
|
||||
|
||||
static void
|
||||
reportError(XML_Parser parser, const XML_Char *filename)
|
||||
{
|
||||
reportError(XML_Parser parser, const XML_Char *filename) {
|
||||
enum XML_Error code = XML_GetErrorCode(parser);
|
||||
const XML_Char *message = XML_ErrorString(code);
|
||||
if (message)
|
||||
ftprintf(stdout,
|
||||
T("%s")
|
||||
T(":%") T(XML_FMT_INT_MOD) T("u")
|
||||
T(":%") T(XML_FMT_INT_MOD) T("u")
|
||||
T(": %s\n"),
|
||||
filename,
|
||||
XML_GetErrorLineNumber(parser),
|
||||
XML_GetErrorColumnNumber(parser),
|
||||
message);
|
||||
T("%s") T(":%") T(XML_FMT_INT_MOD) T("u") T(":%")
|
||||
T(XML_FMT_INT_MOD) T("u") T(": %s\n"),
|
||||
filename, XML_GetErrorLineNumber(parser),
|
||||
XML_GetErrorColumnNumber(parser), message);
|
||||
else
|
||||
ftprintf(stderr, T("%s: (unknown message %d)\n"), filename, code);
|
||||
}
|
||||
|
||||
/* This implementation will give problems on files larger than INT_MAX. */
|
||||
static void
|
||||
processFile(const void *data, size_t size,
|
||||
const XML_Char *filename, void *args)
|
||||
{
|
||||
processFile(const void *data, size_t size, const XML_Char *filename,
|
||||
void *args) {
|
||||
XML_Parser parser = ((PROCESS_ARGS *)args)->parser;
|
||||
int *retPtr = ((PROCESS_ARGS *)args)->retPtr;
|
||||
if (XML_Parse(parser, (const char *)data, (int)size, 1) == XML_STATUS_ERROR) {
|
||||
reportError(parser, filename);
|
||||
*retPtr = 0;
|
||||
}
|
||||
else
|
||||
} else
|
||||
*retPtr = 1;
|
||||
}
|
||||
|
||||
#if defined(_WIN32)
|
||||
|
||||
static int
|
||||
isAsciiLetter(XML_Char c)
|
||||
{
|
||||
isAsciiLetter(XML_Char c) {
|
||||
return (T('a') <= c && c <= T('z')) || (T('A') <= c && c <= T('Z'));
|
||||
}
|
||||
|
||||
@ -125,12 +115,10 @@ isAsciiLetter(XML_Char c)
|
||||
|
||||
static const XML_Char *
|
||||
resolveSystemId(const XML_Char *base, const XML_Char *systemId,
|
||||
XML_Char **toFree)
|
||||
{
|
||||
XML_Char **toFree) {
|
||||
XML_Char *s;
|
||||
*toFree = 0;
|
||||
if (!base
|
||||
|| *systemId == T('/')
|
||||
if (! base || *systemId == T('/')
|
||||
#if defined(_WIN32)
|
||||
|| *systemId == T('\\')
|
||||
|| (isAsciiLetter(systemId[0]) && systemId[1] == T(':'))
|
||||
@ -154,18 +142,16 @@ resolveSystemId(const XML_Char *base, const XML_Char *systemId,
|
||||
}
|
||||
|
||||
static int
|
||||
externalEntityRefFilemap(XML_Parser parser,
|
||||
const XML_Char *context,
|
||||
const XML_Char *base,
|
||||
const XML_Char *systemId,
|
||||
const XML_Char *UNUSED_P(publicId))
|
||||
{
|
||||
externalEntityRefFilemap(XML_Parser parser, const XML_Char *context,
|
||||
const XML_Char *base, const XML_Char *systemId,
|
||||
const XML_Char *publicId) {
|
||||
int result;
|
||||
XML_Char *s;
|
||||
const XML_Char *filename;
|
||||
XML_Parser entParser = XML_ExternalEntityParserCreate(parser, context, 0);
|
||||
int filemapRes;
|
||||
PROCESS_ARGS args;
|
||||
UNUSED_P(publicId);
|
||||
args.retPtr = &result;
|
||||
args.parser = entParser;
|
||||
filename = resolveSystemId(base, systemId, &s);
|
||||
@ -176,8 +162,10 @@ externalEntityRefFilemap(XML_Parser parser,
|
||||
result = 0;
|
||||
break;
|
||||
case 2:
|
||||
ftprintf(stderr, T("%s: file too large for memory-mapping")
|
||||
T(", switching to streaming\n"), filename);
|
||||
ftprintf(stderr,
|
||||
T("%s: file too large for memory-mapping")
|
||||
T(", switching to streaming\n"),
|
||||
filename);
|
||||
result = processStream(filename, entParser);
|
||||
break;
|
||||
}
|
||||
@ -187,8 +175,7 @@ externalEntityRefFilemap(XML_Parser parser,
|
||||
}
|
||||
|
||||
static int
|
||||
processStream(const XML_Char *filename, XML_Parser parser)
|
||||
{
|
||||
processStream(const XML_Char *filename, XML_Parser parser) {
|
||||
/* passing NULL for filename means read intput from stdin */
|
||||
int fd = 0; /* 0 is the fileno for stdin */
|
||||
|
||||
@ -225,23 +212,22 @@ processStream(const XML_Char *filename, XML_Parser parser)
|
||||
if (nread == 0) {
|
||||
if (filename != NULL)
|
||||
close(fd);
|
||||
break;;
|
||||
break;
|
||||
;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
externalEntityRefStream(XML_Parser parser,
|
||||
const XML_Char *context,
|
||||
const XML_Char *base,
|
||||
const XML_Char *systemId,
|
||||
const XML_Char *UNUSED_P(publicId))
|
||||
{
|
||||
externalEntityRefStream(XML_Parser parser, const XML_Char *context,
|
||||
const XML_Char *base, const XML_Char *systemId,
|
||||
const XML_Char *publicId) {
|
||||
XML_Char *s;
|
||||
const XML_Char *filename;
|
||||
int ret;
|
||||
XML_Parser entParser = XML_ExternalEntityParserCreate(parser, context, 0);
|
||||
UNUSED_P(publicId);
|
||||
filename = resolveSystemId(base, systemId, &s);
|
||||
XML_SetBase(entParser, filename);
|
||||
ret = processStream(filename, entParser);
|
||||
@ -251,10 +237,7 @@ externalEntityRefStream(XML_Parser parser,
|
||||
}
|
||||
|
||||
int
|
||||
XML_ProcessFile(XML_Parser parser,
|
||||
const XML_Char *filename,
|
||||
unsigned flags)
|
||||
{
|
||||
XML_ProcessFile(XML_Parser parser, const XML_Char *filename, unsigned flags) {
|
||||
int result;
|
||||
|
||||
if (! XML_SetBase(parser, filename)) {
|
||||
@ -263,8 +246,7 @@ XML_ProcessFile(XML_Parser parser,
|
||||
}
|
||||
|
||||
if (flags & XML_EXTERNAL_ENTITIES)
|
||||
XML_SetExternalEntityRefHandler(parser,
|
||||
(flags & XML_MAP_FILE)
|
||||
XML_SetExternalEntityRefHandler(parser, (flags & XML_MAP_FILE)
|
||||
? externalEntityRefFilemap
|
||||
: externalEntityRefStream);
|
||||
if (flags & XML_MAP_FILE) {
|
||||
@ -278,13 +260,14 @@ XML_ProcessFile(XML_Parser parser,
|
||||
result = 0;
|
||||
break;
|
||||
case 2:
|
||||
ftprintf(stderr, T("%s: file too large for memory-mapping")
|
||||
T(", switching to streaming\n"), filename);
|
||||
ftprintf(stderr,
|
||||
T("%s: file too large for memory-mapping")
|
||||
T(", switching to streaming\n"),
|
||||
filename);
|
||||
result = processStream(filename, parser);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
} else
|
||||
result = processStream(filename, parser);
|
||||
return result;
|
||||
}
|
||||
|
@ -34,15 +34,10 @@
|
||||
#define XML_EXTERNAL_ENTITIES 02
|
||||
|
||||
#ifdef XML_LARGE_SIZE
|
||||
#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400
|
||||
#define XML_FMT_INT_MOD "I64"
|
||||
#else
|
||||
# define XML_FMT_INT_MOD "ll"
|
||||
#endif
|
||||
#else
|
||||
# define XML_FMT_INT_MOD "l"
|
||||
#endif
|
||||
|
||||
extern int XML_ProcessFile(XML_Parser parser,
|
||||
const XML_Char *filename,
|
||||
extern int XML_ProcessFile(XML_Parser parser, const XML_Char *filename,
|
||||
unsigned flags);
|
||||
|
@ -34,8 +34,7 @@
|
||||
#include "xmlmime.h"
|
||||
|
||||
static const char *
|
||||
getTok(const char **pp)
|
||||
{
|
||||
getTok(const char **pp) {
|
||||
/* inComment means one level of nesting; inComment+1 means two levels etc */
|
||||
enum { inAtom, inString, init, inComment };
|
||||
int state = init;
|
||||
@ -106,8 +105,7 @@ getTok(const char **pp)
|
||||
/* key must be lowercase ASCII */
|
||||
|
||||
static int
|
||||
matchkey(const char *start, const char *end, const char *key)
|
||||
{
|
||||
matchkey(const char *start, const char *end, const char *key) {
|
||||
if (! start)
|
||||
return 0;
|
||||
for (; start != end; start++, key++)
|
||||
@ -117,8 +115,7 @@ matchkey(const char *start, const char *end, const char *key)
|
||||
}
|
||||
|
||||
void
|
||||
getXMLCharset(const char *buf, char *charset)
|
||||
{
|
||||
getXMLCharset(const char *buf, char *charset) {
|
||||
const char *next, *p;
|
||||
|
||||
charset[0] = '\0';
|
||||
@ -132,10 +129,12 @@ getXMLCharset(const char *buf, char *charset)
|
||||
if (! p || *p != '/')
|
||||
return;
|
||||
p = getTok(&next);
|
||||
#if 0
|
||||
/* BEGIN disabled code */
|
||||
if (0) {
|
||||
if (! matchkey(p, next, "xml") && charset[0] == '\0')
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
/* END disabled code */
|
||||
p = getTok(&next);
|
||||
while (p) {
|
||||
if (*p == ';') {
|
||||
@ -157,8 +156,7 @@ getXMLCharset(const char *buf, char *charset)
|
||||
*s++ = *p;
|
||||
}
|
||||
*s++ = '\0';
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
if (next - p > CHARSET_MAX - 1)
|
||||
break;
|
||||
while (p != next)
|
||||
@ -170,8 +168,7 @@ getXMLCharset(const char *buf, char *charset)
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
} else
|
||||
p = getTok(&next);
|
||||
}
|
||||
}
|
||||
@ -181,8 +178,7 @@ getXMLCharset(const char *buf, char *charset)
|
||||
# include <stdio.h>
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
main(int argc, char *argv[]) {
|
||||
char buf[CHARSET_MAX];
|
||||
if (argc <= 1)
|
||||
return 1;
|
||||
|
@ -64,14 +64,12 @@ typedef struct xmlwfUserData {
|
||||
const XML_Char *currentDoctypeName;
|
||||
} XmlwfUserData;
|
||||
|
||||
|
||||
/* This ensures proper sorting. */
|
||||
|
||||
#define NSSEP T('\001')
|
||||
|
||||
static void XMLCALL
|
||||
characterData(void *userData, const XML_Char *s, int len)
|
||||
{
|
||||
characterData(void *userData, const XML_Char *s, int len) {
|
||||
FILE *fp = ((XmlwfUserData *)userData)->fp;
|
||||
for (; len > 0; --len, ++s) {
|
||||
switch (*s) {
|
||||
@ -106,8 +104,7 @@ characterData(void *userData, const XML_Char *s, int len)
|
||||
}
|
||||
|
||||
static void
|
||||
attributeValue(FILE *fp, const XML_Char *s)
|
||||
{
|
||||
attributeValue(FILE *fp, const XML_Char *s) {
|
||||
puttc(T('='), fp);
|
||||
puttc(T('"'), fp);
|
||||
assert(s);
|
||||
@ -158,14 +155,12 @@ attributeValue(FILE *fp, const XML_Char *s)
|
||||
is equivalent to lexicographically comparing based on the character number. */
|
||||
|
||||
static int
|
||||
attcmp(const void *att1, const void *att2)
|
||||
{
|
||||
attcmp(const void *att1, const void *att2) {
|
||||
return tcscmp(*(const XML_Char **)att1, *(const XML_Char **)att2);
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
startElement(void *userData, const XML_Char *name, const XML_Char **atts)
|
||||
{
|
||||
startElement(void *userData, const XML_Char *name, const XML_Char **atts) {
|
||||
int nAtts;
|
||||
const XML_Char **p;
|
||||
FILE *fp = ((XmlwfUserData *)userData)->fp;
|
||||
@ -188,8 +183,7 @@ startElement(void *userData, const XML_Char *name, const XML_Char **atts)
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
endElement(void *userData, const XML_Char *name)
|
||||
{
|
||||
endElement(void *userData, const XML_Char *name) {
|
||||
FILE *fp = ((XmlwfUserData *)userData)->fp;
|
||||
puttc(T('<'), fp);
|
||||
puttc(T('/'), fp);
|
||||
@ -198,8 +192,7 @@ endElement(void *userData, const XML_Char *name)
|
||||
}
|
||||
|
||||
static int
|
||||
nsattcmp(const void *p1, const void *p2)
|
||||
{
|
||||
nsattcmp(const void *p1, const void *p2) {
|
||||
const XML_Char *att1 = *(const XML_Char **)p1;
|
||||
const XML_Char *att2 = *(const XML_Char **)p2;
|
||||
int sep1 = (tcsrchr(att1, NSSEP) != 0);
|
||||
@ -210,8 +203,7 @@ nsattcmp(const void *p1, const void *p2)
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
startElementNS(void *userData, const XML_Char *name, const XML_Char **atts)
|
||||
{
|
||||
startElementNS(void *userData, const XML_Char *name, const XML_Char **atts) {
|
||||
int nAtts;
|
||||
int nsi;
|
||||
const XML_Char **p;
|
||||
@ -226,8 +218,7 @@ startElementNS(void *userData, const XML_Char *name, const XML_Char **atts)
|
||||
fputts(T(" xmlns:n1"), fp);
|
||||
attributeValue(fp, name);
|
||||
nsi = 2;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
fputts(name, fp);
|
||||
nsi = 1;
|
||||
}
|
||||
@ -245,8 +236,7 @@ startElementNS(void *userData, const XML_Char *name, const XML_Char **atts)
|
||||
if (sep) {
|
||||
ftprintf(fp, T("n%d:"), nsi);
|
||||
fputts(sep + 1, fp);
|
||||
}
|
||||
else
|
||||
} else
|
||||
fputts(name, fp);
|
||||
attributeValue(fp, *atts);
|
||||
if (sep) {
|
||||
@ -259,8 +249,7 @@ startElementNS(void *userData, const XML_Char *name, const XML_Char **atts)
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
endElementNS(void *userData, const XML_Char *name)
|
||||
{
|
||||
endElementNS(void *userData, const XML_Char *name) {
|
||||
FILE *fp = ((XmlwfUserData *)userData)->fp;
|
||||
const XML_Char *sep;
|
||||
puttc(T('<'), fp);
|
||||
@ -269,8 +258,7 @@ endElementNS(void *userData, const XML_Char *name)
|
||||
if (sep) {
|
||||
fputts(T("n1:"), fp);
|
||||
fputts(sep + 1, fp);
|
||||
}
|
||||
else
|
||||
} else
|
||||
fputts(name, fp);
|
||||
puttc(T('>'), fp);
|
||||
}
|
||||
@ -279,8 +267,7 @@ endElementNS(void *userData, const XML_Char *name)
|
||||
|
||||
static void XMLCALL
|
||||
processingInstruction(void *userData, const XML_Char *target,
|
||||
const XML_Char *data)
|
||||
{
|
||||
const XML_Char *data) {
|
||||
FILE *fp = ((XmlwfUserData *)userData)->fp;
|
||||
puttc(T('<'), fp);
|
||||
puttc(T('?'), fp);
|
||||
@ -291,9 +278,8 @@ processingInstruction(void *userData, const XML_Char *target,
|
||||
puttc(T('>'), fp);
|
||||
}
|
||||
|
||||
|
||||
static XML_Char *xcsdup(const XML_Char *s)
|
||||
{
|
||||
static XML_Char *
|
||||
xcsdup(const XML_Char *s) {
|
||||
XML_Char *result;
|
||||
int count = 0;
|
||||
int numBytes;
|
||||
@ -311,19 +297,18 @@ static XML_Char *xcsdup(const XML_Char *s)
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
startDoctypeDecl(void *userData,
|
||||
const XML_Char *doctypeName,
|
||||
const XML_Char *UNUSED_P(sysid),
|
||||
const XML_Char *UNUSED_P(publid),
|
||||
int UNUSED_P(has_internal_subset))
|
||||
{
|
||||
startDoctypeDecl(void *userData, const XML_Char *doctypeName,
|
||||
const XML_Char *sysid, const XML_Char *publid,
|
||||
int has_internal_subset) {
|
||||
XmlwfUserData *data = (XmlwfUserData *)userData;
|
||||
UNUSED_P(sysid);
|
||||
UNUSED_P(publid);
|
||||
UNUSED_P(has_internal_subset);
|
||||
data->currentDoctypeName = xcsdup(doctypeName);
|
||||
}
|
||||
|
||||
static void
|
||||
freeNotations(XmlwfUserData *data)
|
||||
{
|
||||
freeNotations(XmlwfUserData *data) {
|
||||
NotationList *notationListHead = data->notationListHead;
|
||||
|
||||
while (notationListHead != NULL) {
|
||||
@ -337,8 +322,8 @@ freeNotations(XmlwfUserData *data)
|
||||
data->notationListHead = NULL;
|
||||
}
|
||||
|
||||
static int xcscmp(const XML_Char *xs, const XML_Char *xt)
|
||||
{
|
||||
static int
|
||||
xcscmp(const XML_Char *xs, const XML_Char *xt) {
|
||||
while (*xs != 0 && *xt != 0) {
|
||||
if (*xs < *xt)
|
||||
return -1;
|
||||
@ -355,8 +340,7 @@ static int xcscmp(const XML_Char *xs, const XML_Char *xt)
|
||||
}
|
||||
|
||||
static int
|
||||
notationCmp(const void *a, const void *b)
|
||||
{
|
||||
notationCmp(const void *a, const void *b) {
|
||||
const NotationList *const n1 = *(NotationList **)a;
|
||||
const NotationList *const n2 = *(NotationList **)b;
|
||||
|
||||
@ -364,8 +348,7 @@ notationCmp(const void *a, const void *b)
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
endDoctypeDecl(void *userData)
|
||||
{
|
||||
endDoctypeDecl(void *userData) {
|
||||
XmlwfUserData *data = (XmlwfUserData *)userData;
|
||||
NotationList **notations;
|
||||
int notationCount = 0;
|
||||
@ -389,9 +372,7 @@ endDoctypeDecl(void *userData)
|
||||
return;
|
||||
}
|
||||
|
||||
for (p = data->notationListHead, i = 0;
|
||||
i < notationCount;
|
||||
p = p->next, i++) {
|
||||
for (p = data->notationListHead, i = 0; i < notationCount; p = p->next, i++) {
|
||||
notations[i] = p;
|
||||
}
|
||||
qsort(notations, notationCount, sizeof(NotationList *), notationCmp);
|
||||
@ -415,8 +396,7 @@ endDoctypeDecl(void *userData)
|
||||
fputts(notations[i]->systemId, data->fp);
|
||||
puttc(T('\''), data->fp);
|
||||
}
|
||||
}
|
||||
else if (notations[i]->systemId != NULL) {
|
||||
} else if (notations[i]->systemId != NULL) {
|
||||
fputts(T(" SYSTEM '"), data->fp);
|
||||
fputts(notations[i]->systemId, data->fp);
|
||||
puttc(T('\''), data->fp);
|
||||
@ -435,16 +415,13 @@ endDoctypeDecl(void *userData)
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
notationDecl(void *userData,
|
||||
const XML_Char *notationName,
|
||||
const XML_Char *UNUSED_P(base),
|
||||
const XML_Char *systemId,
|
||||
const XML_Char *publicId)
|
||||
{
|
||||
notationDecl(void *userData, const XML_Char *notationName, const XML_Char *base,
|
||||
const XML_Char *systemId, const XML_Char *publicId) {
|
||||
XmlwfUserData *data = (XmlwfUserData *)userData;
|
||||
NotationList *entry = malloc(sizeof(NotationList));
|
||||
const char *errorMessage = "Unable to store NOTATION for output\n";
|
||||
|
||||
UNUSED_P(base);
|
||||
if (entry == NULL) {
|
||||
fputs(errorMessage, stderr);
|
||||
return; /* Nothing we can really do about this */
|
||||
@ -463,8 +440,7 @@ notationDecl(void *userData,
|
||||
free(entry);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
entry->systemId = NULL;
|
||||
}
|
||||
if (publicId != NULL) {
|
||||
@ -476,8 +452,7 @@ notationDecl(void *userData,
|
||||
free(entry);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
entry->publicId = NULL;
|
||||
}
|
||||
|
||||
@ -488,96 +463,98 @@ notationDecl(void *userData,
|
||||
#endif /* not W3C14N */
|
||||
|
||||
static void XMLCALL
|
||||
defaultCharacterData(void *userData, const XML_Char *UNUSED_P(s), int UNUSED_P(len))
|
||||
{
|
||||
defaultCharacterData(void *userData, const XML_Char *s, int len) {
|
||||
UNUSED_P(s);
|
||||
UNUSED_P(len);
|
||||
XML_DefaultCurrent((XML_Parser)userData);
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
defaultStartElement(void *userData, const XML_Char *UNUSED_P(name),
|
||||
const XML_Char **UNUSED_P(atts))
|
||||
{
|
||||
defaultStartElement(void *userData, const XML_Char *name,
|
||||
const XML_Char **atts) {
|
||||
UNUSED_P(name);
|
||||
UNUSED_P(atts);
|
||||
XML_DefaultCurrent((XML_Parser)userData);
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
defaultEndElement(void *userData, const XML_Char *UNUSED_P(name))
|
||||
{
|
||||
defaultEndElement(void *userData, const XML_Char *name) {
|
||||
UNUSED_P(name);
|
||||
XML_DefaultCurrent((XML_Parser)userData);
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
defaultProcessingInstruction(void *userData, const XML_Char *UNUSED_P(target),
|
||||
const XML_Char *UNUSED_P(data))
|
||||
{
|
||||
defaultProcessingInstruction(void *userData, const XML_Char *target,
|
||||
const XML_Char *data) {
|
||||
UNUSED_P(target);
|
||||
UNUSED_P(data);
|
||||
XML_DefaultCurrent((XML_Parser)userData);
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
nopCharacterData(void *UNUSED_P(userData), const XML_Char *UNUSED_P(s), int UNUSED_P(len))
|
||||
{
|
||||
nopCharacterData(void *userData, const XML_Char *s, int len) {
|
||||
UNUSED_P(userData);
|
||||
UNUSED_P(s);
|
||||
UNUSED_P(len);
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
nopStartElement(void *UNUSED_P(userData), const XML_Char *UNUSED_P(name), const XML_Char **UNUSED_P(atts))
|
||||
{
|
||||
nopStartElement(void *userData, const XML_Char *name, const XML_Char **atts) {
|
||||
UNUSED_P(userData);
|
||||
UNUSED_P(name);
|
||||
UNUSED_P(atts);
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
nopEndElement(void *UNUSED_P(userData), const XML_Char *UNUSED_P(name))
|
||||
{
|
||||
nopEndElement(void *userData, const XML_Char *name) {
|
||||
UNUSED_P(userData);
|
||||
UNUSED_P(name);
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
nopProcessingInstruction(void *UNUSED_P(userData), const XML_Char *UNUSED_P(target),
|
||||
const XML_Char *UNUSED_P(data))
|
||||
{
|
||||
nopProcessingInstruction(void *userData, const XML_Char *target,
|
||||
const XML_Char *data) {
|
||||
UNUSED_P(userData);
|
||||
UNUSED_P(target);
|
||||
UNUSED_P(data);
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
markup(void *userData, const XML_Char *s, int len)
|
||||
{
|
||||
markup(void *userData, const XML_Char *s, int len) {
|
||||
FILE *fp = ((XmlwfUserData *)XML_GetUserData((XML_Parser)userData))->fp;
|
||||
for (; len > 0; --len, ++s)
|
||||
puttc(*s, fp);
|
||||
}
|
||||
|
||||
static void
|
||||
metaLocation(XML_Parser parser)
|
||||
{
|
||||
metaLocation(XML_Parser parser) {
|
||||
const XML_Char *uri = XML_GetBase(parser);
|
||||
FILE *fp = ((XmlwfUserData *)XML_GetUserData(parser))->fp;
|
||||
if (uri)
|
||||
ftprintf(fp, T(" uri=\"%s\""), uri);
|
||||
ftprintf(fp,
|
||||
T(" byte=\"%") T(XML_FMT_INT_MOD) T("d\"")
|
||||
T(" nbytes=\"%d\"")
|
||||
T(" line=\"%") T(XML_FMT_INT_MOD) T("u\"")
|
||||
T(" col=\"%") T(XML_FMT_INT_MOD) T("u\""),
|
||||
XML_GetCurrentByteIndex(parser),
|
||||
XML_GetCurrentByteCount(parser),
|
||||
T(" byte=\"%") T(XML_FMT_INT_MOD) T("d\"") T(" nbytes=\"%d\"")
|
||||
T(" line=\"%") T(XML_FMT_INT_MOD) T("u\"") T(" col=\"%")
|
||||
T(XML_FMT_INT_MOD) T("u\""),
|
||||
XML_GetCurrentByteIndex(parser), XML_GetCurrentByteCount(parser),
|
||||
XML_GetCurrentLineNumber(parser),
|
||||
XML_GetCurrentColumnNumber(parser));
|
||||
}
|
||||
|
||||
static void
|
||||
metaStartDocument(void *userData)
|
||||
{
|
||||
metaStartDocument(void *userData) {
|
||||
fputts(T("<document>\n"),
|
||||
((XmlwfUserData *)XML_GetUserData((XML_Parser)userData))->fp);
|
||||
}
|
||||
|
||||
static void
|
||||
metaEndDocument(void *userData)
|
||||
{
|
||||
metaEndDocument(void *userData) {
|
||||
fputts(T("</document>\n"),
|
||||
((XmlwfUserData *)XML_GetUserData((XML_Parser)userData))->fp);
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
metaStartElement(void *userData, const XML_Char *name,
|
||||
const XML_Char **atts)
|
||||
{
|
||||
metaStartElement(void *userData, const XML_Char *name, const XML_Char **atts) {
|
||||
XML_Parser parser = (XML_Parser)userData;
|
||||
XmlwfUserData *data = (XmlwfUserData *)XML_GetUserData(parser);
|
||||
FILE *fp = data->fp;
|
||||
@ -605,14 +582,12 @@ metaStartElement(void *userData, const XML_Char *name,
|
||||
fputts(T("\"/>\n"), fp);
|
||||
} while (*(atts += 2));
|
||||
fputts(T("</starttag>\n"), fp);
|
||||
}
|
||||
else
|
||||
} else
|
||||
fputts(T("/>\n"), fp);
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
metaEndElement(void *userData, const XML_Char *name)
|
||||
{
|
||||
metaEndElement(void *userData, const XML_Char *name) {
|
||||
XML_Parser parser = (XML_Parser)userData;
|
||||
XmlwfUserData *data = (XmlwfUserData *)XML_GetUserData(parser);
|
||||
FILE *fp = data->fp;
|
||||
@ -623,8 +598,7 @@ metaEndElement(void *userData, const XML_Char *name)
|
||||
|
||||
static void XMLCALL
|
||||
metaProcessingInstruction(void *userData, const XML_Char *target,
|
||||
const XML_Char *data)
|
||||
{
|
||||
const XML_Char *data) {
|
||||
XML_Parser parser = (XML_Parser)userData;
|
||||
XmlwfUserData *usrData = (XmlwfUserData *)XML_GetUserData(parser);
|
||||
FILE *fp = usrData->fp;
|
||||
@ -636,8 +610,7 @@ metaProcessingInstruction(void *userData, const XML_Char *target,
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
metaComment(void *userData, const XML_Char *data)
|
||||
{
|
||||
metaComment(void *userData, const XML_Char *data) {
|
||||
XML_Parser parser = (XML_Parser)userData;
|
||||
XmlwfUserData *usrData = (XmlwfUserData *)XML_GetUserData(parser);
|
||||
FILE *fp = usrData->fp;
|
||||
@ -649,8 +622,7 @@ metaComment(void *userData, const XML_Char *data)
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
metaStartCdataSection(void *userData)
|
||||
{
|
||||
metaStartCdataSection(void *userData) {
|
||||
XML_Parser parser = (XML_Parser)userData;
|
||||
XmlwfUserData *data = (XmlwfUserData *)XML_GetUserData(parser);
|
||||
FILE *fp = data->fp;
|
||||
@ -660,8 +632,7 @@ metaStartCdataSection(void *userData)
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
metaEndCdataSection(void *userData)
|
||||
{
|
||||
metaEndCdataSection(void *userData) {
|
||||
XML_Parser parser = (XML_Parser)userData;
|
||||
XmlwfUserData *data = (XmlwfUserData *)XML_GetUserData(parser);
|
||||
FILE *fp = data->fp;
|
||||
@ -671,8 +642,7 @@ metaEndCdataSection(void *userData)
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
metaCharacterData(void *userData, const XML_Char *s, int len)
|
||||
{
|
||||
metaCharacterData(void *userData, const XML_Char *s, int len) {
|
||||
XML_Parser parser = (XML_Parser)userData;
|
||||
XmlwfUserData *data = (XmlwfUserData *)XML_GetUserData(parser);
|
||||
FILE *fp = data->fp;
|
||||
@ -684,23 +654,22 @@ metaCharacterData(void *userData, const XML_Char *s, int len)
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
metaStartDoctypeDecl(void *userData,
|
||||
const XML_Char *doctypeName,
|
||||
const XML_Char *UNUSED_P(sysid),
|
||||
const XML_Char *UNUSED_P(pubid),
|
||||
int UNUSED_P(has_internal_subset))
|
||||
{
|
||||
metaStartDoctypeDecl(void *userData, const XML_Char *doctypeName,
|
||||
const XML_Char *sysid, const XML_Char *pubid,
|
||||
int has_internal_subset) {
|
||||
XML_Parser parser = (XML_Parser)userData;
|
||||
XmlwfUserData *data = (XmlwfUserData *)XML_GetUserData(parser);
|
||||
FILE *fp = data->fp;
|
||||
UNUSED_P(sysid);
|
||||
UNUSED_P(pubid);
|
||||
UNUSED_P(has_internal_subset);
|
||||
ftprintf(fp, T("<startdoctype name=\"%s\""), doctypeName);
|
||||
metaLocation(parser);
|
||||
fputts(T("/>\n"), fp);
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
metaEndDoctypeDecl(void *userData)
|
||||
{
|
||||
metaEndDoctypeDecl(void *userData) {
|
||||
XML_Parser parser = (XML_Parser)userData;
|
||||
XmlwfUserData *data = (XmlwfUserData *)XML_GetUserData(parser);
|
||||
FILE *fp = data->fp;
|
||||
@ -710,15 +679,13 @@ metaEndDoctypeDecl(void *userData)
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
metaNotationDecl(void *userData,
|
||||
const XML_Char *notationName,
|
||||
const XML_Char *UNUSED_P(base),
|
||||
const XML_Char *systemId,
|
||||
const XML_Char *publicId)
|
||||
{
|
||||
metaNotationDecl(void *userData, const XML_Char *notationName,
|
||||
const XML_Char *base, const XML_Char *systemId,
|
||||
const XML_Char *publicId) {
|
||||
XML_Parser parser = (XML_Parser)userData;
|
||||
XmlwfUserData *data = (XmlwfUserData *)XML_GetUserData(parser);
|
||||
FILE *fp = data->fp;
|
||||
UNUSED_P(base);
|
||||
ftprintf(fp, T("<notation name=\"%s\""), notationName);
|
||||
if (publicId)
|
||||
ftprintf(fp, T(" public=\"%s\""), publicId);
|
||||
@ -731,30 +698,24 @@ metaNotationDecl(void *userData,
|
||||
fputts(T("/>\n"), fp);
|
||||
}
|
||||
|
||||
|
||||
static void XMLCALL
|
||||
metaEntityDecl(void *userData,
|
||||
const XML_Char *entityName,
|
||||
int UNUSED_P(is_param),
|
||||
const XML_Char *value,
|
||||
int value_length,
|
||||
const XML_Char *UNUSED_P(base),
|
||||
const XML_Char *systemId,
|
||||
const XML_Char *publicId,
|
||||
const XML_Char *notationName)
|
||||
{
|
||||
metaEntityDecl(void *userData, const XML_Char *entityName, int is_param,
|
||||
const XML_Char *value, int value_length, const XML_Char *base,
|
||||
const XML_Char *systemId, const XML_Char *publicId,
|
||||
const XML_Char *notationName) {
|
||||
XML_Parser parser = (XML_Parser)userData;
|
||||
XmlwfUserData *data = (XmlwfUserData *)XML_GetUserData(parser);
|
||||
FILE *fp = data->fp;
|
||||
|
||||
UNUSED_P(is_param);
|
||||
UNUSED_P(base);
|
||||
if (value) {
|
||||
ftprintf(fp, T("<entity name=\"%s\""), entityName);
|
||||
metaLocation(parser);
|
||||
puttc(T('>'), fp);
|
||||
characterData(data, value, value_length);
|
||||
fputts(T("</entity/>\n"), fp);
|
||||
}
|
||||
else if (notationName) {
|
||||
} else if (notationName) {
|
||||
ftprintf(fp, T("<entity name=\"%s\""), entityName);
|
||||
if (publicId)
|
||||
ftprintf(fp, T(" public=\"%s\""), publicId);
|
||||
@ -764,8 +725,7 @@ metaEntityDecl(void *userData,
|
||||
ftprintf(fp, T(" notation=\"%s\""), notationName);
|
||||
metaLocation(parser);
|
||||
fputts(T("/>\n"), fp);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
ftprintf(fp, T("<entity name=\"%s\""), entityName);
|
||||
if (publicId)
|
||||
ftprintf(fp, T(" public=\"%s\""), publicId);
|
||||
@ -778,10 +738,8 @@ metaEntityDecl(void *userData,
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
metaStartNamespaceDecl(void *userData,
|
||||
const XML_Char *prefix,
|
||||
const XML_Char *uri)
|
||||
{
|
||||
metaStartNamespaceDecl(void *userData, const XML_Char *prefix,
|
||||
const XML_Char *uri) {
|
||||
XML_Parser parser = (XML_Parser)userData;
|
||||
XmlwfUserData *data = (XmlwfUserData *)XML_GetUserData(parser);
|
||||
FILE *fp = data->fp;
|
||||
@ -792,14 +750,12 @@ metaStartNamespaceDecl(void *userData,
|
||||
fputts(T(" ns=\""), fp);
|
||||
characterData(data, uri, (int)tcslen(uri));
|
||||
fputts(T("\"/>\n"), fp);
|
||||
}
|
||||
else
|
||||
} else
|
||||
fputts(T("/>\n"), fp);
|
||||
}
|
||||
|
||||
static void XMLCALL
|
||||
metaEndNamespaceDecl(void *userData, const XML_Char *prefix)
|
||||
{
|
||||
metaEndNamespaceDecl(void *userData, const XML_Char *prefix) {
|
||||
XML_Parser parser = (XML_Parser)userData;
|
||||
XmlwfUserData *data = (XmlwfUserData *)XML_GetUserData(parser);
|
||||
FILE *fp = data->fp;
|
||||
@ -810,19 +766,18 @@ metaEndNamespaceDecl(void *userData, const XML_Char *prefix)
|
||||
}
|
||||
|
||||
static int XMLCALL
|
||||
unknownEncodingConvert(void *data, const char *p)
|
||||
{
|
||||
unknownEncodingConvert(void *data, const char *p) {
|
||||
return codepageConvert(*(int *)data, p);
|
||||
}
|
||||
|
||||
static int XMLCALL
|
||||
unknownEncoding(void *UNUSED_P(userData), const XML_Char *name, XML_Encoding *info)
|
||||
{
|
||||
unknownEncoding(void *userData, const XML_Char *name, XML_Encoding *info) {
|
||||
int cp;
|
||||
static const XML_Char prefixL[] = T("windows-");
|
||||
static const XML_Char prefixU[] = T("WINDOWS-");
|
||||
int i;
|
||||
|
||||
UNUSED_P(userData);
|
||||
for (i = 0; prefixU[i]; i++)
|
||||
if (name[i] != prefixU[i] && name[i] != prefixL[i])
|
||||
return 0;
|
||||
@ -852,14 +807,13 @@ unknownEncoding(void *UNUSED_P(userData), const XML_Char *name, XML_Encoding *in
|
||||
}
|
||||
|
||||
static int XMLCALL
|
||||
notStandalone(void *UNUSED_P(userData))
|
||||
{
|
||||
notStandalone(void *userData) {
|
||||
UNUSED_P(userData);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
showVersion(XML_Char *prog)
|
||||
{
|
||||
showVersion(XML_Char *prog) {
|
||||
XML_Char *s = prog;
|
||||
XML_Char ch;
|
||||
const XML_Feature *features = XML_GetFeatureList();
|
||||
@ -889,10 +843,46 @@ showVersion(XML_Char *prog)
|
||||
}
|
||||
|
||||
static void
|
||||
usage(const XML_Char *prog, int rc)
|
||||
{
|
||||
ftprintf(stderr,
|
||||
T("usage: %s [-s] [-n] [-p] [-x] [-e encoding] [-w] [-d output-dir] [-c] [-m] [-r] [-t] [-N] [file ...]\n"), prog);
|
||||
usage(const XML_Char *prog, int rc) {
|
||||
ftprintf(
|
||||
stderr,
|
||||
/* Generated with:
|
||||
* $ xmlwf/xmlwf_helpgen.sh
|
||||
*/
|
||||
/* clang-format off */
|
||||
T("usage: %s [-s] [-n] [-p] [-x] [-e ENCODING] [-w] [-r] [-d DIRECTORY]\n")
|
||||
T(" [-c | -m | -t] [-N]\n")
|
||||
T(" [FILE [FILE ...]]\n")
|
||||
T("\n")
|
||||
T("xmlwf - Determines if an XML document is well-formed\n")
|
||||
T("\n")
|
||||
T("positional arguments:\n")
|
||||
T(" FILE files to process (default: STDIN)\n")
|
||||
T("\n")
|
||||
T("input control arguments:\n")
|
||||
T(" -s print an error if the document is not [s]tandalone\n")
|
||||
T(" -n enable [n]amespace processing\n")
|
||||
T(" -p enable processing external DTDs and [p]arameter entities\n")
|
||||
T(" -x enable processing of e[x]ternal entities\n")
|
||||
T(" -e ENCODING override any in-document [e]ncoding declaration\n")
|
||||
T(" -w enable support for [W]indows code pages\n")
|
||||
T(" -r disable memory-mapping and use normal file [r]ead IO calls instead\n")
|
||||
T("\n")
|
||||
T("output control arguments:\n")
|
||||
T(" -d DIRECTORY output [d]estination directory\n")
|
||||
T(" -c write a [c]opy of input XML, not canonical XML\n")
|
||||
T(" -m write [m]eta XML, not canonical XML\n")
|
||||
T(" -t write no XML output for [t]iming of plain parsing\n")
|
||||
T(" -N enable adding doctype and [n]otation declarations\n")
|
||||
T("\n")
|
||||
T("info arguments:\n")
|
||||
T(" -h show this [h]elp message and exit\n")
|
||||
T(" -v show program's [v]ersion number and exit\n")
|
||||
T("\n")
|
||||
T("libexpat is software libre, licensed under the MIT license.\n")
|
||||
T("Please report bugs at https://github.com/libexpat/libexpat/issues. Thank you!\n")
|
||||
, /* clang-format on */
|
||||
prog);
|
||||
exit(rc);
|
||||
}
|
||||
|
||||
@ -902,8 +892,7 @@ int wmain(int argc, XML_Char **argv);
|
||||
#endif
|
||||
|
||||
int
|
||||
tmain(int argc, XML_Char **argv)
|
||||
{
|
||||
tmain(int argc, XML_Char **argv) {
|
||||
int i, j;
|
||||
const XML_Char *outputDir = NULL;
|
||||
const XML_Char *encoding = NULL;
|
||||
@ -913,8 +902,8 @@ tmain(int argc, XML_Char **argv)
|
||||
int useNamespaces = 0;
|
||||
int requireStandalone = 0;
|
||||
int requiresNotations = 0;
|
||||
enum XML_ParamEntityParsing paramEntityParsing =
|
||||
XML_PARAM_ENTITY_PARSING_NEVER;
|
||||
enum XML_ParamEntityParsing paramEntityParsing
|
||||
= XML_PARAM_ENTITY_PARSING_NEVER;
|
||||
int useStdin = 0;
|
||||
XmlwfUserData userData = {NULL, NULL, NULL};
|
||||
|
||||
@ -980,8 +969,7 @@ tmain(int argc, XML_Char **argv)
|
||||
if (++i == argc)
|
||||
usage(argv[0], 2);
|
||||
outputDir = argv[i];
|
||||
}
|
||||
else
|
||||
} else
|
||||
outputDir = argv[i] + j + 1;
|
||||
i++;
|
||||
j = 0;
|
||||
@ -991,8 +979,7 @@ tmain(int argc, XML_Char **argv)
|
||||
if (++i == argc)
|
||||
usage(argv[0], 2);
|
||||
encoding = argv[i];
|
||||
}
|
||||
else
|
||||
} else
|
||||
encoding = argv[i] + j + 1;
|
||||
i++;
|
||||
j = 0;
|
||||
@ -1043,8 +1030,7 @@ tmain(int argc, XML_Char **argv)
|
||||
XML_SetElementHandler(parser, nopStartElement, nopEndElement);
|
||||
XML_SetCharacterDataHandler(parser, nopCharacterData);
|
||||
XML_SetProcessingInstructionHandler(parser, nopProcessingInstruction);
|
||||
}
|
||||
else if (outputDir) {
|
||||
} else if (outputDir) {
|
||||
const XML_Char *delim = T("/");
|
||||
const XML_Char *file = useStdin ? T("STDIN") : argv[i];
|
||||
if (! useStdin) {
|
||||
@ -1128,11 +1114,13 @@ tmain(int argc, XML_Char **argv)
|
||||
fclose(userData.fp);
|
||||
if (! result) {
|
||||
tremove(outName);
|
||||
exit(2);
|
||||
}
|
||||
free(outName);
|
||||
}
|
||||
XML_ParserFree(parser);
|
||||
if (! result) {
|
||||
exit(2);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
69
contrib/expat/xmlwf/xmlwf_helpgen.py
Executable file
69
contrib/expat/xmlwf/xmlwf_helpgen.py
Executable file
@ -0,0 +1,69 @@
|
||||
#! /usr/bin/env python3
|
||||
# __ __ _
|
||||
# ___\ \/ /_ __ __ _| |_
|
||||
# / _ \\ /| '_ \ / _` | __|
|
||||
# | __// \| |_) | (_| | |_
|
||||
# \___/_/\_\ .__/ \__,_|\__|
|
||||
# |_| XML parser
|
||||
#
|
||||
# Copyright (c) 2019 Expat development team
|
||||
# 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.
|
||||
|
||||
import argparse
|
||||
|
||||
epilog = """
|
||||
libexpat is software libre, licensed under the MIT license.
|
||||
Please report bugs at https://github.com/libexpat/libexpat/issues. Thank you!
|
||||
"""
|
||||
|
||||
parser = argparse.ArgumentParser(prog='xmlwf', add_help=False,
|
||||
description='xmlwf - Determines if an XML document is well-formed',
|
||||
formatter_class=argparse.RawTextHelpFormatter,
|
||||
epilog=epilog)
|
||||
|
||||
input_related = parser.add_argument_group('input control arguments')
|
||||
input_related.add_argument('-s', action='store_true', help='print an error if the document is not [s]tandalone')
|
||||
input_related.add_argument('-n', action='store_true', help='enable [n]amespace processing')
|
||||
input_related.add_argument('-p', action='store_true', help='enable processing external DTDs and [p]arameter entities')
|
||||
input_related.add_argument('-x', action='store_true', help='enable processing of e[x]ternal entities')
|
||||
input_related.add_argument('-e', action='store', metavar='ENCODING', help='override any in-document [e]ncoding declaration')
|
||||
input_related.add_argument('-w', action='store_true', help='enable support for [W]indows code pages')
|
||||
input_related.add_argument('-r', action='store_true', help='disable memory-mapping and use normal file [r]ead IO calls instead')
|
||||
|
||||
output_related = parser.add_argument_group('output control arguments')
|
||||
output_related.add_argument('-d', action='store', metavar='DIRECTORY', help='output [d]estination directory')
|
||||
output_mode = output_related.add_mutually_exclusive_group()
|
||||
output_mode.add_argument('-c', action='store_true', help='write a [c]opy of input XML, not canonical XML')
|
||||
output_mode.add_argument('-m', action='store_true', help='write [m]eta XML, not canonical XML')
|
||||
output_mode.add_argument('-t', action='store_true', help='write no XML output for [t]iming of plain parsing')
|
||||
output_related.add_argument('-N', action='store_true', help='enable adding doctype and [n]otation declarations')
|
||||
|
||||
parser.add_argument('files', metavar='FILE', nargs='*', help='files to process (default: STDIN)')
|
||||
|
||||
info = parser.add_argument_group('info arguments')
|
||||
info = info.add_mutually_exclusive_group()
|
||||
info.add_argument('-h', action='store_true', help='show this [h]elp message and exit')
|
||||
info.add_argument('-v', action='store_true', help='show program\'s [v]ersion number and exit')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser.print_help()
|
35
contrib/expat/xmlwf/xmlwf_helpgen.sh
Executable file
35
contrib/expat/xmlwf/xmlwf_helpgen.sh
Executable file
@ -0,0 +1,35 @@
|
||||
#! /usr/bin/env bash
|
||||
# __ __ _
|
||||
# ___\ \/ /_ __ __ _| |_
|
||||
# / _ \\ /| '_ \ / _` | __|
|
||||
# | __// \| |_) | (_| | |_
|
||||
# \___/_/\_\ .__/ \__,_|\__|
|
||||
# |_| XML parser
|
||||
#
|
||||
# Copyright (c) 2019 Expat development team
|
||||
# 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.
|
||||
|
||||
./xmlwf/xmlwf_helpgen.py | sed \
|
||||
-e 's,usage: xmlwf,usage: %s,' \
|
||||
-e 's, \[-h | -v\],,' \
|
||||
-e 's,^, T(",' \
|
||||
-e 's,$,\\n"),'
|
@ -5,7 +5,10 @@
|
||||
|
||||
#include <machine/endian.h>
|
||||
|
||||
/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */
|
||||
/* Define if building universal (internal helper macro) */
|
||||
/* #undef AC_APPLE_UNIVERSAL_BUILD */
|
||||
|
||||
/* 1234 = LILENDIAN, 4321 = BIGENDIAN */
|
||||
#if BYTE_ORDER == LITTLE_ENDIAN
|
||||
#define BYTEORDER 1234
|
||||
#else
|
||||
@ -18,9 +21,6 @@
|
||||
/* Define to 1 if you have the `arc4random_buf' function. */
|
||||
#define HAVE_ARC4RANDOM_BUF 1
|
||||
|
||||
/* Define to 1 if you have the `bcopy' function. */
|
||||
#define HAVE_BCOPY 1
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#define HAVE_DLFCN_H 1
|
||||
|
||||
@ -39,9 +39,6 @@
|
||||
/* Define to 1 if you have the `bsd' library (-lbsd). */
|
||||
/* #undef HAVE_LIBBSD */
|
||||
|
||||
/* Define to 1 if you have the `memmove' function. */
|
||||
#define HAVE_MEMMOVE 1
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#define HAVE_MEMORY_H 1
|
||||
|
||||
@ -88,7 +85,7 @@
|
||||
#define PACKAGE_NAME "expat"
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#define PACKAGE_STRING "expat 2.2.6"
|
||||
#define PACKAGE_STRING "expat 2.2.9"
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#define PACKAGE_TARNAME "expat"
|
||||
@ -97,20 +94,29 @@
|
||||
#define PACKAGE_URL ""
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#define PACKAGE_VERSION "2.2.6"
|
||||
#define PACKAGE_VERSION "2.2.9"
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#define STDC_HEADERS 1
|
||||
|
||||
/* Version number of package */
|
||||
#define VERSION "2.2.6"
|
||||
#define VERSION "2.2.9"
|
||||
|
||||
/* whether byteorder is bigendian */
|
||||
#if BYTE_ORDER == BIG_ENDIAN
|
||||
#define WORDS_BIGENDIAN
|
||||
#else
|
||||
#undef WORDS_BIGENDIAN
|
||||
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
|
||||
significant byte first (like Motorola and SPARC, unlike Intel). */
|
||||
#if defined AC_APPLE_UNIVERSAL_BUILD
|
||||
# if defined __BIG_ENDIAN__
|
||||
# define WORDS_BIGENDIAN 1
|
||||
# endif
|
||||
#else
|
||||
# ifndef WORDS_BIGENDIAN
|
||||
/* # undef WORDS_BIGENDIAN */
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Define to allow retrieving the byte offsets for attribute names and values.
|
||||
*/
|
||||
/* #undef XML_ATTR_INFO */
|
||||
|
||||
/* Define to specify how much context to retain around the current parse
|
||||
point. */
|
||||
|
@ -25,7 +25,7 @@
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"/
|
||||
.Dd November 2, 2018
|
||||
.Dd November 25, 2019
|
||||
.Dt LIBBSDXML 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -36,7 +36,7 @@
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm
|
||||
library is a verbatim copy of the eXpat XML library version 2.2.6.
|
||||
library is a verbatim copy of the eXpat XML library version 2.2.9.
|
||||
.Pp
|
||||
The
|
||||
.Nm
|
||||
|
Loading…
Reference in New Issue
Block a user