6 static int read_len
= READ_LEN
;
8 static char rbuflen
= 0;
10 int do_gets(char *buf
)
16 memcpy(buf
, rbuf
, rbuflen
);
19 while ((c
+ read_len
< BUF_SIZE
) && ((r
= read(0, &buf
[c
], read_len
)) > 0)) {
22 if ((m
= memchr(&buf
[c
], '\n', r
)) != NULL
) {
23 rbuflen
= r
- (m
- &buf
[c
] + 1);
25 memcpy(rbuf
, m
+ 1, rbuflen
);
32 if ((c
> 3) && (memcmp(&buf
[c
- 3], "---", 3) == 0))
42 int main(int argc
, char **argv
)
47 int len
, r
= 0, r1
= 0;
50 fprintf(stderr
, "Syntax: %s (name|data <boundary>)\n", argv
[0]);
53 while (tmp
= strchr(argv
[1], '\r'))
56 len
= strlen(argv
[1]);
59 while ((strncmp(buf
, argv
[1], len
) != 0) &&
60 (strncmp(buf
+ 2, argv
[1], len
) != 0)) {
67 if ((r
= do_gets(buf
)) <= 0)
72 write(1, buf1
, r1
- 2);