|
|
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.