/** * Prints usage of the program to stdout and log filedescriptor * @param exit_status Status of termination * @param options Array of options supported * @param Format string * @param ... arguments */ void usage(int exit_status, cli_options_t* options, const char* fmt, ...) { if (strlen(fmt)) { va_list args; va_start(args, fmt); vlog_msgf(STDOUT_FILENO, LOG_ERR, fmt, args, 0); vlog_msgf(_cnf->log_fd, LOG_ERR, fmt, args, 0); va_end(args); } print_usage(STDOUT_FILENO, exit_status, options); print_usage(_cnf->log_fd, exit_status, options); }
/** * Log a message to a filedescriptor. * @param lf Log priority * @param fmt Format string * @param ... arguments */ void ui_log(int lf,const char* fmt, ...) { va_list ap; va_start(ap, fmt); vlog_msgf(_cnf->log_fd, lf, fmt, ap, 0); va_end(ap); }
/** * Prints an error message and terminates this program. * @param fmt Format string * @param ... Arguments */ void ui_fatal(char* fmt, ...) { va_list args; va_start(args, fmt); vlog_msgf(_cnf->log_fd, LOG_ERR, fmt, args, 0); va_end(args); exit(EXIT_FAILURE); }
/*! Log a message. This function automatically determines * to which streams the message is logged. * @param lf Log priority. * @param fmt Format string. * @param ... arguments */ void log_msg(int lf, const char *fmt, ...) { va_list ap; va_start(ap, fmt); vlog_msgf(CNF(logf), lf, fmt, ap); va_end(ap); if (clog_ && (lf & LOG_FCONN)) { va_start(ap, fmt); vlog_msgf(clog_, lf, fmt, ap); va_end(ap); (void) fflush(clog_); } if (lf & LOG_FERR) { va_start(ap, fmt); vfprintf(stderr, fmt, ap); va_end(ap); fprintf(stderr, "\n"); } }
/*! Log a message. This function automatically determines * to which streams the message is logged. * @param lf Log priority. * @param fmt Format string. * @param ... arguments */ void log_msg(int lf, const char *fmt, ...) { va_list ap; va_start(ap, fmt); vlog_msgf(log_, lf, fmt, ap); va_end(ap); /* if (lf) { va_start(ap, fmt); vfprintf(stderr, fmt, ap); va_end(ap); fprintf(stderr, "\n"); }*/ }