source: bootcd/isolinux/syslinux-6.03/gpxe/src/hci/mucurses/print.c

Last change on this file was e16e8f2, checked in by Edwin Eefting <edwin@datux.nl>, 3 years ago

bootstuff

  • Property mode set to 100644
File size: 1.7 KB
Line 
1#include <curses.h>
2#include <stdio.h>
3#include <stddef.h>
4#include <gpxe/vsprintf.h>
5#include "mucurses.h"
6
7/** @file
8 *
9 * MuCurses printing functions
10 *
11 */
12
13FILE_LICENCE ( GPL2_OR_LATER );
14
15/**
16 * Add a single-byte character and rendition to a window and advance
17 * the cursor
18 *
19 * @v *win      window to be rendered in
20 * @v ch        character to be added at cursor
21 * @ret rc      return status code
22 */
23int waddch ( WINDOW *win, const chtype ch ) {
24        _wputch( win, ch, WRAP );
25        return OK;
26}
27
28/**
29 * Add string of single-byte characters to a window
30 *
31 * @v *win      window to be rendered in
32 * @v *str      standard c-style string
33 * @v n         max number of chars from string to render
34 * @ret rc      return status code
35 */
36int waddnstr ( WINDOW *win, const char *str, int n ) {
37        _wputstr( win, str, WRAP, n );
38        return OK;
39}
40
41struct printw_context {
42        struct printf_context ctx;
43        WINDOW *win;
44};
45
46static void _printw_handler ( struct printf_context *ctx, unsigned int c ) {
47        struct printw_context *wctx =
48                container_of ( ctx, struct printw_context, ctx );
49
50        _wputch( wctx->win, c | wctx->win->attrs, WRAP );
51}
52
53/**
54 * Print formatted output in a window
55 *
56 * @v *win      subject window
57 * @v *fmt      formatted string
58 * @v varglist  argument list
59 * @ret rc      return status code
60 */
61int vw_printw ( WINDOW *win, const char *fmt, va_list varglist ) {
62        struct printw_context wctx;
63
64        wctx.win = win;
65        wctx.ctx.handler = _printw_handler;
66        vcprintf ( &(wctx.ctx), fmt, varglist );
67        return OK;
68}
69
70/**
71 * Print formatted output to a window
72 *
73 * @v *win      subject window
74 * @v *fmt      formatted string
75 * @v ...       string arguments
76 * @ret rc      return status code
77 */
78int wprintw ( WINDOW *win, const char *fmt, ... ) {
79        va_list args;
80        int i;
81
82        va_start ( args, fmt );
83        i = vw_printw ( win, fmt, args );
84        va_end ( args );
85        return i;
86}
Note: See TracBrowser for help on using the repository browser.