The 'char's from files must be signed to make EOF checks work, but 'char' is unsigned by default on some platforms (e.g. ARM).