blob: 9c2416eefb324ffa4134700e2451f1126d69c6ec [file] [log] [blame]
Patrick Georgi3b77b722011-07-07 15:41:53 +02001/* Public Domain Curses */
2
3#include <curspriv.h>
4
5RCSID("$Id: delch.c,v 1.33 2008/07/13 16:08:18 wmcbrine Exp $")
6
7/*man-start**************************************************************
8
9 Name: delch
10
11 Synopsis:
12 int delch(void);
13 int wdelch(WINDOW *win);
14 int mvdelch(int y, int x);
15 int mvwdelch(WINDOW *win, int y, int x);
16
17 Description:
18 The character under the cursor in the window is deleted. All
19 characters to the right on the same line are moved to the left
20 one position and the last character on the line is filled with
21 a blank. The cursor position does not change (after moving to
22 y, x if coordinates are specified).
23
24 Return Value:
25 All functions return OK on success and ERR on error.
26
27 Portability X/Open BSD SYS V
28 delch Y Y Y
29 wdelch Y Y Y
30 mvdelch Y Y Y
31 mvwdelch Y Y Y
32
33**man-end****************************************************************/
34
35#include <string.h>
36
37int wdelch(WINDOW *win)
38{
39 int y, x, maxx;
40 chtype *temp1;
41
42 PDC_LOG(("wdelch() - called\n"));
43
44 if (!win)
45 return ERR;
46
47 y = win->_cury;
48 x = win->_curx;
49 maxx = win->_maxx - 1;
50 temp1 = &win->_y[y][x];
51
52 memmove(temp1, temp1 + 1, (maxx - x) * sizeof(chtype));
53
54 /* wrs (4/10/93) account for window background */
55
56 win->_y[y][maxx] = win->_bkgd;
57
58 win->_lastch[y] = maxx;
59
60 if ((win->_firstch[y] == _NO_CHANGE) || (win->_firstch[y] > x))
61 win->_firstch[y] = x;
62
63 PDC_sync(win);
64
65 return OK;
66}
67
68int delch(void)
69{
70 PDC_LOG(("delch() - called\n"));
71
72 return wdelch(stdscr);
73}
74
75int mvdelch(int y, int x)
76{
77 PDC_LOG(("mvdelch() - called\n"));
78
79 if (move(y, x) == ERR)
80 return ERR;
81
82 return wdelch(stdscr);
83}
84
85int mvwdelch(WINDOW *win, int y, int x)
86{
87 PDC_LOG(("mvwdelch() - called\n"));
88
89 if (wmove(win, y, x) == ERR)
90 return ERR;
91
92 return wdelch(win);
93}