We have overused err(1), so it's hard to distinguish when an error is
very, very serious, and when it's just a user-error, or even harmless.
This patch changes the current behaviour to distinguish between the following three:
1 for usage errors
2 for user-recoverable errors
3 for os-errors, most of which cannot be recovered.