diff options
| author | JozanLeClerc <bousset.rudy@gmail.com> | 2020-08-25 23:25:07 +0200 | 
|---|---|---|
| committer | JozanLeClerc <bousset.rudy@gmail.com> | 2020-08-25 23:25:07 +0200 | 
| commit | 441295b57b9892267841840d8d7166b9306f8501 (patch) | |
| tree | 5488d26656c2812686b9bc15a8efdc5c9ec58b70 | |
| parent | TODO update (diff) | |
| download | 42-minishell-441295b57b9892267841840d8d7166b9306f8501.tar.gz 42-minishell-441295b57b9892267841840d8d7166b9306f8501.tar.bz2 42-minishell-441295b57b9892267841840d8d7166b9306f8501.tar.xz 42-minishell-441295b57b9892267841840d8d7166b9306f8501.tar.zst 42-minishell-441295b57b9892267841840d8d7166b9306f8501.zip | |
In progress
Diffstat (limited to '')
| -rw-r--r-- | src/b_sqb.c | 50 | ||||
| -rw-r--r-- | src/d_define.h | 4 | ||||
| -rw-r--r-- | src/s_init.c | 42 | ||||
| -rw-r--r-- | src/s_struct.h | 1 | 
4 files changed, 87 insertions, 10 deletions
| diff --git a/src/b_sqb.c b/src/b_sqb.c index 9e7015c..91bf7b6 100644 --- a/src/b_sqb.c +++ b/src/b_sqb.c @@ -14,24 +14,56 @@  #include <stdint.h>  #include <unistd.h> +#include "d_define.h"  #include "s_struct.h"  #include "u_utils.h" -/* static uint8_t */ -/* 	b_get_sqb_id(uint64_t argc, */ -/* 				char *argv[],) */ -/* { */ -/* } */ +static void +	b_sqb_unexpected_operator(const char op[]) +{ +	ft_dprintf(STDERR_FILENO, "[: %s: unexpected operator\n", op); +} + +static uint8_t +	b_get_sqb_id(uint64_t argc, +				char *argv[], +				t_msh *msh) +{ +	size_t	j; +	uint8_t	i; + +	i = 0; +	while (i < FT_ID_SQB_COUNT) +	{ +		j = 0; +		while (j < argc) +		{ +			if ( +			ft_strncmp(argv[j], +				msh->sqb_ref[i], +				ft_strlen(msh->sqb_ref[i]) + 1) == 0) +				return (i); +			j++; +		} +		i++; +	} +	return (i); +}  static uint8_t  	b_eval_sqb(uint64_t argc,  			char *argv[],  			t_msh *msh)  { -	(void)argc; -	(void)argv; -	(void)msh; +	uint8_t	id; +	id = b_get_sqb_id(argc, argv, msh); +	if (id == FT_ID_SQB_COUNT) +	{ +		b_sqb_unexpected_operator(argv[0]); +		return (2); +	} +	ft_printf("[%s]\n", msh->sqb_ref[id]);  	return (0);  } @@ -48,5 +80,7 @@ uint8_t  	}  	if (argc == 1)  		return (1); +	else if (argc == 2) +		return (0);  	return (b_eval_sqb(argc, args, msh));  } diff --git a/src/d_define.h b/src/d_define.h index e094df1..18a60b4 100644 --- a/src/d_define.h +++ b/src/d_define.h @@ -90,7 +90,7 @@  #define FT_SQB_S_MAJ	"-b"  #define FT_SQB_NT		"-nt"  #define FT_SQB_OT		"-ot" -#define FT_SQB_EQUALS	"=" +#define FT_SQB_EQUA		"="  #define FT_SQB_DIFF		"!="  #define FT_SQB_EQ		"-eq"  #define FT_SQB_NE		"-ne" @@ -119,7 +119,7 @@ enum  	FT_ID_SQB_S_MAJ,  	FT_ID_SQB_NT,  	FT_ID_SQB_OT, -	FT_ID_SQB_EQUALS, +	FT_ID_SQB_EQUA,  	FT_ID_SQB_DIFF,  	FT_ID_SQB_EQ,  	FT_ID_SQB_NE, diff --git a/src/s_init.c b/src/s_init.c index 7b36653..acef5d6 100644 --- a/src/s_init.c +++ b/src/s_init.c @@ -26,6 +26,46 @@  #include "u_vars.h"  #include "u_vars_next.h" +static void +	s_init_sqb_ref_one(t_msh *msh) +{ +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_B], FT_SQB_B, ft_strlen(FT_SQB_B) + 1); +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_C], FT_SQB_C, ft_strlen(FT_SQB_C) + 1); +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_D], FT_SQB_D, ft_strlen(FT_SQB_D) + 1); +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_E], FT_SQB_E, ft_strlen(FT_SQB_E) + 1); +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_F], FT_SQB_F, ft_strlen(FT_SQB_F) + 1); +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_G], FT_SQB_G, ft_strlen(FT_SQB_G) + 1); +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_H], FT_SQB_H, ft_strlen(FT_SQB_H) + 1); +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_K], FT_SQB_K, ft_strlen(FT_SQB_K) + 1); +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_N], FT_SQB_N, ft_strlen(FT_SQB_N) + 1); +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_S], FT_SQB_S, ft_strlen(FT_SQB_S) + 1); +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_U], FT_SQB_U, ft_strlen(FT_SQB_U) + 1); +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_W], FT_SQB_W, ft_strlen(FT_SQB_W) + 1); +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_X], FT_SQB_X, ft_strlen(FT_SQB_X) + 1); +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_Z], FT_SQB_Z, ft_strlen(FT_SQB_Z) + 1); +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_L_MAJ], +		FT_SQB_L_MAJ, ft_strlen(FT_SQB_L_MAJ) + 1); +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_S_MAJ], +		FT_SQB_S_MAJ, ft_strlen(FT_SQB_S_MAJ) + 1); +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_NT], FT_SQB_NT, ft_strlen(FT_SQB_NT) + 1); +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_OT], FT_SQB_OT, ft_strlen(FT_SQB_OT) + 1); +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_EQUA], +		FT_SQB_EQUA, ft_strlen(FT_SQB_EQUA) + 1); +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_DIFF], +		FT_SQB_DIFF, ft_strlen(FT_SQB_DIFF) + 1); +} + +static void +	s_init_sqb_ref_two(t_msh *msh) +{ +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_EQ], FT_SQB_EQ, ft_strlen(FT_SQB_EQ) + 1); +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_NE], FT_SQB_NE, ft_strlen(FT_SQB_NE) + 1); +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_GT], FT_SQB_GT, ft_strlen(FT_SQB_GT) + 1); +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_GE], FT_SQB_GE, ft_strlen(FT_SQB_GE) + 1); +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_LT], FT_SQB_LT, ft_strlen(FT_SQB_LT) + 1); +	ft_memcpy(msh->sqb_ref[FT_ID_SQB_LE], FT_SQB_LE, ft_strlen(FT_SQB_LE) + 1); +} +  static char  	**dupenv_del(char **nenvp,  					uint64_t i) @@ -143,5 +183,7 @@ t_msh  	msh->cwd = set_cwd(msh);  	msh->env_fork_tmp[0][0] = '\0';  	inc_shlvl(msh); +	s_init_sqb_ref_one(msh); +	s_init_sqb_ref_two(msh);  	return (msh);  } diff --git a/src/s_struct.h b/src/s_struct.h index 15505d5..54d3af3 100644 --- a/src/s_struct.h +++ b/src/s_struct.h @@ -74,6 +74,7 @@ typedef struct		s_msh  	char			**bu_ref;  	char			*cwd;  	char			env_fork_tmp[128][1024]; +	char			sqb_ref[FT_ID_SQB_COUNT][4];  	uint8_t			(*bu_ptr[FT_BUILTINS_COUNT])(char **, struct s_msh*);  	struct s_line	*curr;  	struct s_lvars	*vars; | 
