SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif /* HAVE_CONFIG_H */
+
#include <stdio.h>
#include <stdarg.h>
-#include <syslog.h>
#include <string.h>
-#include "err_util.h"
+#include "xlog.h"
static int verbosity = 0;
static int fg = 0;
-static char message_buf[500];
-static char tmp_buf[500];
-
void initerr(char *progname, int set_verbosity, int set_fg)
{
verbosity = set_verbosity;
fg = set_fg;
if (!fg)
- openlog(progname, LOG_PID, LOG_DAEMON);
+ xlog_open(progname);
}
+
void printerr(int priority, char *format, ...)
{
va_list args;
- int ret;
- /* aggregate lines: only print buffer when we get to the end of a
- * line or run out of space: */
+ /* Don't bother formatting a message we're never going to print! */
+ if (priority > verbosity)
+ return;
+
va_start(args, format);
- ret = vsnprintf(tmp_buf, sizeof(tmp_buf), format, args);
+ if (fg)
+ vfprintf(stderr, format, args);
+ else
+ xlog_backend(L_ERROR, format, args);
va_end(args);
- if ((ret < 0) || (ret >= sizeof(tmp_buf)))
- goto output;
- if (strlen(tmp_buf) + strlen(message_buf) + 1 > sizeof(message_buf))
- goto output;
- strcat(message_buf, tmp_buf);
- if (tmp_buf[strlen(tmp_buf) - 1] == '\n')
- goto output;
- return;
-output:
- priority -= verbosity;
- if (priority < 0)
- priority = 0;
- if (fg) {
- if (priority == 0)
- fprintf(stderr, "%s", message_buf);
- } else {
- int sys_pri;
- switch (priority) {
- case 0:
- sys_pri = LOG_ERR;
- break;
- case 1:
- sys_pri = LOG_DEBUG;
- break;
- default:
- goto out;
- }
- syslog(sys_pri, "%s", message_buf);
- }
-out:
- memset(message_buf, 0, sizeof(message_buf));
+}
+
+int get_verbosity(void)
+{
+ return verbosity;
}