00001 00011 #ifndef __ERRMANAGER_H__ 00012 #define __ERRMANAGER_H__ 00013 00014 #ifdef HAVE_CONFIG_H 00015 #include <config.h> 00016 #endif 00017 00018 #include <syslog.h> 00019 #include <stdio.h> 00020 #include <stdlib.h> 00021 #include <string.h> 00022 #include <stdarg.h> 00023 #include <unistd.h> 00024 00025 #define MAX_STRLEN 1024 00027 #define EM_TYPE_SYSLOG 1 00028 #define EM_TYPE_STDERR 2 00029 #define EM_TYPE_CALLBACK 4 00030 #define EM_TYPE_FILE 8 00032 #define ERRNO set_errno 00033 #define ERRNULL set_errno_null 00039 #ifdef WITH_DEBUG 00040 #define MSG_DEBUG(args...) emManager(__FILE__, __FUNCTION__, __LINE__, LOG_DEBUG, ## args) 00041 #else 00042 #define MSG_DEBUG(args...) {} 00043 #endif 00044 00047 #define MSG_INF(args...) emManager(__FILE__, __FUNCTION__, __LINE__, LOG_INFO, ## args) 00048 00052 #define MSG_NOTICE(args...) emManager(__FILE__, __FUNCTION__, __LINE__, LOG_NOTICE, ## args) 00053 00057 #define MSG_WARNING(args...) emManager(__FILE__, __FUNCTION__, __LINE__, LOG_WARNING, ## args) 00058 00062 #define MSG_ERR(args...) emManager(__FILE__, __FUNCTION__, __LINE__, LOG_ERR, ## args) 00063 00067 #define MSG_CRIT(args...) emManager(__FILE__, __FUNCTION__, __LINE__, LOG_CRIT, ## args) 00068 00072 #define MSG_ALERT(args...) emManager(__FILE__, __FUNCTION__, __LINE__, LOG_ALERT, ## args) 00073 00077 #define MSG_EMERG(args...) emManager(__FILE__, __FUNCTION__, __LINE__, LOG_EMERG, ## args) 00078 00079 00080 00084 typedef struct EMDATA { 00085 int logLevel; 00086 int logType; 00097 void (* errCallBack)(void *ctxt, char *pFile, char *pFunc, int iLine, int level, char *fmt); 00098 00099 void *ctxt; 00100 char *filename; 00101 } emData; 00102 00103 00110 int set_errno(int err); 00111 00112 00119 void *set_errno_null(int err); 00120 00121 00125 void emClose(void); 00126 00127 00143 int emInit(int logLevel, int logType, void (*cb)(void *ctxt, char *pFile, 00144 char *pFunc, int iLine, int level, char *fmt), void *ctxt, 00145 char *filename, const char *name); 00146 00147 00162 void emManager(char* pFile, char* pFunc, int iLine, int level, char* fmt, ...); 00163 00164 00165 #endif 00166