david/ipxe
david
/
ipxe
Archived
1
0
Fork 0
This repository has been archived on 2020-12-06. You can view files and clone it, but cannot push or open issues or pull requests.
ipxe/src/hci/mucurses/print.c

53 lines
1.0 KiB
C
Raw Normal View History

#include <curses.h>
#include <vsprintf.h>
#include <stddef.h>
#include "core.h"
static printw_context {
struct printf_context ctx;
WINDOW *win;
};
static void _printw_handler ( struct printf_context *ctx, unsigned int c ) {
struct printw_context *wctx =
container_of ( ctx, struct printw_context, ctx );
_wputch( wctx->win, c | wctx->win->attrs, WRAP );
}
/**
* Print formatted output in a window
*
* @v *win subject window
* @v *fmt formatted string
* @v varglist argument list
* @ret rc return status code
*/
int vw_printw ( WINDOW *win, const char *fmt, va_list varglist ) {
struct printw_context wctx = {
.win = win,
.ctx = { .handler = _printw_handler, },
};
vcprintf ( &(wctx.ctx), fmt, varglist );
return OK;
}
/**
* Print formatted output to a window
*
* @v *win subject window
* @v *fmt formatted string
* @v ... string arguments
* @ret rc return status code
*/
int wprintw ( WINDOW *win, const char *fmt, ... ) {
va_list args;
int i;
va_start ( args, fmt );
i = vw_printw ( win, fmt, args );
va_end ( args );
return i;
}