|
|
1.1 root 1: /* @(#) _ll_move.c: 1.1 10/15/83 (1.9 10/27/82) */
2:
3: #include "curses.ext"
4:
5: extern struct line *_line_alloc();
6:
7: /*
8: * _ll_move positions the cursor at position (row,col)
9: * in the virtual screen
10: */
11: _ll_move (row, col)
12: register int row, col;
13: {
14: register struct line *p;
15: register int l;
16: register chtype *b1, *b2;
17: register int rp1 = row+1;
18:
19: #ifdef DEBUG
20: if(outf) fprintf(outf, "_ll_move(%d, %d)\n", row, col);
21: #endif
22: if (SP->virt_y >= 0 && (p=SP->std_body[SP->virt_y+1]) &&
23: p->length < SP->virt_x)
24: p->length = SP->virt_x >= columns ? columns : SP->virt_x;
25: SP->virt_x = col;
26: SP->virt_y = row;
27: if (row < 0 || col < 0)
28: return;
29: if (!SP->std_body[rp1] || SP->std_body[rp1] == SP->cur_body[rp1]) {
30: p = _line_alloc ();
31: if (SP->cur_body[rp1]) {
32: p->length = l = SP->cur_body[rp1]->length;
33: b1 = &(p->body[0]);
34: b2 = &(SP->cur_body[rp1]->body[0]);
35: for ( ; l>0; l--)
36: *b1++ = *b2++;
37: }
38: SP->std_body[rp1] = p;
39: }
40: p = SP->std_body[rp1];
41: p -> hash = 0;
42: while (p -> length < col)
43: p -> body[p -> length++] = ' ';
44: SP->curptr = &(SP->std_body[rp1] -> body[col]);
45: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.