[util] Detect genisoimage as mkisofs replacement
[gpxe.git] / src / hci / mucurses / clear.c
blob79b296cfe3e1902004bfd02235aa1d02d787c331
1 #include <curses.h>
2 #include "mucurses.h"
3 #include "cursor.h"
5 /** @file
7 * MuCurses clearing functions
9 */
11 FILE_LICENCE ( GPL2_OR_LATER );
13 /**
14 * Clear a window to the bottom from current cursor position
16 * @v *win subject window
17 * @ret rc return status code
19 int wclrtobot ( WINDOW *win ) {
20 struct cursor_pos pos;
22 _store_curs_pos( win, &pos );
23 do {
24 _wputc( win, ' ', WRAP );
25 } while ( win->curs_y + win->curs_x );
26 _restore_curs_pos( win, &pos );
28 return OK;
31 /**
32 * Clear a window to the end of the current line
34 * @v *win subject window
35 * @ret rc return status code
37 int wclrtoeol ( WINDOW *win ) {
38 struct cursor_pos pos;
40 _store_curs_pos( win, &pos );
41 while ( ( win->curs_y - pos.y ) == 0 ) {
42 _wputc( win, ' ', WRAP );
44 _restore_curs_pos( win, &pos );
46 return OK;
49 /**
50 * Delete character under the cursor in a window
52 * @v *win subject window
53 * @ret rc return status code
55 int wdelch ( WINDOW *win ) {
56 _wputc( win, ' ', NOWRAP );
57 _wcursback( win );
59 return OK;
62 /**
63 * Delete line under a window's cursor
65 * @v *win subject window
66 * @ret rc return status code
68 int wdeleteln ( WINDOW *win ) {
69 struct cursor_pos pos;
71 _store_curs_pos( win, &pos );
72 /* let's just set the cursor to the beginning of the line and
73 let wclrtoeol do the work :) */
74 wmove( win, win->curs_y, 0 );
75 wclrtoeol( win );
76 _restore_curs_pos( win, &pos );
77 return OK;
80 /**
81 * Completely clear a window
83 * @v *win subject window
84 * @ret rc return status code
86 int werase ( WINDOW *win ) {
87 wmove( win, 0, 0 );
88 wclrtobot( win );
89 return OK;