32 lines
541 B
C
32 lines
541 B
C
/*
|
|
* Copyright © 2021, Keith Packard <keithp@keithp.com>
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#include "picolibc-hooks.h"
|
|
|
|
struct cb_bits {
|
|
FILE f;
|
|
cbprintf_cb out;
|
|
void *ctx;
|
|
};
|
|
|
|
static int cbputc(char c, FILE *_s)
|
|
{
|
|
struct cb_bits *s = (struct cb_bits *) _s;
|
|
|
|
(*s->out) (c, s->ctx);
|
|
return 0;
|
|
}
|
|
|
|
int cbvprintf(cbprintf_cb out, void *ctx, const char *fp, va_list ap)
|
|
{
|
|
struct cb_bits s = {
|
|
.f = FDEV_SETUP_STREAM(cbputc, NULL, NULL, _FDEV_SETUP_WRITE),
|
|
.out = out,
|
|
.ctx = ctx,
|
|
};
|
|
return vfprintf(&s.f, fp, ap);
|
|
}
|