|
|
|
@ -119,77 +119,4 @@ json_t *json_rpc_call(connsock_t *cs, const char *rpc_req);
|
|
|
|
|
|
|
|
|
|
int process_exit(ckpool_t *ckp, proc_instance_t *pi, int ret); |
|
|
|
|
|
|
|
|
|
#define ASPRINTF(strp, fmt, ...) do { \ |
|
|
|
|
if (unlikely(asprintf(strp, fmt, ##__VA_ARGS__) < 0)) \
|
|
|
|
|
quitfrom(1, __FILE__, __func__, __LINE__, "Failed to asprintf"); \
|
|
|
|
|
} while (0) |
|
|
|
|
|
|
|
|
|
/* Log everything to the logfile, but display warnings on the console as well */ |
|
|
|
|
#define LOGMSG(_loglevel, fmt, ...) do { \ |
|
|
|
|
if (global_ckp->loglevel >= _loglevel && fmt) { \
|
|
|
|
|
struct tm *tm; \
|
|
|
|
|
char *BUF = NULL; \
|
|
|
|
|
time_t now_t; \
|
|
|
|
|
int LOGFD = global_ckp->logfd; \
|
|
|
|
|
\
|
|
|
|
|
ASPRINTF(&BUF, fmt, ##__VA_ARGS__); \
|
|
|
|
|
now_t = time(NULL); \
|
|
|
|
|
tm = localtime(&now_t); \
|
|
|
|
|
if (LOGFD) { \
|
|
|
|
|
FILE *LOGFP = global_ckp->logfp; \
|
|
|
|
|
\
|
|
|
|
|
flock(LOGFD, LOCK_EX); \
|
|
|
|
|
fprintf(LOGFP, "[%d-%02d-%02d %02d:%02d:%02d] %s", \
|
|
|
|
|
tm->tm_year + 1900, \
|
|
|
|
|
tm->tm_mon + 1, \
|
|
|
|
|
tm->tm_mday, \
|
|
|
|
|
tm->tm_hour, \
|
|
|
|
|
tm->tm_min, \
|
|
|
|
|
tm->tm_sec, \
|
|
|
|
|
BUF); \
|
|
|
|
|
if (_loglevel <= LOG_ERR) \
|
|
|
|
|
fprintf(LOGFP, " with errno %d: %s", errno, strerror(errno)); \
|
|
|
|
|
fprintf(LOGFP, "\n"); \
|
|
|
|
|
fflush(LOGFP); \
|
|
|
|
|
flock(LOGFD, LOCK_UN); \
|
|
|
|
|
} \
|
|
|
|
|
if (_loglevel <= LOG_WARNING) {\
|
|
|
|
|
fprintf(stderr, "%s", BUF); \
|
|
|
|
|
if (_loglevel <= LOG_ERR) \
|
|
|
|
|
fprintf(stderr, " with errno %d: %s", errno, strerror(errno)); \
|
|
|
|
|
fprintf(stderr, "\n"); \
|
|
|
|
|
fflush(stderr); \
|
|
|
|
|
} \
|
|
|
|
|
free(BUF); \
|
|
|
|
|
} \
|
|
|
|
|
} while (0) |
|
|
|
|
|
|
|
|
|
#define LOGEMERG(fmt, ...) LOGMSG(LOG_EMERG, fmt, ##__VA_ARGS__) |
|
|
|
|
#define LOGALERT(fmt, ...) LOGMSG(LOG_ALERT, fmt, ##__VA_ARGS__) |
|
|
|
|
#define LOGCRIT(fmt, ...) LOGMSG(LOG_CRIT, fmt, ##__VA_ARGS__) |
|
|
|
|
#define LOGERR(fmt, ...) LOGMSG(LOG_ERR, fmt, ##__VA_ARGS__) |
|
|
|
|
#define LOGWARNING(fmt, ...) LOGMSG(LOG_WARNING, fmt, ##__VA_ARGS__) |
|
|
|
|
#define LOGNOTICE(fmt, ...) LOGMSG(LOG_NOTICE, fmt, ##__VA_ARGS__) |
|
|
|
|
#define LOGINFO(fmt, ...) LOGMSG(LOG_INFO, fmt, ##__VA_ARGS__) |
|
|
|
|
#define LOGDEBUG(fmt, ...) LOGMSG(LOG_DEBUG, fmt, ##__VA_ARGS__) |
|
|
|
|
|
|
|
|
|
#define IN_FMT_FFL " in %s %s():%d" |
|
|
|
|
#define quitfrom(status, _file, _func, _line, fmt, ...) do { \ |
|
|
|
|
if (fmt) { \
|
|
|
|
|
fprintf(stderr, fmt IN_FMT_FFL, ##__VA_ARGS__, _file, _func, _line); \
|
|
|
|
|
fprintf(stderr, "\n"); \
|
|
|
|
|
fflush(stderr); \
|
|
|
|
|
} \
|
|
|
|
|
exit(status); \
|
|
|
|
|
} while (0) |
|
|
|
|
|
|
|
|
|
#define quit(status, fmt, ...) do { \ |
|
|
|
|
if (fmt) { \
|
|
|
|
|
fprintf(stderr, fmt, ##__VA_ARGS__); \
|
|
|
|
|
fprintf(stderr, "\n"); \
|
|
|
|
|
fflush(stderr); \
|
|
|
|
|
} \
|
|
|
|
|
exit(status); \
|
|
|
|
|
} while (0) |
|
|
|
|
|
|
|
|
|
#endif /* CKPOOL_H */ |
|
|
|
|