summaryrefslogtreecommitdiff
path: root/common/logging.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/logging.c')
-rw-r--r--common/logging.c44
1 files changed, 31 insertions, 13 deletions
diff --git a/common/logging.c b/common/logging.c
index 8c70742..18c40b3 100644
--- a/common/logging.c
+++ b/common/logging.c
@@ -4,8 +4,8 @@
*
* This file is part of GnuPG.
*
- * GnuPG is free software; you can redistribute it and/or modify it
- * under the terms of either
+ * GnuPG is free software; you can redistribute and/or modify this
+ * part of GnuPG under the terms of either
*
* - the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 3 of the License, or (at
@@ -61,6 +61,7 @@
#include "i18n.h"
#include "common-defs.h"
#include "logging.h"
+#include "sysutils.h"
#ifdef HAVE_W32_SYSTEM
# define S_IRGRP S_IRUSR
@@ -570,6 +571,9 @@ log_set_file (const char *name)
void
log_set_fd (int fd)
{
+ if (! gnupg_fd_valid (fd))
+ log_fatal ("logger-fd is invalid: %s\n", strerror (errno));
+
set_file_fd (NULL, fd);
}
@@ -723,7 +727,7 @@ print_prefix (int level, int leading_backspace)
static void
do_logv (int level, int ignore_arg_ptr, const char *extrastring,
- const char *fmt, va_list arg_ptr)
+ const char *prefmt, const char *fmt, va_list arg_ptr)
{
int leading_backspace = (fmt && *fmt == '\b');
@@ -755,6 +759,9 @@ do_logv (int level, int ignore_arg_ptr, const char *extrastring,
if (fmt)
{
+ if (prefmt)
+ es_fputs_unlocked (prefmt, logstream);
+
if (ignore_arg_ptr)
{ /* This is used by log_string and comes with the extra
* feature that after a LF the next line is indent at the
@@ -857,7 +864,7 @@ log_log (int level, const char *fmt, ...)
va_list arg_ptr ;
va_start (arg_ptr, fmt) ;
- do_logv (level, 0, NULL, fmt, arg_ptr);
+ do_logv (level, 0, NULL, NULL, fmt, arg_ptr);
va_end (arg_ptr);
}
@@ -865,7 +872,18 @@ log_log (int level, const char *fmt, ...)
void
log_logv (int level, const char *fmt, va_list arg_ptr)
{
- do_logv (level, 0, NULL, fmt, arg_ptr);
+ do_logv (level, 0, NULL, NULL, fmt, arg_ptr);
+}
+
+
+/* Same as log_logv but PREFIX is printed immediately before FMT.
+ * Note that PREFIX is an additional string and independent of the
+ * prefix set by log_set_prefix. */
+void
+log_logv_with_prefix (int level, const char *prefix,
+ const char *fmt, va_list arg_ptr)
+{
+ do_logv (level, 0, NULL, prefix, fmt, arg_ptr);
}
@@ -874,7 +892,7 @@ do_log_ignore_arg (int level, const char *str, ...)
{
va_list arg_ptr;
va_start (arg_ptr, str);
- do_logv (level, 1, NULL, str, arg_ptr);
+ do_logv (level, 1, NULL, NULL, str, arg_ptr);
va_end (arg_ptr);
}
@@ -896,7 +914,7 @@ log_info (const char *fmt, ...)
va_list arg_ptr ;
va_start (arg_ptr, fmt);
- do_logv (GPGRT_LOG_INFO, 0, NULL, fmt, arg_ptr);
+ do_logv (GPGRT_LOG_INFO, 0, NULL, NULL, fmt, arg_ptr);
va_end (arg_ptr);
}
@@ -907,7 +925,7 @@ log_error (const char *fmt, ...)
va_list arg_ptr ;
va_start (arg_ptr, fmt);
- do_logv (GPGRT_LOG_ERROR, 0, NULL, fmt, arg_ptr);
+ do_logv (GPGRT_LOG_ERROR, 0, NULL, NULL, fmt, arg_ptr);
va_end (arg_ptr);
/* Protect against counter overflow. */
if (errorcount < 30000)
@@ -921,7 +939,7 @@ log_fatal (const char *fmt, ...)
va_list arg_ptr ;
va_start (arg_ptr, fmt);
- do_logv (GPGRT_LOG_FATAL, 0, NULL, fmt, arg_ptr);
+ do_logv (GPGRT_LOG_FATAL, 0, NULL, NULL, fmt, arg_ptr);
va_end (arg_ptr);
abort (); /* Never called; just to make the compiler happy. */
}
@@ -933,7 +951,7 @@ log_bug (const char *fmt, ...)
va_list arg_ptr ;
va_start (arg_ptr, fmt);
- do_logv (GPGRT_LOG_BUG, 0, NULL, fmt, arg_ptr);
+ do_logv (GPGRT_LOG_BUG, 0, NULL, NULL, fmt, arg_ptr);
va_end (arg_ptr);
abort (); /* Never called; just to make the compiler happy. */
}
@@ -945,7 +963,7 @@ log_debug (const char *fmt, ...)
va_list arg_ptr ;
va_start (arg_ptr, fmt);
- do_logv (GPGRT_LOG_DEBUG, 0, NULL, fmt, arg_ptr);
+ do_logv (GPGRT_LOG_DEBUG, 0, NULL, NULL, fmt, arg_ptr);
va_end (arg_ptr);
}
@@ -959,7 +977,7 @@ log_debug_with_string (const char *string, const char *fmt, ...)
va_list arg_ptr ;
va_start (arg_ptr, fmt);
- do_logv (GPGRT_LOG_DEBUG, 0, string, fmt, arg_ptr);
+ do_logv (GPGRT_LOG_DEBUG, 0, string, NULL, fmt, arg_ptr);
va_end (arg_ptr);
}
@@ -970,7 +988,7 @@ log_printf (const char *fmt, ...)
va_list arg_ptr;
va_start (arg_ptr, fmt);
- do_logv (fmt ? GPGRT_LOG_CONT : GPGRT_LOG_BEGIN, 0, NULL, fmt, arg_ptr);
+ do_logv (fmt ? GPGRT_LOG_CONT : GPGRT_LOG_BEGIN, 0, NULL, NULL, fmt, arg_ptr);
va_end (arg_ptr);
}