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