aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/ast.h17
-rw-r--r--include/eval.h22
-rw-r--r--include/minishell.h8
-rw-r--r--include/ms_glob.h32
-rw-r--r--include/utils.h31
5 files changed, 94 insertions, 16 deletions
diff --git a/include/ast.h b/include/ast.h
index 0d14779..b725c8b 100644
--- a/include/ast.h
+++ b/include/ast.h
@@ -6,7 +6,7 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/01 17:05:38 by charles #+# #+# */
-/* Updated: 2020/04/01 17:52:43 by charles ### ########.fr */
+/* Updated: 2020/05/04 11:59:43 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -25,10 +25,10 @@
/*
** \brief Separator type
-** \param SEP_END Regular command end `;`
-** \param SEP_PIPE Pipe output of left to right `|`
-** \param SEP_AND Execute right if left status == 0 `&&`
-** \param SEP_OR Execute right if left status != 0 `||`
+** \param SEP_END `;` Regular command end
+** \param SEP_PIPE `|` Pipe output of left to right
+** \param SEP_AND `&&` Execute right if left status == 0
+** \param SEP_OR `||` Execute right if left status != 0
*/
typedef enum e_sep
@@ -87,9 +87,8 @@ typedef enum e_ast_tag
/*
** \brief AST node struct
** \param tag Node tag
-** \param data Union containning possible node data
-** \param data::cmd Command struct
-** \param data::line Line struct
+** \param cmd Command struct
+** \param line Line struct
*/
typedef struct s_ast
@@ -99,7 +98,7 @@ typedef struct s_ast
{
t_line line;
t_cmd cmd;
- } data;
+ } ;
} t_ast;
t_ast *ast_new(t_ast_tag tag, void *data);
diff --git a/include/eval.h b/include/eval.h
index 31f729b..fc149b2 100644
--- a/include/eval.h
+++ b/include/eval.h
@@ -6,7 +6,7 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/01 17:05:30 by charles #+# #+# */
-/* Updated: 2020/04/01 17:53:26 by charles ### ########.fr */
+/* Updated: 2020/05/04 11:58:16 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -27,8 +27,7 @@
typedef struct
{
- int pipe_in[2];
- int pipe_out[2];
+ int p[2];
t_path path;
t_env env;
} t_eval_state;
@@ -43,11 +42,26 @@ typedef struct s_eval_status
int status;
} t_eval_status;
+typedef struct
+{
+ t_eval_state *state;
+ t_line *line;
+ int fd_in;
+ int fd_out;
+} t_fork_param_line;
+
+typedef struct
+{
+ char *exec_path;
+ char **argv;
+ char **envp;
+} t_fork_param_execve;
+
/*
** eval.c
*/
-int eval(t_eval_state *state, t_ast *ast);
+int eval(int fd_in, int fd_out, t_eval_state *state, t_ast *ast);
/*
** exec.c
diff --git a/include/minishell.h b/include/minishell.h
index ac00875..9551c1f 100644
--- a/include/minishell.h
+++ b/include/minishell.h
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/02/26 15:33:51 by cacharle #+# #+# */
-/* Updated: 2020/04/01 22:13:47 by charles ### ########.fr */
+/* Updated: 2020/04/05 14:52:20 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -34,6 +34,7 @@
# include "libft_lst.h"
# include "libft_util.h"
# include "libft_vec.h"
+# include "libft_dstr.h"
/*
** \brief Value of pipe entry if closed
@@ -70,6 +71,7 @@ t_path path_update(t_path path, char *path_var);
t_env env_from_array(char **envp);
char *env_search(t_env env, char *key);
+char *env_search_first_match(t_env env, const char *haystack);
/*
** builtin*.c - directory with all builtin commands
@@ -104,9 +106,9 @@ int builtin_env(char **argv, t_env env);
int builtin_exit(char **argv, t_env env);
/*
-** util.c - various utilitary functions
+** preprocess.c
*/
-void ht_del_str_entry(t_ftht_entry *entry);
+char *preprocess(char *input, t_env env);
#endif
diff --git a/include/ms_glob.h b/include/ms_glob.h
new file mode 100644
index 0000000..774d3be
--- /dev/null
+++ b/include/ms_glob.h
@@ -0,0 +1,32 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ms_glob.h :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/04/05 11:45:11 by charles #+# #+# */
+/* Updated: 2020/04/05 13:05:10 by charles ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#ifndef MS_GLOB_H
+# define MS_GLOB_H
+
+# include <dirent.h>
+# include <unistd.h>
+# include <stddef.h>
+# include "libft_str.h"
+# include "libft_vec.h"
+# include "utils.h"
+
+struct s_glob_param
+{
+ char *pattern;
+ t_ftvec *matches;
+};
+
+t_ftvec *glob_matches(char *pattern);
+char *ms_glob(char *pattern);
+
+#endif
diff --git a/include/utils.h b/include/utils.h
new file mode 100644
index 0000000..6f2fbc9
--- /dev/null
+++ b/include/utils.h
@@ -0,0 +1,31 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* utils.h :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/04/05 12:05:49 by charles #+# #+# */
+/* Updated: 2020/04/05 14:51:38 by charles ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#ifndef UTILS_H
+# define UTILS_H
+
+/*
+** \file utils.h
+** \brief Various utilitary functions
+*/
+
+typedef int (*t_directory_iter_func)(char*, struct dirent*, void*);
+
+int utils_directory_iter(
+ char *dirname,
+ void *param,
+ t_directory_iter_func f
+);
+
+size_t utils_var_end(char *name);
+
+#endif