12aef6930SMark Murray /* 22aef6930SMark Murray * Replace %m by system error message. 32aef6930SMark Murray * 42aef6930SMark Murray * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands. 52aef6930SMark Murray */ 62aef6930SMark Murray 72aef6930SMark Murray #ifndef lint 82aef6930SMark Murray static char sccsid[] = "@(#) percent_m.c 1.1 94/12/28 17:42:37"; 92aef6930SMark Murray #endif 102aef6930SMark Murray 112aef6930SMark Murray #include <stdio.h> 122aef6930SMark Murray #include <errno.h> 132aef6930SMark Murray #include <string.h> 142aef6930SMark Murray 152aef6930SMark Murray #ifndef SYS_ERRLIST_DEFINED 162aef6930SMark Murray extern char *sys_errlist[]; 172aef6930SMark Murray extern int sys_nerr; 182aef6930SMark Murray #endif 192aef6930SMark Murray 202aef6930SMark Murray #include "mystdarg.h" 212aef6930SMark Murray percent_m(char * obuf,char * ibuf)22*14f102eaSEd Mastechar *percent_m(char *obuf, char *ibuf) 232aef6930SMark Murray { 242aef6930SMark Murray char *bp = obuf; 252aef6930SMark Murray char *cp = ibuf; 262aef6930SMark Murray 272aef6930SMark Murray while (*bp = *cp) 282aef6930SMark Murray if (*cp == '%' && cp[1] == 'm') { 292aef6930SMark Murray if (errno < sys_nerr && errno > 0) { 302aef6930SMark Murray strcpy(bp, sys_errlist[errno]); 312aef6930SMark Murray } else { 322aef6930SMark Murray sprintf(bp, "Unknown error %d", errno); 332aef6930SMark Murray } 342aef6930SMark Murray bp += strlen(bp); 352aef6930SMark Murray cp += 2; 362aef6930SMark Murray } else { 372aef6930SMark Murray bp++, cp++; 382aef6930SMark Murray } 392aef6930SMark Murray return (obuf); 402aef6930SMark Murray } 41