Support NUL-containing lines in cols(1)
This required an architectural change in getlines() by also storing the line length.
This commit is contained in:
		| @@ -19,12 +19,13 @@ getlines(FILE *fp, struct linebuf *b) | ||||
| 			b->lines = erealloc(b->lines, b->capacity * sizeof(*b->lines)); | ||||
| 		} | ||||
| 		linelen = len; | ||||
| 		b->lines[b->nlines - 1] = memcpy(emalloc(linelen + 1), line, linelen + 1); | ||||
| 		b->lines[b->nlines - 1].data = memcpy(emalloc(linelen + 1), line, linelen + 1); | ||||
| 		b->lines[b->nlines - 1].len = linelen; | ||||
| 	} | ||||
| 	free(line); | ||||
| 	if (b->lines && b->nlines && linelen && b->lines[b->nlines - 1][linelen - 1] != '\n') { | ||||
| 		b->lines[b->nlines - 1] = erealloc(b->lines[b->nlines - 1], linelen + 2); | ||||
| 		b->lines[b->nlines - 1][linelen] = '\n'; | ||||
| 		b->lines[b->nlines - 1][linelen + 1] = '\0'; | ||||
| 	if (b->lines && b->nlines && linelen && b->lines[b->nlines - 1].data[linelen - 1] != '\n') { | ||||
| 		b->lines[b->nlines - 1].data = erealloc(b->lines[b->nlines - 1].data, linelen + 2); | ||||
| 		b->lines[b->nlines - 1].data[linelen] = '\n'; | ||||
| 		b->lines[b->nlines - 1].data[linelen + 1] = '\0'; | ||||
| 	} | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user