Design goals for a 99.44% portable Standard I/O library:
Require as thin a layer of OS-specific code as possible.
Be flexible to how any OS internally represents files.
Keep to traditional implementation style where possible. (Maybe derive from BSD unix code)