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.
This commit is contained in:
Martin Mares 2000-05-02 16:10:04 +00:00
parent 85368cd4b7
commit 53943a0022
3 changed files with 8 additions and 2 deletions

View file

@ -198,6 +198,9 @@ int bvsnprintf(char *buf, int size, const char *fmt, va_list args)
case 'm': case 'm':
s = strerror(errno); s = strerror(errno);
goto str; goto str;
case 'M':
s = strerror(va_arg(args, int));
goto str;
case 's': case 's':
s = va_arg(args, char *); s = va_arg(args, char *);
if (!s) if (!s)

View file

@ -158,7 +158,10 @@ bgp_sock_err(sock *sk, int err)
struct bgp_conn *conn = sk->data; struct bgp_conn *conn = sk->data;
struct bgp_proto *p = conn->bgp; 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) switch (conn->state)
{ {
case BS_CONNECT: case BS_CONNECT:

View file

@ -75,7 +75,7 @@ rip_tx_err( sock *s, int err )
{ {
struct rip_connection *c = s->data; struct rip_connection *c = s->data;
struct proto *p = c->proto; 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 static int