mirror of
https://github.com/reactos/reactos.git
synced 2025-06-03 08:20:27 +00:00
[LIBXML2]
- Update to version 2.7.8. Patch by Carlo Bramini. - Installed and booted successfully to the desktop. Tested abiword 2.6.4 and FF 2.0.0.20. See issue #4988 for more details. svn path=/trunk/; revision=51577
This commit is contained in:
parent
0c937e4c37
commit
0b6d767a29
35 changed files with 5547 additions and 11917 deletions
|
@ -177,6 +177,7 @@ XMLPUBFUN void XMLCALL
|
|||
*/
|
||||
typedef enum {
|
||||
HTML_PARSE_RECOVER = 1<<0, /* Relaxed parsing */
|
||||
HTML_PARSE_NODEFDTD = 1<<2, /* do not default a doctype if not found */
|
||||
HTML_PARSE_NOERROR = 1<<5, /* suppress error reports */
|
||||
HTML_PARSE_NOWARNING= 1<<6, /* suppress warning reports */
|
||||
HTML_PARSE_PEDANTIC = 1<<7, /* pedantic error reporting */
|
||||
|
|
|
@ -51,7 +51,4 @@ xmlinc_HEADERS = \
|
|||
xmlsave.h \
|
||||
schematron.h
|
||||
|
||||
install-exec-hook:
|
||||
$(mkinstalldirs) $(DESTDIR)$(xmlincdir)
|
||||
|
||||
EXTRA_DIST = xmlversion.h.in
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
|
@ -34,9 +33,8 @@ PRE_UNINSTALL = :
|
|||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = include/libxml
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||
$(srcdir)/xmlversion.h.in $(xmlinc_HEADERS)
|
||||
subdir = include
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
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 \
|
||||
|
@ -44,38 +42,53 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
|||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES = xmlversion.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
||||
am__install_max = 40
|
||||
am__nobase_strip_setup = \
|
||||
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
||||
am__nobase_strip = \
|
||||
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
||||
am__nobase_list = $(am__nobase_strip_setup); \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
||||
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
||||
if (++n[$$2] == $(am__install_max)) \
|
||||
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
||||
END { for (dir in files) print dir, files[dir] }'
|
||||
am__base_list = \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||
am__installdirs = "$(DESTDIR)$(xmlincdir)"
|
||||
HEADERS = $(xmlinc_HEADERS)
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||
html-recursive info-recursive install-data-recursive \
|
||||
install-dvi-recursive install-exec-recursive \
|
||||
install-html-recursive install-info-recursive \
|
||||
install-pdf-recursive install-ps-recursive install-recursive \
|
||||
installcheck-recursive installdirs-recursive pdf-recursive \
|
||||
ps-recursive uninstall-recursive
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
|
||||
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
|
||||
distdir
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
am__relativize = \
|
||||
dir0=`pwd`; \
|
||||
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||
sed_rest='s,^[^/]*/*,,'; \
|
||||
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||
sed_butlast='s,/*[^/]*$$,,'; \
|
||||
while test -n "$$dir1"; do \
|
||||
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||
if test "$$first" != "."; then \
|
||||
if test "$$first" = ".."; then \
|
||||
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||
else \
|
||||
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||
if test "$$first2" = "$$first"; then \
|
||||
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||
else \
|
||||
dir2="../$$dir2"; \
|
||||
fi; \
|
||||
dir0="$$dir0"/"$$first"; \
|
||||
fi; \
|
||||
fi; \
|
||||
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||
done; \
|
||||
reldir="$$dir2"
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AR = @AR@
|
||||
|
@ -153,6 +166,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
|||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
|
@ -201,6 +215,7 @@ VERSION_SCRIPT_FLAGS = @VERSION_SCRIPT_FLAGS@
|
|||
WGET = @WGET@
|
||||
WIN32_EXTRA_LDFLAGS = @WIN32_EXTRA_LDFLAGS@
|
||||
WIN32_EXTRA_LIBADD = @WIN32_EXTRA_LIBADD@
|
||||
WIN32_EXTRA_PYTHON_LIBADD = @WIN32_EXTRA_PYTHON_LIBADD@
|
||||
WITH_C14N = @WITH_C14N@
|
||||
WITH_CATALOG = @WITH_CATALOG@
|
||||
WITH_DEBUG = @WITH_DEBUG@
|
||||
|
@ -209,6 +224,7 @@ WITH_FTP = @WITH_FTP@
|
|||
WITH_HTML = @WITH_HTML@
|
||||
WITH_HTTP = @WITH_HTTP@
|
||||
WITH_ICONV = @WITH_ICONV@
|
||||
WITH_ICU = @WITH_ICU@
|
||||
WITH_ISO8859X = @WITH_ISO8859X@
|
||||
WITH_LEGACY = @WITH_LEGACY@
|
||||
WITH_MEM_DEBUG = @WITH_MEM_DEBUG@
|
||||
|
@ -279,7 +295,6 @@ libdir = @libdir@
|
|||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
lt_ECHO = @lt_ECHO@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
|
@ -296,58 +311,9 @@ target_alias = @target_alias@
|
|||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
xmlincdir = $(includedir)/libxml2/libxml
|
||||
xmlinc_HEADERS = \
|
||||
SAX.h \
|
||||
entities.h \
|
||||
encoding.h \
|
||||
parser.h \
|
||||
parserInternals.h \
|
||||
xmlerror.h \
|
||||
HTMLparser.h \
|
||||
HTMLtree.h \
|
||||
debugXML.h \
|
||||
tree.h \
|
||||
list.h \
|
||||
hash.h \
|
||||
xpath.h \
|
||||
xpathInternals.h \
|
||||
xpointer.h \
|
||||
xinclude.h \
|
||||
xmlIO.h \
|
||||
xmlmemory.h \
|
||||
nanohttp.h \
|
||||
nanoftp.h \
|
||||
uri.h \
|
||||
valid.h \
|
||||
xlink.h \
|
||||
xmlversion.h \
|
||||
DOCBparser.h \
|
||||
catalog.h \
|
||||
threads.h \
|
||||
globals.h \
|
||||
c14n.h \
|
||||
xmlautomata.h \
|
||||
xmlregexp.h \
|
||||
xmlmodule.h \
|
||||
xmlschemas.h \
|
||||
schemasInternals.h \
|
||||
xmlschemastypes.h \
|
||||
xmlstring.h \
|
||||
xmlunicode.h \
|
||||
xmlreader.h \
|
||||
relaxng.h \
|
||||
dict.h \
|
||||
SAX2.h \
|
||||
xmlexports.h \
|
||||
xmlwriter.h \
|
||||
chvalid.h \
|
||||
pattern.h \
|
||||
xmlsave.h \
|
||||
schematron.h
|
||||
|
||||
EXTRA_DIST = xmlversion.h.in
|
||||
all: all-am
|
||||
SUBDIRS = libxml
|
||||
EXTRA_DIST = win32config.h wsockcompat.h
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
|
@ -359,9 +325,9 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
|||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/libxml/Makefile'; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu include/libxml/Makefile
|
||||
$(AUTOMAKE) --gnu include/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
|
@ -380,34 +346,82 @@ $(top_srcdir)/configure: $(am__configure_deps)
|
|||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
xmlversion.h: $(top_builddir)/config.status $(srcdir)/xmlversion.h.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
install-xmlincHEADERS: $(xmlinc_HEADERS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(xmlincdir)" || $(MKDIR_P) "$(DESTDIR)$(xmlincdir)"
|
||||
@list='$(xmlinc_HEADERS)'; test -n "$(xmlincdir)" || list=; \
|
||||
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)$(xmlincdir)'"; \
|
||||
$(INSTALL_HEADER) $$files "$(DESTDIR)$(xmlincdir)" || exit $$?; \
|
||||
done
|
||||
|
||||
uninstall-xmlincHEADERS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(xmlinc_HEADERS)'; test -n "$(xmlincdir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
test -n "$$files" || exit 0; \
|
||||
echo " ( cd '$(DESTDIR)$(xmlincdir)' && rm -f" $$files ")"; \
|
||||
cd "$(DESTDIR)$(xmlincdir)" && rm -f $$files
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run `make' without going through this Makefile.
|
||||
# To change the values of `make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in `config.status', edit `config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||
# (2) otherwise, pass the desired values on the `make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@fail= failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
$(RECURSIVE_CLEAN_TARGETS):
|
||||
@fail= failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
ctags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
done
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
|
@ -419,10 +433,23 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
|||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
|
@ -441,7 +468,7 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
|||
fi; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
|
@ -491,22 +518,48 @@ distdir: $(DISTFILES)
|
|||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(HEADERS)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(xmlincdir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||
$(am__relativize); \
|
||||
new_distdir=$$reldir; \
|
||||
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||
$(am__relativize); \
|
||||
new_top_distdir=$$reldir; \
|
||||
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||
($(am__cd) $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$new_top_distdir" \
|
||||
distdir="$$new_distdir" \
|
||||
am__remove_distdir=: \
|
||||
am__skip_length_check=: \
|
||||
am__skip_mode_fix=: \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
|
@ -523,92 +576,90 @@ distclean-generic:
|
|||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
distclean: distclean-recursive
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
html: html-recursive
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-xmlincHEADERS
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
install-dvi: install-dvi-recursive
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
@$(NORMAL_INSTALL)
|
||||
$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
|
||||
install-html: install-html-am
|
||||
|
||||
install-html: install-html-recursive
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
install-pdf: install-pdf-recursive
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
install-ps: install-ps-recursive
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-xmlincHEADERS
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: install-am install-exec-am install-strip
|
||||
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
|
||||
install-am install-strip tags-recursive
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||
clean-libtool ctags distclean distclean-generic \
|
||||
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
||||
all all-am check check-am clean clean-generic clean-libtool \
|
||||
ctags ctags-recursive distclean 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-man install-pdf \
|
||||
install-pdf-am install-ps install-ps-am install-strip \
|
||||
install-xmlincHEADERS installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags uninstall uninstall-am uninstall-xmlincHEADERS
|
||||
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-generic \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
|
||||
uninstall uninstall-am
|
||||
|
||||
|
||||
install-exec-hook:
|
||||
$(mkinstalldirs) $(DESTDIR)$(xmlincdir)
|
||||
|
||||
# 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.
|
||||
.NOEXPORT:
|
||||
|
|
|
@ -27,6 +27,9 @@
|
|||
#ifdef LIBXML_ICONV_ENABLED
|
||||
#include <iconv.h>
|
||||
#endif
|
||||
#ifdef LIBXML_ICU_ENABLED
|
||||
#include <unicode/ucnv.h>
|
||||
#endif
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
@ -125,6 +128,13 @@ typedef int (* xmlCharEncodingOutputFunc)(unsigned char *out, int *outlen,
|
|||
* Block defining the handlers for non UTF-8 encodings.
|
||||
* If iconv is supported, there are two extra fields.
|
||||
*/
|
||||
#ifdef LIBXML_ICU_ENABLED
|
||||
struct _uconv_t {
|
||||
UConverter *uconv; /* for conversion between an encoding and UTF-16 */
|
||||
UConverter *utf8; /* for conversion between UTF-8 and UTF-16 */
|
||||
};
|
||||
typedef struct _uconv_t uconv_t;
|
||||
#endif
|
||||
|
||||
typedef struct _xmlCharEncodingHandler xmlCharEncodingHandler;
|
||||
typedef xmlCharEncodingHandler *xmlCharEncodingHandlerPtr;
|
||||
|
@ -136,6 +146,10 @@ struct _xmlCharEncodingHandler {
|
|||
iconv_t iconv_in;
|
||||
iconv_t iconv_out;
|
||||
#endif /* LIBXML_ICONV_ENABLED */
|
||||
#ifdef LIBXML_ICU_ENABLED
|
||||
uconv_t *uconv_in;
|
||||
uconv_t *uconv_out;
|
||||
#endif /* LIBXML_ICU_ENABLED */
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
*
|
||||
* Author: Daniel Veillard
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __NANO_FTP_H__
|
||||
#define __NANO_FTP_H__
|
||||
|
||||
|
@ -15,12 +15,31 @@
|
|||
|
||||
#ifdef LIBXML_FTP_ENABLED
|
||||
|
||||
/* Needed for portability to Windows 64 bits */
|
||||
#if defined(__MINGW32__) || defined(_WIN32_WCE)
|
||||
#include <winsock2.h>
|
||||
#else
|
||||
/**
|
||||
* SOCKET:
|
||||
*
|
||||
* macro used to provide portability of code to windows sockets
|
||||
*/
|
||||
#define SOCKET int
|
||||
/**
|
||||
* INVALID_SOCKET:
|
||||
*
|
||||
* macro used to provide portability of code to windows sockets
|
||||
* the value to be used when the socket is not valid
|
||||
*/
|
||||
#define INVALID_SOCKET (-1)
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* ftpListCallback:
|
||||
* ftpListCallback:
|
||||
* @userData: user provided data for the callback
|
||||
* @filename: the file name (including "->" when links are shown)
|
||||
* @attrib: the attribute string
|
||||
|
@ -44,7 +63,7 @@ typedef void (*ftpListCallback) (void *userData,
|
|||
const char *month, int day, int hour,
|
||||
int minute);
|
||||
/**
|
||||
* ftpDataCallback:
|
||||
* ftpDataCallback:
|
||||
* @userData: the user provided context
|
||||
* @data: the data received
|
||||
* @len: its size in bytes
|
||||
|
@ -60,78 +79,78 @@ typedef void (*ftpDataCallback) (void *userData,
|
|||
*/
|
||||
XMLPUBFUN void XMLCALL
|
||||
xmlNanoFTPInit (void);
|
||||
XMLPUBFUN void XMLCALL
|
||||
XMLPUBFUN void XMLCALL
|
||||
xmlNanoFTPCleanup (void);
|
||||
|
||||
/*
|
||||
* Creating/freeing contexts.
|
||||
*/
|
||||
XMLPUBFUN void * XMLCALL
|
||||
XMLPUBFUN void * XMLCALL
|
||||
xmlNanoFTPNewCtxt (const char *URL);
|
||||
XMLPUBFUN void XMLCALL
|
||||
XMLPUBFUN void XMLCALL
|
||||
xmlNanoFTPFreeCtxt (void * ctx);
|
||||
XMLPUBFUN void * XMLCALL
|
||||
XMLPUBFUN void * XMLCALL
|
||||
xmlNanoFTPConnectTo (const char *server,
|
||||
int port);
|
||||
/*
|
||||
* Opening/closing session connections.
|
||||
*/
|
||||
XMLPUBFUN void * XMLCALL
|
||||
XMLPUBFUN void * XMLCALL
|
||||
xmlNanoFTPOpen (const char *URL);
|
||||
XMLPUBFUN int XMLCALL
|
||||
XMLPUBFUN int XMLCALL
|
||||
xmlNanoFTPConnect (void *ctx);
|
||||
XMLPUBFUN int XMLCALL
|
||||
XMLPUBFUN int XMLCALL
|
||||
xmlNanoFTPClose (void *ctx);
|
||||
XMLPUBFUN int XMLCALL
|
||||
XMLPUBFUN int XMLCALL
|
||||
xmlNanoFTPQuit (void *ctx);
|
||||
XMLPUBFUN void XMLCALL
|
||||
XMLPUBFUN void XMLCALL
|
||||
xmlNanoFTPScanProxy (const char *URL);
|
||||
XMLPUBFUN void XMLCALL
|
||||
XMLPUBFUN void XMLCALL
|
||||
xmlNanoFTPProxy (const char *host,
|
||||
int port,
|
||||
const char *user,
|
||||
const char *passwd,
|
||||
int type);
|
||||
XMLPUBFUN int XMLCALL
|
||||
XMLPUBFUN int XMLCALL
|
||||
xmlNanoFTPUpdateURL (void *ctx,
|
||||
const char *URL);
|
||||
|
||||
/*
|
||||
* Rather internal commands.
|
||||
*/
|
||||
XMLPUBFUN int XMLCALL
|
||||
XMLPUBFUN int XMLCALL
|
||||
xmlNanoFTPGetResponse (void *ctx);
|
||||
XMLPUBFUN int XMLCALL
|
||||
XMLPUBFUN int XMLCALL
|
||||
xmlNanoFTPCheckResponse (void *ctx);
|
||||
|
||||
/*
|
||||
* CD/DIR/GET handlers.
|
||||
*/
|
||||
XMLPUBFUN int XMLCALL
|
||||
XMLPUBFUN int XMLCALL
|
||||
xmlNanoFTPCwd (void *ctx,
|
||||
const char *directory);
|
||||
XMLPUBFUN int XMLCALL
|
||||
XMLPUBFUN int XMLCALL
|
||||
xmlNanoFTPDele (void *ctx,
|
||||
const char *file);
|
||||
|
||||
XMLPUBFUN int XMLCALL
|
||||
XMLPUBFUN SOCKET XMLCALL
|
||||
xmlNanoFTPGetConnection (void *ctx);
|
||||
XMLPUBFUN int XMLCALL
|
||||
XMLPUBFUN int XMLCALL
|
||||
xmlNanoFTPCloseConnection(void *ctx);
|
||||
XMLPUBFUN int XMLCALL
|
||||
XMLPUBFUN int XMLCALL
|
||||
xmlNanoFTPList (void *ctx,
|
||||
ftpListCallback callback,
|
||||
void *userData,
|
||||
const char *filename);
|
||||
XMLPUBFUN int XMLCALL
|
||||
XMLPUBFUN SOCKET XMLCALL
|
||||
xmlNanoFTPGetSocket (void *ctx,
|
||||
const char *filename);
|
||||
XMLPUBFUN int XMLCALL
|
||||
XMLPUBFUN int XMLCALL
|
||||
xmlNanoFTPGet (void *ctx,
|
||||
ftpDataCallback callback,
|
||||
void *userData,
|
||||
const char *filename);
|
||||
XMLPUBFUN int XMLCALL
|
||||
XMLPUBFUN int XMLCALL
|
||||
xmlNanoFTPRead (void *ctx,
|
||||
void *dest,
|
||||
int len);
|
||||
|
|
|
@ -1222,6 +1222,7 @@ typedef enum {
|
|||
XML_WITH_DEBUG_MEM = 29,
|
||||
XML_WITH_DEBUG_RUN = 30,
|
||||
XML_WITH_ZLIB = 31,
|
||||
XML_WITH_ICU = 32,
|
||||
XML_WITH_NONE = 99999 /* just to be sure of allocation size */
|
||||
} xmlFeature;
|
||||
|
||||
|
@ -1232,4 +1233,3 @@ XMLPUBFUN int XMLCALL
|
|||
}
|
||||
#endif
|
||||
#endif /* __XML_PARSER_H__ */
|
||||
|
||||
|
|
|
@ -33,7 +33,8 @@ typedef enum {
|
|||
XML_SAVE_NO_XHTML = 1<<3, /* disable XHTML1 specific rules */
|
||||
XML_SAVE_XHTML = 1<<4, /* force XHTML1 specific rules */
|
||||
XML_SAVE_AS_XML = 1<<5, /* force XML serialization on HTML doc */
|
||||
XML_SAVE_AS_HTML = 1<<6 /* force HTML serialization on XML doc */
|
||||
XML_SAVE_AS_HTML = 1<<6, /* force HTML serialization on XML doc */
|
||||
XML_SAVE_WSNONSIG = 1<<7 /* format with non-significant whitespace */
|
||||
} xmlSaveOption;
|
||||
|
||||
|
||||
|
|
|
@ -29,28 +29,28 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
|
|||
*
|
||||
* the version string like "1.2.3"
|
||||
*/
|
||||
#define LIBXML_DOTTED_VERSION "2.7.7"
|
||||
#define LIBXML_DOTTED_VERSION "2.7.8"
|
||||
|
||||
/**
|
||||
* LIBXML_VERSION:
|
||||
*
|
||||
* the version number: 1.2.3 value is 10203
|
||||
*/
|
||||
#define LIBXML_VERSION 20707
|
||||
#define LIBXML_VERSION 20708
|
||||
|
||||
/**
|
||||
* LIBXML_VERSION_STRING:
|
||||
*
|
||||
* the version number string, 1.2.3 value is "10203"
|
||||
*/
|
||||
#define LIBXML_VERSION_STRING "20707"
|
||||
#define LIBXML_VERSION_STRING "20708"
|
||||
|
||||
/**
|
||||
* LIBXML_VERSION_EXTRA:
|
||||
*
|
||||
* extra version information, used to show a CVS compilation
|
||||
*/
|
||||
#define LIBXML_VERSION_EXTRA "-GITv2.7.6-36-g06c93b7"
|
||||
#define LIBXML_VERSION_EXTRA "-GITv2.7.7-40-g82143f4"
|
||||
|
||||
/**
|
||||
* LIBXML_TEST_VERSION:
|
||||
|
@ -58,7 +58,7 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
|
|||
* Macro to check that the libxml version in use is compatible with
|
||||
* the version the software has been compiled against
|
||||
*/
|
||||
#define LIBXML_TEST_VERSION xmlCheckVersion(20707);
|
||||
#define LIBXML_TEST_VERSION xmlCheckVersion(20708);
|
||||
|
||||
#ifndef VMS
|
||||
#if 0
|
||||
|
@ -268,6 +268,15 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
|
|||
#define LIBXML_ICONV_ENABLED
|
||||
#endif
|
||||
|
||||
/**
|
||||
* LIBXML_ICU_ENABLED:
|
||||
*
|
||||
* Whether icu support is available
|
||||
*/
|
||||
#if 0
|
||||
#define LIBXML_ICU_ENABLED
|
||||
#endif
|
||||
|
||||
/**
|
||||
* LIBXML_ISO8859X_ENABLED:
|
||||
*
|
||||
|
|
|
@ -268,6 +268,15 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
|
|||
#define LIBXML_ICONV_ENABLED
|
||||
#endif
|
||||
|
||||
/**
|
||||
* LIBXML_ICU_ENABLED:
|
||||
*
|
||||
* Whether icu support is available
|
||||
*/
|
||||
#if @WITH_ICU@
|
||||
#define LIBXML_ICU_ENABLED
|
||||
#endif
|
||||
|
||||
/**
|
||||
* LIBXML_ISO8859X_ENABLED:
|
||||
*
|
||||
|
|
21
reactos/lib/3rdparty/libxml2/HTMLparser.c
vendored
21
reactos/lib/3rdparty/libxml2/HTMLparser.c
vendored
|
@ -2887,9 +2887,11 @@ htmlParseScript(htmlParserCtxtPtr ctxt) {
|
|||
}
|
||||
|
||||
if ((!(IS_CHAR_CH(cur))) && (!((cur == 0) && (ctxt->progressive)))) {
|
||||
htmlParseErrInt(ctxt, XML_ERR_INVALID_CHAR,
|
||||
"Invalid char in CDATA 0x%X\n", cur);
|
||||
NEXT;
|
||||
htmlParseErrInt(ctxt, XML_ERR_INVALID_CHAR,
|
||||
"Invalid char in CDATA 0x%X\n", cur);
|
||||
if (ctxt->input->cur < ctxt->input->end) {
|
||||
NEXT;
|
||||
}
|
||||
}
|
||||
|
||||
if ((nbchar != 0) && (ctxt->sax != NULL) && (!ctxt->disableSAX)) {
|
||||
|
@ -3275,7 +3277,7 @@ htmlParseCharRef(htmlParserCtxtPtr ctxt) {
|
|||
val = val * 16 + (CUR - 'A') + 10;
|
||||
else {
|
||||
htmlParseErr(ctxt, XML_ERR_INVALID_HEX_CHARREF,
|
||||
"htmlParseCharRef: missing semicolumn\n",
|
||||
"htmlParseCharRef: missing semicolon\n",
|
||||
NULL, NULL);
|
||||
break;
|
||||
}
|
||||
|
@ -3290,7 +3292,7 @@ htmlParseCharRef(htmlParserCtxtPtr ctxt) {
|
|||
val = val * 10 + (CUR - '0');
|
||||
else {
|
||||
htmlParseErr(ctxt, XML_ERR_INVALID_DEC_CHARREF,
|
||||
"htmlParseCharRef: missing semicolumn\n",
|
||||
"htmlParseCharRef: missing semicolon\n",
|
||||
NULL, NULL);
|
||||
break;
|
||||
}
|
||||
|
@ -4670,7 +4672,7 @@ htmlParseDocument(htmlParserCtxtPtr ctxt) {
|
|||
if ((ctxt->sax) && (ctxt->sax->endDocument != NULL))
|
||||
ctxt->sax->endDocument(ctxt->userData);
|
||||
|
||||
if (ctxt->myDoc != NULL) {
|
||||
if ((!(ctxt->options & HTML_PARSE_NODEFDTD)) && (ctxt->myDoc != NULL)) {
|
||||
dtd = xmlGetIntSubset(ctxt->myDoc);
|
||||
if (dtd == NULL)
|
||||
ctxt->myDoc->intSubset =
|
||||
|
@ -5609,7 +5611,7 @@ htmlParseTryOrFinish(htmlParserCtxtPtr ctxt, int terminate) {
|
|||
int idx;
|
||||
xmlChar val;
|
||||
|
||||
idx = htmlParseLookupSequence(ctxt, '<', '/', 0, 0, 1);
|
||||
idx = htmlParseLookupSequence(ctxt, '<', '/', 0, 0, 0);
|
||||
if (idx < 0)
|
||||
goto done;
|
||||
val = in->cur[idx + 2];
|
||||
|
@ -6451,6 +6453,7 @@ htmlCtxtReset(htmlParserCtxtPtr ctxt)
|
|||
|
||||
ctxt->wellFormed = 1;
|
||||
ctxt->nsWellFormed = 1;
|
||||
ctxt->disableSAX = 0;
|
||||
ctxt->valid = 1;
|
||||
ctxt->vctxt.userData = ctxt;
|
||||
ctxt->vctxt.error = xmlParserValidityError;
|
||||
|
@ -6530,6 +6533,10 @@ htmlCtxtUseOptions(htmlParserCtxtPtr ctxt, int options)
|
|||
ctxt->options |= XML_PARSE_HUGE;
|
||||
options -= XML_PARSE_HUGE;
|
||||
}
|
||||
if (options & HTML_PARSE_NODEFDTD) {
|
||||
ctxt->options |= HTML_PARSE_NODEFDTD;
|
||||
options -= HTML_PARSE_NODEFDTD;
|
||||
}
|
||||
ctxt->dictNames = 0;
|
||||
return (options);
|
||||
}
|
||||
|
|
4
reactos/lib/3rdparty/libxml2/Makefile.am
vendored
4
reactos/lib/3rdparty/libxml2/Makefile.am
vendored
|
@ -1213,9 +1213,9 @@ DOC_MODULE=libxml2-$(VERSION)
|
|||
EXAMPLES_DIR=$(BASE_DIR)/$(DOC_MODULE)/examples
|
||||
|
||||
install-data-local:
|
||||
$(mkinstalldirs) $(DESTDIR)$(BASE_DIR)/$(DOC_MODULE)
|
||||
@MKDIR_P@ $(DESTDIR)$(BASE_DIR)/$(DOC_MODULE)
|
||||
-@INSTALL@ -m 0644 $(srcdir)/Copyright $(DESTDIR)$(BASE_DIR)/$(DOC_MODULE)
|
||||
$(mkinstalldirs) $(DESTDIR)$(EXAMPLES_DIR)
|
||||
@MKDIR_P@ $(DESTDIR)$(EXAMPLES_DIR)
|
||||
-@INSTALL@ -m 0644 $(srcdir)/xmllint.c $(DESTDIR)$(EXAMPLES_DIR)
|
||||
-@INSTALL@ -m 0644 $(srcdir)/testSAX.c $(DESTDIR)$(EXAMPLES_DIR)
|
||||
-@INSTALL@ -m 0644 $(srcdir)/testHTML.c $(DESTDIR)$(EXAMPLES_DIR)
|
||||
|
|
12
reactos/lib/3rdparty/libxml2/Makefile.in
vendored
12
reactos/lib/3rdparty/libxml2/Makefile.in
vendored
|
@ -52,7 +52,7 @@ DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
|
|||
$(srcdir)/libxml-2.0.pc.in $(srcdir)/libxml.spec.in \
|
||||
$(srcdir)/xml2-config.in $(top_srcdir)/configure AUTHORS \
|
||||
COPYING ChangeLog INSTALL NEWS TODO acconfig.h config.guess \
|
||||
config.sub depcomp install-sh ltmain.sh missing mkinstalldirs
|
||||
config.sub depcomp install-sh ltmain.sh missing
|
||||
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 \
|
||||
|
@ -62,7 +62,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
|||
$(ACLOCAL_M4)
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
configure.lineno config.status.lineno
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = config.h
|
||||
CONFIG_CLEAN_FILES = libxml2.spec xml2-config libxml-2.0.pc \
|
||||
libxml-2.0-uninstalled.pc
|
||||
|
@ -418,6 +418,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
|||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
|
@ -466,6 +467,7 @@ VERSION_SCRIPT_FLAGS = @VERSION_SCRIPT_FLAGS@
|
|||
WGET = @WGET@
|
||||
WIN32_EXTRA_LDFLAGS = @WIN32_EXTRA_LDFLAGS@
|
||||
WIN32_EXTRA_LIBADD = @WIN32_EXTRA_LIBADD@
|
||||
WIN32_EXTRA_PYTHON_LIBADD = @WIN32_EXTRA_PYTHON_LIBADD@
|
||||
WITH_C14N = @WITH_C14N@
|
||||
WITH_CATALOG = @WITH_CATALOG@
|
||||
WITH_DEBUG = @WITH_DEBUG@
|
||||
|
@ -474,6 +476,7 @@ WITH_FTP = @WITH_FTP@
|
|||
WITH_HTML = @WITH_HTML@
|
||||
WITH_HTTP = @WITH_HTTP@
|
||||
WITH_ICONV = @WITH_ICONV@
|
||||
WITH_ICU = @WITH_ICU@
|
||||
WITH_ISO8859X = @WITH_ISO8859X@
|
||||
WITH_LEGACY = @WITH_LEGACY@
|
||||
WITH_MEM_DEBUG = @WITH_MEM_DEBUG@
|
||||
|
@ -544,7 +547,6 @@ libdir = @libdir@
|
|||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
lt_ECHO = @lt_ECHO@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
|
@ -2700,9 +2702,9 @@ xml2Conf.sh: xml2Conf.sh.in Makefile
|
|||
&& mv xml2Conf.tmp xml2Conf.sh
|
||||
|
||||
install-data-local:
|
||||
$(mkinstalldirs) $(DESTDIR)$(BASE_DIR)/$(DOC_MODULE)
|
||||
@MKDIR_P@ $(DESTDIR)$(BASE_DIR)/$(DOC_MODULE)
|
||||
-@INSTALL@ -m 0644 $(srcdir)/Copyright $(DESTDIR)$(BASE_DIR)/$(DOC_MODULE)
|
||||
$(mkinstalldirs) $(DESTDIR)$(EXAMPLES_DIR)
|
||||
@MKDIR_P@ $(DESTDIR)$(EXAMPLES_DIR)
|
||||
-@INSTALL@ -m 0644 $(srcdir)/xmllint.c $(DESTDIR)$(EXAMPLES_DIR)
|
||||
-@INSTALL@ -m 0644 $(srcdir)/testSAX.c $(DESTDIR)$(EXAMPLES_DIR)
|
||||
-@INSTALL@ -m 0644 $(srcdir)/testHTML.c $(DESTDIR)$(EXAMPLES_DIR)
|
||||
|
|
8
reactos/lib/3rdparty/libxml2/SAX2.c
vendored
8
reactos/lib/3rdparty/libxml2/SAX2.c
vendored
|
@ -2242,8 +2242,12 @@ xmlSAX2StartElementNs(void *ctx,
|
|||
if ((URI != NULL) && (prefix == pref))
|
||||
ret->ns = ns;
|
||||
} else {
|
||||
xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElementNs");
|
||||
return;
|
||||
/*
|
||||
* any out of memory error would already have been raised
|
||||
* but we can't be garanteed it's the actual error due to the
|
||||
* API, best is to skip in this case
|
||||
*/
|
||||
continue;
|
||||
}
|
||||
#ifdef LIBXML_VALID_ENABLED
|
||||
if ((!ctxt->html) && ctxt->validate && ctxt->wellFormed &&
|
||||
|
|
7
reactos/lib/3rdparty/libxml2/catalog.c
vendored
7
reactos/lib/3rdparty/libxml2/catalog.c
vendored
|
@ -997,18 +997,15 @@ xmlLoadFileContent(const char *filename)
|
|||
}
|
||||
#ifdef HAVE_STAT
|
||||
len = read(fd, content, size);
|
||||
close(fd);
|
||||
#else
|
||||
len = fread(content, 1, size, fd);
|
||||
fclose(fd);
|
||||
#endif
|
||||
if (len < 0) {
|
||||
xmlFree(content);
|
||||
return (NULL);
|
||||
}
|
||||
#ifdef HAVE_STAT
|
||||
close(fd);
|
||||
#else
|
||||
fclose(fd);
|
||||
#endif
|
||||
content[len] = 0;
|
||||
|
||||
return(content);
|
||||
|
|
3
reactos/lib/3rdparty/libxml2/config.h.in
vendored
3
reactos/lib/3rdparty/libxml2/config.h.in
vendored
|
@ -274,6 +274,9 @@
|
|||
/* Define to the one symbol short name of this package. */
|
||||
#undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the home page for this package. */
|
||||
#undef PACKAGE_URL
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
|
|
13413
reactos/lib/3rdparty/libxml2/configure
vendored
13413
reactos/lib/3rdparty/libxml2/configure
vendored
File diff suppressed because it is too large
Load diff
68
reactos/lib/3rdparty/libxml2/configure.in
vendored
68
reactos/lib/3rdparty/libxml2/configure.in
vendored
|
@ -1,4 +1,5 @@
|
|||
dnl Process this file with autoconf to produce a configure script.
|
||||
AC_PREREQ(2.59)
|
||||
AC_INIT(entities.c)
|
||||
AM_CONFIG_HEADER(config.h)
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
|
@ -6,7 +7,7 @@ AC_CANONICAL_HOST
|
|||
|
||||
LIBXML_MAJOR_VERSION=2
|
||||
LIBXML_MINOR_VERSION=7
|
||||
LIBXML_MICRO_VERSION=7
|
||||
LIBXML_MICRO_VERSION=8
|
||||
LIBXML_MICRO_VERSION_SUFFIX=
|
||||
LIBXML_VERSION=$LIBXML_MAJOR_VERSION.$LIBXML_MINOR_VERSION.$LIBXML_MICRO_VERSION$LIBXML_MICRO_VERSION_SUFFIX
|
||||
LIBXML_VERSION_INFO=`expr $LIBXML_MAJOR_VERSION + $LIBXML_MINOR_VERSION`:$LIBXML_MICRO_VERSION:$LIBXML_MINOR_VERSION
|
||||
|
@ -52,6 +53,7 @@ AM_INIT_AUTOMAKE(libxml2, $VERSION)
|
|||
dnl Checks for programs.
|
||||
AC_PROG_CC
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_MKDIR_P
|
||||
AC_PROG_CPP
|
||||
AC_PATH_PROG(RM, rm, /bin/rm)
|
||||
AC_PATH_PROG(MV, mv, /bin/mv)
|
||||
|
@ -82,7 +84,7 @@ else
|
|||
esac
|
||||
fi
|
||||
AC_SUBST(VERSION_SCRIPT_FLAGS)
|
||||
AM_CONDITIONAL([USE_VERSION_SCRIPT], [test -n "$VERSION_SCRIPT_FLAGS"])
|
||||
AM_CONDITIONAL([USE_VERSION_SCRIPT], [test -z "$VERSION_SCRIPT_FLAGS"])
|
||||
|
||||
dnl
|
||||
dnl We process the AC_ARG_WITH first so that later we can modify
|
||||
|
@ -126,6 +128,8 @@ AC_ARG_WITH(http,
|
|||
[ --with-http add the HTTP support (on)])
|
||||
AC_ARG_WITH(iconv,
|
||||
[ --with-iconv[[=DIR]] add ICONV support (on)])
|
||||
AC_ARG_WITH(icu,
|
||||
[ --with-icu add ICU support (off)])
|
||||
AC_ARG_WITH(iso8859x,
|
||||
[ --with-iso8859x add ISO8859X support if no iconv (on)])
|
||||
AC_ARG_WITH(legacy,
|
||||
|
@ -702,17 +706,23 @@ if test "$with_python" != "no" ; then
|
|||
echo Found python in $with_python/bin/python
|
||||
PYTHON="$with_python/bin/python"
|
||||
else
|
||||
if test -x "$with_python"
|
||||
then
|
||||
echo Found python in $with_python
|
||||
PYTHON="$with_python"
|
||||
else
|
||||
if test -x "$PYTHON"
|
||||
then
|
||||
echo Found python in environment PYTHON=$PYTHON
|
||||
with_python=`$PYTHON -c "import sys; print sys.exec_prefix"`
|
||||
else
|
||||
AC_PATH_PROG(PYTHON, python python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5)
|
||||
if test -x "$with_python/python.exe"
|
||||
then
|
||||
echo Found python in $with_python/python.exe
|
||||
PYTHON="$with_python/python.exe"
|
||||
else
|
||||
if test -x "$with_python"
|
||||
then
|
||||
echo Found python in $with_python
|
||||
PYTHON="$with_python"
|
||||
else
|
||||
if test -x "$PYTHON"
|
||||
then
|
||||
echo Found python in environment PYTHON=$PYTHON
|
||||
with_python=`$PYTHON -c "import sys; print sys.exec_prefix"`
|
||||
else
|
||||
AC_PATH_PROG(PYTHON, python python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5)
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
@ -739,7 +749,14 @@ if test "$with_python" != "no" ; then
|
|||
PYTHON_INCLUDES=/usr/include/python$PYTHON_VERSION
|
||||
PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages
|
||||
else
|
||||
echo could not find python$PYTHON_VERSION/Python.h
|
||||
if test -r $with_python/include/Python.h -a \
|
||||
-d $with_python/lib/site-packages
|
||||
then
|
||||
PYTHON_INCLUDES=$with_python/include
|
||||
PYTHON_SITE_PACKAGES=$with_python/lib/site-packages
|
||||
else
|
||||
echo could not find python$PYTHON_VERSION/Python.h or $with_python/include/Python.h
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test ! -d "$PYTHON_SITE_PACKAGES"
|
||||
|
@ -1306,6 +1323,23 @@ XML_LIBS="-lxml2 $Z_LIBS $THREAD_LIBS $ICONV_LIBS $M_LIBS $LIBS"
|
|||
XML_LIBTOOLLIBS="libxml2.la"
|
||||
AC_SUBST(WITH_ICONV)
|
||||
|
||||
WITH_ICU=0
|
||||
if test "$with_icu" != "yes" ; then
|
||||
echo Disabling ICU support
|
||||
else
|
||||
ICU_CONFIG=icu-config
|
||||
if ${ICU_CONFIG} --cflags >/dev/null 2>&1
|
||||
then
|
||||
ICU_LIBS=`icu-config --ldflags`
|
||||
LDFLAGS="$LDFLAGS $ICU_LIBS"
|
||||
WITH_ICU=1
|
||||
echo Enabling ICU support
|
||||
else
|
||||
AC_MSG_ERROR([libicu config program icu-config not found])
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(WITH_ICU)
|
||||
|
||||
WITH_ISO8859X=1
|
||||
if test "$WITH_ICONV" != "1" ; then
|
||||
if test "$with_iso8859x" = "no" ; then
|
||||
|
@ -1395,6 +1429,7 @@ WIN32_EXTRA_LIBADD=
|
|||
WIN32_EXTRA_LDFLAGS=
|
||||
CYGWIN_EXTRA_LDFLAGS=
|
||||
CYGWIN_EXTRA_PYTHON_LIBADD=
|
||||
WIN32_EXTRA_PYTHON_LIBADD=
|
||||
case "$host" in
|
||||
*-*-mingw*)
|
||||
CPPFLAGS="$CPPFLAGS -DWIN32"
|
||||
|
@ -1403,6 +1438,10 @@ case "$host" in
|
|||
AC_DEFINE([_WINSOCKAPI_],1,[Using the Win32 Socket implementation])
|
||||
AC_DEFINE([snprintf],[_snprintf],[Win32 Std C name mangling work-around])
|
||||
AC_DEFINE([vsnprintf],[_vsnprintf],[Win32 Std C name mangling work-around])
|
||||
if test "${PYTHON}" != ""
|
||||
then
|
||||
WIN32_EXTRA_PYTHON_LIBADD="-L${pythondir}/../../libs -lpython${PYTHON_VERSION//./}"
|
||||
fi
|
||||
;;
|
||||
*-*-cygwin*)
|
||||
CYGWIN_EXTRA_LDFLAGS="-no-undefined"
|
||||
|
@ -1414,6 +1453,7 @@ case "$host" in
|
|||
esac
|
||||
AC_SUBST(WIN32_EXTRA_LIBADD)
|
||||
AC_SUBST(WIN32_EXTRA_LDFLAGS)
|
||||
AC_SUBST(WIN32_EXTRA_PYTHON_LIBADD)
|
||||
AC_SUBST(CYGWIN_EXTRA_LDFLAGS)
|
||||
AC_SUBST(CYGWIN_EXTRA_PYTHON_LIBADD)
|
||||
|
||||
|
|
2
reactos/lib/3rdparty/libxml2/debugXML.c
vendored
2
reactos/lib/3rdparty/libxml2/debugXML.c
vendored
|
@ -2941,7 +2941,7 @@ xmlShell(xmlDocPtr doc, char *filename, xmlShellReadlineFunc input,
|
|||
xmlGenericError(xmlGenericErrorContext,
|
||||
"Write command requires a filename argument\n");
|
||||
else
|
||||
xmlShellWrite(ctxt, arg, NULL, NULL);
|
||||
xmlShellWrite(ctxt, arg, ctxt->node, NULL);
|
||||
#endif /* LIBXML_OUTPUT_ENABLED */
|
||||
} else if (!strcmp(command, "grep")) {
|
||||
xmlShellGrep(ctxt, arg, ctxt->node, NULL);
|
||||
|
|
886
reactos/lib/3rdparty/libxml2/encoding.c
vendored
886
reactos/lib/3rdparty/libxml2/encoding.c
vendored
File diff suppressed because it is too large
Load diff
|
@ -42,7 +42,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
|||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
|
@ -166,6 +166,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
|||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
|
@ -214,6 +215,7 @@ VERSION_SCRIPT_FLAGS = @VERSION_SCRIPT_FLAGS@
|
|||
WGET = @WGET@
|
||||
WIN32_EXTRA_LDFLAGS = @WIN32_EXTRA_LDFLAGS@
|
||||
WIN32_EXTRA_LIBADD = @WIN32_EXTRA_LIBADD@
|
||||
WIN32_EXTRA_PYTHON_LIBADD = @WIN32_EXTRA_PYTHON_LIBADD@
|
||||
WITH_C14N = @WITH_C14N@
|
||||
WITH_CATALOG = @WITH_CATALOG@
|
||||
WITH_DEBUG = @WITH_DEBUG@
|
||||
|
@ -222,6 +224,7 @@ WITH_FTP = @WITH_FTP@
|
|||
WITH_HTML = @WITH_HTML@
|
||||
WITH_HTTP = @WITH_HTTP@
|
||||
WITH_ICONV = @WITH_ICONV@
|
||||
WITH_ICU = @WITH_ICU@
|
||||
WITH_ISO8859X = @WITH_ISO8859X@
|
||||
WITH_LEGACY = @WITH_LEGACY@
|
||||
WITH_MEM_DEBUG = @WITH_MEM_DEBUG@
|
||||
|
@ -292,7 +295,6 @@ libdir = @libdir@
|
|||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
lt_ECHO = @lt_ECHO@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
|
|
6
reactos/lib/3rdparty/libxml2/libxml2.spec
vendored
6
reactos/lib/3rdparty/libxml2/libxml2.spec
vendored
|
@ -1,6 +1,6 @@
|
|||
Summary: Library providing XML and HTML support
|
||||
Name: libxml2
|
||||
Version: 2.7.7
|
||||
Version: 2.7.8
|
||||
Release: 1
|
||||
License: MIT
|
||||
Group: Development/Libraries
|
||||
|
@ -127,6 +127,6 @@ rm -fr %{buildroot}
|
|||
%doc doc/python.html
|
||||
|
||||
%changelog
|
||||
* Mon Mar 15 2010 Daniel Veillard <veillard@redhat.com>
|
||||
- upstream release 2.7.7 see http://xmlsoft.org/news.html
|
||||
* Thu Nov 4 2010 Daniel Veillard <veillard@redhat.com>
|
||||
- upstream release 2.7.8 see http://xmlsoft.org/news.html
|
||||
|
||||
|
|
1739
reactos/lib/3rdparty/libxml2/ltmain.sh
vendored
1739
reactos/lib/3rdparty/libxml2/ltmain.sh
vendored
File diff suppressed because it is too large
Load diff
215
reactos/lib/3rdparty/libxml2/nanoftp.c
vendored
215
reactos/lib/3rdparty/libxml2/nanoftp.c
vendored
|
@ -78,7 +78,9 @@
|
|||
|
||||
|
||||
#if defined(__MINGW32__) || defined(_WIN32_WCE)
|
||||
#ifndef _WINSOCKAPI_
|
||||
#define _WINSOCKAPI_
|
||||
#endif
|
||||
#include <wsockcompat.h>
|
||||
#include <winsock2.h>
|
||||
#undef XML_SOCKLEN_T
|
||||
|
@ -92,7 +94,6 @@
|
|||
#if !defined(__BEOS__) || defined(__HAIKU__)
|
||||
#define closesocket(s) close(s)
|
||||
#endif
|
||||
#define SOCKET int
|
||||
#endif
|
||||
|
||||
#ifdef __BEOS__
|
||||
|
@ -484,7 +485,7 @@ xmlNanoFTPNewCtxt(const char *URL) {
|
|||
ret->returnValue = 0;
|
||||
ret->controlBufIndex = 0;
|
||||
ret->controlBufUsed = 0;
|
||||
ret->controlFd = -1;
|
||||
ret->controlFd = INVALID_SOCKET;
|
||||
|
||||
unescaped = xmlURIUnescapeString(URL, 0, NULL);
|
||||
if (unescaped != NULL) {
|
||||
|
@ -511,8 +512,8 @@ xmlNanoFTPFreeCtxt(void * ctx) {
|
|||
if (ctxt->protocol != NULL) xmlFree(ctxt->protocol);
|
||||
if (ctxt->path != NULL) xmlFree(ctxt->path);
|
||||
ctxt->passive = 1;
|
||||
if (ctxt->controlFd >= 0) closesocket(ctxt->controlFd);
|
||||
ctxt->controlFd = -1;
|
||||
if (ctxt->controlFd != INVALID_SOCKET) closesocket(ctxt->controlFd);
|
||||
ctxt->controlFd = INVALID_SOCKET;
|
||||
ctxt->controlBufIndex = -1;
|
||||
ctxt->controlBufUsed = -1;
|
||||
xmlFree(ctxt);
|
||||
|
@ -567,7 +568,7 @@ xmlNanoFTPGetMore(void *ctx) {
|
|||
int len;
|
||||
int size;
|
||||
|
||||
if ((ctxt == NULL) || (ctxt->controlFd < 0)) return(-1);
|
||||
if ((ctxt == NULL) || (ctxt->controlFd == INVALID_SOCKET)) return(-1);
|
||||
|
||||
if ((ctxt->controlBufIndex < 0) || (ctxt->controlBufIndex > FTP_BUF_SIZE)) {
|
||||
#ifdef DEBUG_FTP
|
||||
|
@ -619,8 +620,8 @@ xmlNanoFTPGetMore(void *ctx) {
|
|||
if ((len = recv(ctxt->controlFd, &ctxt->controlBuf[ctxt->controlBufIndex],
|
||||
size, 0)) < 0) {
|
||||
__xmlIOErr(XML_FROM_FTP, 0, "recv failed");
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = -1;
|
||||
ctxt->controlFd = -1;
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET;
|
||||
ctxt->controlFd = INVALID_SOCKET;
|
||||
return(-1);
|
||||
}
|
||||
#ifdef DEBUG_FTP
|
||||
|
@ -648,7 +649,7 @@ xmlNanoFTPReadResponse(void *ctx) {
|
|||
int len;
|
||||
int res = -1, cur = -1;
|
||||
|
||||
if ((ctxt == NULL) || (ctxt->controlFd < 0)) return(-1);
|
||||
if ((ctxt == NULL) || (ctxt->controlFd == INVALID_SOCKET)) return(-1);
|
||||
|
||||
get_more:
|
||||
/*
|
||||
|
@ -737,7 +738,7 @@ xmlNanoFTPCheckResponse(void *ctx) {
|
|||
fd_set rfd;
|
||||
struct timeval tv;
|
||||
|
||||
if ((ctxt == NULL) || (ctxt->controlFd < 0)) return(-1);
|
||||
if ((ctxt == NULL) || (ctxt->controlFd == INVALID_SOCKET)) return(-1);
|
||||
tv.tv_sec = 0;
|
||||
tv.tv_usec = 0;
|
||||
FD_ZERO(&rfd);
|
||||
|
@ -826,7 +827,7 @@ xmlNanoFTPQuit(void *ctx) {
|
|||
char buf[200];
|
||||
int len, res;
|
||||
|
||||
if ((ctxt == NULL) || (ctxt->controlFd < 0)) return(-1);
|
||||
if ((ctxt == NULL) || (ctxt->controlFd == INVALID_SOCKET)) return(-1);
|
||||
|
||||
snprintf(buf, sizeof(buf), "QUIT\r\n");
|
||||
len = strlen(buf);
|
||||
|
@ -951,7 +952,7 @@ xmlNanoFTPConnect(void *ctx) {
|
|||
addrlen = sizeof (struct sockaddr_in);
|
||||
}
|
||||
|
||||
if (ctxt->controlFd < 0) {
|
||||
if (ctxt->controlFd == INVALID_SOCKET) {
|
||||
__xmlIOErr(XML_FROM_FTP, 0, "socket failed");
|
||||
return(-1);
|
||||
}
|
||||
|
@ -962,8 +963,8 @@ xmlNanoFTPConnect(void *ctx) {
|
|||
if (connect(ctxt->controlFd, (struct sockaddr *) &ctxt->ftpAddr,
|
||||
addrlen) < 0) {
|
||||
__xmlIOErr(XML_FROM_FTP, 0, "Failed to create a connection");
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = -1;
|
||||
ctxt->controlFd = -1;
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET;
|
||||
ctxt->controlFd = INVALID_SOCKET;
|
||||
return(-1);
|
||||
}
|
||||
|
||||
|
@ -972,8 +973,8 @@ xmlNanoFTPConnect(void *ctx) {
|
|||
*/
|
||||
res = xmlNanoFTPGetResponse(ctxt);
|
||||
if (res != 2) {
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = -1;
|
||||
ctxt->controlFd = -1;
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET;
|
||||
ctxt->controlFd = INVALID_SOCKET;
|
||||
return(-1);
|
||||
}
|
||||
|
||||
|
@ -1030,7 +1031,7 @@ xmlNanoFTPConnect(void *ctx) {
|
|||
if (res < 0) {
|
||||
__xmlIOErr(XML_FROM_FTP, 0, "send failed");
|
||||
closesocket(ctxt->controlFd);
|
||||
ctxt->controlFd = -1;
|
||||
ctxt->controlFd = INVALID_SOCKET;
|
||||
return(res);
|
||||
}
|
||||
res = xmlNanoFTPGetResponse(ctxt);
|
||||
|
@ -1052,13 +1053,13 @@ xmlNanoFTPConnect(void *ctx) {
|
|||
if (res < 0) {
|
||||
__xmlIOErr(XML_FROM_FTP, 0, "send failed");
|
||||
closesocket(ctxt->controlFd);
|
||||
ctxt->controlFd = -1;
|
||||
ctxt->controlFd = INVALID_SOCKET;
|
||||
return(res);
|
||||
}
|
||||
res = xmlNanoFTPGetResponse(ctxt);
|
||||
if (res > 3) {
|
||||
closesocket(ctxt->controlFd);
|
||||
ctxt->controlFd = -1;
|
||||
ctxt->controlFd = INVALID_SOCKET;
|
||||
return(-1);
|
||||
}
|
||||
break;
|
||||
|
@ -1069,7 +1070,7 @@ xmlNanoFTPConnect(void *ctx) {
|
|||
case -1:
|
||||
default:
|
||||
closesocket(ctxt->controlFd);
|
||||
ctxt->controlFd = -1;
|
||||
ctxt->controlFd = INVALID_SOCKET;
|
||||
return(-1);
|
||||
}
|
||||
}
|
||||
|
@ -1092,8 +1093,8 @@ xmlNanoFTPConnect(void *ctx) {
|
|||
res = send(ctxt->controlFd, buf, len, 0);
|
||||
if (res < 0) {
|
||||
__xmlIOErr(XML_FROM_FTP, 0, "send failed");
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = -1;
|
||||
ctxt->controlFd = -1;
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET;
|
||||
ctxt->controlFd = INVALID_SOCKET;
|
||||
return(res);
|
||||
}
|
||||
res = xmlNanoFTPGetResponse(ctxt);
|
||||
|
@ -1103,8 +1104,8 @@ xmlNanoFTPConnect(void *ctx) {
|
|||
break;
|
||||
}
|
||||
if (proxyType == 1) {
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = -1;
|
||||
ctxt->controlFd = -1;
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET;
|
||||
ctxt->controlFd = INVALID_SOCKET;
|
||||
return(-1);
|
||||
}
|
||||
case 2:
|
||||
|
@ -1123,8 +1124,8 @@ xmlNanoFTPConnect(void *ctx) {
|
|||
res = send(ctxt->controlFd, buf, len, 0);
|
||||
if (res < 0) {
|
||||
__xmlIOErr(XML_FROM_FTP, 0, "send failed");
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = -1;
|
||||
ctxt->controlFd = -1;
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET;
|
||||
ctxt->controlFd = INVALID_SOCKET;
|
||||
return(res);
|
||||
}
|
||||
res = xmlNanoFTPGetResponse(ctxt);
|
||||
|
@ -1145,8 +1146,8 @@ xmlNanoFTPConnect(void *ctx) {
|
|||
res = send(ctxt->controlFd, buf, len, 0);
|
||||
if (res < 0) {
|
||||
__xmlIOErr(XML_FROM_FTP, 0, "send failed");
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = -1;
|
||||
ctxt->controlFd = -1;
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET;
|
||||
ctxt->controlFd = INVALID_SOCKET;
|
||||
return(res);
|
||||
}
|
||||
res = xmlNanoFTPGetResponse(ctxt);
|
||||
|
@ -1156,8 +1157,8 @@ xmlNanoFTPConnect(void *ctx) {
|
|||
return(0);
|
||||
}
|
||||
if (proxyType == 2) {
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = -1;
|
||||
ctxt->controlFd = -1;
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET;
|
||||
ctxt->controlFd = INVALID_SOCKET;
|
||||
return(-1);
|
||||
}
|
||||
case 3:
|
||||
|
@ -1166,8 +1167,8 @@ xmlNanoFTPConnect(void *ctx) {
|
|||
* send the code or at least the sequence in use.
|
||||
*/
|
||||
default:
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = -1;
|
||||
ctxt->controlFd = -1;
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET;
|
||||
ctxt->controlFd = INVALID_SOCKET;
|
||||
return(-1);
|
||||
}
|
||||
}
|
||||
|
@ -1176,8 +1177,8 @@ xmlNanoFTPConnect(void *ctx) {
|
|||
*/
|
||||
res = xmlNanoFTPSendUser(ctxt);
|
||||
if (res < 0) {
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = -1;
|
||||
ctxt->controlFd = -1;
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET;
|
||||
ctxt->controlFd = INVALID_SOCKET;
|
||||
return(-1);
|
||||
}
|
||||
res = xmlNanoFTPGetResponse(ctxt);
|
||||
|
@ -1191,14 +1192,14 @@ xmlNanoFTPConnect(void *ctx) {
|
|||
case 5:
|
||||
case -1:
|
||||
default:
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = -1;
|
||||
ctxt->controlFd = -1;
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET;
|
||||
ctxt->controlFd = INVALID_SOCKET;
|
||||
return(-1);
|
||||
}
|
||||
res = xmlNanoFTPSendPasswd(ctxt);
|
||||
if (res < 0) {
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = -1;
|
||||
ctxt->controlFd = -1;
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET;
|
||||
ctxt->controlFd = INVALID_SOCKET;
|
||||
return(-1);
|
||||
}
|
||||
res = xmlNanoFTPGetResponse(ctxt);
|
||||
|
@ -1213,8 +1214,8 @@ xmlNanoFTPConnect(void *ctx) {
|
|||
case 5:
|
||||
case -1:
|
||||
default:
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = -1;
|
||||
ctxt->controlFd = -1;
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET;
|
||||
ctxt->controlFd = INVALID_SOCKET;
|
||||
return(-1);
|
||||
}
|
||||
|
||||
|
@ -1270,7 +1271,7 @@ xmlNanoFTPCwd(void *ctx, const char *directory) {
|
|||
int len;
|
||||
int res;
|
||||
|
||||
if ((ctxt == NULL) || (ctxt->controlFd < 0)) return(-1);
|
||||
if ((ctxt == NULL) || (ctxt->controlFd == INVALID_SOCKET)) return(-1);
|
||||
if (directory == NULL) return 0;
|
||||
|
||||
/*
|
||||
|
@ -1319,7 +1320,7 @@ xmlNanoFTPDele(void *ctx, const char *file) {
|
|||
int len;
|
||||
int res;
|
||||
|
||||
if ((ctxt == NULL) || (ctxt->controlFd < 0) || (file == NULL)) return(-1);
|
||||
if ((ctxt == NULL) || (ctxt->controlFd == INVALID_SOCKET) || (file == NULL)) return(-1);
|
||||
if (file == NULL) return (0);
|
||||
|
||||
/*
|
||||
|
@ -1362,7 +1363,7 @@ xmlNanoFTPDele(void *ctx, const char *file) {
|
|||
* Returns -1 incase of error, 0 otherwise
|
||||
*/
|
||||
|
||||
int
|
||||
SOCKET
|
||||
xmlNanoFTPGetConnection(void *ctx) {
|
||||
xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx;
|
||||
char buf[200], *cur;
|
||||
|
@ -1377,7 +1378,7 @@ xmlNanoFTPGetConnection(void *ctx) {
|
|||
#endif
|
||||
XML_SOCKLEN_T dataAddrLen;
|
||||
|
||||
if (ctxt == NULL) return(-1);
|
||||
if (ctxt == NULL) return INVALID_SOCKET;
|
||||
|
||||
memset (&dataAddr, 0, sizeof(dataAddr));
|
||||
#ifdef SUPPORT_IP6
|
||||
|
@ -1393,9 +1394,9 @@ xmlNanoFTPGetConnection(void *ctx) {
|
|||
dataAddrLen = sizeof (struct sockaddr_in);
|
||||
}
|
||||
|
||||
if (ctxt->dataFd < 0) {
|
||||
if (ctxt->dataFd == INVALID_SOCKET) {
|
||||
__xmlIOErr(XML_FROM_FTP, 0, "socket failed");
|
||||
return (-1);
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
|
||||
if (ctxt->passive) {
|
||||
|
@ -1412,19 +1413,19 @@ xmlNanoFTPGetConnection(void *ctx) {
|
|||
res = send(ctxt->controlFd, buf, len, 0);
|
||||
if (res < 0) {
|
||||
__xmlIOErr(XML_FROM_FTP, 0, "send failed");
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = -1;
|
||||
return(res);
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
res = xmlNanoFTPReadResponse(ctx);
|
||||
if (res != 2) {
|
||||
if (res == 5) {
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = -1;
|
||||
return(-1);
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
|
||||
return INVALID_SOCKET;
|
||||
} else {
|
||||
/*
|
||||
* retry with an active connection
|
||||
*/
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = -1;
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
|
||||
ctxt->passive = 0;
|
||||
}
|
||||
}
|
||||
|
@ -1435,10 +1436,10 @@ xmlNanoFTPGetConnection(void *ctx) {
|
|||
if (sscanf (cur, "%u", &temp[0]) != 1) {
|
||||
__xmlIOErr(XML_FROM_FTP, XML_FTP_EPSV_ANSWER,
|
||||
"Invalid answer to EPSV\n");
|
||||
if (ctxt->dataFd != -1) {
|
||||
closesocket (ctxt->dataFd); ctxt->dataFd = -1;
|
||||
if (ctxt->dataFd != INVALID_SOCKET) {
|
||||
closesocket (ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
|
||||
}
|
||||
return (-1);
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
memcpy (&((struct sockaddr_in6 *)&dataAddr)->sin6_addr, &((struct sockaddr_in6 *)&ctxt->ftpAddr)->sin6_addr, sizeof(struct in6_addr));
|
||||
((struct sockaddr_in6 *)&dataAddr)->sin6_port = htons (temp[0]);
|
||||
|
@ -1450,10 +1451,10 @@ xmlNanoFTPGetConnection(void *ctx) {
|
|||
&temp[3], &temp[4], &temp[5]) != 6) {
|
||||
__xmlIOErr(XML_FROM_FTP, XML_FTP_PASV_ANSWER,
|
||||
"Invalid answer to PASV\n");
|
||||
if (ctxt->dataFd != -1) {
|
||||
closesocket (ctxt->dataFd); ctxt->dataFd = -1;
|
||||
if (ctxt->dataFd != INVALID_SOCKET) {
|
||||
closesocket (ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
|
||||
}
|
||||
return (-1);
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
for (i=0; i<6; i++) ad[i] = (unsigned char) (temp[i] & 0xff);
|
||||
memcpy (&((struct sockaddr_in *)&dataAddr)->sin_addr, &ad[0], 4);
|
||||
|
@ -1462,8 +1463,8 @@ xmlNanoFTPGetConnection(void *ctx) {
|
|||
|
||||
if (connect(ctxt->dataFd, (struct sockaddr *) &dataAddr, dataAddrLen) < 0) {
|
||||
__xmlIOErr(XML_FROM_FTP, 0, "Failed to create a data connection");
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = -1;
|
||||
return (-1);
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
} else {
|
||||
getsockname(ctxt->dataFd, (struct sockaddr *) &dataAddr, &dataAddrLen);
|
||||
|
@ -1476,15 +1477,15 @@ xmlNanoFTPGetConnection(void *ctx) {
|
|||
|
||||
if (bind(ctxt->dataFd, (struct sockaddr *) &dataAddr, dataAddrLen) < 0) {
|
||||
__xmlIOErr(XML_FROM_FTP, 0, "bind failed");
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = -1;
|
||||
return (-1);
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
getsockname(ctxt->dataFd, (struct sockaddr *) &dataAddr, &dataAddrLen);
|
||||
|
||||
if (listen(ctxt->dataFd, 1) < 0) {
|
||||
__xmlIOErr(XML_FROM_FTP, 0, "listen failed");
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = -1;
|
||||
return (-1);
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
#ifdef SUPPORT_IP6
|
||||
if ((ctxt->ftpAddr).ss_family == AF_INET6) {
|
||||
|
@ -1513,13 +1514,13 @@ xmlNanoFTPGetConnection(void *ctx) {
|
|||
res = send(ctxt->controlFd, buf, len, 0);
|
||||
if (res < 0) {
|
||||
__xmlIOErr(XML_FROM_FTP, 0, "send failed");
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = -1;
|
||||
return(res);
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
res = xmlNanoFTPGetResponse(ctxt);
|
||||
if (res != 2) {
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = -1;
|
||||
return(-1);
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
}
|
||||
return(ctxt->dataFd);
|
||||
|
@ -1542,9 +1543,9 @@ xmlNanoFTPCloseConnection(void *ctx) {
|
|||
fd_set rfd, efd;
|
||||
struct timeval tv;
|
||||
|
||||
if ((ctxt == NULL) || (ctxt->controlFd < 0)) return(-1);
|
||||
if ((ctxt == NULL) || (ctxt->controlFd == INVALID_SOCKET)) return(-1);
|
||||
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = -1;
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
|
||||
tv.tv_sec = 15;
|
||||
tv.tv_usec = 0;
|
||||
FD_ZERO(&rfd);
|
||||
|
@ -1556,7 +1557,7 @@ xmlNanoFTPCloseConnection(void *ctx) {
|
|||
#ifdef DEBUG_FTP
|
||||
perror("select");
|
||||
#endif
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = -1;
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET;
|
||||
return(-1);
|
||||
}
|
||||
if (res == 0) {
|
||||
|
@ -1564,11 +1565,11 @@ xmlNanoFTPCloseConnection(void *ctx) {
|
|||
xmlGenericError(xmlGenericErrorContext,
|
||||
"xmlNanoFTPCloseConnection: timeout\n");
|
||||
#endif
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = -1;
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET;
|
||||
} else {
|
||||
res = xmlNanoFTPGetResponse(ctxt);
|
||||
if (res != 2) {
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = -1;
|
||||
closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET;
|
||||
return(-1);
|
||||
}
|
||||
}
|
||||
|
@ -1729,7 +1730,7 @@ xmlNanoFTPList(void *ctx, ftpListCallback callback, void *userData,
|
|||
if (xmlNanoFTPCwd(ctxt, ctxt->path) < 1)
|
||||
return(-1);
|
||||
ctxt->dataFd = xmlNanoFTPGetConnection(ctxt);
|
||||
if (ctxt->dataFd == -1)
|
||||
if (ctxt->dataFd == INVALID_SOCKET)
|
||||
return(-1);
|
||||
snprintf(buf, sizeof(buf), "LIST -L\r\n");
|
||||
} else {
|
||||
|
@ -1738,7 +1739,7 @@ xmlNanoFTPList(void *ctx, ftpListCallback callback, void *userData,
|
|||
return(-1);
|
||||
}
|
||||
ctxt->dataFd = xmlNanoFTPGetConnection(ctxt);
|
||||
if (ctxt->dataFd == -1)
|
||||
if (ctxt->dataFd == INVALID_SOCKET)
|
||||
return(-1);
|
||||
snprintf(buf, sizeof(buf), "LIST -L %s\r\n", filename);
|
||||
}
|
||||
|
@ -1750,12 +1751,12 @@ xmlNanoFTPList(void *ctx, ftpListCallback callback, void *userData,
|
|||
res = send(ctxt->controlFd, buf, len, 0);
|
||||
if (res < 0) {
|
||||
__xmlIOErr(XML_FROM_FTP, 0, "send failed");
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = -1;
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
|
||||
return(res);
|
||||
}
|
||||
res = xmlNanoFTPReadResponse(ctxt);
|
||||
if (res != 1) {
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = -1;
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
|
||||
return(-res);
|
||||
}
|
||||
|
||||
|
@ -1771,18 +1772,18 @@ xmlNanoFTPList(void *ctx, ftpListCallback callback, void *userData,
|
|||
#ifdef DEBUG_FTP
|
||||
perror("select");
|
||||
#endif
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = -1;
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
|
||||
return(-1);
|
||||
}
|
||||
if (res == 0) {
|
||||
res = xmlNanoFTPCheckResponse(ctxt);
|
||||
if (res < 0) {
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = -1;
|
||||
ctxt->dataFd = -1;
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
|
||||
ctxt->dataFd = INVALID_SOCKET;
|
||||
return(-1);
|
||||
}
|
||||
if (res == 2) {
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = -1;
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
@ -1791,8 +1792,8 @@ xmlNanoFTPList(void *ctx, ftpListCallback callback, void *userData,
|
|||
|
||||
if ((len = recv(ctxt->dataFd, &buf[indx], sizeof(buf) - (indx + 1), 0)) < 0) {
|
||||
__xmlIOErr(XML_FROM_FTP, 0, "recv");
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = -1;
|
||||
ctxt->dataFd = -1;
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
|
||||
ctxt->dataFd = INVALID_SOCKET;
|
||||
return(-1);
|
||||
}
|
||||
#ifdef DEBUG_FTP
|
||||
|
@ -1824,18 +1825,18 @@ xmlNanoFTPList(void *ctx, ftpListCallback callback, void *userData,
|
|||
*/
|
||||
|
||||
|
||||
int
|
||||
SOCKET
|
||||
xmlNanoFTPGetSocket(void *ctx, const char *filename) {
|
||||
xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx;
|
||||
char buf[300];
|
||||
int res, len;
|
||||
if (ctx == NULL)
|
||||
return(-1);
|
||||
return INVALID_SOCKET;
|
||||
if ((filename == NULL) && (ctxt->path == NULL))
|
||||
return(-1);
|
||||
return INVALID_SOCKET;
|
||||
ctxt->dataFd = xmlNanoFTPGetConnection(ctxt);
|
||||
if (ctxt->dataFd == -1)
|
||||
return(-1);
|
||||
if (ctxt->dataFd == INVALID_SOCKET)
|
||||
return INVALID_SOCKET;
|
||||
|
||||
snprintf(buf, sizeof(buf), "TYPE I\r\n");
|
||||
len = strlen(buf);
|
||||
|
@ -1845,13 +1846,13 @@ xmlNanoFTPGetSocket(void *ctx, const char *filename) {
|
|||
res = send(ctxt->controlFd, buf, len, 0);
|
||||
if (res < 0) {
|
||||
__xmlIOErr(XML_FROM_FTP, 0, "send failed");
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = -1;
|
||||
return(res);
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
res = xmlNanoFTPReadResponse(ctxt);
|
||||
if (res != 2) {
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = -1;
|
||||
return(-res);
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
if (filename == NULL)
|
||||
snprintf(buf, sizeof(buf), "RETR %s\r\n", ctxt->path);
|
||||
|
@ -1865,13 +1866,13 @@ xmlNanoFTPGetSocket(void *ctx, const char *filename) {
|
|||
res = send(ctxt->controlFd, buf, len, 0);
|
||||
if (res < 0) {
|
||||
__xmlIOErr(XML_FROM_FTP, 0, "send failed");
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = -1;
|
||||
return(res);
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
res = xmlNanoFTPReadResponse(ctxt);
|
||||
if (res != 1) {
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = -1;
|
||||
return(-res);
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
return(ctxt->dataFd);
|
||||
}
|
||||
|
@ -1903,7 +1904,7 @@ xmlNanoFTPGet(void *ctx, ftpDataCallback callback, void *userData,
|
|||
return(-1);
|
||||
if (callback == NULL)
|
||||
return(-1);
|
||||
if (xmlNanoFTPGetSocket(ctxt, filename) < 0)
|
||||
if (xmlNanoFTPGetSocket(ctxt, filename) == INVALID_SOCKET)
|
||||
return(-1);
|
||||
|
||||
do {
|
||||
|
@ -1916,18 +1917,18 @@ xmlNanoFTPGet(void *ctx, ftpDataCallback callback, void *userData,
|
|||
#ifdef DEBUG_FTP
|
||||
perror("select");
|
||||
#endif
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = -1;
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
|
||||
return(-1);
|
||||
}
|
||||
if (res == 0) {
|
||||
res = xmlNanoFTPCheckResponse(ctxt);
|
||||
if (res < 0) {
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = -1;
|
||||
ctxt->dataFd = -1;
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
|
||||
ctxt->dataFd = INVALID_SOCKET;
|
||||
return(-1);
|
||||
}
|
||||
if (res == 2) {
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = -1;
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
@ -1936,7 +1937,7 @@ xmlNanoFTPGet(void *ctx, ftpDataCallback callback, void *userData,
|
|||
if ((len = recv(ctxt->dataFd, buf, sizeof(buf), 0)) < 0) {
|
||||
__xmlIOErr(XML_FROM_FTP, 0, "recv failed");
|
||||
callback(userData, buf, len);
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = -1;
|
||||
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
|
||||
return(-1);
|
||||
}
|
||||
callback(userData, buf, len);
|
||||
|
@ -1962,7 +1963,7 @@ xmlNanoFTPRead(void *ctx, void *dest, int len) {
|
|||
xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx;
|
||||
|
||||
if (ctx == NULL) return(-1);
|
||||
if (ctxt->dataFd < 0) return(0);
|
||||
if (ctxt->dataFd == INVALID_SOCKET) return(0);
|
||||
if (dest == NULL) return(-1);
|
||||
if (len <= 0) return(0);
|
||||
|
||||
|
@ -1990,7 +1991,7 @@ xmlNanoFTPRead(void *ctx, void *dest, int len) {
|
|||
void*
|
||||
xmlNanoFTPOpen(const char *URL) {
|
||||
xmlNanoFTPCtxtPtr ctxt;
|
||||
int sock;
|
||||
SOCKET sock;
|
||||
|
||||
xmlNanoFTPInit();
|
||||
if (URL == NULL) return(NULL);
|
||||
|
@ -2003,7 +2004,7 @@ xmlNanoFTPOpen(const char *URL) {
|
|||
return(NULL);
|
||||
}
|
||||
sock = xmlNanoFTPGetSocket(ctxt, ctxt->path);
|
||||
if (sock < 0) {
|
||||
if (sock == INVALID_SOCKET) {
|
||||
xmlNanoFTPFreeCtxt(ctxt);
|
||||
return(NULL);
|
||||
}
|
||||
|
@ -2026,14 +2027,14 @@ xmlNanoFTPClose(void *ctx) {
|
|||
if (ctxt == NULL)
|
||||
return(-1);
|
||||
|
||||
if (ctxt->dataFd >= 0) {
|
||||
if (ctxt->dataFd != INVALID_SOCKET) {
|
||||
closesocket(ctxt->dataFd);
|
||||
ctxt->dataFd = -1;
|
||||
ctxt->dataFd = INVALID_SOCKET;
|
||||
}
|
||||
if (ctxt->controlFd >= 0) {
|
||||
if (ctxt->controlFd != INVALID_SOCKET) {
|
||||
xmlNanoFTPQuit(ctxt);
|
||||
closesocket(ctxt->controlFd);
|
||||
ctxt->controlFd = -1;
|
||||
ctxt->controlFd = INVALID_SOCKET;
|
||||
}
|
||||
xmlNanoFTPFreeCtxt(ctxt);
|
||||
return(0);
|
||||
|
|
67
reactos/lib/3rdparty/libxml2/nanohttp.c
vendored
67
reactos/lib/3rdparty/libxml2/nanohttp.c
vendored
|
@ -75,18 +75,18 @@
|
|||
#ifdef VMS
|
||||
#include <stropts>
|
||||
#define XML_SOCKLEN_T unsigned int
|
||||
#define SOCKET int
|
||||
#endif
|
||||
|
||||
#if defined(__MINGW32__) || defined(_WIN32_WCE)
|
||||
#ifndef _WINSOCKAPI_
|
||||
#define _WINSOCKAPI_
|
||||
#endif
|
||||
#include <wsockcompat.h>
|
||||
#include <winsock2.h>
|
||||
#undef XML_SOCKLEN_T
|
||||
#define XML_SOCKLEN_T unsigned int
|
||||
#endif
|
||||
|
||||
|
||||
#include <libxml/globals.h>
|
||||
#include <libxml/xmlerror.h>
|
||||
#include <libxml/xmlmemory.h>
|
||||
|
@ -103,6 +103,7 @@
|
|||
#define closesocket(s) close(s)
|
||||
#endif
|
||||
#define SOCKET int
|
||||
#define INVALID_SOCKET (-1)
|
||||
#endif
|
||||
|
||||
#ifdef __BEOS__
|
||||
|
@ -114,9 +115,6 @@
|
|||
#ifndef XML_SOCKLEN_T
|
||||
#define XML_SOCKLEN_T unsigned int
|
||||
#endif
|
||||
#ifndef SOCKET
|
||||
#define SOCKET int
|
||||
#endif
|
||||
|
||||
#ifdef STANDALONE
|
||||
#define DEBUG_HTTP
|
||||
|
@ -196,10 +194,10 @@ static int socket_errno(void) {
|
|||
#ifdef SUPPORT_IP6
|
||||
static
|
||||
int have_ipv6(void) {
|
||||
int s;
|
||||
SOCKET s;
|
||||
|
||||
s = socket (AF_INET6, SOCK_STREAM, 0);
|
||||
if (s != -1) {
|
||||
if (s != INVALID_SOCKET) {
|
||||
close (s);
|
||||
return (1);
|
||||
}
|
||||
|
@ -393,7 +391,7 @@ xmlNanoHTTPNewCtxt(const char *URL) {
|
|||
memset(ret, 0, sizeof(xmlNanoHTTPCtxt));
|
||||
ret->port = 80;
|
||||
ret->returnValue = 0;
|
||||
ret->fd = -1;
|
||||
ret->fd = INVALID_SOCKET;
|
||||
ret->ContentLength = -1;
|
||||
|
||||
xmlNanoHTTPScanURL(ret, URL);
|
||||
|
@ -430,8 +428,8 @@ xmlNanoHTTPFreeCtxt(xmlNanoHTTPCtxtPtr ctxt) {
|
|||
#endif
|
||||
|
||||
ctxt->state = XML_NANO_HTTP_NONE;
|
||||
if (ctxt->fd >= 0) closesocket(ctxt->fd);
|
||||
ctxt->fd = -1;
|
||||
if (ctxt->fd != INVALID_SOCKET) closesocket(ctxt->fd);
|
||||
ctxt->fd = INVALID_SOCKET;
|
||||
xmlFree(ctxt);
|
||||
}
|
||||
|
||||
|
@ -842,7 +840,7 @@ xmlNanoHTTPScanAnswer(xmlNanoHTTPCtxtPtr ctxt, const char *line) {
|
|||
* Returns -1 in case of failure, the file descriptor number otherwise
|
||||
*/
|
||||
|
||||
static int
|
||||
static SOCKET
|
||||
xmlNanoHTTPConnectAttempt(struct sockaddr *addr)
|
||||
{
|
||||
#ifndef HAVE_POLL_H
|
||||
|
@ -870,12 +868,12 @@ xmlNanoHTTPConnectAttempt(struct sockaddr *addr)
|
|||
s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
|
||||
addrlen = sizeof(struct sockaddr_in);
|
||||
}
|
||||
if (s == -1) {
|
||||
if (s == INVALID_SOCKET) {
|
||||
#ifdef DEBUG_HTTP
|
||||
perror("socket");
|
||||
#endif
|
||||
__xmlIOErr(XML_FROM_HTTP, 0, "socket failed\n");
|
||||
return (-1);
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
#ifdef _WINSOCKAPI_
|
||||
{
|
||||
|
@ -916,7 +914,7 @@ xmlNanoHTTPConnectAttempt(struct sockaddr *addr)
|
|||
#endif
|
||||
__xmlIOErr(XML_FROM_HTTP, 0, "error setting non-blocking IO\n");
|
||||
closesocket(s);
|
||||
return (-1);
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
#endif /* !__BEOS__ */
|
||||
#endif /* !VMS */
|
||||
|
@ -931,7 +929,7 @@ xmlNanoHTTPConnectAttempt(struct sockaddr *addr)
|
|||
__xmlIOErr(XML_FROM_HTTP, 0,
|
||||
"error connecting to HTTP server");
|
||||
closesocket(s);
|
||||
return (-1);
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
}
|
||||
#ifndef HAVE_POLL_H
|
||||
|
@ -944,7 +942,7 @@ xmlNanoHTTPConnectAttempt(struct sockaddr *addr)
|
|||
#endif
|
||||
#ifndef _WINSOCKAPI_
|
||||
if (s > FD_SETSIZE)
|
||||
return -1;
|
||||
return INVALID_SOCKET;
|
||||
#endif
|
||||
FD_ZERO(&wfd);
|
||||
FD_SET(s, &wfd);
|
||||
|
@ -972,12 +970,12 @@ xmlNanoHTTPConnectAttempt(struct sockaddr *addr)
|
|||
/* Time out */
|
||||
__xmlIOErr(XML_FROM_HTTP, 0, "Connect attempt timed out");
|
||||
closesocket(s);
|
||||
return (-1);
|
||||
return INVALID_SOCKET;
|
||||
case -1:
|
||||
/* Ermm.. ?? */
|
||||
__xmlIOErr(XML_FROM_HTTP, 0, "Connect failed");
|
||||
closesocket(s);
|
||||
return (-1);
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
|
||||
#ifndef HAVE_POLL_H
|
||||
|
@ -998,7 +996,7 @@ xmlNanoHTTPConnectAttempt(struct sockaddr *addr)
|
|||
0) {
|
||||
/* Solaris error code */
|
||||
__xmlIOErr(XML_FROM_HTTP, 0, "getsockopt failed\n");
|
||||
return (-1);
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
#endif
|
||||
if (status) {
|
||||
|
@ -1006,13 +1004,13 @@ xmlNanoHTTPConnectAttempt(struct sockaddr *addr)
|
|||
"Error connecting to remote host");
|
||||
closesocket(s);
|
||||
errno = status;
|
||||
return (-1);
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
} else {
|
||||
/* pbm */
|
||||
__xmlIOErr(XML_FROM_HTTP, 0, "select failed\n");
|
||||
closesocket(s);
|
||||
return (-1);
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
|
||||
return (s);
|
||||
|
@ -1029,7 +1027,7 @@ xmlNanoHTTPConnectAttempt(struct sockaddr *addr)
|
|||
* Returns -1 in case of failure, the file descriptor number otherwise
|
||||
*/
|
||||
|
||||
static int
|
||||
static SOCKET
|
||||
xmlNanoHTTPConnectHost(const char *host, int port)
|
||||
{
|
||||
struct hostent *h;
|
||||
|
@ -1042,7 +1040,7 @@ xmlNanoHTTPConnectHost(const char *host, int port)
|
|||
struct sockaddr_in6 sockin6;
|
||||
#endif
|
||||
int i;
|
||||
int s;
|
||||
SOCKET s;
|
||||
|
||||
memset (&sockin, 0, sizeof(sockin));
|
||||
#ifdef SUPPORT_IP6
|
||||
|
@ -1073,7 +1071,7 @@ xmlNanoHTTPConnectHost(const char *host, int port)
|
|||
status = getaddrinfo (host, NULL, &hints, &result);
|
||||
if (status) {
|
||||
__xmlIOErr(XML_FROM_HTTP, 0, "getaddrinfo failed\n");
|
||||
return (-1);
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
|
||||
for (res = result; res; res = res->ai_next) {
|
||||
|
@ -1081,7 +1079,7 @@ xmlNanoHTTPConnectHost(const char *host, int port)
|
|||
if (res->ai_addrlen > sizeof(sockin)) {
|
||||
__xmlIOErr(XML_FROM_HTTP, 0, "address size mismatch\n");
|
||||
freeaddrinfo (result);
|
||||
return (-1);
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
memcpy (&sockin, res->ai_addr, res->ai_addrlen);
|
||||
sockin.sin_port = htons (port);
|
||||
|
@ -1091,7 +1089,7 @@ xmlNanoHTTPConnectHost(const char *host, int port)
|
|||
if (res->ai_addrlen > sizeof(sockin6)) {
|
||||
__xmlIOErr(XML_FROM_HTTP, 0, "address size mismatch\n");
|
||||
freeaddrinfo (result);
|
||||
return (-1);
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
memcpy (&sockin6, res->ai_addr, res->ai_addrlen);
|
||||
sockin6.sin6_port = htons (port);
|
||||
|
@ -1101,7 +1099,7 @@ xmlNanoHTTPConnectHost(const char *host, int port)
|
|||
continue; /* for */
|
||||
|
||||
s = xmlNanoHTTPConnectAttempt (addr);
|
||||
if (s != -1) {
|
||||
if (s != INVALID_SOCKET) {
|
||||
freeaddrinfo (result);
|
||||
return (s);
|
||||
}
|
||||
|
@ -1155,7 +1153,7 @@ xmlNanoHTTPConnectHost(const char *host, int port)
|
|||
#else
|
||||
__xmlIOErr(XML_FROM_HTTP, 0, "Failed to resolve host");
|
||||
#endif
|
||||
return (-1);
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
|
||||
for (i = 0; h->h_addr_list[i]; i++) {
|
||||
|
@ -1163,7 +1161,7 @@ xmlNanoHTTPConnectHost(const char *host, int port)
|
|||
/* A records (IPv4) */
|
||||
if ((unsigned int) h->h_length > sizeof(ia)) {
|
||||
__xmlIOErr(XML_FROM_HTTP, 0, "address size mismatch\n");
|
||||
return (-1);
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
memcpy (&ia, h->h_addr_list[i], h->h_length);
|
||||
sockin.sin_family = h->h_addrtype;
|
||||
|
@ -1175,7 +1173,7 @@ xmlNanoHTTPConnectHost(const char *host, int port)
|
|||
/* AAAA records (IPv6) */
|
||||
if ((unsigned int) h->h_length > sizeof(ia6)) {
|
||||
__xmlIOErr(XML_FROM_HTTP, 0, "address size mismatch\n");
|
||||
return (-1);
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
memcpy (&ia6, h->h_addr_list[i], h->h_length);
|
||||
sockin6.sin6_family = h->h_addrtype;
|
||||
|
@ -1187,7 +1185,7 @@ xmlNanoHTTPConnectHost(const char *host, int port)
|
|||
break; /* for */
|
||||
|
||||
s = xmlNanoHTTPConnectAttempt (addr);
|
||||
if (s != -1)
|
||||
if (s != INVALID_SOCKET)
|
||||
return (s);
|
||||
}
|
||||
}
|
||||
|
@ -1198,7 +1196,7 @@ xmlNanoHTTPConnectHost(const char *host, int port)
|
|||
"xmlNanoHTTPConnectHost: unable to connect to '%s'.\n",
|
||||
host);
|
||||
#endif
|
||||
return (-1);
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1342,7 +1340,8 @@ xmlNanoHTTPMethodRedir(const char *URL, const char *method, const char *input,
|
|||
const char *headers, int ilen ) {
|
||||
xmlNanoHTTPCtxtPtr ctxt;
|
||||
char *bp, *p;
|
||||
int blen, ret;
|
||||
int blen;
|
||||
SOCKET ret;
|
||||
int nbRedirects = 0;
|
||||
char *redirURL = NULL;
|
||||
#ifdef DEBUG_HTTP
|
||||
|
@ -1386,7 +1385,7 @@ retry:
|
|||
blen = strlen(ctxt->hostname);
|
||||
ret = xmlNanoHTTPConnectHost(ctxt->hostname, ctxt->port);
|
||||
}
|
||||
if (ret < 0) {
|
||||
if (ret == INVALID_SOCKET) {
|
||||
xmlNanoHTTPFreeCtxt(ctxt);
|
||||
if (redirURL != NULL) xmlFree(redirURL);
|
||||
return(NULL);
|
||||
|
|
212
reactos/lib/3rdparty/libxml2/parser.c
vendored
212
reactos/lib/3rdparty/libxml2/parser.c
vendored
|
@ -953,6 +953,12 @@ xmlHasFeature(xmlFeature feature)
|
|||
return(1);
|
||||
#else
|
||||
return(0);
|
||||
#endif
|
||||
case XML_WITH_ICU:
|
||||
#ifdef LIBXML_ICU_ENABLED
|
||||
return(1);
|
||||
#else
|
||||
return(0);
|
||||
#endif
|
||||
default:
|
||||
break;
|
||||
|
@ -1297,60 +1303,182 @@ xmlCleanSpecialAttr(xmlParserCtxtPtr ctxt)
|
|||
* [37] UserCode ::= ('x' | 'X') '-' ([a-z] | [A-Z])+
|
||||
* [38] Subcode ::= ([a-z] | [A-Z])+
|
||||
*
|
||||
* The current REC reference the sucessors of RFC 1766, currently 5646
|
||||
*
|
||||
* http://www.rfc-editor.org/rfc/rfc5646.txt
|
||||
* langtag = language
|
||||
* ["-" script]
|
||||
* ["-" region]
|
||||
* *("-" variant)
|
||||
* *("-" extension)
|
||||
* ["-" privateuse]
|
||||
* language = 2*3ALPHA ; shortest ISO 639 code
|
||||
* ["-" extlang] ; sometimes followed by
|
||||
* ; extended language subtags
|
||||
* / 4ALPHA ; or reserved for future use
|
||||
* / 5*8ALPHA ; or registered language subtag
|
||||
*
|
||||
* extlang = 3ALPHA ; selected ISO 639 codes
|
||||
* *2("-" 3ALPHA) ; permanently reserved
|
||||
*
|
||||
* script = 4ALPHA ; ISO 15924 code
|
||||
*
|
||||
* region = 2ALPHA ; ISO 3166-1 code
|
||||
* / 3DIGIT ; UN M.49 code
|
||||
*
|
||||
* variant = 5*8alphanum ; registered variants
|
||||
* / (DIGIT 3alphanum)
|
||||
*
|
||||
* extension = singleton 1*("-" (2*8alphanum))
|
||||
*
|
||||
* ; Single alphanumerics
|
||||
* ; "x" reserved for private use
|
||||
* singleton = DIGIT ; 0 - 9
|
||||
* / %x41-57 ; A - W
|
||||
* / %x59-5A ; Y - Z
|
||||
* / %x61-77 ; a - w
|
||||
* / %x79-7A ; y - z
|
||||
*
|
||||
* it sounds right to still allow Irregular i-xxx IANA and user codes too
|
||||
* The parser below doesn't try to cope with extension or privateuse
|
||||
* that could be added but that's not interoperable anyway
|
||||
*
|
||||
* Returns 1 if correct 0 otherwise
|
||||
**/
|
||||
int
|
||||
xmlCheckLanguageID(const xmlChar * lang)
|
||||
{
|
||||
const xmlChar *cur = lang;
|
||||
const xmlChar *cur = lang, *nxt;
|
||||
|
||||
if (cur == NULL)
|
||||
return (0);
|
||||
if (((cur[0] == 'i') && (cur[1] == '-')) ||
|
||||
((cur[0] == 'I') && (cur[1] == '-'))) {
|
||||
((cur[0] == 'I') && (cur[1] == '-')) ||
|
||||
((cur[0] == 'x') && (cur[1] == '-')) ||
|
||||
((cur[0] == 'X') && (cur[1] == '-'))) {
|
||||
/*
|
||||
* IANA code
|
||||
* Still allow IANA code and user code which were coming
|
||||
* from the previous version of the XML-1.0 specification
|
||||
* it's deprecated but we should not fail
|
||||
*/
|
||||
cur += 2;
|
||||
while (((cur[0] >= 'A') && (cur[0] <= 'Z')) || /* non input consuming */
|
||||
((cur[0] >= 'a') && (cur[0] <= 'z')))
|
||||
cur++;
|
||||
} else if (((cur[0] == 'x') && (cur[1] == '-')) ||
|
||||
((cur[0] == 'X') && (cur[1] == '-'))) {
|
||||
/*
|
||||
* User code
|
||||
*/
|
||||
cur += 2;
|
||||
while (((cur[0] >= 'A') && (cur[0] <= 'Z')) || /* non input consuming */
|
||||
((cur[0] >= 'a') && (cur[0] <= 'z')))
|
||||
cur++;
|
||||
} else if (((cur[0] >= 'A') && (cur[0] <= 'Z')) ||
|
||||
((cur[0] >= 'a') && (cur[0] <= 'z'))) {
|
||||
/*
|
||||
* ISO639
|
||||
*/
|
||||
cur++;
|
||||
if (((cur[0] >= 'A') && (cur[0] <= 'Z')) ||
|
||||
((cur[0] >= 'a') && (cur[0] <= 'z')))
|
||||
cur++;
|
||||
else
|
||||
return (0);
|
||||
} else
|
||||
return (0);
|
||||
while (cur[0] != 0) { /* non input consuming */
|
||||
if (cur[0] != '-')
|
||||
return (0);
|
||||
cur++;
|
||||
if (((cur[0] >= 'A') && (cur[0] <= 'Z')) ||
|
||||
((cur[0] >= 'a') && (cur[0] <= 'z')))
|
||||
cur++;
|
||||
else
|
||||
return (0);
|
||||
while (((cur[0] >= 'A') && (cur[0] <= 'Z')) || /* non input consuming */
|
||||
while (((cur[0] >= 'A') && (cur[0] <= 'Z')) ||
|
||||
((cur[0] >= 'a') && (cur[0] <= 'z')))
|
||||
cur++;
|
||||
return(cur[0] == 0);
|
||||
}
|
||||
nxt = cur;
|
||||
while (((nxt[0] >= 'A') && (nxt[0] <= 'Z')) ||
|
||||
((nxt[0] >= 'a') && (nxt[0] <= 'z')))
|
||||
nxt++;
|
||||
if (nxt - cur >= 4) {
|
||||
/*
|
||||
* Reserved
|
||||
*/
|
||||
if ((nxt - cur > 8) || (nxt[0] != 0))
|
||||
return(0);
|
||||
return(1);
|
||||
}
|
||||
if (nxt - cur < 2)
|
||||
return(0);
|
||||
/* we got an ISO 639 code */
|
||||
if (nxt[0] == 0)
|
||||
return(1);
|
||||
if (nxt[0] != '-')
|
||||
return(0);
|
||||
|
||||
nxt++;
|
||||
cur = nxt;
|
||||
/* now we can have extlang or script or region or variant */
|
||||
if ((nxt[0] >= '0') && (nxt[0] <= '9'))
|
||||
goto region_m49;
|
||||
|
||||
while (((nxt[0] >= 'A') && (nxt[0] <= 'Z')) ||
|
||||
((nxt[0] >= 'a') && (nxt[0] <= 'z')))
|
||||
nxt++;
|
||||
if (nxt - cur == 4)
|
||||
goto script;
|
||||
if (nxt - cur == 2)
|
||||
goto region;
|
||||
if ((nxt - cur >= 5) && (nxt - cur <= 8))
|
||||
goto variant;
|
||||
if (nxt - cur != 3)
|
||||
return(0);
|
||||
/* we parsed an extlang */
|
||||
if (nxt[0] == 0)
|
||||
return(1);
|
||||
if (nxt[0] != '-')
|
||||
return(0);
|
||||
|
||||
nxt++;
|
||||
cur = nxt;
|
||||
/* now we can have script or region or variant */
|
||||
if ((nxt[0] >= '0') && (nxt[0] <= '9'))
|
||||
goto region_m49;
|
||||
|
||||
while (((nxt[0] >= 'A') && (nxt[0] <= 'Z')) ||
|
||||
((nxt[0] >= 'a') && (nxt[0] <= 'z')))
|
||||
nxt++;
|
||||
if (nxt - cur == 2)
|
||||
goto region;
|
||||
if ((nxt - cur >= 5) && (nxt - cur <= 8))
|
||||
goto variant;
|
||||
if (nxt - cur != 4)
|
||||
return(0);
|
||||
/* we parsed a script */
|
||||
script:
|
||||
if (nxt[0] == 0)
|
||||
return(1);
|
||||
if (nxt[0] != '-')
|
||||
return(0);
|
||||
|
||||
nxt++;
|
||||
cur = nxt;
|
||||
/* now we can have region or variant */
|
||||
if ((nxt[0] >= '0') && (nxt[0] <= '9'))
|
||||
goto region_m49;
|
||||
|
||||
while (((nxt[0] >= 'A') && (nxt[0] <= 'Z')) ||
|
||||
((nxt[0] >= 'a') && (nxt[0] <= 'z')))
|
||||
nxt++;
|
||||
|
||||
if ((nxt - cur >= 5) && (nxt - cur <= 8))
|
||||
goto variant;
|
||||
if (nxt - cur != 2)
|
||||
return(0);
|
||||
/* we parsed a region */
|
||||
region:
|
||||
if (nxt[0] == 0)
|
||||
return(1);
|
||||
if (nxt[0] != '-')
|
||||
return(0);
|
||||
|
||||
nxt++;
|
||||
cur = nxt;
|
||||
/* now we can just have a variant */
|
||||
while (((nxt[0] >= 'A') && (nxt[0] <= 'Z')) ||
|
||||
((nxt[0] >= 'a') && (nxt[0] <= 'z')))
|
||||
nxt++;
|
||||
|
||||
if ((nxt - cur < 5) || (nxt - cur > 8))
|
||||
return(0);
|
||||
|
||||
/* we parsed a variant */
|
||||
variant:
|
||||
if (nxt[0] == 0)
|
||||
return(1);
|
||||
if (nxt[0] != '-')
|
||||
return(0);
|
||||
/* extensions and private use subtags not checked */
|
||||
return (1);
|
||||
|
||||
region_m49:
|
||||
if (((nxt[1] >= '0') && (nxt[1] <= '9')) &&
|
||||
((nxt[2] >= '0') && (nxt[2] <= '9'))) {
|
||||
nxt += 3;
|
||||
goto region;
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
|
@ -6609,7 +6737,7 @@ xmlParseExternalSubset(xmlParserCtxtPtr ctxt, const xmlChar *ExternalID,
|
|||
xmlDetectSAX2(ctxt);
|
||||
GROW;
|
||||
|
||||
if ((ctxt->encoding == (const xmlChar *)XML_CHAR_ENCODING_NONE) &&
|
||||
if ((ctxt->encoding == NULL) &&
|
||||
(ctxt->input->end - ctxt->input->cur >= 4)) {
|
||||
xmlChar start[4];
|
||||
xmlCharEncoding enc;
|
||||
|
@ -10105,7 +10233,7 @@ xmlParseDocument(xmlParserCtxtPtr ctxt) {
|
|||
if ((ctxt->sax) && (ctxt->sax->setDocumentLocator))
|
||||
ctxt->sax->setDocumentLocator(ctxt->userData, &xmlDefaultSAXLocator);
|
||||
|
||||
if ((ctxt->encoding == (const xmlChar *)XML_CHAR_ENCODING_NONE) &&
|
||||
if ((ctxt->encoding == NULL) &&
|
||||
((ctxt->input->end - ctxt->input->cur) >= 4)) {
|
||||
/*
|
||||
* Get the 4 first bytes and decode the charset
|
||||
|
@ -11567,7 +11695,7 @@ xmldecl_done:
|
|||
* if size is greater than len. Otherwise, memmove in xmlBufferAdd
|
||||
* will blindly copy extra bytes from memory.
|
||||
*/
|
||||
if (size > len) {
|
||||
if ((unsigned int) size > len) {
|
||||
remain = size - len;
|
||||
size = len;
|
||||
} else {
|
||||
|
@ -14004,8 +14132,8 @@ xmlInitParser(void) {
|
|||
__xmlGlobalInitMutexLock();
|
||||
if (xmlParserInitialized == 0) {
|
||||
#endif
|
||||
xmlInitGlobals();
|
||||
xmlInitThreads();
|
||||
xmlInitGlobals();
|
||||
if ((xmlGenericError == xmlGenericErrorDefaultFunc) ||
|
||||
(xmlGenericError == NULL))
|
||||
initGenericErrorDefaultFunc(NULL);
|
||||
|
|
61
reactos/lib/3rdparty/libxml2/testapi.c
vendored
61
reactos/lib/3rdparty/libxml2/testapi.c
vendored
|
@ -11639,32 +11639,8 @@ static int
|
|||
test_xmlNanoFTPGetConnection(void) {
|
||||
int test_ret = 0;
|
||||
|
||||
#if defined(LIBXML_FTP_ENABLED)
|
||||
int mem_base;
|
||||
int ret_val;
|
||||
void * ctx; /* an FTP context */
|
||||
int n_ctx;
|
||||
|
||||
for (n_ctx = 0;n_ctx < gen_nb_xmlNanoFTPCtxtPtr;n_ctx++) {
|
||||
mem_base = xmlMemBlocks();
|
||||
ctx = gen_xmlNanoFTPCtxtPtr(n_ctx, 0);
|
||||
|
||||
ret_val = xmlNanoFTPGetConnection(ctx);
|
||||
desret_int(ret_val);
|
||||
call_tests++;
|
||||
des_xmlNanoFTPCtxtPtr(n_ctx, ctx, 0);
|
||||
xmlResetLastError();
|
||||
if (mem_base != xmlMemBlocks()) {
|
||||
printf("Leak of %d blocks found in xmlNanoFTPGetConnection",
|
||||
xmlMemBlocks() - mem_base);
|
||||
test_ret++;
|
||||
printf(" %d", n_ctx);
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
function_tests++;
|
||||
#endif
|
||||
|
||||
/* missing type support */
|
||||
return(test_ret);
|
||||
}
|
||||
|
||||
|
@ -11707,39 +11683,8 @@ static int
|
|||
test_xmlNanoFTPGetSocket(void) {
|
||||
int test_ret = 0;
|
||||
|
||||
#if defined(LIBXML_FTP_ENABLED)
|
||||
int mem_base;
|
||||
int ret_val;
|
||||
void * ctx; /* an FTP context */
|
||||
int n_ctx;
|
||||
const char * filename; /* the file to retrieve (or NULL if path is in context). */
|
||||
int n_filename;
|
||||
|
||||
for (n_ctx = 0;n_ctx < gen_nb_xmlNanoFTPCtxtPtr;n_ctx++) {
|
||||
for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
|
||||
mem_base = xmlMemBlocks();
|
||||
ctx = gen_xmlNanoFTPCtxtPtr(n_ctx, 0);
|
||||
filename = gen_filepath(n_filename, 1);
|
||||
|
||||
ret_val = xmlNanoFTPGetSocket(ctx, filename);
|
||||
desret_int(ret_val);
|
||||
call_tests++;
|
||||
des_xmlNanoFTPCtxtPtr(n_ctx, ctx, 0);
|
||||
des_filepath(n_filename, filename, 1);
|
||||
xmlResetLastError();
|
||||
if (mem_base != xmlMemBlocks()) {
|
||||
printf("Leak of %d blocks found in xmlNanoFTPGetSocket",
|
||||
xmlMemBlocks() - mem_base);
|
||||
test_ret++;
|
||||
printf(" %d", n_ctx);
|
||||
printf(" %d", n_filename);
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
function_tests++;
|
||||
#endif
|
||||
|
||||
/* missing type support */
|
||||
return(test_ret);
|
||||
}
|
||||
|
||||
|
@ -12043,7 +11988,7 @@ static int
|
|||
test_nanoftp(void) {
|
||||
int test_ret = 0;
|
||||
|
||||
if (quiet == 0) printf("Testing nanoftp : 16 of 22 functions ...\n");
|
||||
if (quiet == 0) printf("Testing nanoftp : 14 of 22 functions ...\n");
|
||||
test_ret += test_xmlNanoFTPCheckResponse();
|
||||
test_ret += test_xmlNanoFTPCleanup();
|
||||
test_ret += test_xmlNanoFTPCloseConnection();
|
||||
|
|
6
reactos/lib/3rdparty/libxml2/threads.c
vendored
6
reactos/lib/3rdparty/libxml2/threads.c
vendored
|
@ -439,7 +439,8 @@ __xmlGlobalInitMutexLock(void)
|
|||
/* Make sure the global init lock is initialized and then lock it. */
|
||||
#ifdef HAVE_PTHREAD_H
|
||||
/* The mutex is statically initialized, so we just lock it. */
|
||||
pthread_mutex_lock(&global_init_lock);
|
||||
if (pthread_mutex_lock)
|
||||
pthread_mutex_lock(&global_init_lock);
|
||||
#elif defined HAVE_WIN32_THREADS
|
||||
LPCRITICAL_SECTION cs;
|
||||
|
||||
|
@ -508,7 +509,8 @@ void
|
|||
__xmlGlobalInitMutexUnlock(void)
|
||||
{
|
||||
#ifdef HAVE_PTHREAD_H
|
||||
pthread_mutex_unlock(&global_init_lock);
|
||||
if (pthread_mutex_unlock)
|
||||
pthread_mutex_unlock(&global_init_lock);
|
||||
#elif defined HAVE_WIN32_THREADS
|
||||
if (global_init_lock != NULL) {
|
||||
LeaveCriticalSection(global_init_lock);
|
||||
|
|
15
reactos/lib/3rdparty/libxml2/tree.c
vendored
15
reactos/lib/3rdparty/libxml2/tree.c
vendored
|
@ -721,8 +721,19 @@ xmlNewNs(xmlNodePtr node, const xmlChar *href, const xmlChar *prefix) {
|
|||
if ((node != NULL) && (node->type != XML_ELEMENT_NODE))
|
||||
return(NULL);
|
||||
|
||||
if ((prefix != NULL) && (xmlStrEqual(prefix, BAD_CAST "xml")))
|
||||
return(NULL);
|
||||
if ((prefix != NULL) && (xmlStrEqual(prefix, BAD_CAST "xml"))) {
|
||||
/* xml namespace is predefined, no need to add it */
|
||||
if (xmlStrEqual(href, XML_XML_NAMESPACE))
|
||||
return(NULL);
|
||||
|
||||
/*
|
||||
* Problem, this is an attempt to bind xml prefix to a wrong
|
||||
* namespace, which breaks
|
||||
* Namespace constraint: Reserved Prefixes and Namespace Names
|
||||
* from XML namespace. But documents authors may not care in
|
||||
* their context so let's proceed.
|
||||
*/
|
||||
}
|
||||
|
||||
/*
|
||||
* Allocate a new Namespace and fill the fields.
|
||||
|
|
2
reactos/lib/3rdparty/libxml2/uri.c
vendored
2
reactos/lib/3rdparty/libxml2/uri.c
vendored
|
@ -127,7 +127,7 @@ static void xmlCleanURI(xmlURIPtr uri);
|
|||
(((*(p) == '!')) || ((*(p) == '$')) || ((*(p) == '&')) || \
|
||||
((*(p) == '(')) || ((*(p) == ')')) || ((*(p) == '*')) || \
|
||||
((*(p) == '+')) || ((*(p) == ',')) || ((*(p) == ';')) || \
|
||||
((*(p) == '=')))
|
||||
((*(p) == '=')) || ((*(p) == '\'')))
|
||||
|
||||
/*
|
||||
* gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"
|
||||
|
|
46
reactos/lib/3rdparty/libxml2/xmllint.c
vendored
46
reactos/lib/3rdparty/libxml2/xmllint.c
vendored
|
@ -162,6 +162,9 @@ static int html = 0;
|
|||
static int xmlout = 0;
|
||||
#endif
|
||||
static int htmlout = 0;
|
||||
#if defined(LIBXML_HTML_ENABLED)
|
||||
static int nodefdtd = 0;
|
||||
#endif
|
||||
#ifdef LIBXML_PUSH_ENABLED
|
||||
static int push = 0;
|
||||
#endif /* LIBXML_PUSH_ENABLED */
|
||||
|
@ -2507,14 +2510,14 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
|
|||
htmlSaveFile(output ? output : "-", doc);
|
||||
}
|
||||
else if (encoding != NULL) {
|
||||
if ( format ) {
|
||||
if (format == 1) {
|
||||
htmlSaveFileFormat(output ? output : "-", doc, encoding, 1);
|
||||
}
|
||||
else {
|
||||
htmlSaveFileFormat(output ? output : "-", doc, encoding, 0);
|
||||
}
|
||||
}
|
||||
else if (format) {
|
||||
else if (format == 1) {
|
||||
htmlSaveFileFormat(output ? output : "-", doc, NULL, 1);
|
||||
}
|
||||
else {
|
||||
|
@ -2586,13 +2589,13 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
|
|||
int len;
|
||||
|
||||
if (encoding != NULL) {
|
||||
if ( format ) {
|
||||
if (format == 1) {
|
||||
xmlDocDumpFormatMemoryEnc(doc, &result, &len, encoding, 1);
|
||||
} else {
|
||||
xmlDocDumpMemoryEnc(doc, &result, &len, encoding);
|
||||
}
|
||||
} else {
|
||||
if (format)
|
||||
if (format == 1)
|
||||
xmlDocDumpFormatMemory(doc, &result, &len, 1);
|
||||
else
|
||||
xmlDocDumpMemory(doc, &result, &len);
|
||||
|
@ -2611,7 +2614,7 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
|
|||
xmlSaveFile(output ? output : "-", doc);
|
||||
} else if (oldout) {
|
||||
if (encoding != NULL) {
|
||||
if ( format ) {
|
||||
if (format == 1) {
|
||||
ret = xmlSaveFormatFileEnc(output ? output : "-", doc,
|
||||
encoding, 1);
|
||||
}
|
||||
|
@ -2624,7 +2627,7 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
|
|||
output ? output : "-");
|
||||
progresult = XMLLINT_ERR_OUT;
|
||||
}
|
||||
} else if (format) {
|
||||
} else if (format == 1) {
|
||||
ret = xmlSaveFormatFile(output ? output : "-", doc, 1);
|
||||
if (ret < 0) {
|
||||
fprintf(stderr, "failed save to %s\n",
|
||||
|
@ -2653,8 +2656,10 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
|
|||
xmlSaveCtxtPtr ctxt;
|
||||
int saveOpts = 0;
|
||||
|
||||
if (format)
|
||||
if (format == 1)
|
||||
saveOpts |= XML_SAVE_FORMAT;
|
||||
else if (format == 2)
|
||||
saveOpts |= XML_SAVE_WSNONSIG;
|
||||
|
||||
#if defined(LIBXML_HTML_ENABLED) || defined(LIBXML_VALID_ENABLED)
|
||||
if (xmlout)
|
||||
|
@ -2995,6 +3000,7 @@ static void usage(const char *name) {
|
|||
#ifdef LIBXML_HTML_ENABLED
|
||||
printf("\t--html : use the HTML parser\n");
|
||||
printf("\t--xmlout : force to use the XML serializer when using --html\n");
|
||||
printf("\t--nodefdtd : do not default HTML doctype\n");
|
||||
#endif
|
||||
#ifdef LIBXML_PUSH_ENABLED
|
||||
printf("\t--push : use the push mode of the parser\n");
|
||||
|
@ -3010,6 +3016,10 @@ static void usage(const char *name) {
|
|||
printf("\t--format : reformat/reindent the input\n");
|
||||
printf("\t--encode encoding : output in the given encoding\n");
|
||||
printf("\t--dropdtd : remove the DOCTYPE of the input docs\n");
|
||||
printf("\t--pretty STYLE : pretty-print in a particular style\n");
|
||||
printf("\t 0 Do not pretty print\n");
|
||||
printf("\t 1 Format the XML content, as --format\n");
|
||||
printf("\t 2 Add whitespace inside tags, preserving content\n");
|
||||
#endif /* LIBXML_OUTPUT_ENABLED */
|
||||
printf("\t--c14n : save in W3C canonical format v1.0 (with comments)\n");
|
||||
printf("\t--c14n11 : save in W3C canonical format v1.1 (with comments)\n");
|
||||
|
@ -3157,6 +3167,10 @@ main(int argc, char **argv) {
|
|||
else if ((!strcmp(argv[i], "-xmlout")) ||
|
||||
(!strcmp(argv[i], "--xmlout"))) {
|
||||
xmlout++;
|
||||
} else if ((!strcmp(argv[i], "-nodefdtd")) ||
|
||||
(!strcmp(argv[i], "--nodefdtd"))) {
|
||||
nodefdtd++;
|
||||
options |= HTML_PARSE_NODEFDTD;
|
||||
}
|
||||
#endif /* LIBXML_HTML_ENABLED */
|
||||
else if ((!strcmp(argv[i], "-loaddtd")) ||
|
||||
|
@ -3326,10 +3340,21 @@ main(int argc, char **argv) {
|
|||
(!strcmp(argv[i], "--format"))) {
|
||||
noblanks++;
|
||||
#ifdef LIBXML_OUTPUT_ENABLED
|
||||
format++;
|
||||
format = 1;
|
||||
#endif /* LIBXML_OUTPUT_ENABLED */
|
||||
xmlKeepBlanksDefault(0);
|
||||
}
|
||||
else if ((!strcmp(argv[i], "-pretty")) ||
|
||||
(!strcmp(argv[i], "--pretty"))) {
|
||||
i++;
|
||||
#ifdef LIBXML_OUTPUT_ENABLED
|
||||
format = atoi(argv[i]);
|
||||
#endif /* LIBXML_OUTPUT_ENABLED */
|
||||
if (format == 1) {
|
||||
noblanks++;
|
||||
xmlKeepBlanksDefault(0);
|
||||
}
|
||||
}
|
||||
#ifdef LIBXML_READER_ENABLED
|
||||
else if ((!strcmp(argv[i], "-stream")) ||
|
||||
(!strcmp(argv[i], "--stream"))) {
|
||||
|
@ -3616,6 +3641,11 @@ main(int argc, char **argv) {
|
|||
i++;
|
||||
continue;
|
||||
}
|
||||
if ((!strcmp(argv[i], "-pretty")) ||
|
||||
(!strcmp(argv[i], "--pretty"))) {
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
if ((!strcmp(argv[i], "-schema")) ||
|
||||
(!strcmp(argv[i], "--schema"))) {
|
||||
i++;
|
||||
|
|
12
reactos/lib/3rdparty/libxml2/xmlreader.c
vendored
12
reactos/lib/3rdparty/libxml2/xmlreader.c
vendored
|
@ -1709,9 +1709,9 @@ xmlTextReaderReadInnerXml(xmlTextReaderPtr reader ATTRIBUTE_UNUSED)
|
|||
*
|
||||
* Reads the contents of the current node, including child nodes and markup.
|
||||
*
|
||||
* Returns a string containing the XML content, or NULL if the current node
|
||||
* is neither an element nor attribute, or has no child nodes. The
|
||||
* string must be deallocated by the caller.
|
||||
* Returns a string containing the node and any XML content, or NULL if the
|
||||
* current node cannot be serialized. The string must be deallocated
|
||||
* by the caller.
|
||||
*/
|
||||
xmlChar *
|
||||
xmlTextReaderReadOuterXml(xmlTextReaderPtr reader ATTRIBUTE_UNUSED)
|
||||
|
@ -1726,7 +1726,11 @@ xmlTextReaderReadOuterXml(xmlTextReaderPtr reader ATTRIBUTE_UNUSED)
|
|||
if (xmlTextReaderExpand(reader) == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
node = xmlDocCopyNode(node, doc, 1);
|
||||
if (node->type == XML_DTD_NODE) {
|
||||
node = (xmlNodePtr) xmlCopyDtd((xmlDtdPtr) node);
|
||||
} else {
|
||||
node = xmlDocCopyNode(node, doc, 1);
|
||||
}
|
||||
buff = xmlBufferCreate();
|
||||
if (xmlNodeDump(buff, doc, node, 0, 0) == -1) {
|
||||
xmlFreeNode(node);
|
||||
|
|
124
reactos/lib/3rdparty/libxml2/xmlsave.c
vendored
124
reactos/lib/3rdparty/libxml2/xmlsave.c
vendored
|
@ -408,6 +408,8 @@ xmlNewSaveCtxt(const char *encoding, int options)
|
|||
ret->options = options;
|
||||
if (options & XML_SAVE_FORMAT)
|
||||
ret->format = 1;
|
||||
else if (options & XML_SAVE_WSNONSIG)
|
||||
ret->format = 2;
|
||||
|
||||
return(ret);
|
||||
}
|
||||
|
@ -500,32 +502,90 @@ static void xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur);
|
|||
void xmlNsListDumpOutput(xmlOutputBufferPtr buf, xmlNsPtr cur);
|
||||
static int xmlDocContentDumpOutput(xmlSaveCtxtPtr ctxt, xmlDocPtr cur);
|
||||
|
||||
/**
|
||||
* xmlOutputBufferWriteWSNonSig:
|
||||
* @ctxt: The save context
|
||||
* @extra: Number of extra indents to apply to ctxt->level
|
||||
*
|
||||
* Write out formatting for non-significant whitespace output.
|
||||
*/
|
||||
static void
|
||||
xmlOutputBufferWriteWSNonSig(xmlSaveCtxtPtr ctxt, int extra)
|
||||
{
|
||||
int i;
|
||||
if ((ctxt == NULL) || (ctxt->buf == NULL))
|
||||
return;
|
||||
xmlOutputBufferWrite(ctxt->buf, 1, "\n");
|
||||
for (i = 0; i < (ctxt->level + extra); i += ctxt->indent_nr) {
|
||||
xmlOutputBufferWrite(ctxt->buf, ctxt->indent_size *
|
||||
((ctxt->level + extra - i) > ctxt->indent_nr ?
|
||||
ctxt->indent_nr : (ctxt->level + extra - i)),
|
||||
ctxt->indent);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* xmlNsDumpOutput:
|
||||
* @buf: the XML buffer output
|
||||
* @cur: a namespace
|
||||
* @ctxt: the output save context. Optional.
|
||||
*
|
||||
* Dump a local Namespace definition.
|
||||
* Should be called in the context of attributes dumps.
|
||||
* If @ctxt is supplied, @buf should be its buffer.
|
||||
*/
|
||||
static void
|
||||
xmlNsDumpOutput(xmlOutputBufferPtr buf, xmlNsPtr cur) {
|
||||
xmlNsDumpOutput(xmlOutputBufferPtr buf, xmlNsPtr cur, xmlSaveCtxtPtr ctxt) {
|
||||
if ((cur == NULL) || (buf == NULL)) return;
|
||||
if ((cur->type == XML_LOCAL_NAMESPACE) && (cur->href != NULL)) {
|
||||
if (xmlStrEqual(cur->prefix, BAD_CAST "xml"))
|
||||
return;
|
||||
|
||||
if (ctxt != NULL && ctxt->format == 2)
|
||||
xmlOutputBufferWriteWSNonSig(ctxt, 2);
|
||||
else
|
||||
xmlOutputBufferWrite(buf, 1, " ");
|
||||
|
||||
/* Within the context of an element attributes */
|
||||
if (cur->prefix != NULL) {
|
||||
xmlOutputBufferWrite(buf, 7, " xmlns:");
|
||||
xmlOutputBufferWrite(buf, 6, "xmlns:");
|
||||
xmlOutputBufferWriteString(buf, (const char *)cur->prefix);
|
||||
} else
|
||||
xmlOutputBufferWrite(buf, 6, " xmlns");
|
||||
xmlOutputBufferWrite(buf, 5, "xmlns");
|
||||
xmlOutputBufferWrite(buf, 1, "=");
|
||||
xmlBufferWriteQuotedString(buf->buffer, cur->href);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* xmlNsDumpOutputCtxt
|
||||
* @ctxt: the save context
|
||||
* @cur: a namespace
|
||||
*
|
||||
* Dump a local Namespace definition to a save context.
|
||||
* Should be called in the context of attribute dumps.
|
||||
*/
|
||||
static void
|
||||
xmlNsDumpOutputCtxt(xmlSaveCtxtPtr ctxt, xmlNsPtr cur) {
|
||||
xmlNsDumpOutput(ctxt->buf, cur, ctxt);
|
||||
}
|
||||
|
||||
/**
|
||||
* xmlNsListDumpOutputCtxt
|
||||
* @ctxt: the save context
|
||||
* @cur: the first namespace
|
||||
*
|
||||
* Dump a list of local namespace definitions to a save context.
|
||||
* Should be called in the context of attribute dumps.
|
||||
*/
|
||||
static void
|
||||
xmlNsListDumpOutputCtxt(xmlSaveCtxtPtr ctxt, xmlNsPtr cur) {
|
||||
while (cur != NULL) {
|
||||
xmlNsDumpOutput(ctxt->buf, cur, ctxt);
|
||||
cur = cur->next;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* xmlNsListDumpOutput:
|
||||
* @buf: the XML buffer output
|
||||
|
@ -537,7 +597,7 @@ xmlNsDumpOutput(xmlOutputBufferPtr buf, xmlNsPtr cur) {
|
|||
void
|
||||
xmlNsListDumpOutput(xmlOutputBufferPtr buf, xmlNsPtr cur) {
|
||||
while (cur != NULL) {
|
||||
xmlNsDumpOutput(buf, cur);
|
||||
xmlNsDumpOutput(buf, cur, NULL);
|
||||
cur = cur->next;
|
||||
}
|
||||
}
|
||||
|
@ -612,7 +672,10 @@ xmlAttrDumpOutput(xmlSaveCtxtPtr ctxt, xmlAttrPtr cur) {
|
|||
if (cur == NULL) return;
|
||||
buf = ctxt->buf;
|
||||
if (buf == NULL) return;
|
||||
xmlOutputBufferWrite(buf, 1, " ");
|
||||
if (ctxt->format == 2)
|
||||
xmlOutputBufferWriteWSNonSig(ctxt, 2);
|
||||
else
|
||||
xmlOutputBufferWrite(buf, 1, " ");
|
||||
if ((cur->ns != NULL) && (cur->ns->prefix != NULL)) {
|
||||
xmlOutputBufferWriteString(buf, (const char *)cur->ns->prefix);
|
||||
xmlOutputBufferWrite(buf, 1, ":");
|
||||
|
@ -656,7 +719,7 @@ xmlNodeListDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
|
|||
if (cur == NULL) return;
|
||||
buf = ctxt->buf;
|
||||
while (cur != NULL) {
|
||||
if ((ctxt->format) && (xmlIndentTreeOutput) &&
|
||||
if ((ctxt->format == 1) && (xmlIndentTreeOutput) &&
|
||||
((cur->type == XML_ELEMENT_NODE) ||
|
||||
(cur->type == XML_COMMENT_NODE) ||
|
||||
(cur->type == XML_PI_NODE)))
|
||||
|
@ -665,7 +728,7 @@ xmlNodeListDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
|
|||
ctxt->indent_nr : ctxt->level),
|
||||
ctxt->indent);
|
||||
xmlNodeDumpOutputInternal(ctxt, cur);
|
||||
if (ctxt->format) {
|
||||
if (ctxt->format == 1) {
|
||||
xmlOutputBufferWrite(buf, 1, "\n");
|
||||
}
|
||||
cur = cur->next;
|
||||
|
@ -808,13 +871,18 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
|
|||
xmlOutputBufferWrite(buf, 2, "<?");
|
||||
xmlOutputBufferWriteString(buf, (const char *)cur->name);
|
||||
if (cur->content != NULL) {
|
||||
xmlOutputBufferWrite(buf, 1, " ");
|
||||
if (ctxt->format == 2)
|
||||
xmlOutputBufferWriteWSNonSig(ctxt, 0);
|
||||
else
|
||||
xmlOutputBufferWrite(buf, 1, " ");
|
||||
xmlOutputBufferWriteString(buf, (const char *)cur->content);
|
||||
}
|
||||
xmlOutputBufferWrite(buf, 2, "?>");
|
||||
} else {
|
||||
xmlOutputBufferWrite(buf, 2, "<?");
|
||||
xmlOutputBufferWriteString(buf, (const char *)cur->name);
|
||||
if (ctxt->format == 2)
|
||||
xmlOutputBufferWriteWSNonSig(ctxt, 0);
|
||||
xmlOutputBufferWrite(buf, 2, "?>");
|
||||
}
|
||||
return;
|
||||
|
@ -862,7 +930,7 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
|
|||
return;
|
||||
}
|
||||
if (cur->type == XML_NAMESPACE_DECL) {
|
||||
xmlNsDumpOutput(buf, (xmlNsPtr) cur);
|
||||
xmlNsDumpOutputCtxt(ctxt, (xmlNsPtr) cur);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -887,26 +955,30 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
|
|||
|
||||
xmlOutputBufferWriteString(buf, (const char *)cur->name);
|
||||
if (cur->nsDef)
|
||||
xmlNsListDumpOutput(buf, cur->nsDef);
|
||||
xmlNsListDumpOutputCtxt(ctxt, cur->nsDef);
|
||||
if (cur->properties != NULL)
|
||||
xmlAttrListDumpOutput(ctxt, cur->properties);
|
||||
|
||||
if (((cur->type == XML_ELEMENT_NODE) || (cur->content == NULL)) &&
|
||||
(cur->children == NULL) && ((ctxt->options & XML_SAVE_NO_EMPTY) == 0)) {
|
||||
if (ctxt->format == 2)
|
||||
xmlOutputBufferWriteWSNonSig(ctxt, 0);
|
||||
xmlOutputBufferWrite(buf, 2, "/>");
|
||||
ctxt->format = format;
|
||||
return;
|
||||
}
|
||||
if (ctxt->format == 2)
|
||||
xmlOutputBufferWriteWSNonSig(ctxt, 1);
|
||||
xmlOutputBufferWrite(buf, 1, ">");
|
||||
if ((cur->type != XML_ELEMENT_NODE) && (cur->content != NULL)) {
|
||||
xmlOutputBufferWriteEscape(buf, cur->content, ctxt->escape);
|
||||
}
|
||||
if (cur->children != NULL) {
|
||||
if (ctxt->format) xmlOutputBufferWrite(buf, 1, "\n");
|
||||
if (ctxt->format == 1) xmlOutputBufferWrite(buf, 1, "\n");
|
||||
if (ctxt->level >= 0) ctxt->level++;
|
||||
xmlNodeListDumpOutput(ctxt, cur->children);
|
||||
if (ctxt->level > 0) ctxt->level--;
|
||||
if ((xmlIndentTreeOutput) && (ctxt->format))
|
||||
if ((xmlIndentTreeOutput) && (ctxt->format == 1))
|
||||
xmlOutputBufferWrite(buf, ctxt->indent_size *
|
||||
(ctxt->level > ctxt->indent_nr ?
|
||||
ctxt->indent_nr : ctxt->level),
|
||||
|
@ -919,6 +991,8 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
|
|||
}
|
||||
|
||||
xmlOutputBufferWriteString(buf, (const char *)cur->name);
|
||||
if (ctxt->format == 2)
|
||||
xmlOutputBufferWriteWSNonSig(ctxt, 0);
|
||||
xmlOutputBufferWrite(buf, 1, ">");
|
||||
ctxt->format = format;
|
||||
}
|
||||
|
@ -1254,14 +1328,14 @@ xhtmlNodeListDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
|
|||
if (cur == NULL) return;
|
||||
buf = ctxt->buf;
|
||||
while (cur != NULL) {
|
||||
if ((ctxt->format) && (xmlIndentTreeOutput) &&
|
||||
if ((ctxt->format == 1) && (xmlIndentTreeOutput) &&
|
||||
(cur->type == XML_ELEMENT_NODE))
|
||||
xmlOutputBufferWrite(buf, ctxt->indent_size *
|
||||
(ctxt->level > ctxt->indent_nr ?
|
||||
ctxt->indent_nr : ctxt->level),
|
||||
ctxt->indent);
|
||||
xhtmlNodeDumpOutput(ctxt, cur);
|
||||
if (ctxt->format) {
|
||||
if (ctxt->format == 1) {
|
||||
xmlOutputBufferWrite(buf, 1, "\n");
|
||||
}
|
||||
cur = cur->next;
|
||||
|
@ -1410,7 +1484,7 @@ xhtmlNodeDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
|
|||
|
||||
xmlOutputBufferWriteString(buf, (const char *)cur->name);
|
||||
if (cur->nsDef)
|
||||
xmlNsListDumpOutput(buf, cur->nsDef);
|
||||
xmlNsListDumpOutputCtxt(ctxt, cur->nsDef);
|
||||
if ((xmlStrEqual(cur->name, BAD_CAST "html") &&
|
||||
(cur->ns == NULL) && (cur->nsDef == NULL))) {
|
||||
/*
|
||||
|
@ -1458,7 +1532,7 @@ xhtmlNodeDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
|
|||
} else {
|
||||
if (addmeta == 1) {
|
||||
xmlOutputBufferWrite(buf, 1, ">");
|
||||
if (ctxt->format) {
|
||||
if (ctxt->format == 1) {
|
||||
xmlOutputBufferWrite(buf, 1, "\n");
|
||||
if (xmlIndentTreeOutput)
|
||||
xmlOutputBufferWrite(buf, ctxt->indent_size *
|
||||
|
@ -1473,7 +1547,7 @@ xhtmlNodeDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
|
|||
xmlOutputBufferWrite(buf, 5, "UTF-8");
|
||||
}
|
||||
xmlOutputBufferWrite(buf, 4, "\" />");
|
||||
if (ctxt->format)
|
||||
if (ctxt->format == 1)
|
||||
xmlOutputBufferWrite(buf, 1, "\n");
|
||||
} else {
|
||||
xmlOutputBufferWrite(buf, 1, ">");
|
||||
|
@ -1493,7 +1567,7 @@ xhtmlNodeDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
|
|||
}
|
||||
xmlOutputBufferWrite(buf, 1, ">");
|
||||
if (addmeta == 1) {
|
||||
if (ctxt->format) {
|
||||
if (ctxt->format == 1) {
|
||||
xmlOutputBufferWrite(buf, 1, "\n");
|
||||
if (xmlIndentTreeOutput)
|
||||
xmlOutputBufferWrite(buf, ctxt->indent_size *
|
||||
|
@ -1588,13 +1662,13 @@ xhtmlNodeDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
|
|||
if (cur->children != NULL) {
|
||||
int indent = ctxt->format;
|
||||
|
||||
if (format) xmlOutputBufferWrite(buf, 1, "\n");
|
||||
if (format == 1) xmlOutputBufferWrite(buf, 1, "\n");
|
||||
if (ctxt->level >= 0) ctxt->level++;
|
||||
ctxt->format = format;
|
||||
xhtmlNodeListDumpOutput(ctxt, cur->children);
|
||||
if (ctxt->level > 0) ctxt->level--;
|
||||
ctxt->format = indent;
|
||||
if ((xmlIndentTreeOutput) && (format))
|
||||
if ((xmlIndentTreeOutput) && (format == 1))
|
||||
xmlOutputBufferWrite(buf, ctxt->indent_size *
|
||||
(ctxt->level > ctxt->indent_nr ?
|
||||
ctxt->indent_nr : ctxt->level),
|
||||
|
@ -2132,7 +2206,7 @@ xmlNodeDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur,
|
|||
ctxt.doc = doc;
|
||||
ctxt.buf = buf;
|
||||
ctxt.level = level;
|
||||
ctxt.format = format;
|
||||
ctxt.format = format ? 1 : 0;
|
||||
ctxt.encoding = (const xmlChar *) encoding;
|
||||
xmlSaveCtxtInit(&ctxt);
|
||||
ctxt.options |= XML_SAVE_AS_XML;
|
||||
|
@ -2218,7 +2292,7 @@ xmlDocDumpFormatMemoryEnc(xmlDocPtr out_doc, xmlChar **doc_txt_ptr,
|
|||
ctxt.doc = out_doc;
|
||||
ctxt.buf = out_buff;
|
||||
ctxt.level = 0;
|
||||
ctxt.format = format;
|
||||
ctxt.format = format ? 1 : 0;
|
||||
ctxt.encoding = (const xmlChar *) txt_encoding;
|
||||
xmlSaveCtxtInit(&ctxt);
|
||||
ctxt.options |= XML_SAVE_AS_XML;
|
||||
|
@ -2337,7 +2411,7 @@ xmlDocFormatDump(FILE *f, xmlDocPtr cur, int format) {
|
|||
ctxt.doc = cur;
|
||||
ctxt.buf = buf;
|
||||
ctxt.level = 0;
|
||||
ctxt.format = format;
|
||||
ctxt.format = format ? 1 : 0;
|
||||
ctxt.encoding = (const xmlChar *) encoding;
|
||||
xmlSaveCtxtInit(&ctxt);
|
||||
ctxt.options |= XML_SAVE_AS_XML;
|
||||
|
@ -2427,7 +2501,7 @@ xmlSaveFormatFileTo(xmlOutputBufferPtr buf, xmlDocPtr cur,
|
|||
ctxt.doc = cur;
|
||||
ctxt.buf = buf;
|
||||
ctxt.level = 0;
|
||||
ctxt.format = format;
|
||||
ctxt.format = format ? 1 : 0;
|
||||
ctxt.encoding = (const xmlChar *) encoding;
|
||||
xmlSaveCtxtInit(&ctxt);
|
||||
ctxt.options |= XML_SAVE_AS_XML;
|
||||
|
@ -2482,7 +2556,7 @@ xmlSaveFormatFileEnc( const char * filename, xmlDocPtr cur,
|
|||
ctxt.doc = cur;
|
||||
ctxt.buf = buf;
|
||||
ctxt.level = 0;
|
||||
ctxt.format = format;
|
||||
ctxt.format = format ? 1 : 0;
|
||||
ctxt.encoding = (const xmlChar *) encoding;
|
||||
xmlSaveCtxtInit(&ctxt);
|
||||
ctxt.options |= XML_SAVE_AS_XML;
|
||||
|
|
5
reactos/lib/3rdparty/libxml2/xmlschemas.c
vendored
5
reactos/lib/3rdparty/libxml2/xmlschemas.c
vendored
|
@ -26811,6 +26811,11 @@ xmlSchemaValidateElem(xmlSchemaValidCtxtPtr vctxt)
|
|||
vctxt->skipDepth = 0;
|
||||
return(ret);
|
||||
}
|
||||
/*
|
||||
* Augment the IDC definitions for the main schema and all imported ones
|
||||
* NOTE: main schema is the first in the imported list
|
||||
*/
|
||||
xmlHashScan(vctxt->schema->schemasImports,(xmlHashScanner)xmlSchemaAugmentImportedIDC, vctxt);
|
||||
}
|
||||
if (vctxt->depth > 0) {
|
||||
/*
|
||||
|
|
11
reactos/lib/3rdparty/libxml2/xmlschemastypes.c
vendored
11
reactos/lib/3rdparty/libxml2/xmlschemastypes.c
vendored
|
@ -2389,9 +2389,11 @@ xmlSchemaValAtomicType(xmlSchemaTypePtr type, const xmlChar * value,
|
|||
normOnTheFly);
|
||||
break;
|
||||
case XML_SCHEMAS_FLOAT:
|
||||
case XML_SCHEMAS_DOUBLE:{
|
||||
case XML_SCHEMAS_DOUBLE: {
|
||||
const xmlChar *cur = value;
|
||||
int neg = 0;
|
||||
int digits_before = 0;
|
||||
int digits_after = 0;
|
||||
|
||||
if (normOnTheFly)
|
||||
while IS_WSP_BLANK_CH(*cur) cur++;
|
||||
|
@ -2464,12 +2466,17 @@ xmlSchemaValAtomicType(xmlSchemaTypePtr type, const xmlChar * value,
|
|||
goto return1;
|
||||
while ((*cur >= '0') && (*cur <= '9')) {
|
||||
cur++;
|
||||
digits_before++;
|
||||
}
|
||||
if (*cur == '.') {
|
||||
cur++;
|
||||
while ((*cur >= '0') && (*cur <= '9'))
|
||||
while ((*cur >= '0') && (*cur <= '9')) {
|
||||
cur++;
|
||||
digits_after++;
|
||||
}
|
||||
}
|
||||
if ((digits_before == 0) && (digits_after == 0))
|
||||
goto return1;
|
||||
if ((*cur == 'e') || (*cur == 'E')) {
|
||||
cur++;
|
||||
if ((*cur == '-') || (*cur == '+'))
|
||||
|
|
46
reactos/lib/3rdparty/libxml2/xpath.c
vendored
46
reactos/lib/3rdparty/libxml2/xpath.c
vendored
|
@ -8106,9 +8106,17 @@ xmlXPathNextPrecedingSibling(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) {
|
|||
xmlNodePtr
|
||||
xmlXPathNextFollowing(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) {
|
||||
if ((ctxt == NULL) || (ctxt->context == NULL)) return(NULL);
|
||||
if (cur != NULL && cur->children != NULL)
|
||||
return cur->children ;
|
||||
if (cur == NULL) cur = ctxt->context->node;
|
||||
if ((cur != NULL) && (cur->type != XML_ATTRIBUTE_NODE) &&
|
||||
(cur->type != XML_NAMESPACE_DECL) && (cur->children != NULL))
|
||||
return(cur->children);
|
||||
|
||||
if (cur == NULL) {
|
||||
cur = ctxt->context->node;
|
||||
if (cur->type == XML_NAMESPACE_DECL)
|
||||
return(NULL);
|
||||
if (cur->type == XML_ATTRIBUTE_NODE)
|
||||
cur = cur->parent;
|
||||
}
|
||||
if (cur == NULL) return(NULL) ; /* ERROR */
|
||||
if (cur->next != NULL) return(cur->next) ;
|
||||
do {
|
||||
|
@ -8162,8 +8170,13 @@ xmlNodePtr
|
|||
xmlXPathNextPreceding(xmlXPathParserContextPtr ctxt, xmlNodePtr cur)
|
||||
{
|
||||
if ((ctxt == NULL) || (ctxt->context == NULL)) return(NULL);
|
||||
if (cur == NULL)
|
||||
if (cur == NULL) {
|
||||
cur = ctxt->context->node;
|
||||
if (cur->type == XML_NAMESPACE_DECL)
|
||||
return(NULL);
|
||||
if (cur->type == XML_ATTRIBUTE_NODE)
|
||||
return(cur->parent);
|
||||
}
|
||||
if (cur == NULL)
|
||||
return (NULL);
|
||||
if ((cur->prev != NULL) && (cur->prev->type == XML_DTD_NODE))
|
||||
|
@ -8207,8 +8220,8 @@ xmlXPathNextPrecedingInternal(xmlXPathParserContextPtr ctxt,
|
|||
cur = ctxt->context->node;
|
||||
if (cur == NULL)
|
||||
return (NULL);
|
||||
if (cur->type == XML_NAMESPACE_DECL)
|
||||
cur = (xmlNodePtr)((xmlNsPtr)cur)->next;
|
||||
if (cur->type == XML_NAMESPACE_DECL)
|
||||
return (NULL);
|
||||
ctxt->ancestor = cur->parent;
|
||||
}
|
||||
if ((cur->prev != NULL) && (cur->prev->type == XML_DTD_NODE))
|
||||
|
@ -10067,15 +10080,23 @@ xmlXPathCompNumber(xmlXPathParserContextPtr ctxt)
|
|||
}
|
||||
#endif
|
||||
if (CUR == '.') {
|
||||
int v, frac = 0;
|
||||
double fraction = 0;
|
||||
|
||||
NEXT;
|
||||
if (((CUR < '0') || (CUR > '9')) && (!ok)) {
|
||||
XP_ERROR(XPATH_NUMBER_ERROR);
|
||||
}
|
||||
while ((CUR >= '0') && (CUR <= '9')) {
|
||||
mult /= 10;
|
||||
ret = ret + (CUR - '0') * mult;
|
||||
while ((CUR >= '0') && (CUR <= '9') && (frac < MAX_FRAC)) {
|
||||
v = (CUR - '0');
|
||||
fraction = fraction * 10 + v;
|
||||
frac = frac + 1;
|
||||
NEXT;
|
||||
}
|
||||
fraction /= my_pow10[frac];
|
||||
ret = ret + fraction;
|
||||
while ((CUR >= '0') && (CUR <= '9'))
|
||||
NEXT;
|
||||
}
|
||||
if ((CUR == 'e') || (CUR == 'E')) {
|
||||
NEXT;
|
||||
|
@ -11249,7 +11270,10 @@ xmlXPathCompStep(xmlXPathParserContextPtr ctxt) {
|
|||
}
|
||||
}
|
||||
|
||||
CHECK_ERROR;
|
||||
if (ctxt->error != XPATH_EXPRESSION_OK) {
|
||||
xmlFree(name);
|
||||
return;
|
||||
}
|
||||
|
||||
name = xmlXPathCompNodeTest(ctxt, &test, &type, &prefix, name);
|
||||
if (test == 0)
|
||||
|
@ -12655,7 +12679,7 @@ xmlXPathCompOpEvalFirst(xmlXPathParserContextPtr ctxt,
|
|||
return (total);
|
||||
#ifdef XP_OPTIMIZED_FILTER_FIRST
|
||||
case XPATH_OP_FILTER:
|
||||
total =+ xmlXPathCompOpEvalFilterFirst(ctxt, op, first);
|
||||
total += xmlXPathCompOpEvalFilterFirst(ctxt, op, first);
|
||||
return (total);
|
||||
#endif
|
||||
default:
|
||||
|
|
Loading…
Reference in a new issue