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
15#ifndef SYS_ERRLIST_DEFINED
16extern char *sys_errlist[];
17extern int sys_nerr;
18#endif
19
20#include "mystdarg.h"
21
22char   *percent_m(char *obuf, char *ibuf)
23{
24    char   *bp = obuf;
25    char   *cp = ibuf;
26
27    while (*bp = *cp)
28	if (*cp == '%' && cp[1] == 'm') {
29	    if (errno < sys_nerr && errno > 0) {
30		strcpy(bp, sys_errlist[errno]);
31	    } else {
32		sprintf(bp, "Unknown error %d", errno);
33	    }
34	    bp += strlen(bp);
35	    cp += 2;
36	} else {
37	    bp++, cp++;
38	}
39    return (obuf);
40}
41