|
|
researchv10 Norman
/* @(#) _ll_move.c: 1.1 10/15/83 (1.9 10/27/82) */
#include "curses.ext"
extern struct line *_line_alloc();
/*
* _ll_move positions the cursor at position (row,col)
* in the virtual screen
*/
_ll_move (row, col)
register int row, col;
{
register struct line *p;
register int l;
register chtype *b1, *b2;
register int rp1 = row+1;
#ifdef DEBUG
if(outf) fprintf(outf, "_ll_move(%d, %d)\n", row, col);
#endif
if (SP->virt_y >= 0 && (p=SP->std_body[SP->virt_y+1]) &&
p->length < SP->virt_x)
p->length = SP->virt_x >= columns ? columns : SP->virt_x;
SP->virt_x = col;
SP->virt_y = row;
if (row < 0 || col < 0)
return;
if (!SP->std_body[rp1] || SP->std_body[rp1] == SP->cur_body[rp1]) {
p = _line_alloc ();
if (SP->cur_body[rp1]) {
p->length = l = SP->cur_body[rp1]->length;
b1 = &(p->body[0]);
b2 = &(SP->cur_body[rp1]->body[0]);
for ( ; l>0; l--)
*b1++ = *b2++;
}
SP->std_body[rp1] = p;
}
p = SP->std_body[rp1];
p -> hash = 0;
while (p -> length < col)
p -> body[p -> length++] = ' ';
SP->curptr = &(SP->std_body[rp1] -> body[col]);
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.