aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/error.h13
-rw-r--r--include/eval.h46
-rw-r--r--include/lexer.h32
-rw-r--r--include/minishell.h2
4 files changed, 52 insertions, 41 deletions
diff --git a/include/error.h b/include/error.h
index 941f1b2..3933fe9 100644
--- a/include/error.h
+++ b/include/error.h
@@ -6,7 +6,7 @@
/* By: charles <me@cacharle.xyz> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/08/27 20:34:25 by charles #+# #+# */
-/* Updated: 2020/08/27 20:38:52 by charles ### ########.fr */
+/* Updated: 2020/09/10 20:29:17 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -20,17 +20,10 @@
** error.c
*/
-typedef enum
-{
- ERR_FATAL = -1,
- ERR_NONE = 0,
- ERR_AMBIGUOUS_REDIR = 1,
- ERR_OPEN = 1,
- ERR_CMD_NOT_FOUND = 127,
- ERR_SYNTAX = 2,
-} t_err;
+# define EVAL_FATAL 1024
void errorf(const char *format, ...);
void verrorf(const char *format, va_list ap);
+int errorf_ret(int err, const char *format, ...);
#endif
diff --git a/include/eval.h b/include/eval.h
index a23b249..89f05ef 100644
--- a/include/eval.h
+++ b/include/eval.h
@@ -6,7 +6,7 @@
/* By: charles <charles@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/01 17:05:30 by charles #+# #+# */
-/* Updated: 2020/09/09 17:27:21 by charles ### ########.fr */
+/* Updated: 2020/09/12 12:28:36 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -24,60 +24,54 @@
typedef struct
{
- t_path path;
- t_env env;
- t_ast *ast;
- int fds[2];
-} t_fork_param_parent;
+ t_path path;
+ t_env env;
+ t_ast *ast;
+ int fds[2];
+} t_fork_param_args;
typedef struct
{
char *exec_path;
char **argv;
t_env env;
- t_env env_local;
t_builtin_entry *builtin;
} t_fork_param_cmd;
-# define MS_NO_FD -2
-# define FDS_WRITE 1
-# define FDS_READ 0
+# define FD_NONE -2
+# define FD_WRITE 1
+# define FD_READ 0
-extern pid_t g_child_pid;
+extern pid_t g_child_pid;
/*
** op.c
*/
-int eval_op(int fds[2], t_env env, t_path path, t_ast *ast);
-int eval(int fds[2], t_env env, t_path path, t_ast *ast);
+int eval_op(int fds[2], t_env env, t_path path, t_ast *ast);
+int eval(int fds[2], t_env env, t_path path, t_ast *ast);
+int eval_forked(int fds[2], t_env env, t_path path, t_ast *ast, pid_t *child_pid);
/*
** cmd.c
*/
-int fork_wrap(int fds[2], void *passed, int (*wrapped)(void *param));
-int eval_cmd(int fds[2], t_env env, t_path path, t_ast *ast);
-t_ftlst *split_token(t_ftlst **lst, enum e_tok);
+int fork_wrap(int fds[2], void *passed, int (*wrapped)(void *param), pid_t *child_pid);
+int fork_wrap_wait(int fds[2], void *passed, int (*wrapped)(void *param));
+int eval_cmd(int fds[2], t_env env, t_path path, t_ast *ast);
/*
** redir.c
*/
-bool redir_extract(t_tok_lst **redirs, t_env env, int fds[2]);
+int redir_extract(t_tok_lst **redirs, t_env env, int fds[2]);
/*
** exec.c
*/
-bool exec_is_path(char *exec_name);
-bool exec_is_valid(char *exec_path);
-char *exec_search_path(t_path path, char *path_var, char *exec_name);
-
-/*
-** variable.c
-*/
-
-bool variable_extract(t_tok_lst **argv, t_env env, t_env env_local);
+bool exec_is_path(char *exec_name);
+bool exec_is_valid(char *exec_path);
+char *exec_search_path(t_path path, char *path_var, char *exec_name);
#endif
diff --git a/include/lexer.h b/include/lexer.h
index fd8972e..7e1bf06 100644
--- a/include/lexer.h
+++ b/include/lexer.h
@@ -6,7 +6,7 @@
/* By: nahaddac <nahaddac@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/06/19 10:51:26 by nahaddac #+# #+# */
-/* Updated: 2020/09/10 06:17:43 by nahaddac ### ########.fr */
+/* Updated: 2020/09/11 19:17:06 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -16,7 +16,26 @@
# include <stdlib.h>
# include "libft_lst.h"
# include "libft_str.h"
-// # include "minishell.h"
+
+/*
+** \brief token tags (type of token)
+** \param TAG_AND &&
+** \param TAG_END ;
+** \param TAG_OR ||
+** \param TAG_PIPE |
+** \param TAG_REDIR_IN <
+** \param TAG_REDIR_OUT >
+** \param TAG_REDIR_APPEND >>
+** \param TAG_PARENT_OPEN (
+** \param TAG_PARENT_CLOSE )
+** \param TAG_STR unquoted string
+** \param TAG_STR_DOUBLE string quoted with "
+** \param TAG_STR_SINGLE string quoted with '
+** \param TAG_STICK token is sticked to the next one
+** \param TAG_IS_STR all of string tags
+** \param TAG_IS_REDIR all of redirection tags
+** \param TAG_IS_SEP all of separator tags
+*/
enum e_tok
{
@@ -44,7 +63,13 @@ enum e_tok
*/
/*
-** \warning DO NOT change the order of the fields
+** \brief Token list struct
+** \param content token string content
+** \param next next token in the list (NULL if end)
+** \param tag token tag
+** \warning DO NOT change the order of the fields
+** (they are in the same order as t_ftlst so
+** that t_ftlst functions can be used on this struct aswell)
*/
typedef struct s_tok_lst
@@ -61,7 +86,6 @@ t_tok_lst *tok_lst_push_front(t_tok_lst **tokens, t_tok_lst *pushed);
void *tok_lst_destroy(t_tok_lst **tokens, void (*del)(void*));
t_tok_lst *tok_lst_last(t_tok_lst *tokens);
t_tok_lst *tok_lst_uncons(t_tok_lst **tokens);
-t_tok_lst *tok_lst_take_sticked(t_tok_lst **tokens);
/*
** lexer.c
diff --git a/include/minishell.h b/include/minishell.h
index 085f082..7e755a3 100644
--- a/include/minishell.h
+++ b/include/minishell.h
@@ -51,7 +51,7 @@
typedef t_ftht* t_path;
typedef t_ftvec* t_env;
-extern int g_last_status_code;
+extern int g_last_status;
extern char *g_basename;
/*