1#include "ipf.h"
2
3extern int nohdrfields;
4
5wordtab_t *parsefields(table, arg)
6	wordtab_t *table;
7	char *arg;
8{
9	wordtab_t *f, *fields;
10	char *s, *t;
11	int num;
12
13	fields = NULL;
14	num = 0;
15
16	for (s = strtok(arg, ","); s != NULL; s = strtok(NULL, ",")) {
17		t = strchr(s, '=');
18		if (t != NULL) {
19			*t++ = '\0';
20			if (*t == '\0')
21				nohdrfields = 1;
22		}
23
24		f = findword(table, s);
25		if (f == NULL) {
26			fprintf(stderr, "Unknown field '%s'\n", s);
27			exit(1);
28		}
29
30		num++;
31		if (fields == NULL) {
32			fields = malloc(2 * sizeof(*fields));
33		} else {
34			fields = realloc(fields, (num + 1) * sizeof(*fields));
35		}
36
37		if (t == NULL) {
38			fields[num - 1].w_word = f->w_word;
39		} else {
40			fields[num - 1].w_word = t;
41		}
42		fields[num - 1].w_value = f->w_value;
43		fields[num].w_word = NULL;
44		fields[num].w_value = 0;
45	}
46
47	return fields;
48}
49