mxml/mxml-private.c
Michael R Sweet 0fd3bd7f33 Optimizations and bug fixes from STR #2:
- mxmlIndexNew() sort algorithm update to eliminate unnecessary
      right-hand recursion.
    - Combine printf() and puts() calls in mxmldoc to reduce the number
      of calls and code size.
    - mxmlSaveFile() now writes Unicode chars with fwrite for potential
      speedup and modest size savings.
    - mxmlEntityAddCallback() now returns an integer status so an app
      knows when it was not possible to add an entity callback.
2004-06-01 20:19:34 +00:00

129 lines
2.4 KiB
C

/*
* "$Id: mxml-private.c,v 1.5 2004/06/01 20:19:34 mike Exp $"
*
* Private functions for Mini-XML, a small XML-like file parsing library.
*
* Copyright 2003-2004 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_error() - Display an error message.
* mxml_integer_cb() - Default callback for integer values.
* mxml_opaque_cb() - Default callback for opaque values.
* mxml_real_cb() - Default callback for real number values.
*/
/*
* Include necessary headers...
*/
#include "config.h"
#include "mxml.h"
/*
* Error callback function...
*/
void (*mxml_error_cb)(const char *) = NULL;
/*
* 'mxml_error()' - Display an error message.
*/
void
mxml_error(const char *format, /* I - Printf-style format string */
...) /* I - Additional arguments as needed */
{
va_list ap; /* Pointer to arguments */
char *s; /* Message string */
/*
* Range check input...
*/
if (!format)
return;
/*
* Format the error message string...
*/
va_start(ap, format);
s = mxml_strdupf(format, ap);
va_end(ap);
/*
* And then display the error message...
*/
if (mxml_error_cb)
(*mxml_error_cb)(s);
else
fprintf(stderr, "mxml: %s\n", s);
/*
* Free the string...
*/
free(s);
}
/*
* 'mxml_integer_cb()' - Default callback for integer values.
*/
mxml_type_t /* O - Node type */
mxml_integer_cb(mxml_node_t *node) /* I - Current node */
{
(void)node;
return (MXML_INTEGER);
}
/*
* 'mxml_opaque_cb()' - Default callback for opaque values.
*/
mxml_type_t /* O - Node type */
mxml_opaque_cb(mxml_node_t *node) /* I - Current node */
{
(void)node;
return (MXML_OPAQUE);
}
/*
* 'mxml_real_cb()' - Default callback for real number values.
*/
mxml_type_t /* O - Node type */
mxml_real_cb(mxml_node_t *node) /* I - Current node */
{
(void)node;
return (MXML_REAL);
}
/*
* End of "$Id: mxml-private.c,v 1.5 2004/06/01 20:19:34 mike Exp $".
*/