- total of 10 functions used is the maximum
- each function has at maximum 25 lines
- reading as little data as possible with each call
- for reading using the BUFFER_SIZE that can be changed
- each returned line contains the newline character
- no memory leaks or undefined behaviour no matter the usage