diff --git a/pschdir/pschdir.c b/pschdir/pschdir.c index bfa65d0..905b00c 100644 --- a/pschdir/pschdir.c +++ b/pschdir/pschdir.c @@ -1,6 +1,7 @@ #include /* EACCESS, ELOOP, ENAMETOOLONG, ENOENT, ENOTDIR, errno */ #include /* fprintf(3) */ #include /* stderr */ +#include /* strerror(3) */ #include /* EX_OSERR, EX_NOPERM, EX_NOINPUT, EX_UNAVAILABLE, * EX_USAGE */ #include /* 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; } }