diff options
author | Werner Koch <[email protected]> | 2019-06-05 14:37:59 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2019-06-05 14:48:47 +0000 |
commit | 0f68c9f16bdae7295cac4cbf3c9a197840989a85 (patch) | |
tree | 5ff057b5a1f052f1d749b1c2ff6defef6ff9ce75 | |
parent | tests: Use synced output for error in run-threaded (diff) | |
download | gpgme-0f68c9f16bdae7295cac4cbf3c9a197840989a85.tar.gz gpgme-0f68c9f16bdae7295cac4cbf3c9a197840989a85.zip |
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 <[email protected]>
-rw-r--r-- | src/debug.c | 21 | ||||
-rw-r--r-- | 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 <stdint.h> #endif +#include <errno.h> #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; } |