- separated curses.c out into separate source files to optimise

library use later on
- some small mods to existing functions
This commit is contained in:
Dan Lynch
2006-06-08 17:23:37 +00:00
parent 1697c78848
commit ad1aca0634
12 changed files with 754 additions and 0 deletions

52
src/hci/mucurses/print.c Normal file
View File

@@ -0,0 +1,52 @@
#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;
}