Use switch instead of if, and handle all enum values.

This patch also handles errors other than no_more_files error. They were silently
ignored.