/*
 * vfprintf — форматированный вывод в поток: vsprintf (из z80.lib SDCC)
 * в статический буфер, затем fwrite (тот сам разруливает консоль/
 * буфер).  Не реентерабельно (один статический буфер) — на
 * однопоточном Z80 не проблема.  Результат длиннее 255 символов —
 * усечение ответственность вызывающего (как у cprintf).
 */

#include <stdarg.h>
#include "_file.h"

#define VFPRINTF_BUF_SIZE 256

static char vfp_buf[VFPRINTF_BUF_SIZE];

int vfprintf(FILE *fp, const char *fmt, va_list ap)
{
    int n = vsprintf(vfp_buf, fmt, ap);
    if (n > 0) {
        if (fwrite(vfp_buf, 1, (size_t)n, fp) != (size_t)n) return EOF;
    }
    return n;
}
