Commit | Line | Data |
---|---|---|
1 | // read a line, truncating it if it doesn't fit | |
2 | static char *my_fgets(char *s, size_t size, FILE *stream) | |
3 | { | |
4 | char *ret, *ret2; | |
5 | char buf[64]; | |
6 | int p; | |
7 | ||
8 | p = size - 2; | |
9 | if (p >= 0) | |
10 | s[p] = 0; | |
11 | ||
12 | ret = fgets(s, size, stream); | |
13 | if (ret != NULL && p >= 0 && s[p] != 0 && s[p] != '\n') { | |
14 | p = sizeof(buf) - 2; | |
15 | do { | |
16 | buf[p] = 0; | |
17 | ret2 = fgets(buf, sizeof(buf), stream); | |
18 | } | |
19 | while (ret2 != NULL && buf[p] != 0 && buf[p] != '\n'); | |
20 | } | |
21 | ||
22 | return ret; | |
23 | } | |
24 |