blob: 7bc1519aa7549efa8b57a5f1285fcc3a337ab058 [file] [log] [blame]
Greg Hartman76d05dc2016-11-23 15:51:27 -08001/*
2 * fgets.c
3 *
4 * This will be very slow due to the implementation of getc(),
5 * but we can't afford to drain characters we don't need from
6 * the input.
7 */
8
9#include <stdio.h>
10
11char *fgets(char *s, int n, FILE * f)
12{
13 int ch;
14 char *p = s;
15
16 while (n > 1) {
17 ch = getc(f);
18 if (ch == EOF) {
19 *p = '\0';
20 return (p == s) ? NULL : s;
21 }
22 *p++ = ch;
23 if (ch == '\n')
24 break;
25 n--;
26 }
27 if (n)
28 *p = '\0';
29
30 return s;
31}