static char buf[BUFSIZE];
static char *bpos=buf, *bend=buf;
-static char *getline(void)
+static char *get_line(void)
{
if (!bpos)
return NULL;
}
}
+static int want_header(char *line, char **want, int n_want)
+{
+ if (!n_want)
+ return 1;
+
+ for (int i=0; i<n_want; i++)
+ {
+ int len = strlen(want[i]);
+ if (!strncasecmp(line, want[i], len))
+ return 1;
+ }
+
+ return 0;
+}
+
enum state {
S_INITIAL,
S_HEADER,
};
int
-main(int argc UNUSED, char **argv UNUSED)
+main(int argc, char **argv)
{
char *c;
enum state state = S_INITIAL;
+ int want = 0;
- while (c = getline())
+ while (c = get_line())
{
// printf("<%s>\n", c);
if (state == S_INITIAL || state == S_BODY)
}
else if (*c == ' ' || *c == '\t')
{
- while (*c == ' ' || *c == '\t')
- c++;
- putchar(' ');
- fputs(c, stdout);
+ if (want)
+ {
+ while (*c == ' ' || *c == '\t')
+ c++;
+ putchar(' ');
+ fputs(c, stdout);
+ }
}
else
{
- putchar('\n');
- fputs(c, stdout);
+ want = want_header(c, argv+1, argc-1);
+ if (want)
+ {
+ putchar('\n');
+ fputs(c, stdout);
+ }
}
}
}