/* * Copyright © 2021, Keith Packard * * 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); }