Есть функция mkmsg(), принимающая переменное число параметров. Что-то вроде такой:char *mkmsg(char *fmt, ...) {
char str[NAME_MAX+1];
va_list ap;
...
va_start(ap, fmt);
vsnprintf(str, NAME_MAX, fmt, ap);
va_end(ap);
...
return strdup(str);
}
Всем хороша, только вот каждый раз перед ее вызовом приходится дергать free() для предыдущего вызова, типа так:
char *msg;
...
strlen(msg = mkmsg("msg1"));
free(msg);
strlen(msg = mkmsg("msg2"));
решил написать обертку, типа такой:
char *mkmsg2(char *msg, char *fmt, ...) {
char *str;
va_list ap;
...
if (msg)
free(msg);
str = <а тут хочу вызвать оригинальную mkmsg() и передать ей остальные параметры>
return str;
}
Подскажите, плз., как тут выкрутиться не переписывая mkmsg()