fix typos in CONFIG_SITE files
[openwrt/svn-archive/openwrt.git] / openwrt / package / webif / src / bstrip.c
1 #include <stdio.h>
2
3 #define BUF_SIZE 1024
4 #define READ_LEN 14
5
6 static int read_len = READ_LEN;
7 static char rbuf[32];
8 static char rbuflen = 0;
9
10 int do_gets(char *buf)
11 {
12 int r = 0, c = 0;
13 char *m;
14
15 if (rbuflen > 0)
16 memcpy(buf, rbuf, rbuflen);
17 c += rbuflen;
18
19 while ((c + read_len < BUF_SIZE) && ((r = read(0, &buf[c], read_len)) > 0)) {
20 m = NULL;
21
22 if ((m = memchr(&buf[c], '\n', r)) != NULL) {
23 rbuflen = r - (m - &buf[c] + 1);
24 if (rbuflen > 0)
25 memcpy(rbuf, m + 1, rbuflen);
26 c += m - &buf[c] + 1;
27 } else {
28 rbuflen = 0;
29 c += r;
30 }
31
32 if ((c > 3) && (memcmp(&buf[c - 3], "---", 3) == 0))
33 read_len = 1;
34
35 if (m != NULL)
36 return c;
37 }
38
39 return c;
40 }
41
42 int main(int argc, char **argv)
43 {
44 char buf[BUF_SIZE];
45 char buf1[BUF_SIZE];
46 char *tmp;
47 int len, r = 0, r1 = 0;
48
49 if (argc != 2) {
50 fprintf(stderr, "Syntax: %s (name|data <boundary>)\n", argv[0]);
51 exit(1);
52 }
53 while (tmp = strchr(argv[1], '\r'))
54 *tmp = 0;
55
56 len = strlen(argv[1]);
57
58 *buf = 0;
59 while ((strncmp(buf, argv[1], len) != 0) &&
60 (strncmp(buf + 2, argv[1], len) != 0)) {
61 if (r > 0) {
62 if (r1 > 0)
63 write (1, buf1, r1);
64 r1 = r;
65 memcpy(buf1, buf, r);
66 }
67 if ((r = do_gets(buf)) <= 0)
68 exit(1);
69 }
70
71 if (r1 > 2)
72 write(1, buf1, r1 - 2);
73 }