00001 00009 #ifndef __EINFO_H__ 00010 #define __EINFO_H__ 00011 00012 #define EINFO_PRINTF 00013 #define EINFO_XPRINTF 00014 #define EEND_PRINTF 00015 00016 #ifdef __GNUC__ 00017 # undef EINFO_PRINTF 00018 # undef EINFO_XPRINTF 00019 # undef EEND_PRINTF 00020 # define EINFO_PRINTF __attribute__ ((__format__ (__printf__, 1, 2))) 00021 # define EINFO_XPRINTF __attribute__ ((__noreturn__, __format__ (__printf__, 1, 2))) 00022 # define EEND_PRINTF __attribute__ ((__format__ (__printf__, 2, 3))) 00023 #endif 00024 00025 #include <sys/types.h> 00026 #include <stdbool.h> 00027 00029 typedef enum 00030 { 00031 ecolor_good, 00032 ecolor_warn, 00033 ecolor_bad, 00034 ecolor_hilite, 00035 ecolor_bracket, 00036 ecolor_normal 00037 } einfo_color_t; 00038 00040 const char *ecolor (einfo_color_t); 00041 00043 void elog (int level, const char *fmt, ...) EEND_PRINTF; 00044 00061 int einfon (const char *fmt, ...) EINFO_PRINTF; 00062 int ewarnn (const char *fmt, ...) EINFO_PRINTF; 00063 int eerrorn (const char *fmt, ...) EINFO_PRINTF; 00064 int einfo (const char *fmt, ...) EINFO_PRINTF; 00065 int ewarn (const char *fmt, ...) EINFO_PRINTF; 00066 void ewarnx (const char *fmt, ...) EINFO_XPRINTF; 00067 int eerror (const char *fmt, ...) EINFO_PRINTF; 00068 void eerrorx (const char *fmt, ...) EINFO_XPRINTF; 00069 00070 int einfovn (const char *fmt, ...) EINFO_PRINTF; 00071 int ewarnvn (const char *fmt, ...) EINFO_PRINTF; 00072 int ebeginvn (const char *fmt, ...) EINFO_PRINTF; 00073 int eendvn (int retval, const char *fmt, ...) EEND_PRINTF; 00074 int ewendvn (int retval, const char *fmt, ...) EEND_PRINTF; 00075 int einfov (const char *fmt, ...) EINFO_PRINTF; 00076 int ewarnv (const char *fmt, ...) EINFO_PRINTF; 00084 int ebeginv (const char *fmt, ...) EINFO_PRINTF; 00085 int ebegin (const char *fmt, ...) EINFO_PRINTF; 00097 int eend (int retval, const char *fmt, ...) EEND_PRINTF; 00098 int ewend (int retval, const char *fmt, ...) EEND_PRINTF; 00099 void ebracket (int col, einfo_color_t color, const char *msg); 00100 00101 int eendv (int retval, const char *fmt, ...) EEND_PRINTF; 00102 int ewendv (int retval, const char *fmt, ...) EEND_PRINTF; 00110 void eindent (void); 00111 void eoutdent (void); 00112 void eindentv (void); 00113 void eoutdentv (void); 00114 00116 void eprefix (const char *prefix); 00117 00118 #endif