Why lose GetErrorStr() ?  It'd need to be attributed to fopen(), but it can still be relevant.