ERR_CLASS_COUNT, /* Number of message classes. */
ERR_CLASS_MASK = 0xf, /* Bitmask for class. */
ERR_VERBOSITY_SHIFT = 4, /* Shift count for verbosity. */
- ERR_VERBOSITY_MASK = 0xf, /* Bitmask for verbosity. */
+ ERR_VERBOSITY_MASK = 0xf /* Bitmask for verbosity. */
};
/* If passed to msg() as CLASS, the return value will cause the message
int class; /* One of the classes above. */
struct file_locator where; /* File location, or (NULL, -1). */
const char *title; /* Special text inserted if not null. */
- const char *text; /* Error text. */
};
/* Number of errors, warnings reported. */
void err_break (void);
void err_check_count (void);
void err_hcf (int exit_code) NO_RETURN;
-void err_vmsg (const struct error *);
+void err_vmsg (const struct error *, const char *, va_list);
+
+/* Used in panic situations only */
+void request_bug_report_and_abort(const char *msg );
+
+void err_assert_fail(const char *expr, const char *file, int line);
+
+#undef __STRING
+#define __STRING(x) #x
+#undef assert
+
+
+#define assert(expr) ( (void) ( expr ? (void) 0 : \
+ err_assert_fail(__STRING(expr), __FILE__, __LINE__)) )
+
#endif /* error.h */