/*
* placed in the public domain by Uwe Ohse, uwe@ohse.de.
*/
#ifndef BAILOUT_H
#define BAILOUT_H
#ifdef __GNUC__
#if __GNUC__ > 2 || (__GNUC__ ==2 && __GNUC_MINOR__ >=5)
#define BAILOUT_NORETURN __attribute__((noreturn))
#endif
#endif
#ifndef BAILOUT_NORETURN
#define BAILOUT_NORETURN
#endif
#include "buffer.h"
extern buffer *bailout_buffer;
extern const char *flag_bailout_log_name;
extern int flag_bailout_log_pid;
extern int flag_bailout_fatal_begin;
extern const char *flag_bailout_fatal_string;
void warning(int erno, const char *s1, const char *s2, const char *s3,
const char *s4);
void bailout(int erno, const char *s1, const char *s2, const char *s3,
const char *s4) BAILOUT_NORETURN;
void oom(void) BAILOUT_NORETURN;
#define OOMSTRING2(x) #x
#define OOMSTRING(x) OOMSTRING2(x)
#define oom() \
do { \
xbailout(111,0,"out of memory in ",__FILE__," at line ", \
OOMSTRING(__LINE__)); \
} while(0)
void bailout_exit(int) BAILOUT_NORETURN;
void xbailout(int ecode, int erno, const char *s1, const char *s2,
const char *s3, const char *s4) BAILOUT_NORETURN;
void bailout_progname(const char *keep_this_string_in_place);
#undef BAILOUT_NORETURN
#endif
syntax highlighted by Code2HTML, v. 0.9.1