2.11BSD/ingres/source/access/newlino.c
# include "../ingres.h"
# include "../access.h"
/*
** newlino finds a free line number which it returns and adjusts
** the next line counter (Nxtlino) by the length of the tuple (len).
** This routine is used to recover unused sections of the
** line number table (Acc_head->linetab).
*/
newlino(len)
int len;
{
register int *lp, newlno, nextlno;
nextlno = Acc_head->nxtlino;
lp = &Acc_head->linetab[0];
for (newlno = 0; newlno < nextlno; newlno++)
{
if (*lp == 0)
{
/* found a free line number */
*lp = Acc_head->linetab[-nextlno];
Acc_head->linetab[-nextlno] += len;
return (newlno);
}
lp--;
}
/* no free line numbers. use nxtlino */
Acc_head->linetab[-(nextlno + 1)] = *lp + len;
Acc_head->nxtlino++;
return (nextlno);
}