#include "memo.h"

#define TRUE 1
#define FALSE 0

int all, speclist[1000], nspecs;

clr_specs()
{
	all = FALSE;
	nspecs = 0;
}

parse_specs(specstr)
char *specstr;
{
	int number1 = 0, number2 = 0;
	char *savestr ;		/* in case we want to print an error message */
	savestr = specstr;
	
	if (strcmp(specstr, "a") == 0)
		all = TRUE;
	else {
		while (*specstr >= '0' && *specstr <= '9')
			number1 = number1 * 10 + (*specstr++ - '0');
		if (number1 == 0) {
			fprintf(stderr, "memo: invalid memo specifier '%s'\n", savestr);
			exit(1);
		}
		if (*specstr == '\0') {
			speclist[nspecs++] = number1;
			return;
		}
		if (*specstr++ != '-') {
			fprintf(stderr, "memo: invalid memo specifier '%s'\n", savestr);
			exit(1);
		}
		while (*specstr >= '0' && *specstr <= '9')
			number2 = number2 * 10 + (*specstr++ - '0');
		if (number2 == 0 || *specstr != '\0') {
			fprintf(stderr, "memo: invalid memo specifier '%s'\n", savestr);
			exit(1);
		}
		while (number1 <= number2)
			speclist[nspecs++] = number1++;
	}
}

check_specs(n)
int n;
{
	int i = 0;

	if (all)
		return(TRUE);
	while (i < nspecs) {
		if (speclist[i++] == n)
			return(TRUE);
	}
	return(FALSE);
}

show_parsed_specs()
{
	int i;
	
	if (all)
		printf("memo(sps): All memos specified.\n");
	printf("memo(sps): %d memos specified.\n", nspecs);
	for (i=0; i < nspecs; i++)
		printf("\t%d\t", speclist[i]);
	putchar('\n');
}
