from scratch; add Berkeley specific header
[unix-history] / usr / src / lib / libcurses / mvwin.c
CommitLineData
87c6fcf8 1/*
2f14f200
KB
2 * Copyright (c) 1981 Regents of the University of California.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms are permitted
a399f6c8
KB
6 * provided that the above copyright notice and this paragraph are
7 * duplicated in all such forms and that any documentation,
8 * advertising materials, and other materials related to such
9 * distribution and use acknowledge that the software was developed
10 * by the University of California, Berkeley. The name of the
11 * University may not be used to endorse or promote products derived
12 * from this software without specific prior written permission.
13 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
87c6fcf8
DF
16 */
17
18#ifndef lint
a399f6c8 19static char sccsid[] = "@(#)mvwin.c 5.3 (Berkeley) %G%";
2f14f200 20#endif /* not lint */
87c6fcf8 21
45d02bb5
KA
22# include "curses.ext"
23
24/*
25 * relocate the starting position of a window
26 *
45d02bb5
KA
27 */
28
29mvwin(win, by, bx)
30reg WINDOW *win;
31reg int by, bx; {
32
52f06ac3
JB
33 register WINDOW *orig;
34 register int dy, dx;
35
45d02bb5
KA
36 if (by + win->_maxy > LINES || bx + win->_maxx > COLS)
37 return ERR;
52f06ac3
JB
38 dy = by - win->_begy;
39 dx = bx - win->_begx;
40 orig = win->_orig;
41 if (orig == NULL) {
42 orig = win;
43 do {
44 win->_begy += dy;
45 win->_begx += dx;
46 _swflags_(win);
47 win = win->_nextp;
48 } while (win != orig);
49 }
50 else {
51 if (by < orig->_begy || win->_maxy + dy > orig->_maxy)
52 return ERR;
53 if (bx < orig->_begx || win->_maxx + dx > orig->_maxx)
54 return ERR;
55 win->_begy = by;
56 win->_begx = bx;
57 _swflags_(win);
58 _set_subwin_(orig, win);
59 }
45d02bb5
KA
60 touchwin(win);
61 return OK;
62}