23 lines
623 B
C
23 lines
623 B
C
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <unistd.h>
|
|
|
|
#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;
|
|
}
|