diff options
Diffstat (limited to 'contrib/syslinux-4.02/com32/lib/fgets.c')
-rw-r--r-- | contrib/syslinux-4.02/com32/lib/fgets.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/contrib/syslinux-4.02/com32/lib/fgets.c b/contrib/syslinux-4.02/com32/lib/fgets.c new file mode 100644 index 0000000..7bc1519 --- /dev/null +++ b/contrib/syslinux-4.02/com32/lib/fgets.c @@ -0,0 +1,31 @@ +/* + * fgets.c + * + * This will be very slow due to the implementation of getc(), + * but we can't afford to drain characters we don't need from + * the input. + */ + +#include <stdio.h> + +char *fgets(char *s, int n, FILE * f) +{ + int ch; + char *p = s; + + while (n > 1) { + ch = getc(f); + if (ch == EOF) { + *p = '\0'; + return (p == s) ? NULL : s; + } + *p++ = ch; + if (ch == '\n') + break; + n--; + } + if (n) + *p = '\0'; + + return s; +} |