MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / fgetln

Function fgetln

extern/editline/src/fgetln.c:47–90  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

45#endif
46
47char *
48fgetln(FILE *fp, size_t *len)
49{
50 static char *buf = NULL;
51 static size_t bufsiz = 0;
52 char *ptr;
53
54
55 if (buf == NULL) {
56 bufsiz = BUFSIZ;
57 if ((buf = malloc(bufsiz)) == NULL)
58 return NULL;
59 }
60
61 if (fgets(buf, bufsiz, fp) == NULL)
62 return NULL;
63
64 *len = 0;
65 while ((ptr = strchr(&buf[*len], '\n')) == NULL) {
66 size_t nbufsiz = bufsiz + BUFSIZ;
67 char *nbuf = realloc(buf, nbufsiz);
68
69 if (nbuf == NULL) {
70 int oerrno = errno;
71 free(buf);
72 errno = oerrno;
73 buf = NULL;
74 return NULL;
75 } else
76 buf = nbuf;
77
78 if (fgets(&buf[bufsiz], BUFSIZ, fp) == NULL) {
79 buf[bufsiz] = '\0';
80 *len = strlen(buf);
81 return buf;
82 }
83
84 *len = bufsiz;
85 bufsiz = nbufsiz;
86 }
87
88 *len = (ptr - buf) + 1;
89 return buf;
90}
91
92#endif
93

Callers 3

mainFunction · 0.85
el_sourceFunction · 0.85
history_loadFunction · 0.85

Calls 1

fgetsFunction · 0.85

Tested by

no test coverage detected