1 /*
2  * Replace %m by system error message.
3  *
4  * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands.
5  */
6
7#ifndef lint
8static char sccsid[] = "@(#) percent_m.c 1.1 94/12/28 17:42:37";
9#endif
10
11#include <stdio.h>
12#include <errno.h>
13#include <string.h>
14
15extern int errno;
16#ifndef SYS_ERRLIST_DEFINED
17extern char *sys_errlist[];
18extern int sys_nerr;
19#endif
20
21#include "mystdarg.h"
22
23char   *percent_m(obuf, ibuf)
24char   *obuf;
25char   *ibuf;
26{
27    char   *bp = obuf;
28    char   *cp = ibuf;
29
30    while (*bp = *cp)
31	if (*cp == '%' && cp[1] == 'm') {
32	    if (errno < sys_nerr && errno > 0) {
33		strcpy(bp, sys_errlist[errno]);
34	    } else {
35		sprintf(bp, "Unknown error %d", errno);
36	    }
37	    bp += strlen(bp);
38	    cp += 2;
39	} else {
40	    bp++, cp++;
41	}
42    return (obuf);
43}
44