1
0

discovered perror(3)

This commit is contained in:
dtb 2023-10-08 11:46:19 -04:00
parent 69557e49e6
commit dba3120da6

View File

@ -1,6 +1,7 @@
#include <errno.h> /* EACCESS, ELOOP, ENAMETOOLONG, ENOENT, ENOTDIR, errno */ #include <errno.h> /* EACCESS, ELOOP, ENAMETOOLONG, ENOENT, ENOTDIR, errno */
#include <stdio.h> /* fprintf(3) */ #include <stdio.h> /* fprintf(3) */
#include <stdlib.h> /* stderr */ #include <stdlib.h> /* stderr */
#include <string.h> /* strerror(3) */
#include <sysexits.h> /* EX_OSERR, EX_NOPERM, EX_NOINPUT, EX_UNAVAILABLE, #include <sysexits.h> /* EX_OSERR, EX_NOPERM, EX_NOINPUT, EX_UNAVAILABLE,
* EX_USAGE */ * EX_USAGE */
#include <unistd.h> /* chdir(2) */ #include <unistd.h> /* chdir(2) */
@ -17,26 +18,15 @@ int main(int argc, char *argv[]){
} }
if(chdir(argv[1]) != 0){ if(chdir(argv[1]) != 0){
fprintf(stderr, "%s: %s: ", argv[0], argv[1]); fprintf(stderr, "%s: %s: %s", argv[0], argv[1],
strerror(errno));
switch(errno){ switch(errno){
case EACCES: case EACCES: return EX_NOPERM;
fprintf(stderr, "Access to directory denied.\n"); case ELOOP: return EX_UNAVAILABLE;
return EX_NOPERM; case ENAMETOOLONG: return EX_OSERR;
case ELOOP: case ENOENT: return EX_NOINPUT;
fprintf(stderr, "Symbolic link loop.\n"); case ENOTDIR: return EX_NOINPUT;
return EX_UNAVAILABLE; default: return EX_UNAVAILABLE;
case ENAMETOOLONG:
fprintf(stderr, "Name too long.\n");
return EX_OSERR;
case ENOENT:
fprintf(stderr, "Not found.\n");
return EX_NOINPUT;
case ENOTDIR:
fprintf(stderr, "Not a directory.\n");
return EX_NOINPUT;
default:
fprintf(stderr, "Unknown error.\n");
return EX_UNAVAILABLE;
} }
} }