2004-06-12 15:20:07 +01:00
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdarg.h>
|
|
|
|
#include "error.h"
|
|
|
|
|
2004-06-13 22:42:29 +01:00
|
|
|
//! Die from error with exit code
|
|
|
|
void
|
|
|
|
error_die (void)
|
|
|
|
{
|
|
|
|
exit(1);
|
|
|
|
}
|
|
|
|
|
|
|
|
//! Print error message header
|
|
|
|
/**
|
|
|
|
* Adapted from [K&R2], p. 174
|
|
|
|
*@todo It would be nice to redirect all output to stderr, which would enable use of termprint etc.
|
|
|
|
*/
|
|
|
|
void
|
|
|
|
error_pre (void)
|
|
|
|
{
|
|
|
|
fprintf (stderr, "error: ");
|
|
|
|
}
|
|
|
|
|
|
|
|
//! Print post-error message and die.
|
2004-06-12 15:20:07 +01:00
|
|
|
/**
|
|
|
|
* Adapted from [K&R2], p. 174
|
|
|
|
* Input is comparable to printf, only end of line is not required.
|
|
|
|
*/
|
2004-06-13 22:42:29 +01:00
|
|
|
void
|
|
|
|
error_post (char *fmt, ... )
|
2004-06-12 15:20:07 +01:00
|
|
|
{
|
|
|
|
va_list args;
|
|
|
|
|
|
|
|
va_start (args, fmt);
|
2004-06-13 22:42:29 +01:00
|
|
|
vfprintf (stderr, fmt, args);
|
2004-06-12 15:20:07 +01:00
|
|
|
fprintf (stderr, "\n");
|
|
|
|
va_end (args);
|
|
|
|
exit(1);
|
|
|
|
}
|
2004-06-13 22:42:29 +01:00
|
|
|
|
|
|
|
//! Print error message and die.
|
|
|
|
/**
|
|
|
|
* Adapted from [K&R2], p. 174
|
|
|
|
* Input is comparable to printf, only end of line is not required.
|
|
|
|
*/
|
|
|
|
void
|
|
|
|
error (char *fmt, ... )
|
|
|
|
{
|
|
|
|
va_list args;
|
|
|
|
|
|
|
|
error_pre ();
|
|
|
|
va_start (args, fmt);
|
|
|
|
vfprintf (stderr, fmt, args);
|
|
|
|
fprintf (stderr, "\n");
|
|
|
|
va_end (args);
|
|
|
|
error_die ();
|
|
|
|
}
|
2004-07-14 08:31:01 +01:00
|
|
|
|
|
|
|
//! Print warning
|
|
|
|
/**
|
|
|
|
* Input is comparable to printf, only end of line is not required.
|
|
|
|
*/
|
|
|
|
void
|
|
|
|
warning (char *fmt, ... )
|
|
|
|
{
|
|
|
|
va_list args;
|
|
|
|
|
|
|
|
va_start (args, fmt);
|
|
|
|
fprintf (stderr, "warning: ");
|
|
|
|
vfprintf (stderr, fmt, args);
|
|
|
|
fprintf (stderr, "\n");
|
|
|
|
va_end (args);
|
|
|
|
}
|