extract
void extract (void);
extract();
extract(tabs, spec, re, s, ans, msg, NiL, NiL, 0, 0, skip, level, test);
extract(tabs, line, re, s, ans, msg, NiL, NiL, 0, 0, skip, level, test|TEST_OK);
skip = extract(tabs, line, re, s, ans, msg, "OK", NiL, 0, 0, skip, level, test|TEST_DELIMIT);
skip = extract(tabs, line, re, s, ans, msg, "OK", NiL, 0, 0, skip, level, test|TEST_DELIMIT);
skip = extract(tabs, line, re, s, ans, msg, codes[got].name, NiL, 0, 0, skip, level, test|TEST_DELIMIT);
skip = extract(tabs, line, re, s, ans, msg, codes[got].name, NiL, 0, 0, skip, level, test|TEST_DELIMIT);
skip = extract(tabs, line, re, s, ans, msg, codes[got].name, NiL, 0, 0, skip, level, test|TEST_DELIMIT);
skip = extract(tabs, line, re, s, ans, msg, "NOMATCH", NiL, 0, 0, skip, level, test|TEST_DELIMIT);
skip = extract(tabs, line, re, s, ans, msg, NiL, match, nmatch, nsub, skip, level, test|TEST_DELIMIT);
skip = extract(tabs, line, re, s, ans, msg, "NOMATCH", NiL, 0, nsub, skip, level, test|TEST_DELIMIT);
skip = extract(tabs, line, re, s, ans, msg, NiL, match, nmatch, nsub, skip, level, test|TEST_DELIMIT);
skip = extract(tabs, line, re, s, ans, msg, NiL, NiL, 0, 0, skip, level, test);
skip = extract(tabs, line, re, s, ans, msg, NiL, match, nmatch, nsub, skip, level, test|TEST_OK);
skip = extract(tabs, line, re, s, ans, msg, NiL, match, nmatch, nsub, skip, level, test|TEST_DELIMIT);
np = extract(replyto, GTO);
np = extract(cp, GTO);
np = cat(np, extract(rcv, GTO));
np = extract(rcv, GTO);
np = elide(extract(cp, GCC));
head.h_to = cat(head.h_to, extract(cp, GTO));
hp->h_to = cat(hp->h_to, extract(&linebuf[2], GTO));
hp->h_cc = cat(hp->h_cc, extract(&linebuf[2], GCC));
hp->h_bcc = cat(hp->h_bcc, extract(&linebuf[2], GBCC));
struct name *extract(char [], int);
head.h_to = extract(str, GTO);
extract(readtty("To: ", detract(hp->h_to, 0)), GTO);
extract(readtty("Cc: ", detract(hp->h_cc, 0)), GCC);
extract(readtty("Bcc: ", detract(hp->h_bcc, 0)), GBCC);
extract(a, e);