From 38c1b9ef51ef327a019cf6a8c99c363882e7ee74 Mon Sep 17 00:00:00 2001 From: _ov4 Date: Mon, 14 Sep 2026 06:01:51 +0000 Subject: add error output --- src/eval.cc | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) (limited to 'src/eval.cc') diff --git a/src/eval.cc b/src/eval.cc index 3b3a3ba..f25f6cd 100644 --- a/src/eval.cc +++ b/src/eval.cc @@ -67,12 +67,36 @@ void eval(char *cmdline) // program inside execve may use SIGTTIN/SIGTTOU so just restore in child sigprocmask(SIG_UNBLOCK, &block_io, nullptr); - execve(cmd_c, argv, environ); wrap_eliminator(cmdline); - cout << cmdline << ": Command not found" << endl; - exit(-1); // if no command is found + cout << cmdline << flush; + switch (errno) + { + case ENOTDIR: + println(": A component of the path prefix is not a directory."); + exit(errno); + break; + + case ENAMETOOLONG: + println(": A component of a pathname exceeded 255 characters, or an entire path name exceeded 1023 characters."); + exit(errno); + break; + + case ENOENT: + println(": The new process file does not exist."); + exit(errno); + break; + + case EACCES: + println(": The new process file mode denies execute permission."); + exit(errno); + break; + + default: + println(": Error, code: {}", errno); + exit(errno); + } } // parent -- cgit v1.3.1-4-g156e