diff options
Diffstat (limited to 'contrib/tcp_wrappers/percent_m.c')
-rw-r--r-- | contrib/tcp_wrappers/percent_m.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/contrib/tcp_wrappers/percent_m.c b/contrib/tcp_wrappers/percent_m.c new file mode 100644 index 000000000000..bb11b22dd81f --- /dev/null +++ b/contrib/tcp_wrappers/percent_m.c @@ -0,0 +1,43 @@ + /* + * Replace %m by system error message. + * + * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands. + */ + +#ifndef lint +static char sccsid[] = "@(#) percent_m.c 1.1 94/12/28 17:42:37"; +#endif + +#include <stdio.h> +#include <errno.h> +#include <string.h> + +extern int errno; +#ifndef SYS_ERRLIST_DEFINED +extern char *sys_errlist[]; +extern int sys_nerr; +#endif + +#include "mystdarg.h" + +char *percent_m(obuf, ibuf) +char *obuf; +char *ibuf; +{ + char *bp = obuf; + char *cp = ibuf; + + while (*bp = *cp) + if (*cp == '%' && cp[1] == 'm') { + if (errno < sys_nerr && errno > 0) { + strcpy(bp, sys_errlist[errno]); + } else { + sprintf(bp, "Unknown error %d", errno); + } + bp += strlen(bp); + cp += 2; + } else { + bp++, cp++; + } + return (obuf); +} |