Add mxmlNewCDATA() and mxmlSetCDATA() functions.

Bump version to 2.2.3.

Update docos.
pull/193/head
Michael R Sweet 19 years ago
parent 35b7bc18e3
commit cc95be7bed
  1. 9
      CHANGES
  2. 3
      config.h.in
  3. 365
      configure
  4. 2
      configure.in
  5. 4
      doc/intro.html
  6. 154
      doc/mxml.html
  7. 53
      doc/reference.html
  8. 15
      doc/relnotes.html
  9. 41
      mxml-node.c
  10. 33
      mxml-set.c
  11. 26
      mxml-string.c
  12. 2
      mxml.h
  13. 37
      mxml.xml

@ -1,6 +1,13 @@
CHANGES - 06/07/2005 CHANGES - 08/05/2005
-------------------- --------------------
CHANGES IN Mini-XML 2.2.4
- Added new mxmlNewCDATA() and mxmlSetCDATA() functions
to create and set CDATA nodes, which are really just
special element nodes.
CHANGES IN Mini-XML 2.2.3 CHANGES IN Mini-XML 2.2.3
- Added new MXML_IGNORE type and MXML_IGNORE_CB callback - Added new MXML_IGNORE type and MXML_IGNORE_CB callback

@ -57,7 +57,8 @@ extern char *mxml_strdup(const char *);
# define strdup mxml_strdup # define strdup mxml_strdup
# endif /* !HAVE_STRDUP */ # endif /* !HAVE_STRDUP */
extern char *mxml_strdupf(const char *, va_list); extern char *mxml_strdupf(const char *, ...);
extern char *mxml_vstrdupf(const char *, va_list);
# ifndef HAVE_VSNPRINTF # ifndef HAVE_VSNPRINTF
extern int mxml_vsnprintf(char *, size_t, const char *, va_list); extern int mxml_vsnprintf(char *, size_t, const char *, va_list);

365
configure vendored

@ -1,8 +1,9 @@
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.59. # Generated by GNU Autoconf 2.57.
# #
# Copyright (C) 2003 Free Software Foundation, Inc. # Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
# Free Software Foundation, Inc.
# This configure script is free software; the Free Software Foundation # This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it. # gives unlimited permission to copy, distribute and modify it.
## --------------------- ## ## --------------------- ##
@ -19,10 +20,9 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
set -o posix set -o posix
fi fi
DUALCASE=1; export DUALCASE # for MKS sh
# Support unset when possible. # Support unset when possible.
if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
as_unset=unset as_unset=unset
else else
as_unset=false as_unset=false
@ -41,7 +41,7 @@ for as_var in \
LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
LC_TELEPHONE LC_TIME LC_TELEPHONE LC_TIME
do do
if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
eval $as_var=C; export $as_var eval $as_var=C; export $as_var
else else
$as_unset $as_var $as_unset $as_var
@ -218,17 +218,16 @@ rm -f conf$$ conf$$.exe conf$$.file
if mkdir -p . 2>/dev/null; then if mkdir -p . 2>/dev/null; then
as_mkdir_p=: as_mkdir_p=:
else else
test -d ./-p && rmdir ./-p
as_mkdir_p=false as_mkdir_p=false
fi fi
as_executable_p="test -f" as_executable_p="test -f"
# Sed expression to map a string onto a valid CPP name. # Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
# Sed expression to map a string onto a valid variable name. # Sed expression to map a string onto a valid variable name.
as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
# IFS # IFS
@ -863,45 +862,12 @@ case $srcdir in
ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
ac_top_srcdir=$ac_top_builddir$srcdir ;; ac_top_srcdir=$ac_top_builddir$srcdir ;;
esac esac
# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
# Do not use `cd foo && pwd` to compute absolute paths, because # absolute.
# the directories may not exist. ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
case `pwd` in ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
.) ac_abs_builddir="$ac_dir";; ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
*) ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
case "$ac_dir" in
.) ac_abs_builddir=`pwd`;;
[\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
*) ac_abs_builddir=`pwd`/"$ac_dir";;
esac;;
esac
case $ac_abs_builddir in
.) ac_abs_top_builddir=${ac_top_builddir}.;;
*)
case ${ac_top_builddir}. in
.) ac_abs_top_builddir=$ac_abs_builddir;;
[\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
*) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
esac;;
esac
case $ac_abs_builddir in
.) ac_abs_srcdir=$ac_srcdir;;
*)
case $ac_srcdir in
.) ac_abs_srcdir=$ac_abs_builddir;;
[\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
*) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
esac;;
esac
case $ac_abs_builddir in
.) ac_abs_top_srcdir=$ac_top_srcdir;;
*)
case $ac_top_srcdir in
.) ac_abs_top_srcdir=$ac_abs_builddir;;
[\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
*) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
esac;;
esac
cd $ac_dir cd $ac_dir
# Check for guested configure; otherwise get Cygnus style configure. # Check for guested configure; otherwise get Cygnus style configure.
@ -926,7 +892,8 @@ test -n "$ac_init_help" && exit 0
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
Copyright (C) 2003 Free Software Foundation, Inc. Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it. gives unlimited permission to copy, distribute and modify it.
_ACEOF _ACEOF
@ -938,7 +905,7 @@ This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by $as_me, which was It was created by $as_me, which was
generated by GNU Autoconf 2.59. Invocation command line was generated by GNU Autoconf 2.57. Invocation command line was
$ $0 $@ $ $0 $@
@ -1114,7 +1081,7 @@ _ASBOX
echo "$as_me: caught signal $ac_signal" echo "$as_me: caught signal $ac_signal"
echo "$as_me: exit $exit_status" echo "$as_me: exit $exit_status"
} >&5 } >&5
rm -f core *.core && rm -f core core.* *.core &&
rm -rf conftest* confdefs* conf$$* $ac_clean_files && rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
exit $exit_status exit $exit_status
' 0 ' 0
@ -1269,7 +1236,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_config_headers="$ac_config_headers config.h" ac_config_headers="$ac_config_headers config.h"
VERSION=2.2.3 VERSION=2.2.4
cat >>confdefs.h <<_ACEOF cat >>confdefs.h <<_ACEOF
#define MXML_VERSION "Mini-XML v$VERSION" #define MXML_VERSION "Mini-XML v$VERSION"
@ -1664,6 +1631,7 @@ ac_compiler=`set X $ac_compile; echo $2`
(exit $ac_status); } (exit $ac_status); }
cat >conftest.$ac_ext <<_ACEOF cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
/* confdefs.h. */ /* confdefs.h. */
_ACEOF _ACEOF
cat confdefs.h >>conftest.$ac_ext cat confdefs.h >>conftest.$ac_ext
@ -1683,8 +1651,8 @@ ac_clean_files="$ac_clean_files a.out a.exe b.out"
# Try to create an executable without -o first, disregard a.out. # Try to create an executable without -o first, disregard a.out.
# It will help us diagnose broken compilers, and finding out an intuition # It will help us diagnose broken compilers, and finding out an intuition
# of exeext. # of exeext.
echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 echo "$as_me:$LINENO: checking for C compiler default output" >&5
echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
(eval $ac_link_default) 2>&5 (eval $ac_link_default) 2>&5
@ -1820,6 +1788,7 @@ if test "${ac_cv_objext+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6 echo $ECHO_N "(cached) $ECHO_C" >&6
else else
cat >conftest.$ac_ext <<_ACEOF cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
/* confdefs.h. */ /* confdefs.h. */
_ACEOF _ACEOF
cat confdefs.h >>conftest.$ac_ext cat confdefs.h >>conftest.$ac_ext
@ -1870,6 +1839,7 @@ if test "${ac_cv_c_compiler_gnu+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6 echo $ECHO_N "(cached) $ECHO_C" >&6
else else
cat >conftest.$ac_ext <<_ACEOF cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
/* confdefs.h. */ /* confdefs.h. */
_ACEOF _ACEOF
cat confdefs.h >>conftest.$ac_ext cat confdefs.h >>conftest.$ac_ext
@ -1889,20 +1859,10 @@ main ()
_ACEOF _ACEOF
rm -f conftest.$ac_objext rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>conftest.er1 (eval $ac_compile) 2>&5
ac_status=$? ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && (exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest.$ac_objext' { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5 (eval $ac_try) 2>&5
@ -1916,7 +1876,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_compiler_gnu=no ac_compiler_gnu=no
fi fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext rm -f conftest.$ac_objext conftest.$ac_ext
ac_cv_c_compiler_gnu=$ac_compiler_gnu ac_cv_c_compiler_gnu=$ac_compiler_gnu
fi fi
@ -1932,6 +1892,7 @@ if test "${ac_cv_prog_cc_g+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6 echo $ECHO_N "(cached) $ECHO_C" >&6
else else
cat >conftest.$ac_ext <<_ACEOF cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
/* confdefs.h. */ /* confdefs.h. */
_ACEOF _ACEOF
cat confdefs.h >>conftest.$ac_ext cat confdefs.h >>conftest.$ac_ext
@ -1948,20 +1909,10 @@ main ()
_ACEOF _ACEOF
rm -f conftest.$ac_objext rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>conftest.er1 (eval $ac_compile) 2>&5
ac_status=$? ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && (exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest.$ac_objext' { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5 (eval $ac_try) 2>&5
@ -1975,7 +1926,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_prog_cc_g=no ac_cv_prog_cc_g=no
fi fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext rm -f conftest.$ac_objext conftest.$ac_ext
fi fi
echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
@ -2002,6 +1953,7 @@ else
ac_cv_prog_cc_stdc=no ac_cv_prog_cc_stdc=no
ac_save_CC=$CC ac_save_CC=$CC
cat >conftest.$ac_ext <<_ACEOF cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
/* confdefs.h. */ /* confdefs.h. */
_ACEOF _ACEOF
cat confdefs.h >>conftest.$ac_ext cat confdefs.h >>conftest.$ac_ext
@ -2029,16 +1981,6 @@ static char *f (char * (*g) (char **, int), char **p, ...)
va_end (v); va_end (v);
return s; return s;
} }
/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
function prototypes and stuff, but not '\xHH' hex character constants.
These don't provoke an error unfortunately, instead are silently treated
as 'x'. The following induces an error, until -std1 is added to get
proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
array size at least. It's necessary to write '\x00'==0 to get something
that's true only with -std1. */
int osf4_cc_array ['\x00' == 0 ? 1 : -1];
int test (int i, double x); int test (int i, double x);
struct s1 {int (*f) (int a);}; struct s1 {int (*f) (int a);};
struct s2 {int (*f) (double a);}; struct s2 {int (*f) (double a);};
@ -2065,20 +2007,10 @@ do
CC="$ac_save_CC $ac_arg" CC="$ac_save_CC $ac_arg"
rm -f conftest.$ac_objext rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>conftest.er1 (eval $ac_compile) 2>&5
ac_status=$? ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && (exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest.$ac_objext' { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5 (eval $ac_try) 2>&5
@ -2092,7 +2024,7 @@ else
sed 's/^/| /' conftest.$ac_ext >&5 sed 's/^/| /' conftest.$ac_ext >&5
fi fi
rm -f conftest.err conftest.$ac_objext rm -f conftest.$ac_objext
done done
rm -f conftest.$ac_ext conftest.$ac_objext rm -f conftest.$ac_ext conftest.$ac_objext
CC=$ac_save_CC CC=$ac_save_CC
@ -2120,20 +2052,10 @@ cat >conftest.$ac_ext <<_ACEOF
_ACEOF _ACEOF
rm -f conftest.$ac_objext rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>conftest.er1 (eval $ac_compile) 2>&5
ac_status=$? ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && (exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest.$ac_objext' { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5 (eval $ac_try) 2>&5
@ -2142,6 +2064,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(exit $ac_status); }; }; then (exit $ac_status); }; }; then
for ac_declaration in \ for ac_declaration in \
''\ ''\
'#include <stdlib.h>' \
'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \
'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \
'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int) throw ();' \
@ -2149,13 +2072,14 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
'void exit (int);' 'void exit (int);'
do do
cat >conftest.$ac_ext <<_ACEOF cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
/* confdefs.h. */ /* confdefs.h. */
_ACEOF _ACEOF
cat confdefs.h >>conftest.$ac_ext cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */ /* end confdefs.h. */
$ac_declaration
#include <stdlib.h> #include <stdlib.h>
$ac_declaration
int int
main () main ()
{ {
@ -2166,20 +2090,10 @@ exit (42);
_ACEOF _ACEOF
rm -f conftest.$ac_objext rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>conftest.er1 (eval $ac_compile) 2>&5
ac_status=$? ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && (exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest.$ac_objext' { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5 (eval $ac_try) 2>&5
@ -2193,8 +2107,9 @@ sed 's/^/| /' conftest.$ac_ext >&5
continue continue
fi fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext rm -f conftest.$ac_objext conftest.$ac_ext
cat >conftest.$ac_ext <<_ACEOF cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
/* confdefs.h. */ /* confdefs.h. */
_ACEOF _ACEOF
cat confdefs.h >>conftest.$ac_ext cat confdefs.h >>conftest.$ac_ext
@ -2211,20 +2126,10 @@ exit (42);
_ACEOF _ACEOF
rm -f conftest.$ac_objext rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>conftest.er1 (eval $ac_compile) 2>&5
ac_status=$? ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && (exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest.$ac_objext' { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5 (eval $ac_try) 2>&5
@ -2237,7 +2142,7 @@ else
sed 's/^/| /' conftest.$ac_ext >&5 sed 's/^/| /' conftest.$ac_ext >&5
fi fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext rm -f conftest.$ac_objext conftest.$ac_ext
done done
rm -f conftest* rm -f conftest*
if test -n "$ac_declaration"; then if test -n "$ac_declaration"; then
@ -2251,7 +2156,7 @@ else
sed 's/^/| /' conftest.$ac_ext >&5 sed 's/^/| /' conftest.$ac_ext >&5
fi fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext rm -f conftest.$ac_objext conftest.$ac_ext
ac_ext=c ac_ext=c
ac_cpp='$CPP $CPPFLAGS' ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@ -2377,6 +2282,7 @@ if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6 echo $ECHO_N "(cached) $ECHO_C" >&6
else else
cat >conftest.$ac_ext <<_ACEOF cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
/* confdefs.h. */ /* confdefs.h. */
_ACEOF _ACEOF
cat confdefs.h >>conftest.$ac_ext cat confdefs.h >>conftest.$ac_ext
@ -2396,20 +2302,10 @@ main ()
_ACEOF _ACEOF
rm -f conftest.$ac_objext rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>conftest.er1 (eval $ac_compile) 2>&5
ac_status=$? ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && (exit $ac_status); } &&
{ ac_try='test -z "$ac_cxx_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest.$ac_objext' { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5 (eval $ac_try) 2>&5
@ -2423,7 +2319,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_compiler_gnu=no ac_compiler_gnu=no
fi fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext rm -f conftest.$ac_objext conftest.$ac_ext
ac_cv_cxx_compiler_gnu=$ac_compiler_gnu ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
fi fi
@ -2439,6 +2335,7 @@ if test "${ac_cv_prog_cxx_g+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6 echo $ECHO_N "(cached) $ECHO_C" >&6
else else
cat >conftest.$ac_ext <<_ACEOF cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
/* confdefs.h. */ /* confdefs.h. */
_ACEOF _ACEOF
cat confdefs.h >>conftest.$ac_ext cat confdefs.h >>conftest.$ac_ext
@ -2455,20 +2352,10 @@ main ()
_ACEOF _ACEOF
rm -f conftest.$ac_objext rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>conftest.er1 (eval $ac_compile) 2>&5
ac_status=$? ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && (exit $ac_status); } &&
{ ac_try='test -z "$ac_cxx_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest.$ac_objext' { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5 (eval $ac_try) 2>&5
@ -2482,7 +2369,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_prog_cxx_g=no ac_cv_prog_cxx_g=no
fi fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext rm -f conftest.$ac_objext conftest.$ac_ext
fi fi
echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
@ -2503,6 +2390,7 @@ else
fi fi
for ac_declaration in \ for ac_declaration in \
''\ ''\
'#include <stdlib.h>' \
'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \
'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \
'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int) throw ();' \
@ -2510,13 +2398,14 @@ for ac_declaration in \
'void exit (int);' 'void exit (int);'
do do
cat >conftest.$ac_ext <<_ACEOF cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
/* confdefs.h. */ /* confdefs.h. */
_ACEOF _ACEOF
cat confdefs.h >>conftest.$ac_ext cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */ /* end confdefs.h. */
$ac_declaration
#include <stdlib.h> #include <stdlib.h>
$ac_declaration
int int
main () main ()
{ {
@ -2527,20 +2416,10 @@ exit (42);
_ACEOF _ACEOF
rm -f conftest.$ac_objext rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>conftest.er1 (eval $ac_compile) 2>&5
ac_status=$? ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && (exit $ac_status); } &&
{ ac_try='test -z "$ac_cxx_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest.$ac_objext' { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5 (eval $ac_try) 2>&5
@ -2554,8 +2433,9 @@ sed 's/^/| /' conftest.$ac_ext >&5
continue continue
fi fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext rm -f conftest.$ac_objext conftest.$ac_ext
cat >conftest.$ac_ext <<_ACEOF cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
/* confdefs.h. */ /* confdefs.h. */
_ACEOF _ACEOF
cat confdefs.h >>conftest.$ac_ext cat confdefs.h >>conftest.$ac_ext
@ -2572,20 +2452,10 @@ exit (42);
_ACEOF _ACEOF
rm -f conftest.$ac_objext rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>conftest.er1 (eval $ac_compile) 2>&5
ac_status=$? ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && (exit $ac_status); } &&
{ ac_try='test -z "$ac_cxx_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest.$ac_objext' { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5 (eval $ac_try) 2>&5
@ -2598,7 +2468,7 @@ else
sed 's/^/| /' conftest.$ac_ext >&5 sed 's/^/| /' conftest.$ac_ext >&5
fi fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext rm -f conftest.$ac_objext conftest.$ac_ext
done done
rm -f conftest* rm -f conftest*
if test -n "$ac_declaration"; then if test -n "$ac_declaration"; then
@ -2649,7 +2519,6 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
# AFS /usr/afsws/bin/install, which mishandles nonexistent args # AFS /usr/afsws/bin/install, which mishandles nonexistent args
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# OS/2's system install, which has a completely different semantic
# ./install, which can be erroneously created by make from ./install.sh. # ./install, which can be erroneously created by make from ./install.sh.
echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
@ -2666,7 +2535,6 @@ do
case $as_dir/ in case $as_dir/ in
./ | .// | /cC/* | \ ./ | .// | /cC/* | \
/etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
/usr/ucb/* ) ;; /usr/ucb/* ) ;;
*) *)
# OSF1 and SCO ODT 3.0 have their own names for install. # OSF1 and SCO ODT 3.0 have their own names for install.
@ -3105,28 +2973,21 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6 echo $ECHO_N "(cached) $ECHO_C" >&6
else else
cat >conftest.$ac_ext <<_ACEOF cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
/* confdefs.h. */ /* confdefs.h. */
_ACEOF _ACEOF
cat confdefs.h >>conftest.$ac_ext cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */ /* end confdefs.h. */
/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
For example, HP-UX 11i <limits.h> declares gettimeofday. */
#define $ac_func innocuous_$ac_func
/* System header to define __stub macros and hopefully few prototypes, /* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below. which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */ <limits.h> exists even on freestanding compilers. */
#ifdef __STDC__ #ifdef __STDC__
# include <limits.h> # include <limits.h>
#else #else
# include <assert.h> # include <assert.h>
#endif #endif
#undef $ac_func
/* Override any gcc2 internal prototype to avoid an error. */ /* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus #ifdef __cplusplus
extern "C" extern "C"
@ -3157,20 +3018,10 @@ return f != $ac_func;
_ACEOF _ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
(eval $ac_link) 2>conftest.er1 (eval $ac_link) 2>&5
ac_status=$? ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && (exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest$ac_exeext' { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5 (eval $ac_try) 2>&5
@ -3184,8 +3035,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no" eval "$as_ac_var=no"
fi fi
rm -f conftest.err conftest.$ac_objext \ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
conftest$ac_exeext conftest.$ac_ext
fi fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@ -3210,28 +3060,21 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6 echo $ECHO_N "(cached) $ECHO_C" >&6
else else
cat >conftest.$ac_ext <<_ACEOF cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
/* confdefs.h. */ /* confdefs.h. */
_ACEOF _ACEOF
cat confdefs.h >>conftest.$ac_ext cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */ /* end confdefs.h. */
/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
For example, HP-UX 11i <limits.h> declares gettimeofday. */
#define $ac_func innocuous_$ac_func
/* System header to define __stub macros and hopefully few prototypes, /* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below. which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */ <limits.h> exists even on freestanding compilers. */
#ifdef __STDC__ #ifdef __STDC__
# include <limits.h> # include <limits.h>
#else #else
# include <assert.h> # include <assert.h>
#endif #endif
#undef $ac_func
/* Override any gcc2 internal prototype to avoid an error. */ /* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus #ifdef __cplusplus
extern "C" extern "C"
@ -3262,20 +3105,10 @@ return f != $ac_func;
_ACEOF _ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
(eval $ac_link) 2>conftest.er1 (eval $ac_link) 2>&5
ac_status=$? ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && (exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest$ac_exeext' { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5 (eval $ac_try) 2>&5
@ -3289,8 +3122,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no" eval "$as_ac_var=no"
fi fi
rm -f conftest.err conftest.$ac_objext \ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
conftest$ac_exeext conftest.$ac_ext
fi fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@ -3611,10 +3443,9 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
set -o posix set -o posix
fi fi
DUALCASE=1; export DUALCASE # for MKS sh
# Support unset when possible. # Support unset when possible.
if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
as_unset=unset as_unset=unset
else else
as_unset=false as_unset=false
@ -3633,7 +3464,7 @@ for as_var in \
LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
LC_TELEPHONE LC_TIME LC_TELEPHONE LC_TIME
do do
if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
eval $as_var=C; export $as_var eval $as_var=C; export $as_var
else else
$as_unset $as_var $as_unset $as_var
@ -3812,17 +3643,16 @@ rm -f conf$$ conf$$.exe conf$$.file
if mkdir -p . 2>/dev/null; then if mkdir -p . 2>/dev/null; then
as_mkdir_p=: as_mkdir_p=:
else else
test -d ./-p && rmdir ./-p
as_mkdir_p=false as_mkdir_p=false
fi fi
as_executable_p="test -f" as_executable_p="test -f"
# Sed expression to map a string onto a valid CPP name. # Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
# Sed expression to map a string onto a valid variable name. # Sed expression to map a string onto a valid variable name.
as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
# IFS # IFS
@ -3849,7 +3679,7 @@ _ASBOX
cat >&5 <<_CSEOF cat >&5 <<_CSEOF
This file was extended by $as_me, which was This file was extended by $as_me, which was
generated by GNU Autoconf 2.59. Invocation command line was generated by GNU Autoconf 2.57. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_HEADERS = $CONFIG_HEADERS
@ -3909,10 +3739,11 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\ ac_cs_version="\\
config.status config.status
configured by $0, generated by GNU Autoconf 2.59, configured by $0, generated by GNU Autoconf 2.57,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
Copyright (C) 2003 Free Software Foundation, Inc. Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it." gives unlimited permission to copy, distribute and modify it."
srcdir=$srcdir srcdir=$srcdir
@ -4257,45 +4088,12 @@ case $srcdir in
ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
ac_top_srcdir=$ac_top_builddir$srcdir ;; ac_top_srcdir=$ac_top_builddir$srcdir ;;
esac esac
# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
# Do not use `cd foo && pwd` to compute absolute paths, because # absolute.
# the directories may not exist. ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
case `pwd` in ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
.) ac_abs_builddir="$ac_dir";; ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
*) ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
case "$ac_dir" in
.) ac_abs_builddir=`pwd`;;
[\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
*) ac_abs_builddir=`pwd`/"$ac_dir";;
esac;;
esac
case $ac_abs_builddir in
.) ac_abs_top_builddir=${ac_top_builddir}.;;
*)
case ${ac_top_builddir}. in
.) ac_abs_top_builddir=$ac_abs_builddir;;
[\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
*) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
esac;;
esac
case $ac_abs_builddir in
.) ac_abs_srcdir=$ac_srcdir;;
*)
case $ac_srcdir in
.) ac_abs_srcdir=$ac_abs_builddir;;
[\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
*) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
esac;;
esac
case $ac_abs_builddir in
.) ac_abs_top_srcdir=$ac_top_srcdir;;
*)
case $ac_top_srcdir in
.) ac_abs_top_srcdir=$ac_abs_builddir;;
[\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
*) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
esac;;
esac
case $INSTALL in case $INSTALL in
@ -4330,14 +4128,14 @@ echo "$as_me: creating $ac_file" >&6;}
test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;} echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; } { (exit 1); exit 1; }; }
echo "$f";; echo $f;;
*) # Relative *) # Relative
if test -f "$f"; then if test -f "$f"; then
# Build tree # Build tree
echo "$f" echo $f
elif test -f "$srcdir/$f"; then elif test -f "$srcdir/$f"; then
# Source tree # Source tree
echo "$srcdir/$f" echo $srcdir/$f
else else
# /dev/null tree # /dev/null tree
{ { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
@ -4421,15 +4219,14 @@ echo "$as_me: creating $ac_file" >&6;}
test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;} echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; } { (exit 1); exit 1; }; }
# Do quote $f, to prevent DOS paths from being IFS'd. echo $f;;
echo "$f";;
*) # Relative *) # Relative
if test -f "$f"; then if test -f "$f"; then
# Build tree # Build tree
echo "$f" echo $f
elif test -f "$srcdir/$f"; then elif test -f "$srcdir/$f"; then
# Source tree # Source tree
echo "$srcdir/$f" echo $srcdir/$f
else else
# /dev/null tree # /dev/null tree
{ { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5

@ -23,7 +23,7 @@ dnl Set the name of the config header file...
AC_CONFIG_HEADER(config.h) AC_CONFIG_HEADER(config.h)
dnl Version number... dnl Version number...
VERSION=2.2.3 VERSION=2.2.4
AC_SUBST(VERSION) AC_SUBST(VERSION)
AC_DEFINE_UNQUOTED(MXML_VERSION, "Mini-XML v$VERSION") AC_DEFINE_UNQUOTED(MXML_VERSION, "Mini-XML v$VERSION")

@ -1,6 +1,6 @@
<html> <html>
<head> <head>
<title>Mini-XML Programmers Manual, Version 2.2.1</title> <title>Mini-XML Programmers Manual, Version 2.2.3</title>
<meta name='copyright' content='Copyright 2003-2005'/> <meta name='copyright' content='Copyright 2003-2005'/>
<meta name='author' content='Michael Sweet'/> <meta name='author' content='Michael Sweet'/>
<meta name='keywords' content='XML, C, C++, library'/> <meta name='keywords' content='XML, C, C++, library'/>
@ -9,7 +9,7 @@
<h1 align='right'><a name='INTRO'>Introduction</a></h1> <h1 align='right'><a name='INTRO'>Introduction</a></h1>
<p>This programmers manual describes Mini-XML version 2.2.1, a <p>This programmers manual describes Mini-XML version 2.2.3, a
small XML parsing library that you can use to read and write XML small XML parsing library that you can use to read and write XML
and XML-like data files in your application without requiring and XML-like data files in your application without requiring
large non-standard libraries. Mini-XML only requires an ANSI C large non-standard libraries. Mini-XML only requires an ANSI C

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>Mini-XML Programmers Manual, Version 2.2.1</TITLE> <TITLE>Mini-XML Programmers Manual, Version 2.2.3</TITLE>
<META NAME="author" CONTENT="Michael Sweet"> <META NAME="author" CONTENT="Michael Sweet">
<META NAME="copyright" CONTENT="Copyright 2003-2005"> <META NAME="copyright" CONTENT="Copyright 2003-2005">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=iso-iso-8859-1"> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=iso-iso-8859-1">
@ -19,8 +19,8 @@ PRE { font-family: monospace }
--></STYLE> --></STYLE>
</HEAD> </HEAD>
<BODY> <BODY>
<CENTER><A HREF="#CONTENTS"><IMG SRC="logo.png" BORDER="0" WIDTH="256" HEIGHT="256" ALT="Mini-XML Programmers Manual, Version 2.2.1"><BR> <CENTER><A HREF="#CONTENTS"><IMG SRC="logo.png" BORDER="0" WIDTH="256" HEIGHT="256" ALT="Mini-XML Programmers Manual, Version 2.2.3"><BR>
<H1>Mini-XML Programmers Manual, Version 2.2.1</H1></A><BR> <H1>Mini-XML Programmers Manual, Version 2.2.3</H1></A><BR>
Michael Sweet<BR> Michael Sweet<BR>
Copyright 2003-2005<BR> Copyright 2003-2005<BR>
</CENTER> </CENTER>
@ -83,21 +83,22 @@ Copyright 2003-2005<BR>
</UL> </UL>
<B><A HREF="#RELNOTES">B - Release Notes</A></B> <B><A HREF="#RELNOTES">B - Release Notes</A></B>
<UL> <UL>
<LI><A HREF="#7_1">Changes in Mini-XML 2.2.2</A></LI> <LI><A HREF="#7_1">Changes in Mini-XML 2.2.3</A></LI>
<LI><A HREF="#7_2">Changes in Mini-XML 2.2.1</A></LI> <LI><A HREF="#7_2">Changes in Mini-XML 2.2.2</A></LI>
<LI><A HREF="#7_3">Changes in Mini-XML 2.2</A></LI> <LI><A HREF="#7_3">Changes in Mini-XML 2.2.1</A></LI>
<LI><A HREF="#7_4">Changes in Mini-XML 2.1</A></LI> <LI><A HREF="#7_4">Changes in Mini-XML 2.2</A></LI>
<LI><A HREF="#7_5">Changes in Mini-XML 2.0</A></LI> <LI><A HREF="#7_5">Changes in Mini-XML 2.1</A></LI>
<LI><A HREF="#7_6">Changes in Mini-XML 1.3</A></LI> <LI><A HREF="#7_6">Changes in Mini-XML 2.0</A></LI>
<LI><A HREF="#7_7">Changes in Mini-XML 1.2</A></LI> <LI><A HREF="#7_7">Changes in Mini-XML 1.3</A></LI>
<LI><A HREF="#7_8">Changes in Mini-XML 1.1.2</A></LI> <LI><A HREF="#7_8">Changes in Mini-XML 1.2</A></LI>
<LI><A HREF="#7_9">Changes in Mini-XML 1.1.1</A></LI> <LI><A HREF="#7_9">Changes in Mini-XML 1.1.2</A></LI>
<LI><A HREF="#7_10">Changes in Mini-XML 1.1</A></LI> <LI><A HREF="#7_10">Changes in Mini-XML 1.1.1</A></LI>
<LI><A HREF="#7_11">Changes in Mini-XML 1.0</A></LI> <LI><A HREF="#7_11">Changes in Mini-XML 1.1</A></LI>
<LI><A HREF="#7_12">Changes in Mini-XML 0.93</A></LI> <LI><A HREF="#7_12">Changes in Mini-XML 1.0</A></LI>
<LI><A HREF="#7_13">Changes in Mini-XML 0.92</A></LI> <LI><A HREF="#7_13">Changes in Mini-XML 0.93</A></LI>
<LI><A HREF="#7_14">Changes in Mini-XML 0.91</A></LI> <LI><A HREF="#7_14">Changes in Mini-XML 0.92</A></LI>
<LI><A HREF="#7_15">Changes in Mini-XML 0.9</A></LI> <LI><A HREF="#7_15">Changes in Mini-XML 0.91</A></LI>
<LI><A HREF="#7_16">Changes in Mini-XML 0.9</A></LI>
</UL> </UL>
<B><A HREF="#REFERENCE">C - Library Reference</A></B> <B><A HREF="#REFERENCE">C - Library Reference</A></B>
<UL> <UL>
@ -126,6 +127,7 @@ Copyright 2003-2005<BR>
<LI><A HREF="#mxmlLoadFd">mxmlLoadFd()</A></LI> <LI><A HREF="#mxmlLoadFd">mxmlLoadFd()</A></LI>
<LI><A HREF="#mxmlLoadFile">mxmlLoadFile()</A></LI> <LI><A HREF="#mxmlLoadFile">mxmlLoadFile()</A></LI>
<LI><A HREF="#mxmlLoadString">mxmlLoadString()</A></LI> <LI><A HREF="#mxmlLoadString">mxmlLoadString()</A></LI>
<LI><A HREF="#mxmlNewCDATA">mxmlNewCDATA()</A></LI>
<LI><A HREF="#mxmlNewCustom">mxmlNewCustom()</A></LI> <LI><A HREF="#mxmlNewCustom">mxmlNewCustom()</A></LI>
<LI><A HREF="#mxmlNewElement">mxmlNewElement()</A></LI> <LI><A HREF="#mxmlNewElement">mxmlNewElement()</A></LI>
<LI><A HREF="#mxmlNewInteger">mxmlNewInteger()</A></LI> <LI><A HREF="#mxmlNewInteger">mxmlNewInteger()</A></LI>
@ -138,6 +140,7 @@ Copyright 2003-2005<BR>
<LI><A HREF="#mxmlSaveFd">mxmlSaveFd()</A></LI> <LI><A HREF="#mxmlSaveFd">mxmlSaveFd()</A></LI>
<LI><A HREF="#mxmlSaveFile">mxmlSaveFile()</A></LI> <LI><A HREF="#mxmlSaveFile">mxmlSaveFile()</A></LI>
<LI><A HREF="#mxmlSaveString">mxmlSaveString()</A></LI> <LI><A HREF="#mxmlSaveString">mxmlSaveString()</A></LI>
<LI><A HREF="#mxmlSetCDATA">mxmlSetCDATA()</A></LI>
<LI><A HREF="#mxmlSetCustom">mxmlSetCustom()</A></LI> <LI><A HREF="#mxmlSetCustom">mxmlSetCustom()</A></LI>
<LI><A HREF="#mxmlSetCustomHandlers">mxmlSetCustomHandlers()</A></LI> <LI><A HREF="#mxmlSetCustomHandlers">mxmlSetCustomHandlers()</A></LI>
<LI><A HREF="#mxmlSetElement">mxmlSetElement()</A></LI> <LI><A HREF="#mxmlSetElement">mxmlSetElement()</A></LI>
@ -169,7 +172,6 @@ Copyright 2003-2005<BR>
<LI><A HREF="#mxml_index_t">mxml_index_t</A></LI> <LI><A HREF="#mxml_index_t">mxml_index_t</A></LI>
<LI><A HREF="#mxml_node_t">mxml_node_t</A></LI> <LI><A HREF="#mxml_node_t">mxml_node_t</A></LI>
<LI><A HREF="#mxml_text_t">mxml_text_t</A></LI> <LI><A HREF="#mxml_text_t">mxml_text_t</A></LI>
<LI><A HREF="#mxml_type_t">mxml_type_t</A></LI>
<LI><A HREF="#mxml_value_t">mxml_value_t</A></LI> <LI><A HREF="#mxml_value_t">mxml_value_t</A></LI>
</UL> </UL>
</LI> </LI>
@ -181,7 +183,7 @@ Copyright 2003-2005<BR>
</UL> </UL>
<HR NOSHADE> <HR NOSHADE>
<H1 align="right"><A name="INTRO">Introduction</A></H1> <H1 align="right"><A name="INTRO">Introduction</A></H1>
<P>This programmers manual describes Mini-XML version 2.2.1, a small XML <P>This programmers manual describes Mini-XML version 2.2.3, a small XML
parsing library that you can use to read and write XML and XML-like parsing library that you can use to read and write XML and XML-like
data files in your application without requiring large non-standard data files in your application without requiring large non-standard
libraries. Mini-XML only requires an ANSI C compatible compiler (GCC libraries. Mini-XML only requires an ANSI C compatible compiler (GCC
@ -1827,12 +1829,19 @@ Ty Coon, President of Vice
<P>That's all there is to it!</P> <P>That's all there is to it!</P>
<HR NOSHADE> <HR NOSHADE>
<H1 align="right"><A name="RELNOTES">B - Release Notes</A></H1> <H1 align="right"><A name="RELNOTES">B - Release Notes</A></H1>
<H2><A NAME="7_1">Changes in Mini-XML 2.2.2</A></H2> <H2><A NAME="7_1">Changes in Mini-XML 2.2.3</A></H2>
<UL> <UL>
<LI>Added new mxmlNewCDATA() and mxmlSetCDATA() functions to create and
set CDATA nodes, which are really just special element nodes.</LI>
</UL>
<H2><A NAME="7_2">Changes in Mini-XML 2.2.2</A></H2>
<UL>
<LI>Added new MXML_IGNORE type and MXML_IGNORE_CB callback to ignore
non-element nodes (i.e. whitespace)</LI>
<LI>mxmlLoad*() did not treat custom data as opaque, so whitespace <LI>mxmlLoad*() did not treat custom data as opaque, so whitespace
characters would be lost.</LI> characters would be lost.</LI>
</UL> </UL>
<H2><A NAME="7_2">Changes in Mini-XML 2.2.1</A></H2> <H2><A NAME="7_3">Changes in Mini-XML 2.2.1</A></H2>
<UL> <UL>
<LI>mxmlLoadFd(), mxmlLoadFile(), and mxmlLoadString() now correctly <LI>mxmlLoadFd(), mxmlLoadFile(), and mxmlLoadString() now correctly
return NULL on error (STR #21)</LI> return NULL on error (STR #21)</LI>
@ -1843,7 +1852,7 @@ Ty Coon, President of Vice
proper permissions on UNIX/Linux/OSX.</LI> proper permissions on UNIX/Linux/OSX.</LI>
<LI>Fixed a MingW/Cygwin compilation problem (STR #18)</LI> <LI>Fixed a MingW/Cygwin compilation problem (STR #18)</LI>
</UL> </UL>
<H2><A NAME="7_3">Changes in Mini-XML 2.2</A></H2> <H2><A NAME="7_4">Changes in Mini-XML 2.2</A></H2>
<UL> <UL>
<LI>Added shared library support (STR #17)</LI> <LI>Added shared library support (STR #17)</LI>
<LI>mxmlLoad*() now returns an error when an XML stream contains illegal <LI>mxmlLoad*() now returns an error when an XML stream contains illegal
@ -1857,7 +1866,7 @@ Ty Coon, President of Vice
<LI>Added checking for invalid comment termination (&quot;---&gt;&quot; is not <LI>Added checking for invalid comment termination (&quot;---&gt;&quot; is not
allowed)</LI> allowed)</LI>
</UL> </UL>
<H2><A NAME="7_4">Changes in Mini-XML 2.1</A></H2> <H2><A NAME="7_5">Changes in Mini-XML 2.1</A></H2>
<UL> <UL>
<LI>Added support for custom data nodes (STR #6)</LI> <LI>Added support for custom data nodes (STR #6)</LI>
<LI>Now treat UTF-8 sequences which are longer than necessary as an <LI>Now treat UTF-8 sequences which are longer than necessary as an
@ -1868,7 +1877,7 @@ Ty Coon, President of Vice
<LI>Added mxmlLoadFd() and mxmlSaveFd() functions.</LI> <LI>Added mxmlLoadFd() and mxmlSaveFd() functions.</LI>
<LI>Fixed multi-word UTF-16 handling.</LI> <LI>Fixed multi-word UTF-16 handling.</LI>
</UL> </UL>
<H2><A NAME="7_5">Changes in Mini-XML 2.0</A></H2> <H2><A NAME="7_6">Changes in Mini-XML 2.0</A></H2>
<UL> <UL>
<LI>New programmers manual.</LI> <LI>New programmers manual.</LI>
<LI>Added Visual C++ project files for Microsoft Windows users.</LI> <LI>Added Visual C++ project files for Microsoft Windows users.</LI>
@ -1901,7 +1910,7 @@ Ty Coon, President of Vice
destination path and install path. This caused problems when building destination path and install path. This caused problems when building
and installing with MingW.</LI> and installing with MingW.</LI>
</UL> </UL>
<H2><A NAME="7_6">Changes in Mini-XML 1.3</A></H2> <H2><A NAME="7_7">Changes in Mini-XML 1.3</A></H2>
<UL> <UL>
<LI>Fixes for mxmldoc.</LI> <LI>Fixes for mxmldoc.</LI>
<LI>Added support for reading standard HTML entity names.</LI> <LI>Added support for reading standard HTML entity names.</LI>
@ -1917,7 +1926,7 @@ Ty Coon, President of Vice
<LI>The load and save functions now properly handle quoted element and <LI>The load and save functions now properly handle quoted element and
attribute name strings properly, e.g. for !DOCTYPE declarations.</LI> attribute name strings properly, e.g. for !DOCTYPE declarations.</LI>
</UL> </UL>
<H2><A NAME="7_7">Changes in Mini-XML 1.2</A></H2> <H2><A NAME="7_8">Changes in Mini-XML 1.2</A></H2>
<UL> <UL>
<LI>Added new &quot;set&quot; methods to set the value of a node.</LI> <LI>Added new &quot;set&quot; methods to set the value of a node.</LI>
<LI>Added new formatted text methods mxmlNewTextf() and mxmlSetTextf() <LI>Added new formatted text methods mxmlNewTextf() and mxmlSetTextf()
@ -1930,13 +1939,13 @@ Ty Coon, President of Vice
<LI>Added --with/without-snprintf configure option to control the <LI>Added --with/without-snprintf configure option to control the
snprintf() and vsnprintf() function checks.</LI> snprintf() and vsnprintf() function checks.</LI>
</UL> </UL>
<H2><A NAME="7_8">Changes in Mini-XML 1.1.2</A></H2> <H2><A NAME="7_9">Changes in Mini-XML 1.1.2</A></H2>
<UL> <UL>
<LI>The mxml(3) man page wasn't updated for the string functions.</LI> <LI>The mxml(3) man page wasn't updated for the string functions.</LI>
<LI>mxmlSaveString() returned the wrong number of characters.</LI> <LI>mxmlSaveString() returned the wrong number of characters.</LI>
<LI>mxml_add_char() updated the buffer pointer in the wrong place.</LI> <LI>mxml_add_char() updated the buffer pointer in the wrong place.</LI>
</UL> </UL>
<H2><A NAME="7_9">Changes in Mini-XML 1.1.1</A></H2> <H2><A NAME="7_10">Changes in Mini-XML 1.1.1</A></H2>
<UL> <UL>
<LI>The private mxml_add_ch() function did not update the <LI>The private mxml_add_ch() function did not update the
start-of-buffer pointer which could cause a crash when using start-of-buffer pointer which could cause a crash when using
@ -1947,7 +1956,7 @@ Ty Coon, President of Vice
<LI>Added a mxmlSaveAllocString() convenience function for saving an XML <LI>Added a mxmlSaveAllocString() convenience function for saving an XML
node tree to an allocated string.</LI> node tree to an allocated string.</LI>
</UL> </UL>
<H2><A NAME="7_10">Changes in Mini-XML 1.1</A></H2> <H2><A NAME="7_11">Changes in Mini-XML 1.1</A></H2>
<UL> <UL>
<LI>The mxmlLoadFile() function now uses dynamically allocated string <LI>The mxmlLoadFile() function now uses dynamically allocated string
buffers for element names, attribute names, and attribute values. buffers for element names, attribute names, and attribute values.
@ -1959,7 +1968,7 @@ Ty Coon, President of Vice
<LI>Add emulation of strdup() if the local platform does not provide the <LI>Add emulation of strdup() if the local platform does not provide the
function.</LI> function.</LI>
</UL> </UL>
<H2><A NAME="7_11">Changes in Mini-XML 1.0</A></H2> <H2><A NAME="7_12">Changes in Mini-XML 1.0</A></H2>
<UL> <UL>
<LI>The mxmldoc program now handles function arguments, structures, <LI>The mxmldoc program now handles function arguments, structures,
unions, enumerations, classes, and typedefs properly.</LI> unions, enumerations, classes, and typedefs properly.</LI>
@ -1967,7 +1976,7 @@ Ty Coon, President of Vice
code.</LI> code.</LI>
<LI>Added man pages and packaging files.</LI> <LI>Added man pages and packaging files.</LI>
</UL> </UL>
<H2><A NAME="7_12">Changes in Mini-XML 0.93</A></H2> <H2><A NAME="7_13">Changes in Mini-XML 0.93</A></H2>
<UL> <UL>
<LI>New mxmldoc example program that is also used to create and update <LI>New mxmldoc example program that is also used to create and update
code documentation using XML and produce HTML reference pages.</LI> code documentation using XML and produce HTML reference pages.</LI>
@ -1992,15 +2001,15 @@ Ty Coon, President of Vice
<LI>mxmlSaveFile() now supports a whitespace callback to provide more <LI>mxmlSaveFile() now supports a whitespace callback to provide more
human-readable XML output under program control.</LI> human-readable XML output under program control.</LI>
</UL> </UL>
<H2><A NAME="7_13">Changes in Mini-XML 0.92</A></H2> <H2><A NAME="7_14">Changes in Mini-XML 0.92</A></H2>
<UL> <UL>
<LI>mxmlSaveFile() didn't return a value on success.</LI> <LI>mxmlSaveFile() didn't return a value on success.</LI>
</UL> </UL>
<H2><A NAME="7_14">Changes in Mini-XML 0.91</A></H2> <H2><A NAME="7_15">Changes in Mini-XML 0.91</A></H2>
<UL> <UL>
<LI>mxmlWalkNext() would go into an infinite loop.</LI> <LI>mxmlWalkNext() would go into an infinite loop.</LI>
</UL> </UL>
<H2><A NAME="7_15">Changes in Mini-XML 0.9</A></H2> <H2><A NAME="7_16">Changes in Mini-XML 0.9</A></H2>
<UL> <UL>
<LI>Initial public release.</LI> <LI>Initial public release.</LI>
</UL> </UL>
@ -2034,6 +2043,7 @@ Ty Coon, President of Vice
<TBODY></TBODY> <TBODY></TBODY>
<TR><TD><TT>MXML_CUSTOM</TT></TD><TD>Custom data</TD></TR> <TR><TD><TT>MXML_CUSTOM</TT></TD><TD>Custom data</TD></TR>
<TR><TD><TT>MXML_ELEMENT</TT></TD><TD>XML element with attributes</TD></TR> <TR><TD><TT>MXML_ELEMENT</TT></TD><TD>XML element with attributes</TD></TR>
<TR><TD><TT>MXML_IGNORE</TT></TD><TD>Ignore/throw away node</TD></TR>
<TR><TD><TT>MXML_INTEGER</TT></TD><TD>Integer value</TD></TR> <TR><TD><TT>MXML_INTEGER</TT></TD><TD>Integer value</TD></TR>
<TR><TD><TT>MXML_OPAQUE</TT></TD><TD>Opaque string</TD></TR> <TR><TD><TT>MXML_OPAQUE</TT></TD><TD>Opaque string</TD></TR>
<TR><TD><TT>MXML_REAL</TT></TD><TD>Real value</TD></TR> <TR><TD><TT>MXML_REAL</TT></TD><TD>Real value</TD></TR>
@ -2062,6 +2072,7 @@ Ty Coon, President of Vice
<LI><A href="#mxmlLoadFd"><TT>mxmlLoadFd()</TT></A></LI> <LI><A href="#mxmlLoadFd"><TT>mxmlLoadFd()</TT></A></LI>
<LI><A href="#mxmlLoadFile"><TT>mxmlLoadFile()</TT></A></LI> <LI><A href="#mxmlLoadFile"><TT>mxmlLoadFile()</TT></A></LI>
<LI><A href="#mxmlLoadString"><TT>mxmlLoadString()</TT></A></LI> <LI><A href="#mxmlLoadString"><TT>mxmlLoadString()</TT></A></LI>
<LI><A href="#mxmlNewCDATA"><TT>mxmlNewCDATA()</TT></A></LI>
<LI><A href="#mxmlNewCustom"><TT>mxmlNewCustom()</TT></A></LI> <LI><A href="#mxmlNewCustom"><TT>mxmlNewCustom()</TT></A></LI>
<LI><A href="#mxmlNewElement"><TT>mxmlNewElement()</TT></A></LI> <LI><A href="#mxmlNewElement"><TT>mxmlNewElement()</TT></A></LI>
<LI><A href="#mxmlNewInteger"><TT>mxmlNewInteger()</TT></A></LI> <LI><A href="#mxmlNewInteger"><TT>mxmlNewInteger()</TT></A></LI>
@ -2074,6 +2085,7 @@ Ty Coon, President of Vice
<LI><A href="#mxmlSaveFd"><TT>mxmlSaveFd()</TT></A></LI> <LI><A href="#mxmlSaveFd"><TT>mxmlSaveFd()</TT></A></LI>
<LI><A href="#mxmlSaveFile"><TT>mxmlSaveFile()</TT></A></LI> <LI><A href="#mxmlSaveFile"><TT>mxmlSaveFile()</TT></A></LI>
<LI><A href="#mxmlSaveString"><TT>mxmlSaveString()</TT></A></LI> <LI><A href="#mxmlSaveString"><TT>mxmlSaveString()</TT></A></LI>
<LI><A href="#mxmlSetCDATA"><TT>mxmlSetCDATA()</TT></A></LI>
<LI><A href="#mxmlSetCustom"><TT>mxmlSetCustom()</TT></A></LI> <LI><A href="#mxmlSetCustom"><TT>mxmlSetCustom()</TT></A></LI>
<LI><A href="#mxmlSetCustomHandlers"><TT>mxmlSetCustomHandlers()</TT></A> <LI><A href="#mxmlSetCustomHandlers"><TT>mxmlSetCustomHandlers()</TT></A>
</LI> </LI>
@ -2483,7 +2495,7 @@ mxmlIndexReset(
mxmlLoadFd( mxmlLoadFd(
<A href="#mxml_node_t">mxml_node_t</A> * top, <A href="#mxml_node_t">mxml_node_t</A> * top,
int fd, int fd,
<A href="#mxml_type_t">mxml_type_t</A> (*cb)(mxml_node_t *node)); mxml_type_t (*cb)(mxml_node_t *node));
</PRE> </PRE>
<H4>Arguments</H4> <H4>Arguments</H4>
<P class="table"></P> <P class="table"></P>
@ -2518,7 +2530,7 @@ mxmlLoadFd(
mxmlLoadFile( mxmlLoadFile(
<A href="#mxml_node_t">mxml_node_t</A> * top, <A href="#mxml_node_t">mxml_node_t</A> * top,
FILE * fp, FILE * fp,
<A href="#mxml_type_t">mxml_type_t</A> (*cb)(mxml_node_t *node)); mxml_type_t (*cb)(mxml_node_t *node));
</PRE> </PRE>
<H4>Arguments</H4> <H4>Arguments</H4>
<P class="table"></P> <P class="table"></P>
@ -2553,7 +2565,7 @@ mxmlLoadFile(
mxmlLoadString( mxmlLoadString(
<A href="#mxml_node_t">mxml_node_t</A> * top, <A href="#mxml_node_t">mxml_node_t</A> * top,
const char * s, const char * s,
<A href="#mxml_type_t">mxml_type_t</A> (*cb)(mxml_node_t *node)); mxml_type_t (*cb)(mxml_node_t *node));
</PRE> </PRE>
<H4>Arguments</H4> <H4>Arguments</H4>
<P class="table"></P> <P class="table"></P>
@ -2569,6 +2581,34 @@ mxmlLoadString(
<H4>Returns</H4> <H4>Returns</H4>
<P>First node or NULL if the string has errors.</P> <P>First node or NULL if the string has errors.</P>
<!-- NEW PAGE -->
<H3><A name="mxmlNewCDATA">mxmlNewCDATA()</A></H3>
<HR noshade/>
<H4>Description</H4>
<P>Create a new CDATA node. The new CDATA node is added to the end of
the specified parent's child list. The constant MXML_NO_PARENT can be
used to specify that the new CDATA node has no parent. The data string
must be nul-terminated and is copied into the new node. CDATA nodes use
the MXML_ELEMENT type.</P>
<H4>Syntax</H4>
<PRE>
<A href="#mxml_node_t">mxml_node_t</A> *
mxmlNewCDATA(
<A href="#mxml_node_t">mxml_node_t</A> * parent,
const char * data);
</PRE>
<H4>Arguments</H4>
<P class="table"></P>
<TABLE align="center" border="1" cellpadding="5" cellspacing="0" width="80%">
<THEAD></THEAD>
<TR bgcolor="#cccccc"><TH>Name</TH><TH>Description</TH></TR>
<TBODY></TBODY>
<TR><TD><TT>parent</TT></TD><TD>Parent node or MXML_NO_PARENT</TD></TR>
<TR><TD><TT>data</TT></TD><TD>Data string</TD></TR>
</TABLE>
<H4>Returns</H4>
<P>New node</P>
<!-- NEW PAGE --> <!-- NEW PAGE -->
<H3><A name="mxmlNewCustom">mxmlNewCustom()</A></H3> <H3><A name="mxmlNewCustom">mxmlNewCustom()</A></H3>
<HR noshade/> <HR noshade/>
@ -2926,6 +2966,31 @@ mxmlSaveString(
<H4>Returns</H4> <H4>Returns</H4>
<P>Size of string</P> <P>Size of string</P>
<!-- NEW PAGE -->
<H3><A name="mxmlSetCDATA">mxmlSetCDATA()</A></H3>
<HR noshade/>
<H4>Description</H4>
<P>Set the element name of a CDATA node. The node is not changed if it
is not a CDATA element node.</P>
<H4>Syntax</H4>
<PRE>
int
mxmlSetCDATA(
<A href="#mxml_node_t">mxml_node_t</A> * node,
const char * data);
</PRE>
<H4>Arguments</H4>
<P class="table"></P>
<TABLE align="center" border="1" cellpadding="5" cellspacing="0" width="80%">
<THEAD></THEAD>
<TR bgcolor="#cccccc"><TH>Name</TH><TH>Description</TH></TR>
<TBODY></TBODY>
<TR><TD><TT>node</TT></TD><TD>Node to set</TD></TR>
<TR><TD><TT>data</TT></TD><TD>New data string</TD></TR>
</TABLE>
<H4>Returns</H4>
<P>0 on success, -1 on failure</P>
<!-- NEW PAGE --> <!-- NEW PAGE -->
<H3><A name="mxmlSetCustom">mxmlSetCustom()</A></H3> <H3><A name="mxmlSetCustom">mxmlSetCustom()</A></H3>
<HR noshade/> <HR noshade/>
@ -3318,7 +3383,7 @@ struct mxml_node_s
struct <A href="#mxml_node_s">mxml_node_s</A> * next; struct <A href="#mxml_node_s">mxml_node_s</A> * next;
struct <A href="#mxml_node_s">mxml_node_s</A> * parent; struct <A href="#mxml_node_s">mxml_node_s</A> * parent;
struct <A href="#mxml_node_s">mxml_node_s</A> * prev; struct <A href="#mxml_node_s">mxml_node_s</A> * prev;
<A href="#mxml_type_t">mxml_type_t</A> type; mxml_type_t type;
<A href="#mxml_value_t">mxml_value_t</A> value; <A href="#mxml_value_t">mxml_value_t</A> value;
}; };
</PRE> </PRE>
@ -3394,7 +3459,6 @@ struct mxml_value_s
<LI><A href="#mxml_index_t"><TT>mxml_index_t</TT></A></LI> <LI><A href="#mxml_index_t"><TT>mxml_index_t</TT></A></LI>
<LI><A href="#mxml_node_t"><TT>mxml_node_t</TT></A></LI> <LI><A href="#mxml_node_t"><TT>mxml_node_t</TT></A></LI>
<LI><A href="#mxml_text_t"><TT>mxml_text_t</TT></A></LI> <LI><A href="#mxml_text_t"><TT>mxml_text_t</TT></A></LI>
<LI><A href="#mxml_type_t"><TT>mxml_type_t</TT></A></LI>
<LI><A href="#mxml_value_t"><TT>mxml_value_t</TT></A></LI> <LI><A href="#mxml_value_t"><TT>mxml_value_t</TT></A></LI>
</UL> </UL>
@ -3458,16 +3522,6 @@ typedef struct <A href="#mxml_node_s">mxml_node_s</A> mxml_node_t;
typedef struct <A href="#mxml_text_s">mxml_text_s</A> mxml_text_t; typedef struct <A href="#mxml_text_s">mxml_text_s</A> mxml_text_t;
</PRE> </PRE>
<!-- NEW PAGE -->
<H3><A name="mxml_type_t">mxml_type_t</A></H3>
<HR noshade/>
<H4>Description</H4>
<P>The XML node type.</P>
<H4>Definition</H4>
<PRE>
typedef enum <A href="#mxml_type_e">mxml_type_e</A> mxml_type_t;
</PRE>
<!-- NEW PAGE --> <!-- NEW PAGE -->
<H3><A name="mxml_value_t">mxml_value_t</A></H3> <H3><A name="mxml_value_t">mxml_value_t</A></H3>
<HR noshade/> <HR noshade/>

@ -2,7 +2,7 @@
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'> <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
<head> <head>
<title>Documentation</title> <title>Documentation</title>
<meta name='creator' content='Mini-XML v2.2.3'/> <meta name='creator' content='Mini-XML v2.2.4'/>
<style><!-- <style><!--
h1, h2, h3, p { font-family: sans-serif; text-align: justify; } h1, h2, h3, p { font-family: sans-serif; text-align: justify; }
tt, pre a:link, pre a:visited, tt a:link, tt a:visited { font-weight: bold; color: #7f0000; } tt, pre a:link, pre a:visited, tt a:link, tt a:visited { font-weight: bold; color: #7f0000; }
@ -60,6 +60,7 @@
<li><a href='#mxmlLoadFd'><tt>mxmlLoadFd()</tt></a></li> <li><a href='#mxmlLoadFd'><tt>mxmlLoadFd()</tt></a></li>
<li><a href='#mxmlLoadFile'><tt>mxmlLoadFile()</tt></a></li> <li><a href='#mxmlLoadFile'><tt>mxmlLoadFile()</tt></a></li>
<li><a href='#mxmlLoadString'><tt>mxmlLoadString()</tt></a></li> <li><a href='#mxmlLoadString'><tt>mxmlLoadString()</tt></a></li>
<li><a href='#mxmlNewCDATA'><tt>mxmlNewCDATA()</tt></a></li>
<li><a href='#mxmlNewCustom'><tt>mxmlNewCustom()</tt></a></li> <li><a href='#mxmlNewCustom'><tt>mxmlNewCustom()</tt></a></li>
<li><a href='#mxmlNewElement'><tt>mxmlNewElement()</tt></a></li> <li><a href='#mxmlNewElement'><tt>mxmlNewElement()</tt></a></li>
<li><a href='#mxmlNewInteger'><tt>mxmlNewInteger()</tt></a></li> <li><a href='#mxmlNewInteger'><tt>mxmlNewInteger()</tt></a></li>
@ -72,6 +73,7 @@
<li><a href='#mxmlSaveFd'><tt>mxmlSaveFd()</tt></a></li> <li><a href='#mxmlSaveFd'><tt>mxmlSaveFd()</tt></a></li>
<li><a href='#mxmlSaveFile'><tt>mxmlSaveFile()</tt></a></li> <li><a href='#mxmlSaveFile'><tt>mxmlSaveFile()</tt></a></li>
<li><a href='#mxmlSaveString'><tt>mxmlSaveString()</tt></a></li> <li><a href='#mxmlSaveString'><tt>mxmlSaveString()</tt></a></li>
<li><a href='#mxmlSetCDATA'><tt>mxmlSetCDATA()</tt></a></li>
<li><a href='#mxmlSetCustom'><tt>mxmlSetCustom()</tt></a></li> <li><a href='#mxmlSetCustom'><tt>mxmlSetCustom()</tt></a></li>
<li><a href='#mxmlSetCustomHandlers'><tt>mxmlSetCustomHandlers()</tt></a></li> <li><a href='#mxmlSetCustomHandlers'><tt>mxmlSetCustomHandlers()</tt></a></li>
<li><a href='#mxmlSetElement'><tt>mxmlSetElement()</tt></a></li> <li><a href='#mxmlSetElement'><tt>mxmlSetElement()</tt></a></li>
@ -532,6 +534,32 @@ mxmlLoadString(
<h4>Returns</h4> <h4>Returns</h4>
<p>First node or NULL if the string has errors.</p> <p>First node or NULL if the string has errors.</p>
<!-- NEW PAGE --> <!-- NEW PAGE -->
<h3><a name='mxmlNewCDATA'>mxmlNewCDATA()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Create a new CDATA node.
The new CDATA node is added to the end of the specified parent's child
list. The constant MXML_NO_PARENT can be used to specify that the new
CDATA node has no parent. The data string must be nul-terminated and
is copied into the new node. CDATA nodes use the MXML_ELEMENT type.</p>
<h4>Syntax</h4>
<pre>
<a href='#mxml_node_t'>mxml_node_t</a> *
mxmlNewCDATA(
<a href='#mxml_node_t'>mxml_node_t</a> * parent,
const char * data);
</pre>
<h4>Arguments</h4>
<p class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' width='80%'>
<thead><tr bgcolor='#cccccc'><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>parent</tt></td><td>Parent node or MXML_NO_PARENT</td></tr>
<tr><td><tt>data</tt></td><td>Data string</td></tr>
</tbody></table></p>
<h4>Returns</h4>
<p>New node</p>
<!-- NEW PAGE -->
<h3><a name='mxmlNewCustom'>mxmlNewCustom()</a></h3> <h3><a name='mxmlNewCustom'>mxmlNewCustom()</a></h3>
<hr noshade/> <hr noshade/>
<h4>Description</h4> <h4>Description</h4>
@ -869,6 +897,29 @@ mxmlSaveString(
<h4>Returns</h4> <h4>Returns</h4>
<p>Size of string</p> <p>Size of string</p>
<!-- NEW PAGE --> <!-- NEW PAGE -->
<h3><a name='mxmlSetCDATA'>mxmlSetCDATA()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Set the element name of a CDATA node.
The node is not changed if it is not a CDATA element node.</p>
<h4>Syntax</h4>
<pre>
int
mxmlSetCDATA(
<a href='#mxml_node_t'>mxml_node_t</a> * node,
const char * data);
</pre>
<h4>Arguments</h4>
<p class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' width='80%'>
<thead><tr bgcolor='#cccccc'><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>node</tt></td><td>Node to set</td></tr>
<tr><td><tt>data</tt></td><td>New data string</td></tr>
</tbody></table></p>
<h4>Returns</h4>
<p>0 on success, -1 on failure</p>
<!-- NEW PAGE -->
<h3><a name='mxmlSetCustom'>mxmlSetCustom()</a></h3> <h3><a name='mxmlSetCustom'>mxmlSetCustom()</a></h3>
<hr noshade/> <hr noshade/>
<h4>Description</h4> <h4>Description</h4>

@ -3,10 +3,25 @@
<h1 align='right'><a name='RELNOTES'>B - Release Notes</a></h1> <h1 align='right'><a name='RELNOTES'>B - Release Notes</a></h1>
<h2>Changes in Mini-XML 2.2.3</h2>
<ul>
<li>Added new mxmlNewCDATA() and mxmlSetCDATA() functions
to create and set CDATA nodes, which are really just
special element nodes.</li>
</ul>
<h2>Changes in Mini-XML 2.2.2</h2> <h2>Changes in Mini-XML 2.2.2</h2>
<ul> <ul>
<li>Added new MXML_IGNORE type and MXML_IGNORE_CB
callback to ignore non-element nodes (i.e.
whitespace)</li>
<li>mxmlLoad*() did not treat custom data as opaque, so <li>mxmlLoad*() did not treat custom data as opaque, so
whitespace characters would be lost.</li> whitespace characters would be lost.</li>

@ -273,6 +273,45 @@ mxmlDelete(mxml_node_t *node) /* I - Node to delete */
} }
/*
* 'mxmlNewCDATA()' - Create a new CDATA node.
*
* The new CDATA node is added to the end of the specified parent's child
* list. The constant MXML_NO_PARENT can be used to specify that the new
* CDATA node has no parent. The data string must be nul-terminated and
* is copied into the new node. CDATA nodes use the MXML_ELEMENT type.
*/
mxml_node_t * /* O - New node */
mxmlNewCDATA(mxml_node_t *parent, /* I - Parent node or MXML_NO_PARENT */
const char *data) /* I - Data string */
{
mxml_node_t *node; /* New node */
#ifdef DEBUG
fprintf(stderr, "mxmlNewCDATA(parent=%p, data=\"%s\")\n",
parent, data ? data : "(null)");
#endif /* DEBUG */
/*
* Range check input...
*/
if (!data)
return (NULL);
/*
* Create the node and set the name value...
*/
if ((node = mxml_new(parent, MXML_ELEMENT)) != NULL)
node->value.element.name = mxml_strdupf("![CDATA[%s]]", data);
return (node);
}
/* /*
* 'mxmlNewCustom()' - Create a new custom data node. * 'mxmlNewCustom()' - Create a new custom data node.
* *
@ -532,7 +571,7 @@ mxmlNewTextf(mxml_node_t *parent, /* I - Parent node or MXML_NO_PARENT */
va_start(ap, format); va_start(ap, format);
node->value.text.whitespace = whitespace; node->value.text.whitespace = whitespace;
node->value.text.string = mxml_strdupf(format, ap); node->value.text.string = mxml_vstrdupf(format, ap);
va_end(ap); va_end(ap);
} }

@ -17,6 +17,8 @@
* *
* Contents: * Contents:
* *
* mxmlSetCustom() - Set the data and destructor of a custom data node.
* mxmlSetCDATA() - Set the element name of a CDATA node.
* mxmlSetElement() - Set the name of an element node. * mxmlSetElement() - Set the name of an element node.
* mxmlSetInteger() - Set the value of an integer node. * mxmlSetInteger() - Set the value of an integer node.
* mxmlSetOpaque() - Set the value of an opaque node. * mxmlSetOpaque() - Set the value of an opaque node.
@ -66,6 +68,37 @@ mxmlSetCustom(mxml_node_t *node, /* I - Node to set */
} }
/*
* 'mxmlSetCDATA()' - Set the element name of a CDATA node.
*
* The node is not changed if it is not a CDATA element node.
*/
int /* O - 0 on success, -1 on failure */
mxmlSetCDATA(mxml_node_t *node, /* I - Node to set */
const char *data) /* I - New data string */
{
/*
* Range check input...
*/
if (!node || node->type != MXML_ELEMENT || !data ||
strncmp(node->value.element.name, "![CDATA[", 8))
return (-1);
/*
* Free any old element value and set the new value...
*/
if (node->value.element.name)
free(node->value.element.name);
node->value.element.name = mxml_strdupf("![CDATA[%s]]", data);
return (0);
}
/* /*
* 'mxmlSetElement()' - Set the name of an element node. * 'mxmlSetElement()' - Set the name of an element node.
* *

@ -19,6 +19,7 @@
* *
* mxml_strdup() - Duplicate a string. * mxml_strdup() - Duplicate a string.
* mxml_strdupf() - Format and duplicate a string. * mxml_strdupf() - Format and duplicate a string.
* mxml_vstrdupf() - Format and duplicate a string.
* mxml_vsnprintf() - Format a string into a fixed size buffer. * mxml_vsnprintf() - Format a string into a fixed size buffer.
*/ */
@ -57,6 +58,31 @@ mxml_strdup(const char *s) /* I - String to duplicate */
char * /* O - New string pointer */ char * /* O - New string pointer */
mxml_strdupf(const char *format, /* I - Printf-style format string */ mxml_strdupf(const char *format, /* I - Printf-style format string */
...) /* I - Additional arguments as needed */
{
va_list ap; /* Pointer to additional arguments */
char *s; /* Pointer to formatted string */
/*
* Get a pointer to the additional arguments, format the string,
* and return it...
*/
va_start(ap, format);
s = mxml_vstrdupf(format, ap);
va_end(ap);
return (s);
}
/*
* 'mxml_vstrdupf()' - Format and duplicate a string.
*/
char * /* O - New string pointer */
mxml_vstrdupf(const char *format, /* I - Printf-style format string */
va_list ap) /* I - Pointer to additional arguments */ va_list ap) /* I - Pointer to additional arguments */
{ {
int bytes; /* Number of bytes required */ int bytes; /* Number of bytes required */

@ -185,6 +185,7 @@ extern mxml_node_t *mxmlLoadFile(mxml_node_t *top, FILE *fp,
mxml_type_t (*cb)(mxml_node_t *)); mxml_type_t (*cb)(mxml_node_t *));
extern mxml_node_t *mxmlLoadString(mxml_node_t *top, const char *s, extern mxml_node_t *mxmlLoadString(mxml_node_t *top, const char *s,
mxml_type_t (*cb)(mxml_node_t *)); mxml_type_t (*cb)(mxml_node_t *));
extern mxml_node_t *mxmlNewCDATA(mxml_node_t *parent, const char *string);
extern mxml_node_t *mxmlNewCustom(mxml_node_t *parent, void *data, extern mxml_node_t *mxmlNewCustom(mxml_node_t *parent, void *data,
void (*destroy)(void *)); void (*destroy)(void *));
extern mxml_node_t *mxmlNewElement(mxml_node_t *parent, const char *name); extern mxml_node_t *mxmlNewElement(mxml_node_t *parent, const char *name);
@ -209,6 +210,7 @@ extern int mxmlSaveFile(mxml_node_t *node, FILE *fp,
extern int mxmlSaveString(mxml_node_t *node, char *buffer, extern int mxmlSaveString(mxml_node_t *node, char *buffer,
int bufsize, int bufsize,
const char *(*cb)(mxml_node_t *, int)); const char *(*cb)(mxml_node_t *, int));
extern int mxmlSetCDATA(mxml_node_t *node, const char *data);
extern int mxmlSetCustom(mxml_node_t *node, void *data, extern int mxmlSetCustom(mxml_node_t *node, void *data,
void (*destroy)(void *)); void (*destroy)(void *));
extern void mxmlSetCustomHandlers(mxml_custom_load_cb_t load, extern void mxmlSetCustomHandlers(mxml_custom_load_cb_t load,

@ -332,6 +332,26 @@ child nodes of the specified type.</description>
<description>Callback function or MXML_NO_CALLBACK</description> <description>Callback function or MXML_NO_CALLBACK</description>
</argument> </argument>
</function> </function>
<function name="mxmlNewCDATA">
<returnvalue>
<type>mxml_node_t *</type>
<description>New node</description>
</returnvalue>
<description>Create a new CDATA node.
The new CDATA node is added to the end of the specified parent's child
list. The constant MXML_NO_PARENT can be used to specify that the new
CDATA node has no parent. The data string must be nul-terminated and
is copied into the new node. CDATA nodes use the MXML_ELEMENT type.</description>
<argument name="parent" direction="I">
<type>mxml_node_t *</type>
<description>Parent node or MXML_NO_PARENT</description>
</argument>
<argument name="data" direction="I">
<type>const char *</type>
<description>Data string</description>
</argument>
</function>
<function name="mxmlNewCustom"> <function name="mxmlNewCustom">
<returnvalue> <returnvalue>
<type>mxml_node_t *</type> <type>mxml_node_t *</type>
@ -606,6 +626,23 @@ element tags.</description>
<description>Whitespace callback or MXML_NO_CALLBACK</description> <description>Whitespace callback or MXML_NO_CALLBACK</description>
</argument> </argument>
</function> </function>
<function name="mxmlSetCDATA">
<returnvalue>
<type>int</type>
<description>0 on success, -1 on failure</description>
</returnvalue>
<description>Set the element name of a CDATA node.
The node is not changed if it is not a CDATA element node.</description>
<argument name="node" direction="I">
<type>mxml_node_t *</type>
<description>Node to set</description>
</argument>
<argument name="data" direction="I">
<type>const char *</type>
<description>New data string</description>
</argument>
</function>
<function name="mxmlSetCustom"> <function name="mxmlSetCustom">
<returnvalue> <returnvalue>
<type>int</type> <type>int</type>

Loading…
Cancel
Save