From 0f68c9f16bdae7295cac4cbf3c9a197840989a85 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 5 Jun 2019 16:37:59 +0200 Subject: [PATCH] core: Prettify _gpgme_io_select debug output again and fix TRACE_SYSRES. * src/debug.c (_gpgme_debug): Take better care of NULL userinfo. (_gpgme_debug_end): Rework. (_trace_sysres): Print ERRNO and not the supplied RES. -- The TRACE_SYSRES patch fixes Regression-due-to: 7a1e7006d06fdbab86ea79a197c316744b09d933 Signed-off-by: Werner Koch --- src/debug.c | 21 ++++++++++++++++----- src/debug.h | 3 ++- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/debug.c b/src/debug.c index 0ddb1539..a861b416 100644 --- a/src/debug.c +++ b/src/debug.c @@ -254,6 +254,7 @@ _gpgme_debug (void **line, int level, int mode, int indent; char *prefix, *stdinfo, *userinfo; const char *modestr; + int no_userinfo = 0; if (debug_level < level) return 0; @@ -295,7 +296,13 @@ _gpgme_debug (void **line, int level, int mode, else stdinfo = gpgrt_bsprintf ("%s: %s: ", func, modestr); - userinfo = gpgrt_vbsprintf (format, arg_ptr); + if (format && *format) + userinfo = gpgrt_vbsprintf (format, arg_ptr); + else + { + userinfo = NULL; + no_userinfo = 1; + } va_end (arg_ptr); if (mode != -1 && (!format || !*format)) @@ -317,7 +324,7 @@ _gpgme_debug (void **line, int level, int mode, prefix? prefix : "GPGME out-of-core ", !modestr? "" : stdinfo? stdinfo : (!format || !*format)? "" :"out-of-core ", - userinfo? userinfo : "out-of-core", + userinfo? userinfo : no_userinfo? "" : "out-of-core", need_lf? "\n":""); fflush (errfp); } @@ -365,12 +372,16 @@ _gpgme_debug_add (void **line, const char *format, ...) void _gpgme_debug_end (void **line) { + const char *string; + if (!*line) return; + string = *line; - /* The smallest possible level is 1, so force logging here by - using that. */ - _gpgme_debug (NULL, 1, -1, NULL, NULL, NULL, "%s", (char*)*line); + fprintf (errfp, "%s%s", + string, + (*string && string[strlen (string)-1] != '\n')? "\n":""); + fflush (errfp); gpgrt_free (*line); *line = NULL; } diff --git a/src/debug.h b/src/debug.h index 08d063c6..fa0bfc6c 100644 --- a/src/debug.h +++ b/src/debug.h @@ -25,6 +25,7 @@ #ifdef HAVE_STDINT_H #include #endif +#include #include "gpgme.h" /* Required for gpgme_error stuff. */ @@ -151,7 +152,7 @@ _trace_sysres (int res, int lvl, const char *func, int line) else _gpgme_debug (NULL, lvl, -1, NULL, NULL, NULL, "%s:%d: error: %s (%d)\n", - func, line, strerror (res), res); + func, line, strerror (errno), errno); _gpgme_debug_frame_end (); return res; }