1284285Sjkim /*
2110010Smarkm  * Replace %m by system error message.
3110010Smarkm  *
4160819Ssimon  * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands.
5110010Smarkm  */
6110010Smarkm
7110010Smarkm#ifndef lint
8110010Smarkmstatic char sccsid[] = "@(#) percent_m.c 1.1 94/12/28 17:42:37";
9110010Smarkm#endif
10110010Smarkm
11110010Smarkm#include <stdio.h>
12110010Smarkm#include <errno.h>
13110010Smarkm#include <string.h>
14110010Smarkm
15110010Smarkmextern int errno;
16110010Smarkm#ifndef SYS_ERRLIST_DEFINED
17110010Smarkmextern char *sys_errlist[];
18110010Smarkmextern int sys_nerr;
19110010Smarkm#endif
20215698Ssimon
21215698Ssimon#include "mystdarg.h"
22215698Ssimon
23215698Ssimonchar   *percent_m(obuf, ibuf)
24215698Ssimonchar   *obuf;
25110010Smarkmchar   *ibuf;
26110010Smarkm{
27110010Smarkm    char   *bp = obuf;
28110010Smarkm    char   *cp = ibuf;
29110010Smarkm
30110010Smarkm    while (*bp = *cp)
31110010Smarkm	if (*cp == '%' && cp[1] == 'm') {
32110010Smarkm	    if (errno < sys_nerr && errno > 0) {
33110010Smarkm		strcpy(bp, sys_errlist[errno]);
34110010Smarkm	    } else {
35110010Smarkm		sprintf(bp, "Unknown error %d", errno);
36110010Smarkm	    }
37110010Smarkm	    bp += strlen(bp);
38110010Smarkm	    cp += 2;
39110010Smarkm	} else {
40110010Smarkm	    bp++, cp++;
41276864Sjkim	}
42276864Sjkim    return (obuf);
43110010Smarkm}
44110010Smarkm