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>
		
			
				
	
	
		
			209 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			209 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* Public Domain Curses */
 | 
						|
 | 
						|
#include <curspriv.h>
 | 
						|
 | 
						|
RCSID("$Id: deleteln.c,v 1.35 2008/07/13 16:08:18 wmcbrine Exp $")
 | 
						|
 | 
						|
/*man-start**************************************************************
 | 
						|
 | 
						|
  Name:                                                         deleteln
 | 
						|
 | 
						|
  Synopsis:
 | 
						|
        int deleteln(void);
 | 
						|
        int wdeleteln(WINDOW *win);
 | 
						|
        int insdelln(int n);
 | 
						|
        int winsdelln(WINDOW *win, int n);
 | 
						|
        int insertln(void);
 | 
						|
        int winsertln(WINDOW *win);
 | 
						|
 | 
						|
        int mvdeleteln(int y, int x);
 | 
						|
        int mvwdeleteln(WINDOW *win, int y, int x);
 | 
						|
        int mvinsertln(int y, int x);
 | 
						|
        int mvwinsertln(WINDOW *win, int y, int x);
 | 
						|
 | 
						|
  Description:
 | 
						|
        With the deleteln() and wdeleteln() functions, the line under
 | 
						|
        the cursor in the window is deleted.  All lines below the
 | 
						|
        current line are moved up one line.  The bottom line of the
 | 
						|
        window is cleared.  The cursor position does not change.
 | 
						|
 | 
						|
        With the insertln() and winsertn() functions, a blank line is
 | 
						|
        inserted above the current line and the bottom line is lost.
 | 
						|
 | 
						|
        mvdeleteln(), mvwdeleteln(), mvinsertln() and mvwinsertln()
 | 
						|
        allow moving the cursor and inserting/deleting in one call.
 | 
						|
 | 
						|
  Return Value:
 | 
						|
        All functions return OK on success and ERR on error.
 | 
						|
 | 
						|
  Portability                                X/Open    BSD    SYS V
 | 
						|
        deleteln                                Y       Y       Y
 | 
						|
        wdeleteln                               Y       Y       Y
 | 
						|
        mvdeleteln                              -       -       -
 | 
						|
        mvwdeleteln                             -       -       -
 | 
						|
        insdelln                                Y       -      4.0
 | 
						|
        winsdelln                               Y       -      4.0
 | 
						|
        insertln                                Y       Y       Y
 | 
						|
        winsertln                               Y       Y       Y
 | 
						|
        mvinsertln                              -       -       -
 | 
						|
        mvwinsertln                             -       -       -
 | 
						|
 | 
						|
**man-end****************************************************************/
 | 
						|
 | 
						|
int wdeleteln(WINDOW *win)
 | 
						|
{
 | 
						|
    chtype blank, *temp, *ptr;
 | 
						|
    int y;
 | 
						|
 | 
						|
    PDC_LOG(("wdeleteln() - called\n"));
 | 
						|
 | 
						|
    if (!win)
 | 
						|
        return ERR;
 | 
						|
 | 
						|
    /* wrs (4/10/93) account for window background */
 | 
						|
 | 
						|
    blank = win->_bkgd;
 | 
						|
 | 
						|
    temp = win->_y[win->_cury];
 | 
						|
 | 
						|
    for (y = win->_cury; y < win->_bmarg; y++)
 | 
						|
    {
 | 
						|
        win->_y[y] = win->_y[y + 1];
 | 
						|
        win->_firstch[y] = 0;
 | 
						|
        win->_lastch[y] = win->_maxx - 1;
 | 
						|
    }
 | 
						|
 | 
						|
    for (ptr = temp; (ptr - temp < win->_maxx); ptr++)
 | 
						|
        *ptr = blank;           /* make a blank line */
 | 
						|
 | 
						|
    if (win->_cury <= win->_bmarg)
 | 
						|
    {
 | 
						|
        win->_firstch[win->_bmarg] = 0;
 | 
						|
        win->_lastch[win->_bmarg] = win->_maxx - 1;
 | 
						|
        win->_y[win->_bmarg] = temp;
 | 
						|
    }
 | 
						|
 | 
						|
    return OK;
 | 
						|
}
 | 
						|
 | 
						|
int deleteln(void)
 | 
						|
{
 | 
						|
    PDC_LOG(("deleteln() - called\n"));
 | 
						|
 | 
						|
    return wdeleteln(stdscr);
 | 
						|
}
 | 
						|
 | 
						|
int mvdeleteln(int y, int x)
 | 
						|
{
 | 
						|
    PDC_LOG(("mvdeleteln() - called\n"));
 | 
						|
 | 
						|
    if (move(y, x) == ERR)
 | 
						|
        return ERR;
 | 
						|
 | 
						|
    return wdeleteln(stdscr);
 | 
						|
}
 | 
						|
 | 
						|
int mvwdeleteln(WINDOW *win, int y, int x)
 | 
						|
{
 | 
						|
    PDC_LOG(("mvwdeleteln() - called\n"));
 | 
						|
 | 
						|
    if (wmove(win, y, x) == ERR)
 | 
						|
        return ERR;
 | 
						|
 | 
						|
    return wdeleteln(win);
 | 
						|
}
 | 
						|
 | 
						|
int winsdelln(WINDOW *win, int n)
 | 
						|
{
 | 
						|
    int i;
 | 
						|
 | 
						|
    PDC_LOG(("winsdelln() - called\n"));
 | 
						|
 | 
						|
    if (!win)
 | 
						|
        return ERR;
 | 
						|
 | 
						|
    if (n > 0)
 | 
						|
    {
 | 
						|
        for (i = 0; i < n; i++)
 | 
						|
            if (winsertln(win) == ERR)
 | 
						|
                return ERR;
 | 
						|
    }
 | 
						|
    else if (n < 0)
 | 
						|
    {
 | 
						|
        n = -n;
 | 
						|
        for (i = 0; i < n; i++)
 | 
						|
            if (wdeleteln(win) == ERR)
 | 
						|
                return ERR;
 | 
						|
    }
 | 
						|
 | 
						|
    return OK;
 | 
						|
}
 | 
						|
 | 
						|
int insdelln(int n)
 | 
						|
{
 | 
						|
    PDC_LOG(("insdelln() - called\n"));
 | 
						|
 | 
						|
    return winsdelln(stdscr, n);
 | 
						|
}
 | 
						|
 | 
						|
int winsertln(WINDOW *win)
 | 
						|
{
 | 
						|
    chtype blank, *temp, *end;
 | 
						|
    int y;
 | 
						|
 | 
						|
    PDC_LOG(("winsertln() - called\n"));
 | 
						|
 | 
						|
    if (!win)
 | 
						|
        return ERR;
 | 
						|
 | 
						|
    /* wrs (4/10/93) account for window background */
 | 
						|
 | 
						|
    blank = win->_bkgd;
 | 
						|
 | 
						|
    temp = win->_y[win->_maxy - 1];
 | 
						|
 | 
						|
    for (y = win->_maxy - 1; y > win->_cury; y--)
 | 
						|
    {
 | 
						|
        win->_y[y] = win->_y[y - 1];
 | 
						|
        win->_firstch[y] = 0;
 | 
						|
        win->_lastch[y] = win->_maxx - 1;
 | 
						|
    }
 | 
						|
 | 
						|
    win->_y[win->_cury] = temp;
 | 
						|
 | 
						|
    for (end = &temp[win->_maxx - 1]; temp <= end; temp++)
 | 
						|
        *temp = blank;
 | 
						|
 | 
						|
    win->_firstch[win->_cury] = 0;
 | 
						|
    win->_lastch[win->_cury] = win->_maxx - 1;
 | 
						|
 | 
						|
    return OK;
 | 
						|
}
 | 
						|
 | 
						|
int insertln(void)
 | 
						|
{
 | 
						|
    PDC_LOG(("insertln() - called\n"));
 | 
						|
 | 
						|
    return winsertln(stdscr);
 | 
						|
}
 | 
						|
 | 
						|
int mvinsertln(int y, int x)
 | 
						|
{
 | 
						|
    PDC_LOG(("mvinsertln() - called\n"));
 | 
						|
 | 
						|
    if (move(y, x) == ERR)
 | 
						|
        return ERR;
 | 
						|
 | 
						|
    return winsertln(stdscr);
 | 
						|
}
 | 
						|
 | 
						|
int mvwinsertln(WINDOW *win, int y, int x)
 | 
						|
{
 | 
						|
    PDC_LOG(("mvwinsertln() - called\n"));
 | 
						|
 | 
						|
    if (wmove(win, y, x) == ERR)
 | 
						|
        return ERR;
 | 
						|
 | 
						|
    return winsertln(win);
 | 
						|
}
 |