diff options
Diffstat (limited to 'assuan/assuan-logging.c')
-rw-r--r-- | assuan/assuan-logging.c | 76 |
1 files changed, 73 insertions, 3 deletions
diff --git a/assuan/assuan-logging.c b/assuan/assuan-logging.c index 340ce724..7c65d579 100644 --- a/assuan/assuan-logging.c +++ b/assuan/assuan-logging.c @@ -1,5 +1,5 @@ /* assuan-logging.c - Default logging function. - * Copyright (C) 2002, 2003 Free Software Foundation, Inc. + * Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. * * This file is part of Assuan. * @@ -18,12 +18,29 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ -#include "assuan-defs.h" +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif #include <stdio.h> +#include <string.h> +#include <stdarg.h> +#ifdef HAVE_W32_SYSTEM +#include <windows.h> +#endif /*HAVE_W32_SYSTEM*/ + +#include "assuan-defs.h" +static char prefix_buffer[80]; static FILE *_assuan_log; void +_assuan_set_default_log_stream (FILE *fp) +{ + if (!_assuan_log) + _assuan_log = fp; +} + +void assuan_set_assuan_log_stream (FILE *fp) { _assuan_log = fp; @@ -35,8 +52,61 @@ assuan_get_assuan_log_stream (void) return _assuan_log ? _assuan_log : stderr; } + +/* Set the prefix to be used for logging to TEXT or + resets it to the default if TEXT is NULL. */ +void +assuan_set_assuan_log_prefix (const char *text) +{ + if (text) + { + strncpy (prefix_buffer, text, sizeof (prefix_buffer)-1); + prefix_buffer[sizeof (prefix_buffer)-1] = 0; + } + else + *prefix_buffer = 0; +} + const char * assuan_get_assuan_log_prefix (void) { - return ""; + return prefix_buffer; +} + + +void +_assuan_log_printf (const char *format, ...) +{ + va_list arg_ptr; + FILE *fp; + const char *prf; + + fp = assuan_get_assuan_log_stream (); + prf = assuan_get_assuan_log_prefix (); + if (*prf) + { + fputs (prf, fp); + fputs (": ", fp); + } + + va_start (arg_ptr, format); + vfprintf (fp, format, arg_ptr ); + va_end (arg_ptr); +} + + + +#ifdef HAVE_W32_SYSTEM +const char * +_assuan_w32_strerror (int ec) +{ + static char strerr[256]; + + if (ec == -1) + ec = (int)GetLastError (); + FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM, NULL, ec, + MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT), + strerr, sizeof (strerr)-1, NULL); + return strerr; } +#endif /*HAVE_W32_SYSTEM*/ |