From f60cb6c7b365d1a9f18153b1d2fd0cfe5df754e4 Mon Sep 17 00:00:00 2001 From: _ov4 Date: Sun, 4 Oct 2026 18:12:10 +0000 Subject: refactor eval_err --- include/eval.h | 1 + src/eval/eval_err.cc | 41 +++++++++++++++++++++++++++++++++++++++++ src/eval/eval_exe.cc | 27 +-------------------------- 3 files changed, 43 insertions(+), 26 deletions(-) create mode 100644 src/eval/eval_err.cc diff --git a/include/eval.h b/include/eval.h index 1db31af..00f466a 100644 --- a/include/eval.h +++ b/include/eval.h @@ -9,5 +9,6 @@ int eval_exe(const std::string &s, bool is_async); int eval_exe(const std::string &s, bool is_async, const T_lexer *lexer_instance, size_t i); int eval_tree_cd(size_t i, const T_lexer &lexer_instance, bool inside_subshell); void eval(char *cmdline); +void eval_err(int err); } diff --git a/src/eval/eval_err.cc b/src/eval/eval_err.cc new file mode 100644 index 0000000..3d90262 --- /dev/null +++ b/src/eval/eval_err.cc @@ -0,0 +1,41 @@ +#include "eval.h" + +#include +#include + +using namespace std; + +namespace ov4 +{ + +void eval_err(int err) +{ + switch (err) + { + 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); + } +} + +} \ No newline at end of file diff --git a/src/eval/eval_exe.cc b/src/eval/eval_exe.cc index 534b878..4e893f3 100644 --- a/src/eval/eval_exe.cc +++ b/src/eval/eval_exe.cc @@ -93,32 +93,7 @@ int eval_exe(const string &s, bool is_async, const T_lexer *lexer_instance, size // execve: if success, never returns cout << raw_input << 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); - } + eval_err(errno); } // parent -- cgit v1.3.1-4-g156e