-
-void debug_logit(uint8_t level, const char *format, va_list ap) {
- struct timeval now;
- char *timebuf;
- int priority;
-
- if (debug_syslogfacility) {
- switch (level) {
- case DBG_DBG:
- priority = LOG_DEBUG;
- break;
- case DBG_INFO:
- priority = LOG_INFO;
- break;
- case DBG_NOTICE:
- priority = LOG_NOTICE;
- break;
- case DBG_WARN:
- priority = LOG_WARNING;
- break;
- case DBG_ERR:
- priority = LOG_ERR;
- break;
- default:
- priority = LOG_DEBUG;
- }
- vsyslog(priority, format, ap);
- } else {
- if (debug_timestamp && (timebuf = malloc(256))) {
- gettimeofday(&now, NULL);
- ctime_r(&now.tv_sec, timebuf);
- timebuf[strlen(timebuf) - 1] = '\0';
- fprintf(debug_file, "%s: ", timebuf + 4);
- free(timebuf);
- }
- vfprintf(debug_file, format, ap);
- fprintf(debug_file, "\n");
- }
-}
-
-void debug(uint8_t level, char *format, ...) {
- va_list ap;
- if (level < debug_level)
- return;
- va_start(ap, format);
- debug_logit(level, format, ap);
- va_end(ap);
-}
-
-void debugx(int status, uint8_t level, char *format, ...) {
- if (level >= debug_level) {
- va_list ap;
- va_start(ap, format);
- debug_logit(level, format, ap);
- va_end(ap);
- }
- exit(status);
-}
-
-void debugerrno(int err, uint8_t level, char *format, ...) {
- if (level >= debug_level) {
- va_list ap;
- size_t len = strlen(format);
- char *tmp = malloc(len + 1024 + 2);
- assert(tmp);
- strcpy(tmp, format);
- tmp[len++] = ':';
- tmp[len++] = ' ';
- if (strerror_r(err, tmp + len, 1024))
- tmp = format;
- va_start(ap, format);
- debug_logit(level, tmp, ap);
- va_end(ap);
- }
-}
-
-void debugerrnox(int err, uint8_t level, char *format, ...) {
- if (level >= debug_level) {
- va_list ap;
- va_start(ap, format);
- debugerrno(err, level, format, ap);
- va_end(ap);
- }
- exit(err);
-}
-
-/* Local Variables: */
-/* c-file-style: "stroustrup" */
-/* End: */