aboutsummaryrefslogtreecommitdiff
path: root/src/error.c
diff options
context:
space:
mode:
authorCharles Cabergs <me@cacharle.xyz>2020-09-10 15:08:28 +0200
committerCharles Cabergs <me@cacharle.xyz>2020-09-10 15:08:28 +0200
commitb16d4b834d95d5cc0757d09e74fe6042e55f5440 (patch)
treeaa64f6d4397a0c55337224c8cf474da73750ac30 /src/error.c
parent10b54ed457ec0999e9289811401907d3a88970dc (diff)
downloadminishell-b16d4b834d95d5cc0757d09e74fe6042e55f5440.tar.gz
minishell-b16d4b834d95d5cc0757d09e74fe6042e55f5440.tar.bz2
minishell-b16d4b834d95d5cc0757d09e74fe6042e55f5440.zip
Added better error handling in eval
Diffstat (limited to 'src/error.c')
-rw-r--r--src/error.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/src/error.c b/src/error.c
index e19a9ed..6c24635 100644
--- a/src/error.c
+++ b/src/error.c
@@ -6,7 +6,7 @@
/* By: charles <charles@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/06/14 11:02:52 by charles #+# #+# */
-/* Updated: 2020/08/27 10:44:08 by charles ### ########.fr */
+/* Updated: 2020/09/10 14:48:19 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -49,3 +49,29 @@ void verrorf(const char *format, va_list ap)
}
}
}
+
+static int g_error_to_status[] = {
+ [ERR_NONE] = 0,
+ [ERR_AMBIGUOUS_REDIR] = 1,
+ [ERR_OPEN] = 1,
+ [ERR_CMD_NOT_FOUND] = 127,
+ [ERR_SYNTAX] = 2,
+ [ERR_IS_DIRECTORY] = 126,
+ [ERR_ERRNO] = 126,
+};
+
+int error_get_status(int status)
+{
+ return (g_error_to_status[status]);
+}
+
+void error_set_status(int status)
+{
+ if (status == ERR_FATAL)
+ exit(1);
+ /* printf("%d\n", status); */
+ if (status < ERR_NONE)
+ g_last_status = status;
+ else
+ g_last_status = g_error_to_status[status];
+}