Various polishing: man page tweaks, --version now does something,
[sgt/agedu] / fgetline.c
CommitLineData
84849cbd 1/*
2 * fgetline.c: implementation of fgetline.h.
3 */
4
5#include <stdio.h>
6#include <string.h>
7
995db599 8#include "alloc.h"
84849cbd 9#include "fgetline.h"
10
11char *fgetline(FILE *fp)
12{
13 char *ret = snewn(512, char);
14 int size = 512, len = 0;
15 while (fgets(ret + len, size - len, fp)) {
16 len += strlen(ret + len);
17 if (ret[len-1] == '\n')
18 break; /* got a newline, we're done */
19 size = len + 512;
20 ret = sresize(ret, size, char);
21 }
22 if (len == 0) { /* first fgets returned NULL */
23 sfree(ret);
24 return NULL;
25 }
26 ret[len] = '\0';
27 return ret;
28}