|
|
1.1 root 1: /* @(#) _blanks.c: 1.1 10/15/83 (1.21 2/11/83) */
2:
3: #include "curses.ext"
4:
5: extern int _outch();
6: extern int _sethl();
7: extern int _setmode();
8: extern char *tparm();
9: extern int tputs();
10:
11: /*
12: * Output n blanks, or the equivalent. This is done to erase text, and
13: * also to insert blanks. The semantics of this call do not define where
14: * it leaves the cursor - it might be where it was before, or it might
15: * be at the end of the blanks. We will, of course, leave SP->phys_x
16: * properly updated.
17: */
18: _blanks (n)
19: {
20: #ifdef DEBUG
21: if(outf) fprintf(outf, "_blanks(%d).\n", n);
22: #endif
23: if (n == 0)
24: return;
25: _setmode ();
26: _sethl ();
27: if (SP->virt_irm==1 && parm_ich) {
28: if (n == 1)
29: tputs(insert_character, 1, _outch);
30: else
31: tputs(tparm(parm_ich, n), n, _outch);
32: return;
33: }
34: if (erase_chars && SP->phys_irm != 1 && n > 5) {
35: tputs(tparm(erase_chars, n), n, _outch);
36: return;
37: }
38: if (repeat_char && SP->phys_irm != 1 && n > 5) {
39: tputs(tparm(repeat_char, ' ', n), n, _outch);
40: SP->phys_x += n;
41: return;
42: }
43: while (--n >= 0) {
44: if (SP->phys_irm == 1 && insert_character)
45: tputs (insert_character, columns - SP->phys_x, _outch);
46: if (++SP->phys_x >= columns && auto_right_margin) {
47: if (SP->phys_y >= lines-1) {
48: /*
49: * We attempted to put something in the last
50: * position of the last line. Since this will
51: * cause a scroll (we only get here if the
52: * terminal has auto_right_margin) we refuse
53: * to put it out.
54: */
55: SP->phys_x--;
56: return;
57: }
58: SP->phys_x = 0;
59: SP->phys_y++;
60: }
61: _outch (' ');
62: if (SP->phys_irm == 1 && insert_padding)
63: tputs (insert_padding, 1, _outch);
64: }
65: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.