Obviously there would be possible errors that occur when the program runs. This module, error.c contains all the error handling functions. The first such function is usage_exit() which simply prints a brief summary of the program's usage information.
--Code fragment from file: error.c--
#include <stdio.h>
#include <stdarg.h>
#include <expat.h>
#include "xml-lit.h"
void
usage_exit(void)
{
fprintf(stderr, "Usage: %s [options] literate-program.xml\n", progname);
fprintf(stderr, "Tangle or weave a literate program.\n\n");
fprintf(stderr, "-c, --c-mode generate preprocessor #line directives from XML file\n");
fprintf(stderr, "-h, -?, --help print this usage message\n");
fprintf(stderr, "-n, --no-line do not make #line directives\n");
fprintf(stderr, "-t, --tangle tangle the input literate program\n");
fprintf(stderr, "-T size, --hash-table-size=size Set the size of the hash table\n");
fprintf(stderr, "-v, --version print XML-Lit's version\n");
fprintf(stderr, "-w, --weave weave the input literate program\n");
fprintf(stderr, "-x, --xmltangle xmltangle-compatible operation\n");
fprintf(stderr, "-X, --Xml-lit New-style xml-lit operation\n\n");
fprintf(stderr, "The -c and -X options are default.\n");
exit(1);
}
The other function is print_warn(), which prints a message on standard error. It is essentially a wrapper to vfprintf() that would print the error message properly formatted. It accepts a warning level. Level 5 is a fatal error, and causes print_warn to terminate the program.
--Code fragment from file: error.c--
static void
print_warn(int warnlevel, const char *fmt, va_list ap)
{
fprintf(stderr, "%s[%d]: ", progname, warnlevel);
vfprintf(stderr, fmt, ap);
if (warnlevel > 4)
exit(1);
}
We have a wrapper to this called warning() which prints a levelled warning.
--Code fragment from file: error.c--
void
warning(int warnlevel, const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
print_warn(warnlevel, fmt, ap);
va_end(ap);
}
We have another wrapper to print_warn() called error_exit() which produces a level 5 warning, or fatal error.
--Code fragment from file: error.c--
void
error_exit(const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
print_warn(5, fmt, ap);
va_end(ap);
}