1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #include <curses.h>
- #include <stdio.h>
- #include <stddef.h>
- #include <ipxe/vsprintf.h>
- #include "mucurses.h"
-
- /** @file
- *
- * MuCurses printing functions
- *
- */
-
- FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
-
- /**
- * Add a single-byte character and rendition to a window and advance
- * the cursor
- *
- * @v *win window to be rendered in
- * @v ch character to be added at cursor
- * @ret rc return status code
- */
- int waddch ( WINDOW *win, const chtype ch ) {
- _wputch( win, ch, WRAP );
- return OK;
- }
-
- /**
- * Add string of single-byte characters to a window
- *
- * @v *win window to be rendered in
- * @v *str standard c-style string
- * @v n max number of chars from string to render
- * @ret rc return status code
- */
- int waddnstr ( WINDOW *win, const char *str, int n ) {
- _wputstr( win, str, WRAP, n );
- return OK;
- }
-
- struct 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;
-
- wctx.win = win;
- wctx.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;
- }
|