From 53943a002265d8e2b6a887eaa497a01840675693 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Tue, 2 May 2000 16:10:04 +0000 Subject: [PATCH] Defined format specifier `%M' which behaves as `%m', but takes the error code as an argument. Use it in socket hooks where we really shouldn't rely on errno containing the right value or even existing. --- lib/printf.c | 3 +++ proto/bgp/bgp.c | 5 ++++- proto/rip/rip.c | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/printf.c b/lib/printf.c index 64fcf728..a668aeaf 100644 --- a/lib/printf.c +++ b/lib/printf.c @@ -198,6 +198,9 @@ int bvsnprintf(char *buf, int size, const char *fmt, va_list args) case 'm': s = strerror(errno); goto str; + case 'M': + s = strerror(va_arg(args, int)); + goto str; case 's': s = va_arg(args, char *); if (!s) diff --git a/proto/bgp/bgp.c b/proto/bgp/bgp.c index 4a68f04b..41081f26 100644 --- a/proto/bgp/bgp.c +++ b/proto/bgp/bgp.c @@ -158,7 +158,10 @@ bgp_sock_err(sock *sk, int err) struct bgp_conn *conn = sk->data; struct bgp_proto *p = conn->bgp; - BGP_TRACE(D_EVENTS, "Connection closed (socket error %d)", err); + if (err) + BGP_TRACE(D_EVENTS, "Connection lost (%M)", err); + else + BGP_TRACE(D_EVENTS, "Connection closed"); switch (conn->state) { case BS_CONNECT: diff --git a/proto/rip/rip.c b/proto/rip/rip.c index 2826de7f..f9a44835 100644 --- a/proto/rip/rip.c +++ b/proto/rip/rip.c @@ -75,7 +75,7 @@ rip_tx_err( sock *s, int err ) { struct rip_connection *c = s->data; struct proto *p = c->proto; - log( L_ERR "Unexpected error at rip transmit: %m" ); + log( L_ERR "Unexpected error at rip transmit: %M", err ); } static int