Add strdup emulation as needed.

Bump version to 1.1.
This commit is contained in:
Michael R Sweet 2003-07-20 13:41:17 +00:00
parent 95fc4e37f1
commit 54428c284f
16 changed files with 484 additions and 64 deletions

View File

@ -1,7 +1,7 @@
README - 06/18/2003
README - 07/20/2003
-------------------
CHANGES IN Mini-XML 1.0.1
CHANGES IN Mini-XML 1.1
- The mxmlLoadFile() function now uses dynamically
allocated string buffers for element names, attribute
@ -9,6 +9,8 @@ CHANGES IN Mini-XML 1.0.1
capped at 16383, 255, and 255 bytes, respectively.
- Added a new mxmlLoadString() function for loading an
XML node tree from a string.
- Add emulation of strdup() if the local platform does
not provide the function.
CHANGES IN Mini-XML 1.0

View File

@ -1,5 +1,5 @@
#
# "$Id: Makefile.in,v 1.9 2003/07/20 13:19:08 mike Exp $"
# "$Id: Makefile.in,v 1.10 2003/07/20 13:41:17 mike Exp $"
#
# Makefile for mini-XML, a small XML-like file parsing library.
#
@ -75,7 +75,8 @@ MAN3EXT = @MAN3EXT@
#
DOCFILES = documentation.html README COPYING CHANGES
LIBOBJS = mxml-attr.o mxml-file.o mxml-node.o mxml-search.o
LIBOBJS = mxml-attr.o mxml-file.o mxml-node.o mxml-search.o \
mxml-string.o
OBJS = mxmldoc.o testmxml.o $(LIBOBJS)
TARGETS = libmxml.a mxmldoc mxml.$(CAT3EXT) mxmldoc.$(CAT1EXT) \
testmxml mxml.xml
@ -213,9 +214,9 @@ mxml.xml: mxmldoc mxml.h $(LIBOBJS:.o=.c)
# All object files depend on the makefile...
#
$(OBJS): Makefile
$(OBJS): Makefile config.h
#
# End of "$Id: Makefile.in,v 1.9 2003/07/20 13:19:08 mike Exp $".
# End of "$Id: Makefile.in,v 1.10 2003/07/20 13:41:17 mike Exp $".
#

4
README
View File

@ -1,11 +1,11 @@
README - 06/14/2003
README - 07/20/2003
-------------------
INTRODUCTION
This README file describes the Mini-XML library version
1.0.1.
1.1.
Mini-XML is a small XML parsing library that you can use to
read XML and XML-like data files in your application without

40
config.h.in Normal file
View File

@ -0,0 +1,40 @@
/*
* "$Id: config.h.in,v 1.1 2003/07/20 13:41:17 mike Exp $"
*
* Configuration file for mini-XML, a small XML-like file parsing library.
*
* Copyright 2003 by Michael Sweet.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
/*
* Do we have the strXXX() functions?
*/
#undef HAVE_STRDUP
#undef HAVE_STRLCAT
#undef HAVE_STRLCPY
/*
* Define prototypes for string functions as needed...
*/
# ifndef HAVE_STRDUP
extern char *mxml_strdup(const char *);
# define strdup mxml_strdup
# endif /* !HAVE_STRDUP */
/*
* End of "$Id: config.h.in,v 1.1 2003/07/20 13:41:17 mike Exp $".
*/

351
configure vendored
View File

@ -1155,6 +1155,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_config_headers="$ac_config_headers config.h"
CFLAGS="${CFLAGS:=}"
CXXFLAGS="${CXXFLAGS:=}"
@ -1184,6 +1186,12 @@ fi;
uname=`uname`
uversion=`uname -r | sed -e '1,$s/[^0-9]//g'`
if test x$uname = xIRIX64; then
uname="IRIX"
fi
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@ -2588,7 +2596,7 @@ echo "${ECHO_T}no" >&6
fi
case "`uname`" in
case "$uname" in
Darwin* | *BSD*)
ARFLAGS="-rcv"
;;
@ -2599,6 +2607,86 @@ esac
for ac_func in strdup strlcat strlcpy
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char $ac_func ();
char (*f) ();
#ifdef F77_DUMMY_MAIN
# ifdef __cplusplus
extern "C"
# endif
int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
f = $ac_func;
#endif
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
{ (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); }; }; then
eval "$as_ac_var=yes"
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
if test `eval echo '${'$as_ac_var'}'` = yes; then
cat >>confdefs.h <<_ACEOF
#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
fi
done
if test -n "$GCC"; then
CFLAGS="-Wall $CFLAGS"
fi
@ -2616,7 +2704,7 @@ if test "$docdir" = "NONE"; then
fi
if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/usr"; then
case "`uname`" in
case "$uname" in
*BSD* | Darwin* | Linux*)
# BSD, Darwin (MacOS X), and Linux
mandir="/usr/share/man"
@ -2632,7 +2720,7 @@ if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/usr"; then
esac
fi
case "`uname`" in
case "$uname" in
*BSD* | Darwin*)
# *BSD
CAT1EXT="0"
@ -2729,38 +2817,7 @@ s/^[^=]*=[ ]*$//;
}'
fi
# Transform confdefs.h into DEFS.
# Protect against shell expansion while executing Makefile rules.
# Protect against Makefile macro expansion.
#
# If the first sed substitution is executed (which looks for macros that
# take arguments), then we branch to the quote section. Otherwise,
# look for a macro that doesn't take arguments.
cat >confdef2opt.sed <<\_ACEOF
t clear
: clear
s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g
t quote
s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g
t quote
d
: quote
s,[ `~#$^&*(){}\\|;'"<>?],\\&,g
s,\[,\\&,g
s,\],\\&,g
s,\$,$$,g
p
_ACEOF
# We use echo to avoid assuming a particular line-breaking character.
# The extra dot is to prevent the shell from consuming trailing
# line-breaks from the sub-command output. A line-break within
# single-quotes doesn't work because, if this script is created in a
# platform that uses two characters for line-breaks (e.g., DOS), tr
# would break.
ac_LF_and_DOT=`echo; echo .`
DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'`
rm -f confdef2opt.sed
DEFS=-DHAVE_CONFIG_H
: ${CONFIG_STATUS=./config.status}
@ -3056,10 +3113,15 @@ Usage: $0 [OPTIONS] [FILE]...
--recheck update $as_me by reconfiguring in the same conditions
--file=FILE[:TEMPLATE]
instantiate the configuration file FILE
--header=FILE[:TEMPLATE]
instantiate the configuration header FILE
Configuration files:
$config_files
Configuration headers:
$config_headers
Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
@ -3153,6 +3215,7 @@ do
# Handling of arguments.
"Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"mxml.list" ) CONFIG_FILES="$CONFIG_FILES mxml.list" ;;
"config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
*) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
{ (exit 1); exit 1; }; };;
@ -3165,6 +3228,7 @@ done
# bizarre bug on SunOS 4.1.3.
if $ac_need_defaults; then
test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
fi
# Create a temporary directory, and hook for its removal unless debugging.
@ -3453,6 +3517,223 @@ s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
done
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF
#
# CONFIG_HEADER section.
#
# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
# NAME is the cpp macro being defined and VALUE is the value it is being given.
#
# ac_d sets the value in "#define NAME VALUE" lines.
ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
ac_dB='[ ].*$,\1#\2'
ac_dC=' '
ac_dD=',;t'
# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
ac_uB='$,\1#\2define\3'
ac_uC=' '
ac_uD=',;t'
for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
# Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
case $ac_file in
- | *:- | *:-:* ) # input from stdin
cat >$tmp/stdin
ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
*:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
* ) ac_file_in=$ac_file.in ;;
esac
test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
echo "$as_me: creating $ac_file" >&6;}
# First look for the input files in the build tree, otherwise in the
# src tree.
ac_file_inputs=`IFS=:
for f in $ac_file_in; do
case $f in
-) echo $tmp/stdin ;;
[\\/$]*)
# Absolute (can't be DOS-style, as IFS=:)
test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
echo $f;;
*) # Relative
if test -f "$f"; then
# Build tree
echo $f
elif test -f "$srcdir/$f"; then
# Source tree
echo $srcdir/$f
else
# /dev/null tree
{ { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
fi;;
esac
done` || { (exit 1); exit 1; }
# Remove the trailing spaces.
sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
_ACEOF
# Transform confdefs.h into two sed scripts, `conftest.defines' and
# `conftest.undefs', that substitutes the proper values into
# config.h.in to produce config.h. The first handles `#define'
# templates, and the second `#undef' templates.
# And first: Protect against being on the right side of a sed subst in
# config.status. Protect against being in an unquoted here document
# in config.status.
rm -f conftest.defines conftest.undefs
# Using a here document instead of a string reduces the quoting nightmare.
# Putting comments in sed scripts is not portable.
#
# `end' is used to avoid that the second main sed command (meant for
# 0-ary CPP macros) applies to n-ary macro definitions.
# See the Autoconf documentation for `clear'.
cat >confdef2sed.sed <<\_ACEOF
s/[\\&,]/\\&/g
s,[\\$`],\\&,g
t clear
: clear
s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
t end
s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
: end
_ACEOF
# If some macros were called several times there might be several times
# the same #defines, which is useless. Nevertheless, we may not want to
# sort them, since we want the *last* AC-DEFINE to be honored.
uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
rm -f confdef2sed.sed
# This sed command replaces #undef with comments. This is necessary, for
# example, in the case of _POSIX_SOURCE, which is predefined and required
# on some systems where configure will not decide to define it.
cat >>conftest.undefs <<\_ACEOF
s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
_ACEOF
# Break up conftest.defines because some shells have a limit on the size
# of here documents, and old seds have small limits too (100 cmds).
echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
echo ' if egrep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
echo ' :' >>$CONFIG_STATUS
rm -f conftest.tail
while grep . conftest.defines >/dev/null
do
# Write a limited-size here document to $tmp/defines.sed.
echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
# Speed up: don't consider the non `#define' lines.
echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
# Work around the forget-to-reset-the-flag bug.
echo 't clr' >>$CONFIG_STATUS
echo ': clr' >>$CONFIG_STATUS
sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
echo 'CEOF
sed -f $tmp/defines.sed $tmp/in >$tmp/out
rm -f $tmp/in
mv $tmp/out $tmp/in
' >>$CONFIG_STATUS
sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
rm -f conftest.defines
mv conftest.tail conftest.defines
done
rm -f conftest.defines
echo ' fi # egrep' >>$CONFIG_STATUS
echo >>$CONFIG_STATUS
# Break up conftest.undefs because some shells have a limit on the size
# of here documents, and old seds have small limits too (100 cmds).
echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
rm -f conftest.tail
while grep . conftest.undefs >/dev/null
do
# Write a limited-size here document to $tmp/undefs.sed.
echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
# Speed up: don't consider the non `#undef'
echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
# Work around the forget-to-reset-the-flag bug.
echo 't clr' >>$CONFIG_STATUS
echo ': clr' >>$CONFIG_STATUS
sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
echo 'CEOF
sed -f $tmp/undefs.sed $tmp/in >$tmp/out
rm -f $tmp/in
mv $tmp/out $tmp/in
' >>$CONFIG_STATUS
sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
rm -f conftest.undefs
mv conftest.tail conftest.undefs
done
rm -f conftest.undefs
cat >>$CONFIG_STATUS <<\_ACEOF
# Let's still pretend it is `configure' which instantiates (i.e., don't
# use $as_me), people would be surprised to read:
# /* config.h. Generated by config.status. */
if test x"$ac_file" = x-; then
echo "/* Generated by configure. */" >$tmp/config.h
else
echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
fi
cat $tmp/in >>$tmp/config.h
rm -f $tmp/in
if test x"$ac_file" != x-; then
if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
{ echo "$as_me:$LINENO: $ac_file is unchanged" >&5
echo "$as_me: $ac_file is unchanged" >&6;}
else
ac_dir=`(dirname "$ac_file") 2>/dev/null ||
$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$ac_file" : 'X\(//\)[^/]' \| \
X"$ac_file" : 'X\(//\)$' \| \
X"$ac_file" : 'X\(/\)' \| \
. : '\(.\)' 2>/dev/null ||
echo X"$ac_file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
/^X\(\/\/\)$/{ s//\1/; q; }
/^X\(\/\).*/{ s//\1/; q; }
s/.*/./; q'`
{ case "$ac_dir" in
[\\/]* | ?:[\\/]* ) as_incr_dir=;;
*) as_incr_dir=.;;
esac
as_dummy="$ac_dir"
for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
case $as_mkdir_dir in
# Skip DOS drivespec
?:) as_incr_dir=$as_mkdir_dir ;;
*)
as_incr_dir=$as_incr_dir/$as_mkdir_dir
test -d "$as_incr_dir" ||
mkdir "$as_incr_dir" ||
{ { echo "$as_me:$LINENO: error: cannot create \"$ac_dir\"" >&5
echo "$as_me: error: cannot create \"$ac_dir\"" >&2;}
{ (exit 1); exit 1; }; }
;;
esac
done; }
rm -f $ac_file
mv $tmp/config.h $ac_file
fi
else
cat $tmp/config.h
rm -f $tmp/config.h
fi
done
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF

View File

@ -1,5 +1,5 @@
dnl
dnl "$Id: configure.in,v 1.5 2003/06/15 01:37:32 mike Exp $"
dnl "$Id: configure.in,v 1.6 2003/07/20 13:41:17 mike Exp $"
dnl
dnl Configuration script for mini-XML, a small XML-like file parsing library.
dnl
@ -16,11 +16,14 @@ dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
dnl GNU General Public License for more details.
dnl
dnl Specify a source file from the distribution...
AC_INIT(mxml.h)
dnl Set the name of the config header file...
AC_CONFIG_HEADER(config.h)
dnl Clear default debugging options and set normal optimization by
dnl default unless the user asks for debugging specifically.
CFLAGS="${CFLAGS:=}"
CXXFLAGS="${CXXFLAGS:=}"
LDFLAGS="${LDFLAGS:=}"
@ -41,6 +44,13 @@ AC_ARG_WITH(docdir, [ --with-docdir set directory for documentation],
AC_SUBST(docdir)
dnl Get the operating system and version number...
uname=`uname`
uversion=`uname -r | sed -e '1,$s/[[^0-9]]//g'`
if test x$uname = xIRIX64; then
uname="IRIX"
fi
dnl Checks for programs...
AC_PROG_CC
AC_PROG_CXX
@ -60,7 +70,7 @@ fi
AC_PATH_PROG(RM,rm)
dnl Flags for "ar" command...
case "`uname`" in
case "$uname" in
Darwin* | *BSD*)
ARFLAGS="-rcv"
;;
@ -71,6 +81,9 @@ esac
AC_SUBST(ARFLAGS)
dnl Checks for string functions.
AC_CHECK_FUNCS(strdup strlcat strlcpy)
dnl Add -Wall for GCC...
if test -n "$GCC"; then
CFLAGS="-Wall $CFLAGS"
@ -93,7 +106,7 @@ fi
dnl Fix "mandir" variable if it hasn't been specified...
if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/usr"; then
case "`uname`" in
case "$uname" in
*BSD* | Darwin* | Linux*)
# BSD, Darwin (MacOS X), and Linux
mandir="/usr/share/man"
@ -110,7 +123,7 @@ if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/usr"; then
fi
dnl More manpage stuff...
case "`uname`" in
case "$uname" in
*BSD* | Darwin*)
# *BSD
CAT1EXT="0"
@ -136,5 +149,5 @@ dnl Output the makefile, etc...
AC_OUTPUT(Makefile mxml.list)
dnl
dnl End of "$Id: configure.in,v 1.5 2003/06/15 01:37:32 mike Exp $".
dnl End of "$Id: configure.in,v 1.6 2003/07/20 13:41:17 mike Exp $".
dnl

View File

@ -53,6 +53,7 @@
<li><a href="#mxmlSaveString"><tt>mxmlSaveString()</tt></a></li>
<li><a href="#mxmlWalkNext"><tt>mxmlWalkNext()</tt></a></li>
<li><a href="#mxmlWalkPrev"><tt>mxmlWalkPrev()</tt></a></li>
<li><a href="#mxml_strdup"><tt>mxml_strdup()</tt></a></li>
</ul>
<hr noshade/>
<h2><a name="mxmlAdd">mxmlAdd()</a></h2>
@ -488,6 +489,23 @@ mxmlWalkPrev(
</tbody></table></p>
<h3>Returns</h3>
<p>Previous node or NULL</p>
<hr noshade/>
<h2><a name="mxml_strdup">mxml_strdup()</a></h2>
<p>Duplicate a string.</p>
<h3>Syntax</h3>
<pre>
char *
mxml_strdup(
const char * s);
</pre>
<h3>Arguments</h3>
<p class="table"><table align="center" border="1" width="80%">
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>s</tt></td><td>String to duplicate</td></tr>
</tbody></table></p>
<h3>Returns</h3>
<p>New string pointer</p>
<h1><a name="_structures">Structures</a></h1>
<ul>
<li><a href="#mxml_attr_s"><tt>mxml_attr_s</tt></a></li>

View File

@ -16,11 +16,11 @@ href="../index.html">Back to Home Page</a>&nbsp;]</p>
<h1 class="title" align="center">Mini-XML Home Page</h1>
<p class="title" align="center">Current Release: v1.0.1, June 15, 2003<br/>
<p class="title" align="center">Current Release: v1.1, July 20, 2003<br/>
[&nbsp;<a
href="mxml-1.0.1.tar.gz">Download&nbsp;Source&nbsp;(.tar.gz&nbsp;64k)</a>
href="mxml-1.1.tar.gz">Download&nbsp;Source&nbsp;(.tar.gz&nbsp;64k)</a>
| <a
href="mxml-1.0.1-1.i386.rpm">Download&nbsp;Linux&nbsp;RPM&nbsp;(.i386.rpm&nbsp;42k)</a>
href="mxml-1.1-1.i386.rpm">Download&nbsp;Linux&nbsp;RPM&nbsp;(.i386.rpm&nbsp;42k)</a>
| <a href="CHANGES">Change&nbsp;Log</a> | <a
href="documentation.html">Documentation</a> | <a
href="http://freshmeat.net/projects/mxml">Rate/Make&nbsp;Comments</A>&nbsp;]</p>

View File

@ -1,5 +1,5 @@
/*
* "$Id: mxml-attr.c,v 1.2 2003/06/14 23:56:47 mike Exp $"
* "$Id: mxml-attr.c,v 1.3 2003/07/20 13:41:17 mike Exp $"
*
* Attribute support code for mini-XML, a small XML-like file parsing library.
*
@ -26,6 +26,7 @@
*/
#include "mxml.h"
#include "config.h"
/*
@ -155,5 +156,5 @@ mxmlElementSetAttr(mxml_node_t *node, /* I - Element node */
/*
* End of "$Id: mxml-attr.c,v 1.2 2003/06/14 23:56:47 mike Exp $".
* End of "$Id: mxml-attr.c,v 1.3 2003/07/20 13:41:17 mike Exp $".
*/

View File

@ -1,5 +1,5 @@
/*
* "$Id: mxml-file.c,v 1.14 2003/07/20 13:19:08 mike Exp $"
* "$Id: mxml-file.c,v 1.15 2003/07/20 13:41:17 mike Exp $"
*
* File loading code for mini-XML, a small XML-like file parsing library.
*
@ -36,6 +36,7 @@
*/
#include "mxml.h"
#include "config.h"
/*
@ -1372,5 +1373,5 @@ mxml_write_ws(mxml_node_t *node, /* I - Current node */
/*
* End of "$Id: mxml-file.c,v 1.14 2003/07/20 13:19:08 mike Exp $".
* End of "$Id: mxml-file.c,v 1.15 2003/07/20 13:41:17 mike Exp $".
*/

View File

@ -1,5 +1,5 @@
/*
* "$Id: mxml-node.c,v 1.5 2003/06/14 23:56:47 mike Exp $"
* "$Id: mxml-node.c,v 1.6 2003/07/20 13:41:17 mike Exp $"
*
* Node support code for mini-XML, a small XML-like file parsing library.
*
@ -33,6 +33,7 @@
*/
#include "mxml.h"
#include "config.h"
/*
@ -489,5 +490,5 @@ mxml_new(mxml_node_t *parent, /* I - Parent node */
/*
* End of "$Id: mxml-node.c,v 1.5 2003/06/14 23:56:47 mike Exp $".
* End of "$Id: mxml-node.c,v 1.6 2003/07/20 13:41:17 mike Exp $".
*/

View File

@ -1,5 +1,5 @@
/*
* "$Id: mxml-search.c,v 1.6 2003/06/14 23:56:47 mike Exp $"
* "$Id: mxml-search.c,v 1.7 2003/07/20 13:41:17 mike Exp $"
*
* Search/navigation functions for mini-XML, a small XML-like file
* parsing library.
@ -28,6 +28,7 @@
*/
#include "mxml.h"
#include "config.h"
/*
@ -194,5 +195,5 @@ mxmlWalkPrev(mxml_node_t *node, /* I - Current node */
/*
* End of "$Id: mxml-search.c,v 1.6 2003/06/14 23:56:47 mike Exp $".
* End of "$Id: mxml-search.c,v 1.7 2003/07/20 13:41:17 mike Exp $".
*/

54
mxml-string.c Normal file
View File

@ -0,0 +1,54 @@
/*
* "$Id: mxml-string.c,v 1.1 2003/07/20 13:41:17 mike Exp $"
*
* String functions for mini-XML, a small XML-like file parsing library.
*
* Copyright 2003 by Michael Sweet.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* Contents:
*
* mxml_strdup() - Duplicate a string.
*/
/*
* Include necessary headers...
*/
#include "config.h"
/*
* 'mxml_strdup()' - Duplicate a string.
*/
#ifndef HAVE_STRDUP
char * /* O - New string pointer */
mxml_strdup(const char *s) /* I - String to duplicate */
{
char *t; /* New string pointer */
if (s == NULL)
return (NULL);
if ((t = malloc(strlen(s) + 1)) == NULL)
return (NULL);
return (strcpy(t, s));
}
#endif /* !HAVE_STRDUP */
/*
* End of "$Id: mxml-string.c,v 1.1 2003/07/20 13:41:17 mike Exp $".
*/

View File

@ -207,6 +207,11 @@ name="child"><type>mxml_node_t *</type><description>First child node</descriptio
<variable name="value"><type>mxml_value_t</type><description>Node value</description></variable>
</struct>
<typedef name="mxml_node_t"><type>struct mxml_node_s</type><description>An XML node.</description><description>An XML node.</description></typedef>
<function name="mxml_strdup"><returnvalue><description>New string pointer</description><type>char
*</type></returnvalue>
<description>Duplicate a string.</description><argument name="s"
direction="I"><type>const char *</type><description>String to duplicate</description></argument>
</function>
<struct name="mxml_text_s"><description>An XML text value.</description><variable
name="string"><type>char *</type><description>Fragment string</description></variable>
<variable name="whitespace"><type>int</type><description>Leading whitespace?</description></variable>

View File

@ -1,5 +1,5 @@
/*
* "$Id: mxmldoc.c,v 1.12 2003/06/14 23:56:47 mike Exp $"
* "$Id: mxmldoc.c,v 1.13 2003/07/20 13:41:17 mike Exp $"
*
* Documentation generator using mini-XML, a small XML-like file parsing
* library.
@ -35,6 +35,7 @@
*/
#include "mxml.h"
#include "config.h"
/*
@ -2079,5 +2080,5 @@ ws_cb(mxml_node_t *node, /* I - Element node */
/*
* End of "$Id: mxmldoc.c,v 1.12 2003/06/14 23:56:47 mike Exp $".
* End of "$Id: mxmldoc.c,v 1.13 2003/07/20 13:41:17 mike Exp $".
*/

View File

@ -1,5 +1,5 @@
/*
* "$Id: testmxml.c,v 1.9 2003/06/19 03:20:41 mike Exp $"
* "$Id: testmxml.c,v 1.10 2003/07/20 13:41:17 mike Exp $"
*
* Test program for mini-XML, a small XML-like file parsing library.
*
@ -28,6 +28,7 @@
*/
#include "mxml.h"
#include "config.h"
/*
@ -383,5 +384,5 @@ whitespace_cb(mxml_node_t *node, /* I - Element node */
/*
* End of "$Id: testmxml.c,v 1.9 2003/06/19 03:20:41 mike Exp $".
* End of "$Id: testmxml.c,v 1.10 2003/07/20 13:41:17 mike Exp $".
*/