libpayload: Rename PDCurses-3.4 to PDCurses
Change-Id: If881ec130833c7e7e62caa3d31e350a531f5bc8e Signed-off-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Reviewed-on: http://review.coreboot.org/12398 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
256
payloads/libpayload/curses/PDCurses/pdcurses/kernel.c
Normal file
256
payloads/libpayload/curses/PDCurses/pdcurses/kernel.c
Normal file
@ -0,0 +1,256 @@
|
||||
/* Public Domain Curses */
|
||||
|
||||
#include <curspriv.h>
|
||||
|
||||
RCSID("$Id: kernel.c,v 1.78 2008/07/15 17:13:26 wmcbrine Exp $")
|
||||
|
||||
/*man-start**************************************************************
|
||||
|
||||
Name: kernel
|
||||
|
||||
Synopsis:
|
||||
int def_prog_mode(void);
|
||||
int def_shell_mode(void);
|
||||
int reset_prog_mode(void);
|
||||
int reset_shell_mode(void);
|
||||
int resetty(void);
|
||||
int savetty(void);
|
||||
int ripoffline(int line, int (*init)(WINDOW *, int));
|
||||
int curs_set(int visibility);
|
||||
int napms(int ms);
|
||||
|
||||
int draino(int ms);
|
||||
int resetterm(void);
|
||||
int fixterm(void);
|
||||
int saveterm(void);
|
||||
|
||||
Description:
|
||||
def_prog_mode() and def_shell_mode() save the current terminal
|
||||
modes as the "program" (in curses) or "shell" (not in curses)
|
||||
state for use by the reset_prog_mode() and reset_shell_mode()
|
||||
functions. This is done automatically by initscr().
|
||||
|
||||
reset_prog_mode() and reset_shell_mode() restore the terminal to
|
||||
"program" (in curses) or "shell" (not in curses) state. These
|
||||
are done automatically by endwin() and doupdate() after an
|
||||
endwin(), so they would normally not be called before these
|
||||
functions.
|
||||
|
||||
savetty() and resetty() save and restore the state of the
|
||||
terminal modes. savetty() saves the current state in a buffer,
|
||||
and resetty() restores the state to what it was at the last call
|
||||
to savetty().
|
||||
|
||||
curs_set() alters the appearance of the cursor. A visibility of
|
||||
0 makes it disappear; 1 makes it appear "normal" (usually an
|
||||
underline) and 2 makes it "highly visible" (usually a block).
|
||||
|
||||
ripoffline() reduces the size of stdscr by one line. If the
|
||||
"line" parameter is positive, the line is removed from the top
|
||||
of the screen; if negative, from the bottom. Up to 5 lines can
|
||||
be ripped off stdscr by calling ripoffline() repeatedly. The
|
||||
function argument, init, is called from within initscr() or
|
||||
newterm(), so ripoffline() must be called before either of these
|
||||
functions. The init function receives a pointer to a one-line
|
||||
WINDOW, and the width of the window. Calling ripoffline() with a
|
||||
NULL init function pointer is an error.
|
||||
|
||||
napms() suspends the program for the specified number of
|
||||
milliseconds. draino() is an archaic equivalent.
|
||||
|
||||
resetterm(), fixterm() and saveterm() are archaic equivalents
|
||||
for reset_shell_mode(), reset_prog_mode() and def_prog_mode(),
|
||||
respectively.
|
||||
|
||||
Return Value:
|
||||
All functions return OK on success and ERR on error, except
|
||||
curs_set(), which returns the previous visibility.
|
||||
|
||||
Portability X/Open BSD SYS V
|
||||
def_prog_mode Y Y Y
|
||||
def_shell_mode Y Y Y
|
||||
reset_prog_mode Y Y Y
|
||||
reset_shell_mode Y Y Y
|
||||
resetty Y Y Y
|
||||
savetty Y Y Y
|
||||
ripoffline Y - 3.0
|
||||
curs_set Y - 3.0
|
||||
napms Y Y Y
|
||||
draino -
|
||||
resetterm -
|
||||
fixterm -
|
||||
saveterm -
|
||||
|
||||
**man-end****************************************************************/
|
||||
|
||||
#include <string.h>
|
||||
|
||||
RIPPEDOFFLINE linesripped[5];
|
||||
char linesrippedoff = 0;
|
||||
|
||||
static struct cttyset
|
||||
{
|
||||
bool been_set;
|
||||
SCREEN saved;
|
||||
} ctty[3];
|
||||
|
||||
enum { PDC_SH_TTY, PDC_PR_TTY, PDC_SAVE_TTY };
|
||||
|
||||
static void _save_mode(int i)
|
||||
{
|
||||
ctty[i].been_set = TRUE;
|
||||
|
||||
memcpy(&(ctty[i].saved), SP, sizeof(SCREEN));
|
||||
|
||||
PDC_save_screen_mode(i);
|
||||
}
|
||||
|
||||
static int _restore_mode(int i)
|
||||
{
|
||||
if (ctty[i].been_set == TRUE)
|
||||
{
|
||||
memcpy(SP, &(ctty[i].saved), sizeof(SCREEN));
|
||||
|
||||
if (ctty[i].saved.raw_out)
|
||||
raw();
|
||||
|
||||
PDC_restore_screen_mode(i);
|
||||
|
||||
if ((LINES != ctty[i].saved.lines) ||
|
||||
(COLS != ctty[i].saved.cols))
|
||||
resize_term(ctty[i].saved.lines, ctty[i].saved.cols);
|
||||
|
||||
PDC_curs_set(ctty[i].saved.visibility);
|
||||
|
||||
PDC_gotoyx(ctty[i].saved.cursrow, ctty[i].saved.curscol);
|
||||
}
|
||||
|
||||
return ctty[i].been_set ? OK : ERR;
|
||||
}
|
||||
|
||||
int def_prog_mode(void)
|
||||
{
|
||||
PDC_LOG(("def_prog_mode() - called\n"));
|
||||
|
||||
_save_mode(PDC_PR_TTY);
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
int def_shell_mode(void)
|
||||
{
|
||||
PDC_LOG(("def_shell_mode() - called\n"));
|
||||
|
||||
_save_mode(PDC_SH_TTY);
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
int reset_prog_mode(void)
|
||||
{
|
||||
PDC_LOG(("reset_prog_mode() - called\n"));
|
||||
|
||||
_restore_mode(PDC_PR_TTY);
|
||||
PDC_reset_prog_mode();
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
int reset_shell_mode(void)
|
||||
{
|
||||
PDC_LOG(("reset_shell_mode() - called\n"));
|
||||
|
||||
_restore_mode(PDC_SH_TTY);
|
||||
PDC_reset_shell_mode();
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
int resetty(void)
|
||||
{
|
||||
PDC_LOG(("resetty() - called\n"));
|
||||
|
||||
return _restore_mode(PDC_SAVE_TTY);
|
||||
}
|
||||
|
||||
int savetty(void)
|
||||
{
|
||||
PDC_LOG(("savetty() - called\n"));
|
||||
|
||||
_save_mode(PDC_SAVE_TTY);
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
int curs_set(int visibility)
|
||||
{
|
||||
int ret_vis;
|
||||
|
||||
PDC_LOG(("curs_set() - called: visibility=%d\n", visibility));
|
||||
|
||||
if ((visibility < 0) || (visibility > 2))
|
||||
return ERR;
|
||||
|
||||
ret_vis = PDC_curs_set(visibility);
|
||||
|
||||
/* If the cursor is changing from invisible to visible, update
|
||||
its position */
|
||||
|
||||
if (visibility && !ret_vis)
|
||||
PDC_gotoyx(SP->cursrow, SP->curscol);
|
||||
|
||||
return ret_vis;
|
||||
}
|
||||
|
||||
int napms(int ms)
|
||||
{
|
||||
PDC_LOG(("napms() - called: ms=%d\n", ms));
|
||||
|
||||
if (ms)
|
||||
PDC_napms(ms);
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
int ripoffline(int line, int (*init)(WINDOW *, int))
|
||||
{
|
||||
PDC_LOG(("ripoffline() - called: line=%d\n", line));
|
||||
|
||||
if (linesrippedoff < 5 && line && init)
|
||||
{
|
||||
linesripped[(int)linesrippedoff].line = line;
|
||||
linesripped[(int)linesrippedoff++].init = init;
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
return ERR;
|
||||
}
|
||||
|
||||
int draino(int ms)
|
||||
{
|
||||
PDC_LOG(("draino() - called\n"));
|
||||
|
||||
return napms(ms);
|
||||
}
|
||||
|
||||
int resetterm(void)
|
||||
{
|
||||
PDC_LOG(("resetterm() - called\n"));
|
||||
|
||||
return reset_shell_mode();
|
||||
}
|
||||
|
||||
int fixterm(void)
|
||||
{
|
||||
PDC_LOG(("fixterm() - called\n"));
|
||||
|
||||
return reset_prog_mode();
|
||||
}
|
||||
|
||||
int saveterm(void)
|
||||
{
|
||||
PDC_LOG(("saveterm() - called\n"));
|
||||
|
||||
return def_prog_mode();
|
||||
}
|
Reference in New Issue
Block a user