94fparseln(FILE *fp,
size_t *size,
size_t *lineno,
const char str[3],
int flags)
96 static const char dstr[3] = {
'\\',
'\\',
'#' };
103 char esc, con, nl, com;
105 _DIAGASSERT(fp != NULL);
133 s = getline(&ptr, &ptrlen, fp);
138 for (cp = ptr; cp < ptr + s; cp++)
139 if (*cp == com && !isescaped(ptr, cp, esc)) {
141 cnt = s == 0 && buf == NULL;
156 if (*cp == con && !isescaped(ptr, cp, esc)) {
167 if (cnt || buf != NULL)
171 if ((cp = realloc(buf, len + s + 1)) == NULL) {
179 (void) memcpy(buf + len, ptr, s);
188 strchr(buf, esc) != NULL) {
190 while (cp[0] !=
'\0') {
193 while (cp[0] !=
'\0' && cp[0] != esc)
195 if (cp[0] ==
'\0' || cp[1] ==
'\0')
205 if (cp[1] != com && cp[1] != con && cp[1] != esc)