Author: akhaldi Date: Sat Jul 9 18:30:47 2016 New Revision: 71876
URL: http://svn.reactos.org/svn/reactos?rev=71876&view=rev Log: [LIBXSLT] Update to v1.1.29. CORE-11557
Modified: trunk/reactos/dll/3rdparty/libxslt/Makefile.am trunk/reactos/dll/3rdparty/libxslt/Makefile.in trunk/reactos/dll/3rdparty/libxslt/attributes.c trunk/reactos/dll/3rdparty/libxslt/extensions.c trunk/reactos/dll/3rdparty/libxslt/functions.c trunk/reactos/dll/3rdparty/libxslt/imports.c trunk/reactos/dll/3rdparty/libxslt/keys.c trunk/reactos/dll/3rdparty/libxslt/namespaces.c trunk/reactos/dll/3rdparty/libxslt/numbers.c trunk/reactos/dll/3rdparty/libxslt/pattern.c trunk/reactos/dll/3rdparty/libxslt/preproc.c trunk/reactos/dll/3rdparty/libxslt/transform.c trunk/reactos/dll/3rdparty/libxslt/variables.c trunk/reactos/dll/3rdparty/libxslt/xslt.c trunk/reactos/dll/3rdparty/libxslt/xsltconfig.h.in trunk/reactos/dll/3rdparty/libxslt/xsltutils.c trunk/reactos/media/doc/3rd Party Files.txt trunk/reactos/sdk/include/reactos/libs/libxslt/xsltInternals.h trunk/reactos/sdk/include/reactos/libs/libxslt/xsltconfig.h trunk/reactos/sdk/include/reactos/libs/libxslt/xsltlocale.h trunk/reactos/sdk/include/reactos/libs/libxslt/xsltutils.h
Modified: trunk/reactos/dll/3rdparty/libxslt/Makefile.am URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/3rdparty/libxslt/Makefi... ============================================================================== --- trunk/reactos/dll/3rdparty/libxslt/Makefile.am [iso-8859-1] (original) +++ trunk/reactos/dll/3rdparty/libxslt/Makefile.am [iso-8859-1] Sat Jul 9 18:30:47 2016 @@ -25,9 +25,10 @@ transform.h \ security.h \ xsltInternals.h \ - xsltconfig.h \ xsltexports.h \ xsltlocale.h +nodist_xsltinc_HEADERS = \ + xsltconfig.h
libxslt_la_SOURCES = \ attrvt.c \ @@ -50,9 +51,10 @@ transform.c \ security.c \ win32config.h \ - xsltwin32config.h \ xsltwin32config.h.in \ libxslt.h +nodist_libxslt_la_SOURCES = \ + xsltwin32config.h
if USE_VERSION_SCRIPT LIBXSLT_VERSION_SCRIPT = $(VERSION_SCRIPT_FLAGS)$(srcdir)/libxslt.syms
Modified: trunk/reactos/dll/3rdparty/libxslt/Makefile.in URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/3rdparty/libxslt/Makefi... ============================================================================== --- trunk/reactos/dll/3rdparty/libxslt/Makefile.in [iso-8859-1] (original) +++ trunk/reactos/dll/3rdparty/libxslt/Makefile.in [iso-8859-1] Sat Jul 9 18:30:47 2016 @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,61 @@
VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -53,13 +90,12 @@ build_triplet = @build@ host_triplet = @host@ subdir = libxslt -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(srcdir)/xsltconfig.h.in $(srcdir)/xsltwin32config.h.in \ - $(xsltinc_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(xsltinc_HEADERS) \ + $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = xsltconfig.h xsltwin32config.h @@ -92,7 +128,7 @@ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(man3dir)" \ - "$(DESTDIR)$(xsltincdir)" + "$(DESTDIR)$(xsltincdir)" "$(DESTDIR)$(xsltincdir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = libxslt_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) @@ -100,13 +136,28 @@ pattern.lo templates.lo variables.lo keys.lo numbers.lo \ extensions.lo extra.lo functions.lo namespaces.lo imports.lo \ attributes.lo documents.lo preproc.lo transform.lo security.lo -libxslt_la_OBJECTS = $(am_libxslt_la_OBJECTS) +nodist_libxslt_la_OBJECTS = +libxslt_la_OBJECTS = $(am_libxslt_la_OBJECTS) \ + $(nodist_libxslt_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libxslt_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libxslt_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -119,21 +170,17 @@ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -SOURCES = $(libxslt_la_SOURCES) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libxslt_la_SOURCES) $(nodist_libxslt_la_SOURCES) DIST_SOURCES = $(libxslt_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ @@ -143,9 +190,28 @@ man3dir = $(mandir)/man3 NROFF = nroff MANS = $(man_MANS) -HEADERS = $(xsltinc_HEADERS) +HEADERS = $(nodist_xsltinc_HEADERS) $(xsltinc_HEADERS) +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 +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/xsltconfig.h.in \ + $(srcdir)/xsltwin32config.h.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -161,6 +227,7 @@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CRYPTO_TESTDIR = @CRYPTO_TESTDIR@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -215,6 +282,7 @@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ @@ -346,9 +414,11 @@ transform.h \ security.h \ xsltInternals.h \ - xsltconfig.h \ xsltexports.h \ xsltlocale.h + +nodist_xsltinc_HEADERS = \ + xsltconfig.h
libxslt_la_SOURCES = \ attrvt.c \ @@ -371,9 +441,11 @@ transform.c \ security.c \ win32config.h \ - xsltwin32config.h \ xsltwin32config.h.in \ libxslt.h + +nodist_libxslt_la_SOURCES = \ + xsltwin32config.h
@USE_VERSION_SCRIPT_FALSE@LIBXSLT_VERSION_SCRIPT = @USE_VERSION_SCRIPT_TRUE@LIBXSLT_VERSION_SCRIPT = $(VERSION_SCRIPT_FLAGS)$(srcdir)/libxslt.syms @@ -401,7 +473,6 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libxslt/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu libxslt/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -423,6 +494,7 @@ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ xsltwin32config.h: $(top_builddir)/config.status $(srcdir)/xsltwin32config.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ @@ -449,12 +521,15 @@
clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f "$${dir}/so_locations""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libxslt.la: $(libxslt_la_OBJECTS) $(libxslt_la_DEPENDENCIES) $(EXTRA_libxslt_la_DEPENDENCIES) $(AM_V_CCLD)$(libxslt_la_LINK) -rpath $(libdir) $(libxslt_la_OBJECTS) $(libxslt_la_LIBADD) $(LIBS)
@@ -489,14 +564,14 @@ @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
.c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @@ -553,6 +628,27 @@ } | sed -e 's,.*/,,;h;s,.*.,,;s,^[^3][0-9a-z]*$$,3,;x' \ -e 's,.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir) +install-nodist_xsltincHEADERS: $(nodist_xsltinc_HEADERS) + @$(NORMAL_INSTALL) + @list='$(nodist_xsltinc_HEADERS)'; test -n "$(xsltincdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(xsltincdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(xsltincdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(xsltincdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(xsltincdir)" || exit $$?; \ + done + +uninstall-nodist_xsltincHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(nodist_xsltinc_HEADERS)'; test -n "$(xsltincdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(xsltincdir)'; $(am__uninstall_files_from_dir) install-xsltincHEADERS: $(xsltinc_HEADERS) @$(NORMAL_INSTALL) @list='$(xsltinc_HEADERS)'; test -n "$(xsltincdir)" || list=; \ @@ -575,26 +671,15 @@ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(xsltincdir)'; $(am__uninstall_files_from_dir)
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -606,15 +691,11 @@ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -623,24 +704,26 @@ here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\/]* | ?:[\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files
distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES) - @list='$(MANS)'; if test -n "$$list"; then \ - list=`for p in $$list; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ - if test -n "$$list" && \ - grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ - echo "error: found man pages containing the `missing help2man' replacement text:" >&2; \ - grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ - echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ - echo " typically `make maintainer-clean' will remove them" >&2; \ - exit 1; \ - else :; fi; \ - else :; fi @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\*]/\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\*]/\\&/g'`; \ list='$(DISTFILES)'; \ @@ -674,7 +757,7 @@ check: check-am all-am: Makefile $(LTLIBRARIES) $(MANS) $(HEADERS) installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(xsltincdir)"; do \ + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(xsltincdir)" "$(DESTDIR)$(xsltincdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am @@ -730,7 +813,8 @@
info-am:
-install-data-am: install-man install-xsltincHEADERS +install-data-am: install-man install-nodist_xsltincHEADERS \ + install-xsltincHEADERS
install-dvi: install-dvi-am
@@ -778,27 +862,31 @@ ps-am:
uninstall-am: uninstall-libLTLIBRARIES uninstall-man \ + uninstall-nodist_xsltincHEADERS uninstall-xsltincHEADERS + +uninstall-man: uninstall-man3 + +.MAKE: install-am install-exec-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 \ + 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-exec-hook install-html install-html-am \ + install-info install-info-am install-libLTLIBRARIES \ + install-man install-man3 install-nodist_xsltincHEADERS \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip install-xsltincHEADERS installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES \ + uninstall-man uninstall-man3 uninstall-nodist_xsltincHEADERS \ uninstall-xsltincHEADERS
-uninstall-man: uninstall-man3 - -.MAKE: install-am install-exec-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libLTLIBRARIES clean-libtool ctags 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-exec-hook \ - install-html install-html-am install-info install-info-am \ - install-libLTLIBRARIES install-man install-man3 install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - install-xsltincHEADERS installcheck installcheck-am \ - installdirs maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-libLTLIBRARIES uninstall-man \ - uninstall-man3 uninstall-xsltincHEADERS +.PRECIOUS: Makefile
xsltproc: all
Modified: trunk/reactos/dll/3rdparty/libxslt/attributes.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/3rdparty/libxslt/attrib... ============================================================================== --- trunk/reactos/dll/3rdparty/libxslt/attributes.c [iso-8859-1] (original) +++ trunk/reactos/dll/3rdparty/libxslt/attributes.c [iso-8859-1] Sat Jul 9 18:30:47 2016 @@ -259,9 +259,11 @@ return;
value = xmlGetNsProp(cur, (const xmlChar *)"name", NULL); - if (value == NULL) { + if ((value == NULL) || (*value == 0)) { xsltGenericError(xsltGenericErrorContext, "xsl:attribute-set : name is missing\n"); + if (value) + xmlFree(value); return; }
@@ -444,19 +446,27 @@ }
/** - * xsltResolveSASCallback,: + * xsltResolveSASCallbackInt: * @style: the XSLT stylesheet * * resolve the references in an attribute set. */ static void -xsltResolveSASCallback(xsltAttrElemPtr values, xsltStylesheetPtr style, +xsltResolveSASCallbackInt(xsltAttrElemPtr values, xsltStylesheetPtr style, const xmlChar *name, const xmlChar *ns, - ATTRIBUTE_UNUSED const xmlChar *ignored) { + int depth) { xsltAttrElemPtr tmp; xsltAttrElemPtr refs;
tmp = values; + if ((name == NULL) || (name[0] == 0)) + return; + if (depth > 100) { + xsltGenericError(xsltGenericErrorContext, + "xsl:attribute-set : use-attribute-sets recursion detected on %s\n", + name); + return; + } while (tmp != NULL) { if (tmp->set != NULL) { /* @@ -481,7 +491,7 @@ /* * recurse first for cleanup */ - xsltResolveSASCallback(refs, style, name, ns, NULL); + xsltResolveSASCallbackInt(refs, style, name, ns, depth + 1); /* * Then merge */ @@ -496,6 +506,19 @@ } tmp = tmp->next; } +} + +/** + * xsltResolveSASCallback,: + * @style: the XSLT stylesheet + * + * resolve the references in an attribute set. + */ +static void +xsltResolveSASCallback(xsltAttrElemPtr values, xsltStylesheetPtr style, + const xmlChar *name, const xmlChar *ns, + ATTRIBUTE_UNUSED const xmlChar *ignored) { + xsltResolveSASCallbackInt(values, style, name, ns, 1); }
/**
Modified: trunk/reactos/dll/3rdparty/libxslt/extensions.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/3rdparty/libxslt/extens... ============================================================================== --- trunk/reactos/dll/3rdparty/libxslt/extensions.c [iso-8859-1] (original) +++ trunk/reactos/dll/3rdparty/libxslt/extensions.c [iso-8859-1] Sat Jul 9 18:30:47 2016 @@ -350,8 +350,11 @@ i++; }
- if (*(i - 1) == '_') + /* Strip underscores from end of string. */ + while (i > ext_name && *(i - 1) == '_') { + i--; *i = '\0'; + }
/* determine module directory */ ext_directory = (xmlChar *) getenv("LIBXSLT_PLUGINS_PATH"); @@ -1605,7 +1608,7 @@ xsltPreComputeFunction precomp, xsltTransformFunction transform) { - int ret; + int ret = 0;
xsltExtElementPtr ext;
@@ -1631,7 +1634,7 @@ done: xmlMutexUnlock(xsltExtMutex);
- return (0); + return (ret); }
/**
Modified: trunk/reactos/dll/3rdparty/libxslt/functions.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/3rdparty/libxslt/functi... ============================================================================== --- trunk/reactos/dll/3rdparty/libxslt/functions.c [iso-8859-1] (original) +++ trunk/reactos/dll/3rdparty/libxslt/functions.c [iso-8859-1] Sat Jul 9 18:30:47 2016 @@ -152,7 +152,6 @@ resObj = xmlXPtrEval(fragment, xptrctxt); xmlXPathFreeContext(xptrctxt); #endif - xmlFree(fragment);
if (resObj == NULL) goto out_fragment; @@ -176,6 +175,7 @@ }
valuePush(ctxt, resObj); + xmlFree(fragment); return;
out_object: @@ -183,6 +183,7 @@
out_fragment: valuePush(ctxt, xmlXPathNewNodeSet(NULL)); + xmlFree(fragment); }
/** @@ -637,7 +638,6 @@ xmlXPathObjectPtr obj = NULL; long val; xmlChar str[30]; - xmlDocPtr doc;
if (nargs == 0) { cur = ctxt->context->node; @@ -670,30 +670,15 @@ ctxt->error = XPATH_INVALID_ARITY; return; } - /* - * Okay this is ugly but should work, use the NodePtr address - * to forge the ID - */ - if (cur->type != XML_NAMESPACE_DECL) - doc = cur->doc; - else { - xmlNsPtr ns = (xmlNsPtr) cur; - - if (ns->context != NULL) - doc = ns->context; - else - doc = ctxt->context->doc; - - }
if (obj) xmlXPathFreeObject(obj);
val = (long)((char *)cur - (char *)&base_address); if (val >= 0) { - sprintf((char *)str, "idp%ld", val); - } else { - sprintf((char *)str, "idm%ld", -val); + snprintf((char *)str, sizeof(str), "idp%ld", val); + } else { + snprintf((char *)str, sizeof(str), "idm%ld", -val); } valuePush(ctxt, xmlXPathNewString(str)); }
Modified: trunk/reactos/dll/3rdparty/libxslt/imports.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/3rdparty/libxslt/import... ============================================================================== --- trunk/reactos/dll/3rdparty/libxslt/imports.c [iso-8859-1] (original) +++ trunk/reactos/dll/3rdparty/libxslt/imports.c [iso-8859-1] Sat Jul 9 18:30:47 2016 @@ -363,17 +363,12 @@ return(NULL); style = ctxt->style; while (style != NULL) { - cur = style->templates; - while (cur != NULL) { - if (xmlStrEqual(name, cur->name)) { - if (((nameURI == NULL) && (cur->nameURI == NULL)) || - ((nameURI != NULL) && (cur->nameURI != NULL) && - (xmlStrEqual(nameURI, cur->nameURI)))) { - return(cur); - } - } - cur = cur->next; - } + if (style->namedTemplates != NULL) { + cur = (xsltTemplatePtr) + xmlHashLookup2(style->namedTemplates, name, nameURI); + if (cur != NULL) + return(cur); + }
style = xsltNextImport(style); }
Modified: trunk/reactos/dll/3rdparty/libxslt/keys.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/3rdparty/libxslt/keys.c... ============================================================================== --- trunk/reactos/dll/3rdparty/libxslt/keys.c [iso-8859-1] (original) +++ trunk/reactos/dll/3rdparty/libxslt/keys.c [iso-8859-1] Sat Jul 9 18:30:47 2016 @@ -741,6 +741,7 @@ cur = matchList->nodeTab[i]; if (! IS_XSLT_REAL_NODE(cur)) continue; + ctxt->node = cur; xpctxt->node = cur; /* * Process the 'use' of the xsl:key.
Modified: trunk/reactos/dll/3rdparty/libxslt/namespaces.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/3rdparty/libxslt/namesp... ============================================================================== --- trunk/reactos/dll/3rdparty/libxslt/namespaces.c [iso-8859-1] (original) +++ trunk/reactos/dll/3rdparty/libxslt/namespaces.c [iso-8859-1] Sat Jul 9 18:30:47 2016 @@ -752,8 +752,10 @@ /* TODO apply cascading */ URI = (const xmlChar *) xmlHashLookup(ctxt->style->nsAliases, cur->href); - if (URI == UNDEFINED_DEFAULT_NS) + if (URI == UNDEFINED_DEFAULT_NS) { + cur = cur->next; continue; + } if (URI != NULL) { q = xmlNewNs(node, URI, cur->prefix); } else {
Modified: trunk/reactos/dll/3rdparty/libxslt/numbers.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/3rdparty/libxslt/number... ============================================================================== --- trunk/reactos/dll/3rdparty/libxslt/numbers.c [iso-8859-1] (original) +++ trunk/reactos/dll/3rdparty/libxslt/numbers.c [iso-8859-1] Sat Jul 9 18:30:47 2016 @@ -210,7 +210,8 @@ }
static void -xsltNumberFormatAlpha(xmlBufferPtr buffer, +xsltNumberFormatAlpha(xsltNumberDataPtr data, + xmlBufferPtr buffer, double number, int is_upper) { @@ -220,6 +221,26 @@ char *alpha_list; double alpha_size = (double)(sizeof(alpha_upper_list) - 1);
+ /* + * XSLT 1.0 isn't clear on how to handle zero, but XSLT 2.0 says: + * + * For all format tokens other than the first kind above (one that + * consists of decimal digits), there may be implementation-defined + * lower and upper bounds on the range of numbers that can be + * formatted using this format token; indeed, for some numbering + * sequences there may be intrinsic limits. [...] Numbers that fall + * outside this range must be formatted using the format token 1. + * + * The "a" token has an intrinsic lower limit of 1. + */ + if (number < 1.0) { + xsltNumberFormatDecimal(buffer, number, '0', 1, + data->digitsPerGroup, + data->groupingCharacter, + data->groupingCharacterLen); + return; + } + /* Build buffer from back */ pointer = &temp_string[sizeof(temp_string)]; *(--pointer) = 0; @@ -229,17 +250,30 @@ number--; *(--pointer) = alpha_list[((int)fmod(number, alpha_size))]; number /= alpha_size; - if (fabs(number) < 1.0) + if (number < 1.0) break; /* for */ } xmlBufferCCat(buffer, pointer); }
static void -xsltNumberFormatRoman(xmlBufferPtr buffer, +xsltNumberFormatRoman(xsltNumberDataPtr data, + xmlBufferPtr buffer, double number, int is_upper) { + /* + * See discussion in xsltNumberFormatAlpha. Also use a reasonable upper + * bound to avoid denial of service. + */ + if (number < 1.0 || number > 5000.0) { + xsltNumberFormatDecimal(buffer, number, '0', 1, + data->digitsPerGroup, + data->groupingCharacter, + data->groupingCharacterLen); + return; + } + /* * Based on an example by Jim Walsh */ @@ -423,6 +457,23 @@ for (i = 0; i < numbers_max; i++) { /* Insert number */ number = numbers[(numbers_max - 1) - i]; + /* Round to nearest like XSLT 2.0 */ + number = floor(number + 0.5); + /* + * XSLT 1.0 isn't clear on how to handle negative numbers, but XSLT + * 2.0 says: + * + * It is a non-recoverable dynamic error if any undiscarded item + * in the atomized sequence supplied as the value of the value + * attribute of xsl:number cannot be converted to an integer, or + * if the resulting integer is less than 0 (zero). + */ + if (number < 0.0) { + xsltTransformError(NULL, NULL, NULL, + "xsl-number : negative value\n"); + /* Recover by treating negative values as zero. */ + number = 0.0; + } if (i < tokens->nTokens) { /* * The "n"th format token will be used to format the "n"th @@ -466,28 +517,16 @@
switch (token->token) { case 'A': - xsltNumberFormatAlpha(buffer, - number, - TRUE); - + xsltNumberFormatAlpha(data, buffer, number, TRUE); break; case 'a': - xsltNumberFormatAlpha(buffer, - number, - FALSE); - + xsltNumberFormatAlpha(data, buffer, number, FALSE); break; case 'I': - xsltNumberFormatRoman(buffer, - number, - TRUE); - + xsltNumberFormatRoman(data, buffer, number, TRUE); break; case 'i': - xsltNumberFormatRoman(buffer, - number, - FALSE); - + xsltNumberFormatRoman(data, buffer, number, FALSE); break; default: if (IS_DIGIT_ZERO(token->token)) { @@ -515,13 +554,48 @@ }
static int +xsltTestCompMatchCount(xsltTransformContextPtr context, + xmlNodePtr node, + xsltCompMatchPtr countPat, + xmlNodePtr cur) +{ + if (countPat != NULL) { + return xsltTestCompMatchList(context, node, countPat); + } + else { + /* + * 7.7 Numbering + * + * If count attribute is not specified, then it defaults to the + * pattern that matches any node with the same node type as the + * current node and, if the current node has an expanded-name, with + * the same expanded-name as the current node. + */ + if (node->type != cur->type) + return 0; + if (node->type == XML_NAMESPACE_DECL) + /* + * Namespace nodes have no preceding siblings and no parents + * that are namespace nodes. This means that node == cur. + */ + return 1; + /* TODO: Skip node types without expanded names like text nodes. */ + if (!xmlStrEqual(node->name, cur->name)) + return 0; + if (node->ns == cur->ns) + return 1; + if ((node->ns == NULL) || (cur->ns == NULL)) + return 0; + return (xmlStrEqual(node->ns->href, cur->ns->href)); + } +} + +static int xsltNumberFormatGetAnyLevel(xsltTransformContextPtr context, xmlNodePtr node, xsltCompMatchPtr countPat, xsltCompMatchPtr fromPat, - double *array, - xmlDocPtr doc, - xmlNodePtr elem) + double *array) { int amount = 0; int cnt = 0; @@ -547,21 +621,8 @@
while (cur != NULL) { /* process current node */ - if (countPat == NULL) { - if ((node->type == cur->type) && - /* FIXME: must use expanded-name instead of local name */ - xmlStrEqual(node->name, cur->name)) { - if ((node->ns == cur->ns) || - ((node->ns != NULL) && - (cur->ns != NULL) && - (xmlStrEqual(node->ns->href, - cur->ns->href) ))) - cnt++; - } - } else { - if (xsltTestCompMatchList(context, cur, countPat)) - cnt++; - } + if (xsltTestCompMatchCount(context, cur, countPat, node)) + cnt++; if ((fromPat != NULL) && xsltTestCompMatchList(context, cur, fromPat)) { break; /* while */ @@ -598,9 +659,7 @@ xsltCompMatchPtr countPat, xsltCompMatchPtr fromPat, double *array, - int max, - xmlDocPtr doc, - xmlNodePtr elem) + int max) { int amount = 0; int cnt; @@ -620,30 +679,18 @@ xsltTestCompMatchList(context, ancestor, fromPat)) break; /* for */
- if ((countPat == NULL && node->type == ancestor->type && - xmlStrEqual(node->name, ancestor->name)) || - xsltTestCompMatchList(context, ancestor, countPat)) { + if (xsltTestCompMatchCount(context, ancestor, countPat, node)) { /* count(preceding-sibling::*) */ - cnt = 0; - for (preceding = ancestor; + cnt = 1; + for (preceding = + xmlXPathNextPrecedingSibling(parser, ancestor); preceding != NULL; preceding = xmlXPathNextPrecedingSibling(parser, preceding)) { - if (countPat == NULL) { - if ((preceding->type == ancestor->type) && - xmlStrEqual(preceding->name, ancestor->name)){ - if ((preceding->ns == ancestor->ns) || - ((preceding->ns != NULL) && - (ancestor->ns != NULL) && - (xmlStrEqual(preceding->ns->href, - ancestor->ns->href) ))) - cnt++; - } - } else { - if (xsltTestCompMatchList(context, preceding, - countPat)) - cnt++; - } + + if (xsltTestCompMatchCount(context, preceding, countPat, + node)) + cnt++; } array[amount++] = (double)cnt; if (amount >= max) @@ -700,23 +747,28 @@ int amount, i; double number; xsltFormat tokens; - int tempformat = 0; - - if ((data->format == NULL) && (data->has_format != 0)) { - data->format = xsltEvalAttrValueTemplate(ctxt, data->node, + + if (data->format != NULL) { + xsltNumberFormatTokenize(data->format, &tokens); + } + else { + xmlChar *format; + + /* The format needs to be recomputed each time */ + if (data->has_format == 0) + return; + format = xsltEvalAttrValueTemplate(ctxt, data->node, (const xmlChar *) "format", XSLT_NAMESPACE); - tempformat = 1; - } - if (data->format == NULL) { - return; + if (format == NULL) + return; + xsltNumberFormatTokenize(format, &tokens); + xmlFree(format); }
output = xmlBufferCreate(); if (output == NULL) goto XSLT_NUMBER_FORMAT_END; - - xsltNumberFormatTokenize(data->format, &tokens);
/* * Evaluate the XPath expression to find the value(s) @@ -742,9 +794,7 @@ data->countPat, data->fromPat, &number, - 1, - data->doc, - data->node); + 1); if (amount == 1) { xsltNumberFormatInsertNumbers(data, &number, @@ -760,9 +810,7 @@ data->countPat, data->fromPat, numarray, - max, - data->doc, - data->node); + max); if (amount > 0) { xsltNumberFormatInsertNumbers(data, numarray, @@ -775,9 +823,7 @@ node, data->countPat, data->fromPat, - &number, - data->doc, - data->node); + &number); if (amount > 0) { xsltNumberFormatInsertNumbers(data, &number, @@ -790,6 +836,9 @@ /* Insert number as text node */ xsltCopyTextString(ctxt, ctxt->insert, xmlBufferContent(output), 0);
+ xmlBufferFree(output); + +XSLT_NUMBER_FORMAT_END: if (tokens.start != NULL) xmlFree(tokens.start); if (tokens.end != NULL) @@ -798,14 +847,6 @@ if (tokens.tokens[i].separator != NULL) xmlFree(tokens.tokens[i].separator); } - -XSLT_NUMBER_FORMAT_END: - if (tempformat == 1) { - /* The format need to be recomputed each time */ - data->format = NULL; - } - if (output != NULL) - xmlBufferFree(output); }
static int
Modified: trunk/reactos/dll/3rdparty/libxslt/pattern.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/3rdparty/libxslt/patter... ============================================================================== --- trunk/reactos/dll/3rdparty/libxslt/pattern.c [iso-8859-1] (original) +++ trunk/reactos/dll/3rdparty/libxslt/pattern.c [iso-8859-1] Sat Jul 9 18:30:47 2016 @@ -432,11 +432,14 @@ xsltCompMatchAdd(ctxt, comp, XSLT_OP_END, NULL, NULL, 0);
/* - * detect consecutive XSLT_OP_PREDICATE indicating a direct - * matching should be done. + * Detect consecutive XSLT_OP_PREDICATE and predicates on ops which + * haven't been optimized yet indicating a direct matching should be done. */ for (i = 0;i < comp->nbStep - 1;i++) { - if ((comp->steps[i].op == XSLT_OP_PREDICATE) && + xsltOp op = comp->steps[i].op; + + if ((op != XSLT_OP_ELEM) && + (op != XSLT_OP_ALL) && (comp->steps[i + 1].op == XSLT_OP_PREDICATE)) {
comp->direct = 1; @@ -602,6 +605,280 @@ }
/** + * xsltTestPredicateMatch: + * @ctxt: a XSLT process context + * @comp: the precompiled pattern + * @node: a node + * @step: the predicate step + * @sel: the previous step + * + * Test whether the node matches the predicate + * + * Returns 1 if it matches, 0 if it doesn't and -1 in case of failure + */ +static int +xsltTestPredicateMatch(xsltTransformContextPtr ctxt, xsltCompMatchPtr comp, + xmlNodePtr node, xsltStepOpPtr step, + xsltStepOpPtr sel) { + xmlNodePtr oldNode; + xmlDocPtr doc; + int oldCS, oldCP; + int pos = 0, len = 0; + int isRVT; + int match; + + if (step->value == NULL) + return(0); + if (step->comp == NULL) + return(0); + + doc = node->doc; + if (XSLT_IS_RES_TREE_FRAG(doc)) + isRVT = 1; + else + isRVT = 0; + + /* + * Recompute contextSize and proximityPosition. + * + * TODO: Make this work for additional ops. Currently, only XSLT_OP_ELEM + * and XSLT_OP_ALL are supported. + */ + oldCS = ctxt->xpathCtxt->contextSize; + oldCP = ctxt->xpathCtxt->proximityPosition; + if ((sel != NULL) && + (sel->op == XSLT_OP_ELEM) && + (sel->value != NULL) && + (node->type == XML_ELEMENT_NODE) && + (node->parent != NULL)) { + xmlNodePtr previous; + int nocache = 0; + + previous = (xmlNodePtr) + XSLT_RUNTIME_EXTRA(ctxt, sel->previousExtra, ptr); + if ((previous != NULL) && + (previous->parent == node->parent)) { + /* + * just walk back to adjust the index + */ + int indx = 0; + xmlNodePtr sibling = node; + + while (sibling != NULL) { + if (sibling == previous) + break; + if ((sibling->type == XML_ELEMENT_NODE) && + (previous->name != NULL) && + (sibling->name != NULL) && + (previous->name[0] == sibling->name[0]) && + (xmlStrEqual(previous->name, sibling->name))) + { + if ((sel->value2 == NULL) || + ((sibling->ns != NULL) && + (xmlStrEqual(sel->value2, sibling->ns->href)))) + indx++; + } + sibling = sibling->prev; + } + if (sibling == NULL) { + /* hum going backward in document order ... */ + indx = 0; + sibling = node; + while (sibling != NULL) { + if (sibling == previous) + break; + if ((sibling->type == XML_ELEMENT_NODE) && + (previous->name != NULL) && + (sibling->name != NULL) && + (previous->name[0] == sibling->name[0]) && + (xmlStrEqual(previous->name, sibling->name))) + { + if ((sel->value2 == NULL) || + ((sibling->ns != NULL) && + (xmlStrEqual(sel->value2, + sibling->ns->href)))) + { + indx--; + } + } + sibling = sibling->next; + } + } + if (sibling != NULL) { + pos = XSLT_RUNTIME_EXTRA(ctxt, sel->indexExtra, ival) + indx; + /* + * If the node is in a Value Tree we need to + * save len, but cannot cache the node! + * (bugs 153137 and 158840) + */ + if (node->doc != NULL) { + len = XSLT_RUNTIME_EXTRA(ctxt, sel->lenExtra, ival); + if (!isRVT) { + XSLT_RUNTIME_EXTRA(ctxt, + sel->previousExtra, ptr) = node; + XSLT_RUNTIME_EXTRA(ctxt, sel->indexExtra, ival) = pos; + } + } + } else + pos = 0; + } else { + /* + * recompute the index + */ + xmlNodePtr parent = node->parent; + xmlNodePtr siblings = NULL; + + if (parent) siblings = parent->children; + + while (siblings != NULL) { + if (siblings->type == XML_ELEMENT_NODE) { + if (siblings == node) { + len++; + pos = len; + } else if ((node->name != NULL) && + (siblings->name != NULL) && + (node->name[0] == siblings->name[0]) && + (xmlStrEqual(node->name, siblings->name))) { + if ((sel->value2 == NULL) || + ((siblings->ns != NULL) && + (xmlStrEqual(sel->value2, siblings->ns->href)))) + len++; + } + } + siblings = siblings->next; + } + if ((parent == NULL) || (node->doc == NULL)) + nocache = 1; + else { + while (parent->parent != NULL) + parent = parent->parent; + if (((parent->type != XML_DOCUMENT_NODE) && + (parent->type != XML_HTML_DOCUMENT_NODE)) || + (parent != (xmlNodePtr) node->doc)) + nocache = 1; + } + } + if (pos != 0) { + ctxt->xpathCtxt->contextSize = len; + ctxt->xpathCtxt->proximityPosition = pos; + /* + * If the node is in a Value Tree we cannot + * cache it ! + */ + if ((!isRVT) && (node->doc != NULL) && + (nocache == 0)) { + XSLT_RUNTIME_EXTRA(ctxt, sel->previousExtra, ptr) = node; + XSLT_RUNTIME_EXTRA(ctxt, sel->indexExtra, ival) = pos; + XSLT_RUNTIME_EXTRA(ctxt, sel->lenExtra, ival) = len; + } + } + } else if ((sel != NULL) && (sel->op == XSLT_OP_ALL) && + (node->type == XML_ELEMENT_NODE)) { + xmlNodePtr previous; + int nocache = 0; + + previous = (xmlNodePtr) + XSLT_RUNTIME_EXTRA(ctxt, sel->previousExtra, ptr); + if ((previous != NULL) && + (previous->parent == node->parent)) { + /* + * just walk back to adjust the index + */ + int indx = 0; + xmlNodePtr sibling = node; + + while (sibling != NULL) { + if (sibling == previous) + break; + if (sibling->type == XML_ELEMENT_NODE) + indx++; + sibling = sibling->prev; + } + if (sibling == NULL) { + /* hum going backward in document order ... */ + indx = 0; + sibling = node; + while (sibling != NULL) { + if (sibling == previous) + break; + if (sibling->type == XML_ELEMENT_NODE) + indx--; + sibling = sibling->next; + } + } + if (sibling != NULL) { + pos = XSLT_RUNTIME_EXTRA(ctxt, + sel->indexExtra, ival) + indx; + /* + * If the node is in a Value Tree we cannot + * cache it ! + */ + if ((node->doc != NULL) && !isRVT) { + len = XSLT_RUNTIME_EXTRA(ctxt, sel->lenExtra, ival); + XSLT_RUNTIME_EXTRA(ctxt, sel->previousExtra, ptr) = node; + XSLT_RUNTIME_EXTRA(ctxt, sel->indexExtra, ival) = pos; + } + } else + pos = 0; + } else { + /* + * recompute the index + */ + xmlNodePtr parent = node->parent; + xmlNodePtr siblings = NULL; + + if (parent) siblings = parent->children; + + while (siblings != NULL) { + if (siblings->type == XML_ELEMENT_NODE) { + len++; + if (siblings == node) { + pos = len; + } + } + siblings = siblings->next; + } + if ((parent == NULL) || (node->doc == NULL)) + nocache = 1; + else { + while (parent->parent != NULL) + parent = parent->parent; + if (((parent->type != XML_DOCUMENT_NODE) && + (parent->type != XML_HTML_DOCUMENT_NODE)) || + (parent != (xmlNodePtr) node->doc)) + nocache = 1; + } + } + if (pos != 0) { + ctxt->xpathCtxt->contextSize = len; + ctxt->xpathCtxt->proximityPosition = pos; + /* + * If the node is in a Value Tree we cannot + * cache it ! + */ + if ((node->doc != NULL) && (nocache == 0) && !isRVT) { + XSLT_RUNTIME_EXTRA(ctxt, sel->previousExtra, ptr) = node; + XSLT_RUNTIME_EXTRA(ctxt, sel->indexExtra, ival) = pos; + XSLT_RUNTIME_EXTRA(ctxt, sel->lenExtra, ival) = len; + } + } + } + + oldNode = ctxt->node; + ctxt->node = node; + + match = xsltEvalXPathPredicate(ctxt, step->comp, comp->nsList, comp->nsNr); + + if (pos != 0) { + ctxt->xpathCtxt->contextSize = oldCS; + ctxt->xpathCtxt->proximityPosition = oldCP; + } + ctxt->node = oldNode; + + return match; +} + +/** * xsltTestCompMatch: * @ctxt: a XSLT process context * @comp: the precompiled pattern @@ -615,9 +892,10 @@ */ static int xsltTestCompMatch(xsltTransformContextPtr ctxt, xsltCompMatchPtr comp, - xmlNodePtr node, const xmlChar *mode, + xmlNodePtr matchNode, const xmlChar *mode, const xmlChar *modeURI) { int i; + xmlNodePtr node = matchNode; xsltStepOpPtr step, sel = NULL; xsltStepStates states = {0, 0, NULL}; /* // may require backtrack */
@@ -835,14 +1113,9 @@ goto rollback; break; case XSLT_OP_PREDICATE: { - xmlNodePtr oldNode; - xmlDocPtr doc; - int oldCS, oldCP; - int pos = 0, len = 0; - int isRVT; - /* - * when there is cascading XSLT_OP_PREDICATE, then use a + * When there is cascading XSLT_OP_PREDICATE or a predicate + * after an op which hasn't been optimized yet, then use a * direct computation approach. It's not done directly * at the beginning of the routine to filter out as much * as possible this costly computation. @@ -852,278 +1125,14 @@ /* Free the rollback states */ xmlFree(states.states); } - return(xsltTestCompMatchDirect(ctxt, comp, node, + return(xsltTestCompMatchDirect(ctxt, comp, matchNode, comp->nsList, comp->nsNr)); }
- doc = node->doc; - if (XSLT_IS_RES_TREE_FRAG(doc)) - isRVT = 1; - else - isRVT = 0; - - /* - * Depending on the last selection, one may need to - * recompute contextSize and proximityPosition. - */ - oldCS = ctxt->xpathCtxt->contextSize; - oldCP = ctxt->xpathCtxt->proximityPosition; - if ((sel != NULL) && - (sel->op == XSLT_OP_ELEM) && - (sel->value != NULL) && - (node->type == XML_ELEMENT_NODE) && - (node->parent != NULL)) { - xmlNodePtr previous; - int nocache = 0; - - previous = (xmlNodePtr) - XSLT_RUNTIME_EXTRA(ctxt, sel->previousExtra, ptr); - if ((previous != NULL) && - (previous->parent == node->parent)) { - /* - * just walk back to adjust the index - */ - int indx = 0; - xmlNodePtr sibling = node; - - while (sibling != NULL) { - if (sibling == previous) - break; - if ((sibling->type == XML_ELEMENT_NODE) && - (previous->name != NULL) && - (sibling->name != NULL) && - (previous->name[0] == sibling->name[0]) && - (xmlStrEqual(previous->name, sibling->name))) - { - if ((sel->value2 == NULL) || - ((sibling->ns != NULL) && - (xmlStrEqual(sel->value2, - sibling->ns->href)))) - indx++; - } - sibling = sibling->prev; - } - if (sibling == NULL) { - /* hum going backward in document order ... */ - indx = 0; - sibling = node; - while (sibling != NULL) { - if (sibling == previous) - break; - if ((sibling->type == XML_ELEMENT_NODE) && - (previous->name != NULL) && - (sibling->name != NULL) && - (previous->name[0] == sibling->name[0]) && - (xmlStrEqual(previous->name, sibling->name))) - { - if ((sel->value2 == NULL) || - ((sibling->ns != NULL) && - (xmlStrEqual(sel->value2, - sibling->ns->href)))) - { - indx--; - } - } - sibling = sibling->next; - } - } - if (sibling != NULL) { - pos = XSLT_RUNTIME_EXTRA(ctxt, - sel->indexExtra, ival) + indx; - /* - * If the node is in a Value Tree we need to - * save len, but cannot cache the node! - * (bugs 153137 and 158840) - */ - if (node->doc != NULL) { - len = XSLT_RUNTIME_EXTRA(ctxt, - sel->lenExtra, ival); - if (!isRVT) { - XSLT_RUNTIME_EXTRA(ctxt, - sel->previousExtra, ptr) = node; - XSLT_RUNTIME_EXTRA(ctxt, - sel->indexExtra, ival) = pos; - } - } - } else - pos = 0; - } else { - /* - * recompute the index - */ - xmlNodePtr parent = node->parent; - xmlNodePtr siblings = NULL; - - if (parent) siblings = parent->children; - - while (siblings != NULL) { - if (siblings->type == XML_ELEMENT_NODE) { - if (siblings == node) { - len++; - pos = len; - } else if ((node->name != NULL) && - (siblings->name != NULL) && - (node->name[0] == siblings->name[0]) && - (xmlStrEqual(node->name, siblings->name))) { - if ((sel->value2 == NULL) || - ((siblings->ns != NULL) && - (xmlStrEqual(sel->value2, - siblings->ns->href)))) - len++; - } - } - siblings = siblings->next; - } - if ((parent == NULL) || (node->doc == NULL)) - nocache = 1; - else { - while (parent->parent != NULL) - parent = parent->parent; - if (((parent->type != XML_DOCUMENT_NODE) && - (parent->type != XML_HTML_DOCUMENT_NODE)) || - (parent != (xmlNodePtr) node->doc)) - nocache = 1; - } - } - if (pos != 0) { - ctxt->xpathCtxt->contextSize = len; - ctxt->xpathCtxt->proximityPosition = pos; - /* - * If the node is in a Value Tree we cannot - * cache it ! - */ - if ((!isRVT) && (node->doc != NULL) && - (nocache == 0)) { - XSLT_RUNTIME_EXTRA(ctxt, sel->previousExtra, ptr) = - node; - XSLT_RUNTIME_EXTRA(ctxt, sel->indexExtra, ival) = - pos; - XSLT_RUNTIME_EXTRA(ctxt, sel->lenExtra, ival) = - len; - } - } - } else if ((sel != NULL) && (sel->op == XSLT_OP_ALL) && - (node->type == XML_ELEMENT_NODE)) { - xmlNodePtr previous; - int nocache = 0; - - previous = (xmlNodePtr) - XSLT_RUNTIME_EXTRA(ctxt, sel->previousExtra, ptr); - if ((previous != NULL) && - (previous->parent == node->parent)) { - /* - * just walk back to adjust the index - */ - int indx = 0; - xmlNodePtr sibling = node; - - while (sibling != NULL) { - if (sibling == previous) - break; - if (sibling->type == XML_ELEMENT_NODE) - indx++; - sibling = sibling->prev; - } - if (sibling == NULL) { - /* hum going backward in document order ... */ - indx = 0; - sibling = node; - while (sibling != NULL) { - if (sibling == previous) - break; - if (sibling->type == XML_ELEMENT_NODE) - indx--; - sibling = sibling->next; - } - } - if (sibling != NULL) { - pos = XSLT_RUNTIME_EXTRA(ctxt, - sel->indexExtra, ival) + indx; - /* - * If the node is in a Value Tree we cannot - * cache it ! - */ - if ((node->doc != NULL) && !isRVT) { - len = XSLT_RUNTIME_EXTRA(ctxt, - sel->lenExtra, ival); - XSLT_RUNTIME_EXTRA(ctxt, - sel->previousExtra, ptr) = node; - XSLT_RUNTIME_EXTRA(ctxt, - sel->indexExtra, ival) = pos; - } - } else - pos = 0; - } else { - /* - * recompute the index - */ - xmlNodePtr parent = node->parent; - xmlNodePtr siblings = NULL; - - if (parent) siblings = parent->children; - - while (siblings != NULL) { - if (siblings->type == XML_ELEMENT_NODE) { - len++; - if (siblings == node) { - pos = len; - } - } - siblings = siblings->next; - } - if ((parent == NULL) || (node->doc == NULL)) - nocache = 1; - else { - while (parent->parent != NULL) - parent = parent->parent; - if (((parent->type != XML_DOCUMENT_NODE) && - (parent->type != XML_HTML_DOCUMENT_NODE)) || - (parent != (xmlNodePtr) node->doc)) - nocache = 1; - } - } - if (pos != 0) { - ctxt->xpathCtxt->contextSize = len; - ctxt->xpathCtxt->proximityPosition = pos; - /* - * If the node is in a Value Tree we cannot - * cache it ! - */ - if ((node->doc != NULL) && (nocache == 0) && !isRVT) { - XSLT_RUNTIME_EXTRA(ctxt, sel->previousExtra, ptr) = - node; - XSLT_RUNTIME_EXTRA(ctxt, sel->indexExtra, ival) = - pos; - XSLT_RUNTIME_EXTRA(ctxt, sel->lenExtra, ival) = - len; - } - } - } - oldNode = ctxt->node; - ctxt->node = node; - - if (step->value == NULL) - goto wrong_index; - if (step->comp == NULL) - goto wrong_index; - - if (!xsltEvalXPathPredicate(ctxt, step->comp, comp->nsList, - comp->nsNr)) - goto wrong_index; - - if (pos != 0) { - ctxt->xpathCtxt->contextSize = oldCS; - ctxt->xpathCtxt->proximityPosition = oldCP; - } - ctxt->node = oldNode; + if (!xsltTestPredicateMatch(ctxt, comp, node, step, sel)) + goto rollback; + break; -wrong_index: - if (pos != 0) { - ctxt->xpathCtxt->contextSize = oldCS; - ctxt->xpathCtxt->proximityPosition = oldCP; - } - ctxt->node = oldNode; - goto rollback; } case XSLT_OP_PI: if (node->type != XML_PI_NODE) @@ -1405,6 +1414,7 @@ if (CUR != ',') { xsltTransformError(NULL, NULL, NULL, "xsltCompileIdKeyPattern : , expected\n"); + xmlFree(lit); ctxt->error = 1; return; } @@ -2061,8 +2071,33 @@ const xmlChar *name = NULL; float priority; /* the priority */
- if ((style == NULL) || (cur == NULL) || (cur->match == NULL)) + if ((style == NULL) || (cur == NULL)) return(-1); + + /* Register named template */ + if (cur->name != NULL) { + if (style->namedTemplates == NULL) { + style->namedTemplates = xmlHashCreate(10); + if (style->namedTemplates == NULL) + return(-1); + } + else { + void *dup = xmlHashLookup2(style->namedTemplates, cur->name, + cur->nameURI); + if (dup != NULL) { + xsltTransformError(NULL, style, cur->elem, + "xsl:template: error duplicate name '%s'\n", + cur->name); + style->errors++; + return(-1); + } + } + + xmlHashAddEntry2(style->namedTemplates, cur->name, cur->nameURI, cur); + } + + if (cur->match == NULL) + return(0);
priority = cur->priority; pat = xsltCompilePatternInternal(cur->match, style->doc, cur->elem, @@ -2533,5 +2568,7 @@ xsltFreeCompMatchList(style->piMatch); if (style->commentMatch != NULL) xsltFreeCompMatchList(style->commentMatch); -} - + if (style->namedTemplates != NULL) + xmlHashFree(style->namedTemplates, NULL); +} +
Modified: trunk/reactos/dll/3rdparty/libxslt/preproc.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/3rdparty/libxslt/prepro... ============================================================================== --- trunk/reactos/dll/3rdparty/libxslt/preproc.c [iso-8859-1] (original) +++ trunk/reactos/dll/3rdparty/libxslt/preproc.c [iso-8859-1] Sat Jul 9 18:30:47 2016 @@ -925,6 +925,8 @@ #ifdef XSLT_REFACTORED comp->nsPrefix = prefix; comp->name = name; +#else + (void)name; /* Suppress unused variable warning. */ #endif } else if (prefix != NULL) { xsltTransformError(NULL, style, inst, @@ -1050,6 +1052,8 @@ #ifdef XSLT_REFACTORED comp->nsPrefix = prefix; comp->name = name; +#else + (void)name; /* Suppress unused variable warning. */ #endif } else { xsltTransformError(NULL, style, inst, @@ -1277,7 +1281,8 @@ if (prop == NULL) { style->errors++; } else { - *localName = prop; + if (localName) + *localName = prop; if (hasProp) *hasProp = 1; if (URI != NULL) { @@ -2221,7 +2226,8 @@ } else if (IS_XSLT_NAME(inst, "attribute")) { xmlNodePtr parent = inst->parent;
- if ((parent == NULL) || (parent->ns == NULL) || + if ((parent == NULL) || + (parent->type != XML_ELEMENT_NODE) || (parent->ns == NULL) || ((parent->ns != inst->ns) && (!xmlStrEqual(parent->ns->href, inst->ns->href))) || (!xmlStrEqual(parent->name, BAD_CAST "attribute-set"))) {
Modified: trunk/reactos/dll/3rdparty/libxslt/transform.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/3rdparty/libxslt/transf... ============================================================================== --- trunk/reactos/dll/3rdparty/libxslt/transform.c [iso-8859-1] (original) +++ trunk/reactos/dll/3rdparty/libxslt/transform.c [iso-8859-1] Sat Jul 9 18:30:47 2016 @@ -303,6 +303,104 @@ templ->templCountTab[templ->templNr] = 1; templ->templNr++; } +} + +/** + * xsltPreCompEval: + * @ctxt: transform context + * @node: context node + * @comp: precompiled expression + * + * Evaluate a precompiled XPath expression. + */ +static xmlXPathObjectPtr +xsltPreCompEval(xsltTransformContextPtr ctxt, xmlNodePtr node, + xsltStylePreCompPtr comp) { + xmlXPathObjectPtr res; + xmlXPathContextPtr xpctxt; + xmlNodePtr oldXPContextNode; + xmlNsPtr *oldXPNamespaces; + int oldXPProximityPosition, oldXPContextSize, oldXPNsNr; + + xpctxt = ctxt->xpathCtxt; + oldXPContextNode = xpctxt->node; + oldXPProximityPosition = xpctxt->proximityPosition; + oldXPContextSize = xpctxt->contextSize; + oldXPNsNr = xpctxt->nsNr; + oldXPNamespaces = xpctxt->namespaces; + + xpctxt->node = node; +#ifdef XSLT_REFACTORED + if (comp->inScopeNs != NULL) { + xpctxt->namespaces = comp->inScopeNs->list; + xpctxt->nsNr = comp->inScopeNs->xpathNumber; + } else { + xpctxt->namespaces = NULL; + xpctxt->nsNr = 0; + } +#else + xpctxt->namespaces = comp->nsList; + xpctxt->nsNr = comp->nsNr; +#endif + + res = xmlXPathCompiledEval(comp->comp, xpctxt); + + xpctxt->node = oldXPContextNode; + xpctxt->proximityPosition = oldXPProximityPosition; + xpctxt->contextSize = oldXPContextSize; + xpctxt->nsNr = oldXPNsNr; + xpctxt->namespaces = oldXPNamespaces; + + return(res); +} + +/** + * xsltPreCompEvalToBoolean: + * @ctxt: transform context + * @node: context node + * @comp: precompiled expression + * + * Evaluate a precompiled XPath expression as boolean. + */ +static int +xsltPreCompEvalToBoolean(xsltTransformContextPtr ctxt, xmlNodePtr node, + xsltStylePreCompPtr comp) { + int res; + xmlXPathContextPtr xpctxt; + xmlNodePtr oldXPContextNode; + xmlNsPtr *oldXPNamespaces; + int oldXPProximityPosition, oldXPContextSize, oldXPNsNr; + + xpctxt = ctxt->xpathCtxt; + oldXPContextNode = xpctxt->node; + oldXPProximityPosition = xpctxt->proximityPosition; + oldXPContextSize = xpctxt->contextSize; + oldXPNsNr = xpctxt->nsNr; + oldXPNamespaces = xpctxt->namespaces; + + xpctxt->node = node; +#ifdef XSLT_REFACTORED + if (comp->inScopeNs != NULL) { + xpctxt->namespaces = comp->inScopeNs->list; + xpctxt->nsNr = comp->inScopeNs->xpathNumber; + } else { + xpctxt->namespaces = NULL; + xpctxt->nsNr = 0; + } +#else + xpctxt->namespaces = comp->nsList; + xpctxt->nsNr = comp->nsNr; +#endif + + res = xmlXPathCompiledEvalToBoolean(comp->comp, xpctxt); + + xpctxt->node = oldXPContextNode; + xpctxt->proximityPosition = oldXPProximityPosition; + xpctxt->contextSize = oldXPContextSize; + xpctxt->nsNr = oldXPNsNr; + xpctxt->namespaces = oldXPNamespaces; + + return(res); }
/************************************************************************ @@ -798,9 +896,9 @@ } copy = xmlNewTextLen(string, len); } + if (copy != NULL && target != NULL) + copy = xsltAddChild(target, copy); if (copy != NULL) { - if (target != NULL) - copy = xsltAddChild(target, copy); ctxt->lasttext = copy->content; ctxt->lasttsize = len; ctxt->lasttuse = len; @@ -1189,6 +1287,11 @@ if (copy != NULL) { copy->doc = ctxt->output; copy = xsltAddChild(insert, copy); + if (copy == NULL) { + xsltTransformError(ctxt, NULL, node, + "xsltShallowCopyElem: copy failed\n"); + return (copy); + }
if (node->type == XML_ELEMENT_NODE) { /* @@ -1522,6 +1625,11 @@ if (copy != NULL) { copy->doc = ctxt->output; copy = xsltAddChild(insert, copy); + if (copy == NULL) { + xsltTransformError(ctxt, NULL, invocNode, + "xsltCopyTreeInternal: Copying of '%s' failed.\n", node->name); + return (copy); + } /* * The node may have been coalesced into another text node. */ @@ -3573,8 +3681,7 @@ xmlDictReference(res->dict); } else if (xmlStrEqual(method, (const xmlChar *) "xhtml")) { xsltTransformError(ctxt, NULL, inst, - "xsltDocumentElem: unsupported method xhtml\n", - style->method); + "xsltDocumentElem: unsupported method xhtml\n"); ctxt->type = XSLT_OUTPUT_HTML; res = htmlNewDocNoDtD(doctypeSystem, doctypePublic); if (res == NULL) @@ -3594,8 +3701,8 @@ #endif } else { xsltTransformError(ctxt, NULL, inst, - "xsltDocumentElem: unsupported method %s\n", - style->method); + "xsltDocumentElem: unsupported method (%s)\n", + method); goto error; } } else { @@ -4001,6 +4108,11 @@ return; } copy = xsltAddChild(ctxt->insert, copy); + if (copy == NULL) { + xsltTransformError(ctxt, NULL, inst, + "xsl:element : xsltAddChild failed\n"); + return; + }
/* * Namespace @@ -4254,11 +4366,6 @@ xmlXPathObjectPtr res = NULL; xmlNodeSetPtr list = NULL; int i; - xmlDocPtr oldXPContextDoc; - xmlNsPtr *oldXPNamespaces; - xmlNodePtr oldXPContextNode; - int oldXPProximityPosition, oldXPContextSize, oldXPNsNr; - xmlXPathContextPtr xpctxt;
if ((ctxt == NULL) || (node == NULL) || (inst == NULL)) return; @@ -4294,42 +4401,7 @@ /* * Evaluate the "select" expression. */ - xpctxt = ctxt->xpathCtxt; - oldXPContextDoc = xpctxt->doc; - oldXPContextNode = xpctxt->node; - oldXPProximityPosition = xpctxt->proximityPosition; - oldXPContextSize = xpctxt->contextSize; - oldXPNsNr = xpctxt->nsNr; - oldXPNamespaces = xpctxt->namespaces; - - xpctxt->node = node; - if (comp != NULL) { - -#ifdef XSLT_REFACTORED - if (comp->inScopeNs != NULL) { - xpctxt->namespaces = comp->inScopeNs->list; - xpctxt->nsNr = comp->inScopeNs->xpathNumber; - } else { - xpctxt->namespaces = NULL; - xpctxt->nsNr = 0; - } -#else - xpctxt->namespaces = comp->nsList; - xpctxt->nsNr = comp->nsNr; -#endif - } else { - xpctxt->namespaces = NULL; - xpctxt->nsNr = 0; - } - - res = xmlXPathCompiledEval(comp->comp, xpctxt); - - xpctxt->doc = oldXPContextDoc; - xpctxt->node = oldXPContextNode; - xpctxt->contextSize = oldXPContextSize; - xpctxt->proximityPosition = oldXPProximityPosition; - xpctxt->nsNr = oldXPNsNr; - xpctxt->namespaces = oldXPNamespaces; + res = xsltPreCompEval(ctxt, node, comp);
if (res != NULL) { if (res->type == XPATH_NODESET) { @@ -4439,11 +4511,6 @@ #endif xmlXPathObjectPtr res = NULL; xmlChar *value = NULL; - xmlDocPtr oldXPContextDoc; - xmlNsPtr *oldXPNamespaces; - xmlNodePtr oldXPContextNode; - int oldXPProximityPosition, oldXPContextSize, oldXPNsNr; - xmlXPathContextPtr xpctxt;
if ((ctxt == NULL) || (node == NULL) || (inst == NULL)) return; @@ -4460,42 +4527,7 @@ "xsltValueOf: select %s\n", comp->select)); #endif
- xpctxt = ctxt->xpathCtxt; - oldXPContextDoc = xpctxt->doc; - oldXPContextNode = xpctxt->node; - oldXPProximityPosition = xpctxt->proximityPosition; - oldXPContextSize = xpctxt->contextSize; - oldXPNsNr = xpctxt->nsNr; - oldXPNamespaces = xpctxt->namespaces; - - xpctxt->node = node; - if (comp != NULL) { - -#ifdef XSLT_REFACTORED - if (comp->inScopeNs != NULL) { - xpctxt->namespaces = comp->inScopeNs->list; - xpctxt->nsNr = comp->inScopeNs->xpathNumber; - } else { - xpctxt->namespaces = NULL; - xpctxt->nsNr = 0; - } -#else - xpctxt->namespaces = comp->nsList; - xpctxt->nsNr = comp->nsNr; -#endif - } else { - xpctxt->namespaces = NULL; - xpctxt->nsNr = 0; - } - - res = xmlXPathCompiledEval(comp->comp, xpctxt); - - xpctxt->doc = oldXPContextDoc; - xpctxt->node = oldXPContextNode; - xpctxt->contextSize = oldXPContextSize; - xpctxt->proximityPosition = oldXPProximityPosition; - xpctxt->nsNr = oldXPNsNr; - xpctxt->namespaces = oldXPNamespaces; + res = xsltPreCompEval(ctxt, node, comp);
/* * Cast the XPath object to string. @@ -4551,6 +4583,10 @@ #else xsltStylePreCompPtr comp = castedComp; #endif + xmlXPathContextPtr xpctxt; + xmlNsPtr *oldXPNamespaces; + int oldXPNsNr; + if (comp == NULL) { xsltTransformError(ctxt, NULL, inst, "xsl:number : compilation failed\n"); @@ -4563,7 +4599,27 @@ comp->numdata.doc = inst->doc; comp->numdata.node = inst;
+ xpctxt = ctxt->xpathCtxt; + oldXPNsNr = xpctxt->nsNr; + oldXPNamespaces = xpctxt->namespaces; + +#ifdef XSLT_REFACTORED + if (comp->inScopeNs != NULL) { + xpctxt->namespaces = comp->inScopeNs->list; + xpctxt->nsNr = comp->inScopeNs->xpathNumber; + } else { + xpctxt->namespaces = NULL; + xpctxt->nsNr = 0; + } +#else + xpctxt->namespaces = comp->nsList; + xpctxt->nsNr = comp->nsNr; +#endif + xsltNumberFormat(ctxt, &comp->numdata, node); + + xpctxt->nsNr = oldXPNsNr; + xpctxt->namespaces = oldXPNamespaces; }
/** @@ -4757,12 +4813,11 @@ xmlNodePtr cur, delNode = NULL, oldContextNode; xmlNodeSetPtr list = NULL, oldList; xsltStackElemPtr withParams = NULL; - int oldXPProximityPosition, oldXPContextSize, oldXPNsNr; + int oldXPProximityPosition, oldXPContextSize; const xmlChar *oldMode, *oldModeURI; xmlDocPtr oldXPDoc; xsltDocumentPtr oldDocInfo; xmlXPathContextPtr xpctxt; - xmlNsPtr *oldXPNamespaces;
if (comp == NULL) { xsltTransformError(ctxt, NULL, inst, @@ -4796,8 +4851,6 @@ oldXPContextSize = xpctxt->contextSize; oldXPProximityPosition = xpctxt->proximityPosition; oldXPDoc = xpctxt->doc; - oldXPNsNr = xpctxt->nsNr; - oldXPNamespaces = xpctxt->namespaces;
/* * Set up contexts. @@ -4818,26 +4871,8 @@ "xsltApplyTemplates: select %s\n", comp->select)); #endif
- /* - * Set up XPath. - */ - xpctxt->node = node; /* Set the "context node" */ -#ifdef XSLT_REFACTORED - if (comp->inScopeNs != NULL) { - xpctxt->namespaces = comp->inScopeNs->list; - xpctxt->nsNr = comp->inScopeNs->xpathNumber; - } else { - xpctxt->namespaces = NULL; - xpctxt->nsNr = 0; - } -#else - xpctxt->namespaces = comp->nsList; - xpctxt->nsNr = comp->nsNr; -#endif - res = xmlXPathCompiledEval(comp->comp, xpctxt); - - xpctxt->contextSize = oldXPContextSize; - xpctxt->proximityPosition = oldXPProximityPosition; + res = xsltPreCompEval(ctxt, node, comp); + if (res != NULL) { if (res->type == XPATH_NODESET) { list = res->nodesetval; /* consume the node set */ @@ -5120,8 +5155,6 @@ /* * Restore context states. */ - xpctxt->nsNr = oldXPNsNr; - xpctxt->namespaces = oldXPNamespaces; xpctxt->doc = oldXPDoc; xpctxt->contextSize = oldXPContextSize; xpctxt->proximityPosition = oldXPProximityPosition; @@ -5177,12 +5210,6 @@
{ int testRes = 0, res = 0; - xmlXPathContextPtr xpctxt = ctxt->xpathCtxt; - xmlDocPtr oldXPContextDoc = xpctxt->doc; - int oldXPProximityPosition = xpctxt->proximityPosition; - int oldXPContextSize = xpctxt->contextSize; - xmlNsPtr *oldXPNamespaces = xpctxt->namespaces; - int oldXPNsNr = xpctxt->nsNr;
#ifdef XSLT_REFACTORED xsltStyleItemWhenPtr wcomp = NULL; @@ -5219,27 +5246,8 @@ "xsltChoose: test %s\n", wcomp->test)); #endif
- xpctxt->node = contextNode; - xpctxt->doc = oldXPContextDoc; - xpctxt->proximityPosition = oldXPProximityPosition; - xpctxt->contextSize = oldXPContextSize; - -#ifdef XSLT_REFACTORED - if (wcomp->inScopeNs != NULL) { - xpctxt->namespaces = wcomp->inScopeNs->list; - xpctxt->nsNr = wcomp->inScopeNs->xpathNumber; - } else { - xpctxt->namespaces = NULL; - xpctxt->nsNr = 0; - } -#else - xpctxt->namespaces = wcomp->nsList; - xpctxt->nsNr = wcomp->nsNr; -#endif - - #ifdef XSLT_FAST_IF - res = xmlXPathCompiledEvalToBoolean(wcomp->comp, xpctxt); + res = xsltPreCompEvalToBoolean(ctxt, contextNode, wcomp);
if (res == -1) { ctxt->state = XSLT_STATE_STOPPED; @@ -5249,7 +5257,7 @@
#else /* XSLT_FAST_IF */
- res = xmlXPathCompiledEval(wcomp->comp, xpctxt); + res = xsltPreCompEval(ctxt, cotextNode, wcomp);
if (res != NULL) { if (res->type != XPATH_BOOLEAN) @@ -5298,22 +5306,10 @@ #endif goto test_is_true; } - xpctxt->node = contextNode; - xpctxt->doc = oldXPContextDoc; - xpctxt->proximityPosition = oldXPProximityPosition; - xpctxt->contextSize = oldXPContextSize; - xpctxt->namespaces = oldXPNamespaces; - xpctxt->nsNr = oldXPNsNr; goto exit;
test_is_true:
- xpctxt->node = contextNode; - xpctxt->doc = oldXPContextDoc; - xpctxt->proximityPosition = oldXPProximityPosition; - xpctxt->contextSize = oldXPContextSize; - xpctxt->namespaces = oldXPNamespaces; - xpctxt->nsNr = oldXPNsNr; goto process_sequence; }
@@ -5367,38 +5363,9 @@
#ifdef XSLT_FAST_IF { - xmlXPathContextPtr xpctxt = ctxt->xpathCtxt; - xmlDocPtr oldXPContextDoc = xpctxt->doc; - xmlNsPtr *oldXPNamespaces = xpctxt->namespaces; - xmlNodePtr oldXPContextNode = xpctxt->node; - int oldXPProximityPosition = xpctxt->proximityPosition; - int oldXPContextSize = xpctxt->contextSize; - int oldXPNsNr = xpctxt->nsNr; xmlDocPtr oldLocalFragmentTop = ctxt->localRVT;
- xpctxt->node = contextNode; - if (comp != NULL) { - -#ifdef XSLT_REFACTORED - if (comp->inScopeNs != NULL) { - xpctxt->namespaces = comp->inScopeNs->list; - xpctxt->nsNr = comp->inScopeNs->xpathNumber; - } else { - xpctxt->namespaces = NULL; - xpctxt->nsNr = 0; - } -#else - xpctxt->namespaces = comp->nsList; - xpctxt->nsNr = comp->nsNr; -#endif - } else { - xpctxt->namespaces = NULL; - xpctxt->nsNr = 0; - } - /* - * This XPath function is optimized for boolean results. - */ - res = xmlXPathCompiledEvalToBoolean(comp->comp, xpctxt); + res = xsltPreCompEvalToBoolean(ctxt, contextNode, comp);
/* * Cleanup fragments created during evaluation of the @@ -5406,13 +5373,6 @@ */ if (oldLocalFragmentTop != ctxt->localRVT) xsltReleaseLocalRVTs(ctxt, oldLocalFragmentTop); - - xpctxt->doc = oldXPContextDoc; - xpctxt->node = oldXPContextNode; - xpctxt->contextSize = oldXPContextSize; - xpctxt->proximityPosition = oldXPProximityPosition; - xpctxt->nsNr = oldXPNsNr; - xpctxt->namespaces = oldXPNamespaces; }
#ifdef WITH_XSLT_DEBUG_PROCESS @@ -5434,51 +5394,10 @@
#else /* XSLT_FAST_IF */ { - xmlXPathObjectPtr xpobj = NULL; /* * OLD CODE: */ - { - xmlXPathContextPtr xpctxt = ctxt->xpathCtxt; - xmlDocPtr oldXPContextDoc = xpctxt->doc; - xmlNsPtr *oldXPNamespaces = xpctxt->namespaces; - xmlNodePtr oldXPContextNode = xpctxt->node; - int oldXPProximityPosition = xpctxt->proximityPosition; - int oldXPContextSize = xpctxt->contextSize; - int oldXPNsNr = xpctxt->nsNr; - - xpctxt->node = contextNode; - if (comp != NULL) { - -#ifdef XSLT_REFACTORED - if (comp->inScopeNs != NULL) { - xpctxt->namespaces = comp->inScopeNs->list; - xpctxt->nsNr = comp->inScopeNs->xpathNumber; - } else { - xpctxt->namespaces = NULL; - xpctxt->nsNr = 0; - } -#else - xpctxt->namespaces = comp->nsList; - xpctxt->nsNr = comp->nsNr; -#endif - } else { - xpctxt->namespaces = NULL; - xpctxt->nsNr = 0; - } - - /* - * This XPath function is optimized for boolean results. - */ - xpobj = xmlXPathCompiledEval(comp->comp, xpctxt); - - xpctxt->doc = oldXPContextDoc; - xpctxt->node = oldXPContextNode; - xpctxt->contextSize = oldXPContextSize; - xpctxt->proximityPosition = oldXPProximityPosition; - xpctxt->nsNr = oldXPNsNr; - xpctxt->namespaces = oldXPNamespaces; - } + xmlXPathObjectPtr xpobj = xsltPreCompEval(ctxt, contextNode, comp); if (xpobj != NULL) { if (xpobj->type != XPATH_BOOLEAN) xpobj = xmlXPathConvertBoolean(xpobj); @@ -5585,27 +5504,11 @@ oldXPDoc = xpctxt->doc; oldXPProximityPosition = xpctxt->proximityPosition; oldXPContextSize = xpctxt->contextSize; - /* - * Set up XPath. - */ - xpctxt->node = contextNode; -#ifdef XSLT_REFACTORED - if (comp->inScopeNs != NULL) { - xpctxt->namespaces = comp->inScopeNs->list; - xpctxt->nsNr = comp->inScopeNs->xpathNumber; - } else { - xpctxt->namespaces = NULL; - xpctxt->nsNr = 0; - } -#else - xpctxt->namespaces = comp->nsList; - xpctxt->nsNr = comp->nsNr; -#endif
/* * Evaluate the 'select' expression. */ - res = xmlXPathCompiledEval(comp->comp, ctxt->xpathCtxt); + res = xsltPreCompEval(ctxt, contextNode, comp);
if (res != NULL) { if (res->type == XPATH_NODESET) @@ -5634,13 +5537,6 @@ XSLT_TRACE(ctxt,XSLT_TRACE_FOR_EACH,xsltGenericDebug(xsltGenericDebugContext, "xsltForEach: select evaluates to %d nodes\n", list->nodeNr)); #endif - - /* - * Restore XPath states for the "current node". - */ - xpctxt->contextSize = oldXPContextSize; - xpctxt->proximityPosition = oldXPProximityPosition; - xpctxt->node = contextNode;
/* * Set the list; this has to be done already here for xsltDoSortFunction(). @@ -6043,8 +5939,7 @@ #endif } else if (xmlStrEqual(method, (const xmlChar *) "xhtml")) { xsltTransformError(ctxt, NULL, (xmlNodePtr) doc, - "xsltApplyStylesheetInternal: unsupported method xhtml, using html\n", - style->method); + "xsltApplyStylesheetInternal: unsupported method xhtml, using html\n"); ctxt->type = XSLT_OUTPUT_HTML; res = htmlNewDoc(doctypeSystem, doctypePublic); if (res == NULL) @@ -6070,8 +5965,8 @@ #endif } else { xsltTransformError(ctxt, NULL, (xmlNodePtr) doc, - "xsltApplyStylesheetInternal: unsupported method %s\n", - style->method); + "xsltApplyStylesheetInternal: unsupported method (%s)\n", + method); goto error; } } else {
Modified: trunk/reactos/dll/3rdparty/libxslt/variables.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/3rdparty/libxslt/variab... ============================================================================== --- trunk/reactos/dll/3rdparty/libxslt/variables.c [iso-8859-1] (original) +++ trunk/reactos/dll/3rdparty/libxslt/variables.c [iso-8859-1] Sat Jul 9 18:30:47 2016 @@ -1424,21 +1424,35 @@ /* * Name lookup */ - - name = xsltSplitQName(ctxt->dict, name, &prefix); href = NULL; - if (prefix != NULL) { - xmlNsPtr ns; - - ns = xmlSearchNs(style->doc, xmlDocGetRootElement(style->doc), - prefix); - if (ns == NULL) { - xsltTransformError(ctxt, style, NULL, - "user param : no namespace bound to prefix %s\n", prefix); - href = NULL; - } else { - href = ns->href; - } + + if (name[0] == '{') { + int len = 0; + + while ((name[len] != 0) && (name[len] != '}')) len++; + if (name[len] == 0) { + xsltTransformError(ctxt, style, NULL, + "user param : malformed parameter name : %s\n", name); + } else { + href = xmlDictLookup(ctxt->dict, &name[1], len-1); + name = xmlDictLookup(ctxt->dict, &name[len + 1], -1); + } + } + else { + name = xsltSplitQName(ctxt->dict, name, &prefix); + if (prefix != NULL) { + xmlNsPtr ns; + + ns = xmlSearchNs(style->doc, xmlDocGetRootElement(style->doc), + prefix); + if (ns == NULL) { + xsltTransformError(ctxt, style, NULL, + "user param : no namespace bound to prefix %s\n", prefix); + href = NULL; + } else { + href = ns->href; + } + } }
if (name == NULL)
Modified: trunk/reactos/dll/3rdparty/libxslt/xslt.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/3rdparty/libxslt/xslt.c... ============================================================================== --- trunk/reactos/dll/3rdparty/libxslt/xslt.c [iso-8859-1] (original) +++ trunk/reactos/dll/3rdparty/libxslt/xslt.c [iso-8859-1] Sat Jul 9 18:30:47 2016 @@ -3525,7 +3525,7 @@ } } else if (cur->type == XML_TEXT_NODE) { if (IS_BLANK_NODE(cur)) { - if (xmlNodeGetSpacePreserve(cur) != 1) { + if (xmlNodeGetSpacePreserve(cur->parent) != 1) { deleteNode = cur; } } else if ((cur->content != NULL) && (internalize) && @@ -5354,7 +5354,6 @@ prop = xmlGetNsProp(template, (const xmlChar *)"name", NULL); if (prop != NULL) { const xmlChar *URI; - xsltTemplatePtr cur;
/* * TODO: Don't use xsltGetQNameURI(). @@ -5377,19 +5376,6 @@ ret->nameURI = xmlDictLookup(style->dict, BAD_CAST URI, -1); else ret->nameURI = NULL; - cur = ret->next; - while (cur != NULL) { - if ((URI != NULL && xmlStrEqual(cur->name, ret->name) && - xmlStrEqual(cur->nameURI, URI) ) || - (URI == NULL && cur->nameURI == NULL && - xmlStrEqual(cur->name, ret->name))) { - xsltTransformError(NULL, style, template, - "xsl:template: error duplicate name '%s'\n", ret->name); - style->errors++; - goto error; - } - cur = cur->next; - } } }
Modified: trunk/reactos/dll/3rdparty/libxslt/xsltconfig.h.in URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/3rdparty/libxslt/xsltco... ============================================================================== --- trunk/reactos/dll/3rdparty/libxslt/xsltconfig.h.in [iso-8859-1] (original) +++ trunk/reactos/dll/3rdparty/libxslt/xsltconfig.h.in [iso-8859-1] Sat Jul 9 18:30:47 2016 @@ -153,6 +153,17 @@ #endif
/** + * LIBXSLT_ATTR_FORMAT: + * + * This macro is used to indicate to GCC the parameters are printf-like + */ +#ifdef __GNUC__ +#define LIBXSLT_ATTR_FORMAT(fmt,args) __attribute__((__format__(__printf__,fmt,args))) +#else +#define LIBXSLT_ATTR_FORMAT(fmt,args) +#endif + +/** * LIBXSLT_PUBLIC: * * This macro is used to declare PUBLIC variables for Cygwin and for MSC on Windows
Modified: trunk/reactos/dll/3rdparty/libxslt/xsltutils.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/3rdparty/libxslt/xsltut... ============================================================================== --- trunk/reactos/dll/3rdparty/libxslt/xsltutils.c [iso-8859-1] (original) +++ trunk/reactos/dll/3rdparty/libxslt/xsltutils.c [iso-8859-1] Sat Jul 9 18:30:47 2016 @@ -495,7 +495,7 @@ * * Default handler for out of context error messages. */ -static void +static void LIBXSLT_ATTR_FORMAT(2,3) xsltGenericErrorDefaultFunc(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) { va_list args;
@@ -541,7 +541,7 @@ * * Default handler for out of context error messages. */ -static void +static void LIBXSLT_ATTR_FORMAT(2,3) xsltGenericDebugDefaultFunc(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) { va_list args;
@@ -1939,7 +1939,7 @@ int nb, i,j,k,l; int max; int total; - long totalt; + unsigned long totalt; xsltTemplatePtr *templates; xsltStylesheetPtr style; xsltTemplatePtr templ1,templ2; @@ -2052,7 +2052,7 @@
for (i = 0; i < nb; i++) { char ix_str[20], timep_str[20], times_str[20], timec_str[20], called_str[20]; - int t; + unsigned long t;
templ1 = templates[i]; /* callers */ @@ -2063,9 +2063,9 @@ break; } t=templ2?templ2->time:totalt; - sprintf(times_str,"%8.3f",(float)t/XSLT_TIMESTAMP_TICS_PER_SEC); - sprintf(timec_str,"%8.3f",(float)childt[k]/XSLT_TIMESTAMP_TICS_PER_SEC); - sprintf(called_str,"%6d/%d", + snprintf(times_str,sizeof(times_str),"%8.3f",(float)t/XSLT_TIMESTAMP_TICS_PER_SEC); + snprintf(timec_str,sizeof(timec_str),"%8.3f",(float)childt[k]/XSLT_TIMESTAMP_TICS_PER_SEC); + snprintf(called_str,sizeof(called_str),"%6d/%d", templ1->templCountTab[j], /* number of times caller calls 'this' */ templ1->nbCalls); /* total number of calls to 'this' */
@@ -2074,10 +2074,10 @@ (templ2?(templ2->name?(char *)templ2->name:pretty_templ_match(templ2)):"-"),k); } /* this */ - sprintf(ix_str,"[%d]",i); - sprintf(timep_str,"%6.2f",(float)templ1->time*100.0/totalt); - sprintf(times_str,"%8.3f",(float)templ1->time/XSLT_TIMESTAMP_TICS_PER_SEC); - sprintf(timec_str,"%8.3f",(float)childt[i]/XSLT_TIMESTAMP_TICS_PER_SEC); + snprintf(ix_str,sizeof(ix_str),"[%d]",i); + snprintf(timep_str,sizeof(timep_str),"%6.2f",(float)templ1->time*100.0/totalt); + snprintf(times_str,sizeof(times_str),"%8.3f",(float)templ1->time/XSLT_TIMESTAMP_TICS_PER_SEC); + snprintf(timec_str,sizeof(timec_str),"%8.3f",(float)childt[i]/XSLT_TIMESTAMP_TICS_PER_SEC); fprintf(output, "%-5s %-6s %-8s %-8s %6d %s [%d]\n", ix_str, timep_str,times_str,timec_str, templ1->nbCalls, @@ -2099,9 +2099,9 @@ templ2 = templates[k]; for (l = 0; l < templ2->templNr; l++) { if (templ2->templCalledTab[l] == templ1) { - sprintf(times_str,"%8.3f",(float)templ2->time/XSLT_TIMESTAMP_TICS_PER_SEC); - sprintf(timec_str,"%8.3f",(float)childt[k]/XSLT_TIMESTAMP_TICS_PER_SEC); - sprintf(called_str,"%6d/%d", + snprintf(times_str,sizeof(times_str),"%8.3f",(float)templ2->time/XSLT_TIMESTAMP_TICS_PER_SEC); + snprintf(timec_str,sizeof(timec_str),"%8.3f",(float)childt[k]/XSLT_TIMESTAMP_TICS_PER_SEC); + snprintf(called_str,sizeof(called_str),"%6d/%d", templ2->templCountTab[l], /* number of times 'this' calls callee */ total); /* total number of calls from 'this' */ fprintf(output, " %-8s %-8s %-12s %s [%d]\n", @@ -2221,19 +2221,19 @@
for (i = 0; i < nb; i++) { child = xmlNewChild(root, NULL, BAD_CAST "template", NULL); - sprintf(buf, "%d", i + 1); + snprintf(buf, sizeof(buf), "%d", i + 1); xmlSetProp(child, BAD_CAST "rank", BAD_CAST buf); xmlSetProp(child, BAD_CAST "match", BAD_CAST templates[i]->match); xmlSetProp(child, BAD_CAST "name", BAD_CAST templates[i]->name); xmlSetProp(child, BAD_CAST "mode", BAD_CAST templates[i]->mode);
- sprintf(buf, "%d", templates[i]->nbCalls); + snprintf(buf, sizeof(buf), "%d", templates[i]->nbCalls); xmlSetProp(child, BAD_CAST "calls", BAD_CAST buf);
- sprintf(buf, "%ld", templates[i]->time); + snprintf(buf, sizeof(buf), "%ld", templates[i]->time); xmlSetProp(child, BAD_CAST "time", BAD_CAST buf);
- sprintf(buf, "%ld", templates[i]->time / templates[i]->nbCalls); + snprintf(buf, sizeof(buf), "%ld", templates[i]->time / templates[i]->nbCalls); xmlSetProp(child, BAD_CAST "average", BAD_CAST buf); };
Modified: trunk/reactos/media/doc/3rd Party Files.txt URL: http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/3rd%20Party%20Fil... ============================================================================== --- trunk/reactos/media/doc/3rd Party Files.txt [iso-8859-1] (original) +++ trunk/reactos/media/doc/3rd Party Files.txt [iso-8859-1] Sat Jul 9 18:30:47 2016 @@ -47,7 +47,7 @@ Website: http://xmlsoft.org | ftp://xmlsoft.org/libxml2/
Title: Libxslt -Used Version: 1.1.28 +Used Version: 1.1.29 Website: http://xmlsoft.org
Title: ZLib
Modified: trunk/reactos/sdk/include/reactos/libs/libxslt/xsltInternals.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/sdk/include/reactos/libs/li... ============================================================================== --- trunk/reactos/sdk/include/reactos/libs/libxslt/xsltInternals.h [iso-8859-1] (original) +++ trunk/reactos/sdk/include/reactos/libs/libxslt/xsltInternals.h [iso-8859-1] Sat Jul 9 18:30:47 2016 @@ -1639,6 +1639,8 @@ * Forwards-compatible processing */ int forwards_compatible; + + xmlHashTablePtr namedTemplates; /* hash table of named templates */ };
typedef struct _xsltTransformCache xsltTransformCache;
Modified: trunk/reactos/sdk/include/reactos/libs/libxslt/xsltconfig.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/sdk/include/reactos/libs/li... ============================================================================== --- trunk/reactos/sdk/include/reactos/libs/libxslt/xsltconfig.h [iso-8859-1] (original) +++ trunk/reactos/sdk/include/reactos/libs/libxslt/xsltconfig.h [iso-8859-1] Sat Jul 9 18:30:47 2016 @@ -20,28 +20,28 @@ * * the version string like "1.2.3" */ -#define LIBXSLT_DOTTED_VERSION "1.1.28" +#define LIBXSLT_DOTTED_VERSION "1.1.29"
/** * LIBXSLT_VERSION: * * the version number: 1.2.3 value is 10203 */ -#define LIBXSLT_VERSION 10128 +#define LIBXSLT_VERSION 10129
/** * LIBXSLT_VERSION_STRING: * * the version number string, 1.2.3 value is "10203" */ -#define LIBXSLT_VERSION_STRING "10128" +#define LIBXSLT_VERSION_STRING "10129"
/** * LIBXSLT_VERSION_EXTRA: * * extra version information, used to show a CVS compilation */ -#define LIBXSLT_VERSION_EXTRA "-GITv1.1.27-16-g9382efe" +#define LIBXSLT_VERSION_EXTRA ""
/** * WITH_XSLT_DEBUG: @@ -153,6 +153,17 @@ #endif
/** + * LIBXSLT_ATTR_FORMAT: + * + * This macro is used to indicate to GCC the parameters are printf-like + */ +#ifdef __GNUC__ +#define LIBXSLT_ATTR_FORMAT(fmt,args) __attribute__((__format__(__printf__,fmt,args))) +#else +#define LIBXSLT_ATTR_FORMAT(fmt,args) +#endif + +/** * LIBXSLT_PUBLIC: * * This macro is used to declare PUBLIC variables for Cygwin and for MSC on Windows
Modified: trunk/reactos/sdk/include/reactos/libs/libxslt/xsltlocale.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/sdk/include/reactos/libs/li... ============================================================================== --- trunk/reactos/sdk/include/reactos/libs/libxslt/xsltlocale.h [iso-8859-1] (original) +++ trunk/reactos/sdk/include/reactos/libs/libxslt/xsltlocale.h [iso-8859-1] Sat Jul 9 18:30:47 2016 @@ -12,6 +12,7 @@ #define __XML_XSLTLOCALE_H__
#include <libxml/xmlstring.h> +#include "xsltexports.h"
#ifdef XSLT_LOCALE_XLOCALE
@@ -53,10 +54,18 @@
#endif
-xsltLocale xsltNewLocale(const xmlChar *langName); -void xsltFreeLocale(xsltLocale locale); -xsltLocaleChar *xsltStrxfrm(xsltLocale locale, const xmlChar *string); -int xsltLocaleStrcmp(xsltLocale locale, const xsltLocaleChar *str1, const xsltLocaleChar *str2); -void xsltFreeLocales(void); +XSLTPUBFUN xsltLocale XSLTCALL + xsltNewLocale (const xmlChar *langName); +XSLTPUBFUN void XSLTCALL + xsltFreeLocale (xsltLocale locale); +XSLTPUBFUN xsltLocaleChar * XSLTCALL + xsltStrxfrm (xsltLocale locale, + const xmlChar *string); +XSLTPUBFUN int XSLTCALL + xsltLocaleStrcmp (xsltLocale locale, + const xsltLocaleChar *str1, + const xsltLocaleChar *str2); +XSLTPUBFUN void XSLTCALL + xsltFreeLocales (void);
#endif /* __XML_XSLTLOCALE_H__ */
Modified: trunk/reactos/sdk/include/reactos/libs/libxslt/xsltutils.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/sdk/include/reactos/libs/li... ============================================================================== --- trunk/reactos/sdk/include/reactos/libs/libxslt/xsltutils.h [iso-8859-1] (original) +++ trunk/reactos/sdk/include/reactos/libs/libxslt/xsltutils.h [iso-8859-1] Sat Jul 9 18:30:47 2016 @@ -165,7 +165,7 @@ xsltStylesheetPtr style, xmlNodePtr node, const char *msg, - ...); + ...) LIBXSLT_ATTR_FORMAT(4,5);
XSLTPUBFUN int XSLTCALL xsltSetCtxtParseOptions (xsltTransformContextPtr ctxt,