1 /* The original code is public domain -- Will Hartung 4/9/09 */
2 /* Modifications, public domain as well, by Antti Haapala, 11/10/17
3 - Switched to getc on 5/23/19 */
4 /* Modifications, public domain, by Elias Fleckenstein 24/04/2022 */
10 ssize_t getline(char **lineptr, size_t *n, FILE *stream) {
14 if (lineptr == NULL || stream == NULL || n == NULL) {
24 if (*lineptr == NULL) {
25 *lineptr = malloc(128);
26 if (*lineptr == NULL) {
35 size_t new_size = *n + (*n >> 2);
39 char *new_ptr = realloc(*lineptr, new_size);
40 if (new_ptr == NULL) {
47 ((unsigned char *)(*lineptr))[pos ++] = c;
54 (*lineptr)[pos] = '\0';