45 lines
724 B
C
45 lines
724 B
C
/*
|
|
** --- RG_REPT.C ------- REPEAT PROCESSOR -----------------------------------
|
|
**
|
|
** Version: @(#)rg_rept.c 4.0 02/05/89
|
|
**
|
|
*/
|
|
|
|
# include "rg.h"
|
|
|
|
/* the repeat table */
|
|
static REPEATYPE R_repeat[MAX_REPEAT]; /* rr_code = (char *) 0 */
|
|
/* rr_count = 0 */
|
|
|
|
|
|
rg_repeat(rc)
|
|
register char *rc;
|
|
{
|
|
register REPEATYPE *r;
|
|
register int i;
|
|
|
|
for (r = R_repeat; r->rr_count; r++)
|
|
{
|
|
if (r == &R_repeat[MAX_REPEAT])
|
|
{
|
|
rg_error("REPEAT TABLE OVERFLOW");
|
|
rg_exit(EXIT_R_CODE);
|
|
}
|
|
if (r->rr_code == rc)
|
|
break;
|
|
}
|
|
|
|
if (!r->rr_code)
|
|
{
|
|
r->rr_code = rc;
|
|
if ((i = R_val) < A_REPEAT)
|
|
i = A_REPEAT;
|
|
r->rr_count = i;
|
|
}
|
|
|
|
if (--(r->rr_count))
|
|
return (TRUE);
|
|
r->rr_code = 0;
|
|
return (FALSE);
|
|
}
|