summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2004-11-24 16:49:32 +0000
committerWerner Koch <wk@gnupg.org>2004-11-24 16:49:32 +0000
commitc24914dca24b225f96dc99fb31ce8238c5251a02 (patch)
tree8092181c2baf33c86983ac5e922e7c1d8df2846f
parent7fe365f5e0995515ca95aee10768d9e18bd817c3 (diff)
downloadlibassuan-c24914dca24b225f96dc99fb31ce8238c5251a02.tar.gz
* assuan-logging.c (_assuan_log_printf): New.
* assuan-domain-connect.c (LOG): Removed and replaced all callers by _assuan_log_printf. This is needed for C89 and gcc 2.95 which both don't have C99 style variable arg macros. * assuan-pipe-connect.c (LOG): Ditto. * assuan-socket-connect.c (LOG): Ditto. * assuan-socket.c[!_WIN32]: Fixed includes.
-rw-r--r--src/ChangeLog7
-rw-r--r--src/assuan-defs.h7
-rw-r--r--src/assuan-domain-connect.c42
-rw-r--r--src/assuan-logging.c24
-rw-r--r--src/assuan-pipe-connect.c22
-rw-r--r--src/assuan-socket-connect.c18
6 files changed, 71 insertions, 49 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index f373d4b..12c6293 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,12 @@
2004-11-24 Werner Koch <wk@g10code.com>
+ * assuan-logging.c (_assuan_log_printf): New.
+ * assuan-domain-connect.c (LOG): Removed and replaced all callers
+ by _assuan_log_printf. This is needed for C89 and gcc 2.95 which
+ both don't have C99 style variable arg macros.
+ * assuan-pipe-connect.c (LOG): Ditto.
+ * assuan-socket-connect.c (LOG): Ditto.
+
* assuan-socket.c[!_WIN32]: Fixed includes.
2004-11-23 Timo Schulz <twoaday@g10code.com>
diff --git a/src/assuan-defs.h b/src/assuan-defs.h
index 1b6e18d..80818e9 100644
--- a/src/assuan-defs.h
+++ b/src/assuan-defs.h
@@ -208,6 +208,13 @@ void _assuan_log_sanitized_string (const char *string);
/*-- assuan-logging.c --*/
void _assuan_set_default_log_stream (FILE *fp);
+void _assuan_log_printf (const char *format, ...)
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5 )
+ __attribute__ ((format (printf,1,2)))
+#endif
+ ;
+
+
/*-- assuan-io.c --*/
ssize_t _assuan_simple_read (ASSUAN_CONTEXT ctx, void *buffer, size_t size);
ssize_t _assuan_simple_write (ASSUAN_CONTEXT ctx, const void *buffer,
diff --git a/src/assuan-domain-connect.c b/src/assuan-domain-connect.c
index 944768a..1ac5f18 100644
--- a/src/assuan-domain-connect.c
+++ b/src/assuan-domain-connect.c
@@ -54,15 +54,6 @@
# endif
#endif
-#ifdef _WIN32
-#warning implement this
-#define LOG(format, args...)
-#else
-#define LOG(format, args...) \
- fprintf (assuan_get_assuan_log_stream (), "%s%s" format , \
- assuan_get_assuan_log_prefix (), \
- assuan_get_assuan_log_prefix ()? ": ":"", ## args)
-#endif
static void
do_deinit (assuan_context_t ctx)
@@ -186,15 +177,15 @@ domain_reader (assuan_context_t ctx, void *buf, size_t buflen)
/* XXX: Arg. Not from whom we expected! What do we want to
do? Should we just ignore it? We shall do the latter
for the moment. */
- LOG ("Not setup to receive messages from: `%s'.",
- ((struct sockaddr_un *) msg.msg_name)->sun_path);
+ _assuan_log_printf ("not setup to receive messages from `%s'\n",
+ ((struct sockaddr_un *) msg.msg_name)->sun_path);
goto start;
}
len = recvmsg (ctx->inbound.fd, &msg, 0);
if (len < 0)
{
- LOG ("domain_reader: %s\n", strerror (errno));
+ _assuan_log_printf ("domain_reader: %s\n", strerror (errno));
return -1;
}
@@ -210,7 +201,7 @@ domain_reader (assuan_context_t ctx, void *buf, size_t buflen)
sizeof (int) * (ctx->pendingfdscount + 1));
if (! tmp)
{
- LOG ("domain_reader: %s\n", strerror (errno));
+ _assuan_log_printf ("domain_reader: %s\n", strerror (errno));
return -1;
}
@@ -218,7 +209,7 @@ domain_reader (assuan_context_t ctx, void *buf, size_t buflen)
ctx->pendingfds[ctx->pendingfdscount++]
= *(int *) CMSG_DATA (&cmsg.hdr);
- LOG ("Received file descriptor %d from peer.\n",
+ _assuan_log_printf ("received file descriptor %d from peer\n",
ctx->pendingfds[ctx->pendingfdscount - 1]);
}
@@ -268,7 +259,7 @@ domain_writer (assuan_context_t ctx, const void *buf, size_t buflen)
len = sendmsg (ctx->outbound.fd, &msg, 0);
if (len < 0)
- LOG ("domain_writer: %s\n", strerror (errno));
+ _assuan_log_printf ("domain_writer: %s\n", strerror (errno));
#else
int len;
@@ -313,7 +304,7 @@ domain_sendfd (assuan_context_t ctx, int fd)
len = sendmsg (ctx->outbound.fd, &msg, 0);
if (len < 0)
{
- LOG ("domain_sendfd: %s\n", strerror (errno));
+ _assuan_log_printf ("domain_sendfd: %s\n", strerror (errno));
return ASSUAN_General_Error;
}
else
@@ -329,7 +320,7 @@ domain_receivefd (assuan_context_t ctx, int *fd)
#ifndef _WIN32
if (ctx->pendingfds == 0)
{
- LOG ("No pending file descriptors!\n");
+ _assuan_log_printf ("no pending file descriptors!\n");
return ASSUAN_General_Error;
}
@@ -387,14 +378,14 @@ _assuan_domain_init (assuan_context_t *r_ctx, int rendezvousfd, pid_t peer)
fd = _assuan_sock_new (PF_LOCAL, SOCK_DGRAM, 0);
if (fd == -1)
{
- LOG ("can't create socket: %s\n", strerror (errno));
+ _assuan_log_printf ("can't create socket: %s\n", strerror (errno));
_assuan_release_context (ctx);
return ASSUAN_General_Error;
}
-
+
ctx->inbound.fd = fd;
ctx->outbound.fd = fd;
-
+
/* And the io buffers. */
ctx->io = &io;
@@ -419,7 +410,7 @@ _assuan_domain_init (assuan_context_t *r_ctx, int rendezvousfd, pid_t peer)
p = tmpnam (buf);
if (! p)
{
- LOG ("cannot determine an appropriate temporary file "
+ _assuan_log_printf ("cannot determine an appropriate temporary file "
"name. DoS in progress?\n");
_assuan_release_context (ctx);
_assuan_close (fd);
@@ -439,7 +430,7 @@ _assuan_domain_init (assuan_context_t *r_ctx, int rendezvousfd, pid_t peer)
if (err)
{
- LOG ("can't bind to `%s': %s\n", ctx->myaddr.sun_path,
+ _assuan_log_printf ("can't bind to `%s': %s\n", ctx->myaddr.sun_path,
strerror (errno));
_assuan_release_context (ctx);
_assuan_close (fd);
@@ -454,7 +445,7 @@ _assuan_domain_init (assuan_context_t *r_ctx, int rendezvousfd, pid_t peer)
fp = fdopen (rendezvousfd, "w+");
if (! fp)
{
- LOG ("can't open rendezvous port: %s\n", strerror (errno));
+ _assuan_log_printf ("can't open rendezvous port: %s\n", strerror (errno));
return ASSUAN_Connect_Failed;
}
@@ -496,10 +487,11 @@ assuan_domain_connect (assuan_context_t * r_ctx, int rendezvousfd, pid_t peer)
/* Initial handshake. */
aerr = _assuan_read_from_server (*r_ctx, &okay, &off);
if (aerr)
- LOG ("can't connect to server: %s\n", assuan_strerror (aerr));
+ _assuan_log_printf ("can't connect to server: %s\n",
+ assuan_strerror (aerr));
else if (okay != 1)
{
- LOG ("can't connect to server: `");
+ _assuan_log_printf ("can't connect to server: `");
_assuan_log_sanitized_string ((*r_ctx)->inbound.line);
fprintf (assuan_get_assuan_log_stream (), "'\n");
aerr = ASSUAN_Connect_Failed;
diff --git a/src/assuan-logging.c b/src/assuan-logging.c
index 5f42492..41ead32 100644
--- a/src/assuan-logging.c
+++ b/src/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.
*
@@ -21,6 +21,7 @@
#include "assuan-defs.h"
#include <stdio.h>
#include <string.h>
+#include <stdarg.h>
static char prefix_buffer[80];
static FILE *_assuan_log;
@@ -64,3 +65,24 @@ assuan_get_assuan_log_prefix (void)
{
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);
+}
diff --git a/src/assuan-pipe-connect.c b/src/assuan-pipe-connect.c
index 321582c..ce4dfc0 100644
--- a/src/assuan-pipe-connect.c
+++ b/src/assuan-pipe-connect.c
@@ -44,10 +44,6 @@
#define MAX_OPEN_FDS 20
#endif
-#define LOG(format, args...) \
- fprintf (assuan_get_assuan_log_stream (), "%s%s" format , \
- assuan_get_assuan_log_prefix (), \
- assuan_get_assuan_log_prefix ()? ": ":"", ## args)
static int
writen (int fd, const char *buffer, size_t length)
@@ -188,7 +184,8 @@ assuan_pipe_connect2 (assuan_context_t *ctx, const char *name, char *const argv[
{
if (dup2 (rp[1], STDOUT_FILENO) == -1)
{
- LOG ("dup2 failed in child: %s\n", strerror (errno));
+ _assuan_log_printf ("dup2 failed in child: %s\n",
+ strerror (errno));
_exit (4);
}
}
@@ -196,7 +193,8 @@ assuan_pipe_connect2 (assuan_context_t *ctx, const char *name, char *const argv[
{
if (dup2 (wp[0], STDIN_FILENO) == -1)
{
- LOG ("dup2 failed in child: %s\n", strerror (errno));
+ _assuan_log_printf ("dup2 failed in child: %s\n",
+ strerror (errno));
_exit (4);
}
}
@@ -214,12 +212,14 @@ assuan_pipe_connect2 (assuan_context_t *ctx, const char *name, char *const argv[
int fd = open ("/dev/null", O_WRONLY);
if (fd == -1)
{
- LOG ("can't open `/dev/null': %s\n", strerror (errno));
+ _assuan_log_printf ("can't open `/dev/null': %s\n",
+ strerror (errno));
_exit (4);
}
if (dup2 (fd, STDERR_FILENO) == -1)
{
- LOG ("dup2(dev/null, 2) failed: %s\n", strerror (errno));
+ _assuan_log_printf ("dup2(dev/null, 2) failed: %s\n",
+ strerror (errno));
_exit (4);
}
}
@@ -271,10 +271,12 @@ assuan_pipe_connect2 (assuan_context_t *ctx, const char *name, char *const argv[
err = _assuan_read_from_server (*ctx, &okay, &off);
if (err)
- LOG ("can't connect server: %s\n", assuan_strerror (err));
+ _assuan_log_printf ("can't connect server: %s\n",
+ assuan_strerror (err));
else if (okay != 1)
{
- LOG ("can't connect server: `%s'\n", (*ctx)->inbound.line);
+ _assuan_log_printf ("can't connect server: `%s'\n",
+ (*ctx)->inbound.line);
err = ASSUAN_Connect_Failed;
}
}
diff --git a/src/assuan-socket-connect.c b/src/assuan-socket-connect.c
index 3639579..3a88e5f 100644
--- a/src/assuan-socket-connect.c
+++ b/src/assuan-socket-connect.c
@@ -53,16 +53,6 @@
#endif
-#ifdef _WIN32
-#warning implement it
-#define LOG(format, args...)
-#else
-#define LOG(format, args...) \
- fprintf (assuan_get_assuan_log_stream (), "%s%s" format , \
- assuan_get_assuan_log_prefix (), \
- assuan_get_assuan_log_prefix ()? ": ":"", ## args)
-#endif
-
static int
do_finish (ASSUAN_CONTEXT ctx)
{
@@ -116,7 +106,7 @@ assuan_socket_connect (ASSUAN_CONTEXT *r_ctx,
fd = _assuan_sock_new (PF_LOCAL, SOCK_STREAM, 0);
if (fd == -1)
{
- LOG ("can't create socket: %s\n", strerror (errno));
+ _assuan_log_printf ("can't create socket: %s\n", strerror (errno));
_assuan_release_context (ctx);
return ASSUAN_General_Error;
}
@@ -129,7 +119,8 @@ assuan_socket_connect (ASSUAN_CONTEXT *r_ctx,
if (_assuan_sock_connect (fd, (struct sockaddr *) &srvr_addr, len) == -1)
{
- LOG ("can't connect to `%s': %s\n", name, strerror (errno));
+ _assuan_log_printf ("can't connect to `%s': %s\n",
+ name, strerror (errno));
_assuan_release_context (ctx);
_assuan_close (fd);
return ASSUAN_Connect_Failed;
@@ -145,7 +136,8 @@ assuan_socket_connect (ASSUAN_CONTEXT *r_ctx,
err = _assuan_read_from_server (ctx, &okay, &off);
if (err)
- LOG ("can't connect to server: %s\n", assuan_strerror (err));
+ _assuan_log_printf ("can't connect to server: %s\n",
+ assuan_strerror (err));
else if (okay != 1)
{
/*LOG ("can't connect to server: `");*/