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);
 | |
| }
 |