Obsolete option --no-sig-create-check.
[gnupg.git] / util / assuan-logging.c
1 /* assuan-logging.c - Default logging function.
2  *      Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
3  *
4  * This file is part of Assuan.
5  *
6  * Assuan is free software; you can redistribute it and/or modify it
7  * under the terms of the GNU Lesser General Public License as
8  * published by the Free Software Foundation; either version 2.1 of
9  * the License, or (at your option) any later version.
10  *
11  * Assuan is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with this program; if not, see <http://www.gnu.org/licenses/>.
18  */
19
20 /* Please note that this is a stripped down and modified version of
21    the orginal Assuan code from libassuan. */
22
23 #ifdef HAVE_CONFIG_H
24 #include <config.h>
25 #endif
26 #include <stdio.h>
27 #include <string.h>
28 #include <stdarg.h>
29 #ifdef HAVE_W32_SYSTEM
30 #include <windows.h>
31 #endif /*HAVE_W32_SYSTEM*/
32
33 #include "assuan-defs.h"
34
35 static char prefix_buffer[80];
36 static FILE *_assuan_log;
37
38 void
39 _assuan_set_default_log_stream (FILE *fp)
40 {
41   if (!_assuan_log)
42     _assuan_log = fp;
43 }
44
45 void
46 assuan_set_assuan_log_stream (FILE *fp)
47 {
48   _assuan_log = fp;
49 }
50
51 FILE *
52 assuan_get_assuan_log_stream (void)
53 {
54   return _assuan_log ? _assuan_log : stderr;
55 }
56
57
58 /* Set the prefix to be used for logging to TEXT or
59    resets it to the default if TEXT is NULL. */
60 void
61 assuan_set_assuan_log_prefix (const char *text)
62 {
63   if (text)
64     {
65       strncpy (prefix_buffer, text, sizeof (prefix_buffer)-1);
66       prefix_buffer[sizeof (prefix_buffer)-1] = 0;
67     }
68   else
69     *prefix_buffer = 0;
70 }
71
72 const char *
73 assuan_get_assuan_log_prefix (void)
74 {
75   return prefix_buffer;
76 }
77
78
79 void
80 _assuan_log_printf (const char *format, ...)
81 {
82   va_list arg_ptr;
83   FILE *fp;
84   const char *prf;
85
86   fp = assuan_get_assuan_log_stream ();
87   prf = assuan_get_assuan_log_prefix ();
88   if (*prf)
89     {
90       fputs (prf, fp);
91       fputs (": ", fp);
92     }
93
94   va_start (arg_ptr, format);
95   vfprintf (fp, format, arg_ptr );
96   va_end (arg_ptr);
97 }
98
99
100
101 #ifdef HAVE_W32_SYSTEM
102 const char *
103 _assuan_w32_strerror (int ec)
104 {
105   static char strerr[256];
106   
107   if (ec == -1)
108     ec = (int)GetLastError ();
109   FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM, NULL, ec,
110                  MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT),
111                  strerr, sizeof (strerr)-1, NULL);
112   return strerr;    
113 }
114 #endif /*HAVE_W32_SYSTEM*/