summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile6
-rw-r--r--src/ft_d_define.h4
-rw-r--r--src/ft_m_funptr.c31
-rw-r--r--src/ft_m_funptr.h20
-rw-r--r--src/ft_m_loop.c2
-rw-r--r--src/ft_p_line.c21
-rw-r--r--src/ft_p_line.h20
-rw-r--r--src/ft_s_destroy.c1
-rw-r--r--src/ft_s_init.c2
-rw-r--r--src/ft_s_struct.h5
10 files changed, 109 insertions, 3 deletions
diff --git a/Makefile b/Makefile
index 580ca63..005be1d 100644
--- a/Makefile
+++ b/Makefile
@@ -15,10 +15,12 @@ LFT_SRCS_DIR = ${LFT_DIR}src/
#--------------------------------- FILES --------------------------------------#
#==============================================================================#
SRCS_NAME = minishell.c
-SRCS_NAME += ft_m_prompt.c
+SRCS_NAME += ft_m_funptr.c
SRCS_NAME += ft_m_loop.c
-SRCS_NAME += ft_s_init.c
+SRCS_NAME += ft_m_prompt.c
SRCS_NAME += ft_s_destroy.c
+SRCS_NAME += ft_s_init.c
+SRCS_NAME += ft_p_line.c
#------------------------------------------------------------------------------#
SRCS = $(addprefix ${SRCS_DIR}, ${SRCS_NAME})
#------------------------------------------------------------------------------#
diff --git a/src/ft_d_define.h b/src/ft_d_define.h
index 06cc2eb..b30be21 100644
--- a/src/ft_d_define.h
+++ b/src/ft_d_define.h
@@ -13,6 +13,8 @@
#ifndef FT_D_DEFINE_H
#define FT_D_DEFINE_H
-#define FT_PS_ONE "minishell ~> "
+#define FT_PS_ONE "minishell ~> "
+#define FT_BUILTINS "echo|cd|pwd|export|unset|env|exit|cat"
+#define FT_BUILTINS_COUNT 8
#endif
diff --git a/src/ft_m_funptr.c b/src/ft_m_funptr.c
new file mode 100644
index 0000000..682472b
--- /dev/null
+++ b/src/ft_m_funptr.c
@@ -0,0 +1,31 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_m_funptr.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: rbousset <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/02/14 17:19:27 by rbousset #+# #+# */
+/* Updated: 2020/02/14 17:19:29 by rbousset ### ########lyon.fr */
+/* */
+/* ************************************************************************** */
+
+#include "ft_m_funptr.h"
+#include "ft_s_struct.h"
+
+void
+ ft_init_buptr(t_msh *msh)
+{
+ msh->bu_ptr[0] = ft_b_echo;
+ msh->bu_ptr[1] = ft_b_cd;
+ msh->bu_ptr[2] = ft_b_pwd;
+ msh->bu_ptr[3] = ft_b_export;
+ msh->bu_ptr[4] = ft_b_unset;
+ msh->bu_ptr[5] = ft_b_env;
+ msh->bu_ptr[6] = ft_b_exit;
+ msh->bu_ptr[7] = ft_b_cat;
+ if (!(msh->bu_ref = ft_split(FT_BUILTINS, '|')))
+ {
+ return ;
+ }
+}
diff --git a/src/ft_m_funptr.h b/src/ft_m_funptr.h
new file mode 100644
index 0000000..889c0af
--- /dev/null
+++ b/src/ft_m_funptr.h
@@ -0,0 +1,20 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_m_funptr.h :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: rbousset <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/02/14 17:19:27 by rbousset #+# #+# */
+/* Updated: 2020/02/14 17:19:29 by rbousset ### ########lyon.fr */
+/* */
+/* ************************************************************************** */
+
+#ifndef FT_M_FUNPTR_H
+#define FT_M_FUNPTR_H
+
+#include "ft_s_struct.h"
+
+void ft_init_buptr(t_msh *msh);
+
+#endif
diff --git a/src/ft_m_loop.c b/src/ft_m_loop.c
index 1e2efc0..d53ae89 100644
--- a/src/ft_m_loop.c
+++ b/src/ft_m_loop.c
@@ -28,6 +28,8 @@ int32_t
{
ft_m_prompt(msh);
gnl = get_next_line(STDIN_FILENO, &line);
+ ft_p_line(line, msh);
+ ft_memdel((void*)&line);
}
return (FT_RET_FINE);
}
diff --git a/src/ft_p_line.c b/src/ft_p_line.c
new file mode 100644
index 0000000..70699a6
--- /dev/null
+++ b/src/ft_p_line.c
@@ -0,0 +1,21 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_p_line.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: rbousset <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/02/14 17:19:27 by rbousset #+# #+# */
+/* Updated: 2020/02/14 17:19:29 by rbousset ### ########lyon.fr */
+/* */
+/* ************************************************************************** */
+
+#include "ft_p_line.h"
+#include "ft_s_struct.h"
+
+void
+ ft_p_line(char *line, t_msh *msh)
+{
+ (void)line;
+ (void)msh;
+}
diff --git a/src/ft_p_line.h b/src/ft_p_line.h
new file mode 100644
index 0000000..262cb57
--- /dev/null
+++ b/src/ft_p_line.h
@@ -0,0 +1,20 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_p_line.h :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: rbousset <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/02/14 17:19:27 by rbousset #+# #+# */
+/* Updated: 2020/02/14 17:19:29 by rbousset ### ########lyon.fr */
+/* */
+/* ************************************************************************** */
+
+#ifndef FT_P_LINE_H
+#define FT_P_LINE_H
+
+#include "ft_s_struct.h"
+
+void ft_p_line(char *line, t_msh *msh);
+
+#endif
diff --git a/src/ft_s_destroy.c b/src/ft_s_destroy.c
index 23e0737..8c82297 100644
--- a/src/ft_s_destroy.c
+++ b/src/ft_s_destroy.c
@@ -17,5 +17,6 @@ void
ft_s_destroy(t_msh *msh)
{
ft_memdel((void*)&msh->ps_one);
+ ft_memdel((void*)&msh->bu_ptr);
ft_memdel((void*)&msh);
}
diff --git a/src/ft_s_init.c b/src/ft_s_init.c
index c4b2667..2d55e88 100644
--- a/src/ft_s_init.c
+++ b/src/ft_s_init.c
@@ -12,6 +12,7 @@
#include <libft.h>
#include "ft_d_define.h"
+#include "ft_m_funptr.h"
#include "ft_s_init.h"
t_msh
@@ -31,6 +32,7 @@ t_msh
ft_strlcpy(msh->ps_one, FT_PS_ONE, ft_strlen(FT_PS_ONE) + 1);
msh->envp = envp;
msh->ret = 0;
+ ft_m_funptr(msh);
msh->lcom = NULL;
return (msh);
}
diff --git a/src/ft_s_struct.h b/src/ft_s_struct.h
index 8234449..8c02f9f 100644
--- a/src/ft_s_struct.h
+++ b/src/ft_s_struct.h
@@ -13,6 +13,9 @@
#ifndef FT_S_STRUCT_H
#define FT_S_STRUCT_H
+#include <stdint.h>
+#include "ft_d_define.h"
+
typedef struct s_com
{
char *com;
@@ -25,6 +28,8 @@ typedef struct s_msh
char *ps_one;
char **envp;
int32_t ret;
+ char **bu_ref;
+ int32_t (*bu_ptr[FT_BUILTINS_COUNT])(struct s_msh*);
struct s_com *lcom;
} t_msh;