da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * Copyright 2001 Sun Microsystems, Inc. All rights reserved.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * Use is subject to license terms.
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin /*
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * Replace %m by system error message.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef lint
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinstatic char sccsid[] = "@(#) percent_m.c 1.1 94/12/28 17:42:37";
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <stdio.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <errno.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <string.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern int errno;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include "mystdarg.h"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinchar *percent_m(obuf, ibuf)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinchar *obuf;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinchar *ibuf;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char *bp = obuf;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char *cp = ibuf;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin while (*bp = *cp)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (*cp == '%' && cp[1] == 'm') {
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin strcpy(bp, strerror(errno));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin bp += strlen(bp);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin cp += 2;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin } else {
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin bp++, cp++;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin }
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin return (obuf);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin}
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz