In particular I've implemented a standardised complete FILE * reader without relying on fseek (which may not work for pipes).