2. it can be fixed, like EACCESS (bad privileges) or ELOOP (too many
symbolic links when trying to resolve a filename) but that the fix
has to happen outside the scope of the program, but once fixed, tends
not happen again unless someone made a mistake;
4. and finally, the small category of errors that a program might be
able to handle, like ENOENT (file doesn't exist) depending upon the
context (it could then create the file, or ask the user for a
different file, etc.).