#include #include #include #define INITIAL_BUFFER_SIZE 2 char *aoc_read_input(void) { int buffer_size = INITIAL_BUFFER_SIZE; char *input_buffer = malloc(buffer_size); int chars_read = read(STDIN_FILENO, input_buffer, buffer_size); char *buffer_position = &input_buffer[chars_read]; while (chars_read == buffer_size) { buffer_size *= 2; input_buffer = realloc(input_buffer, buffer_size); buffer_position = &input_buffer[chars_read]; chars_read += read(STDIN_FILENO, buffer_position, buffer_size / 2); } input_buffer[chars_read] = 0; return input_buffer; }