From c24914dca24b225f96dc99fb31ce8238c5251a02 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 24 Nov 2004 16:49:32 +0000 Subject: * 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. --- src/ChangeLog | 7 +++++++ src/assuan-defs.h | 7 +++++++ src/assuan-domain-connect.c | 42 +++++++++++++++++------------------------- src/assuan-logging.c | 24 +++++++++++++++++++++++- src/assuan-pipe-connect.c | 22 ++++++++++++---------- src/assuan-socket-connect.c | 18 +++++------------- 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 + * 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 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 #include +#include 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: `");*/ -- cgit v1.2.1