blob: 7078cd4231fcc7f5db08692bff9c99a0c60e5170 [file] [log] [blame]
#ifndef CLICK_ERROR_HH
#define CLICK_ERROR_HH
#include <stdio.h>
#include <stdarg.h>
#include <errno.h>
class ErrorHandler {
public:
ErrorHandler() : _nerrors(0), _nwarnings(0), _prefix(0) { }
~ErrorHandler() { }
unsigned int nwarnings() const { return _nwarnings; }
unsigned int nerrors() const { return _nerrors; }
void reset_counts() { _nerrors = _nwarnings = 0; }
void snap_errors() { _nerrors_snapshot = _nerrors; }
bool any_errors() { return _nerrors_snapshot != _nerrors; }
void set_prefix(const char *pfx) { _prefix = pfx; }
inline void warning(const char *format, ...);
inline int error(const char *format, ...);
private:
unsigned int _nerrors;
unsigned int _nwarnings;
unsigned int _nerrors_snapshot;
const char *_prefix;
};
void ErrorHandler::warning(const char *format, ...)
{
va_list ap;
if (_prefix)
fprintf(stderr, _prefix);
va_start(ap, format);
vfprintf(stderr, format, ap);
fprintf(stderr, "\n");
va_end(ap);
_nwarnings++;
}
int ErrorHandler::error(const char *format, ...)
{
va_list ap;
if (_prefix)
fprintf(stderr, _prefix);
va_start(ap, format);
vfprintf(stderr, format, ap);
fprintf(stderr, "\n");
va_end(ap);
_nerrors++;
return -EINVAL;
}
#endif
/* vim: set ts=8 sw=4: */