1
0
Fork 0

discovered perror(3)

This commit is contained in:
dtb 2023-10-08 11:46:19 -04:00
parent 69557e49e6
commit dba3120da6
1 changed files with 9 additions and 19 deletions

View File

@ -1,6 +1,7 @@
#include <errno.h> /* EACCESS, ELOOP, ENAMETOOLONG, ENOENT, ENOTDIR, errno */
#include <stdio.h> /* fprintf(3) */
#include <stdlib.h> /* stderr */
#include <string.h> /* strerror(3) */
#include <sysexits.h> /* EX_OSERR, EX_NOPERM, EX_NOINPUT, EX_UNAVAILABLE,
* EX_USAGE */
#include <unistd.h> /* chdir(2) */
@ -17,26 +18,15 @@ int main(int argc, char *argv[]){
}
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){
case EACCES:
fprintf(stderr, "Access to directory denied.\n");
return EX_NOPERM;
case ELOOP:
fprintf(stderr, "Symbolic link loop.\n");
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;
case EACCES: return EX_NOPERM;
case ELOOP: return EX_UNAVAILABLE;
case ENAMETOOLONG: return EX_OSERR;
case ENOENT: return EX_NOINPUT;
case ENOTDIR: return EX_NOINPUT;
default: return EX_UNAVAILABLE;
}
}