diff options
| author | JozanLeClerc <bousset.rudy@gmail.com> | 2020-04-25 16:40:34 +0200 | 
|---|---|---|
| committer | JozanLeClerc <bousset.rudy@gmail.com> | 2020-04-25 16:40:34 +0200 | 
| commit | e42601eb5acc07417b217dfed4e9ab8cbb91794f (patch) | |
| tree | 76e7dacd2e8d93012fecf2c29fcb4d14e6d1baed /src | |
| parent | (fd)>qwe fd agregation redir works (diff) | |
| download | 42-minishell-e42601eb5acc07417b217dfed4e9ab8cbb91794f.tar.gz 42-minishell-e42601eb5acc07417b217dfed4e9ab8cbb91794f.tar.bz2 42-minishell-e42601eb5acc07417b217dfed4e9ab8cbb91794f.tar.xz 42-minishell-e42601eb5acc07417b217dfed4e9ab8cbb91794f.tar.zst 42-minishell-e42601eb5acc07417b217dfed4e9ab8cbb91794f.zip  | |
Stupid bash rule
Diffstat (limited to '')
| -rw-r--r-- | src/ft_b_env.c | 2 | ||||
| -rw-r--r-- | src/ft_b_exit.c | 2 | ||||
| -rw-r--r-- | src/ft_b_export.c | 2 | ||||
| -rw-r--r-- | src/ft_d_define.h | 9 | ||||
| -rw-r--r-- | src/ft_e_externs_next.c | 4 | ||||
| -rw-r--r-- | src/ft_f_fail.c | 27 | ||||
| -rw-r--r-- | src/ft_f_fail.h | 13 | ||||
| -rw-r--r-- | src/ft_f_redir.c | 3 | ||||
| -rw-r--r-- | src/ft_m_argv.c | 40 | ||||
| -rw-r--r-- | src/ft_m_argv.h | 24 | ||||
| -rw-r--r-- | src/ft_m_funptr.c | 2 | ||||
| -rw-r--r-- | src/ft_p_line.c | 3 | ||||
| -rw-r--r-- | src/ft_s_destroy.c | 1 | ||||
| -rw-r--r-- | src/ft_s_init.c | 10 | ||||
| -rw-r--r-- | src/ft_s_struct.h | 1 | ||||
| -rw-r--r-- | src/minishell.c | 14 | 
16 files changed, 119 insertions, 38 deletions
diff --git a/src/ft_b_env.c b/src/ft_b_env.c index c602c13..14d05a2 100644 --- a/src/ft_b_env.c +++ b/src/ft_b_env.c @@ -23,7 +23,7 @@ uint8_t  	if (args && args[0])  	{ -		ft_fail_no_options("env"); +		ft_fail_no_options("env", msh);  		return (127);  	}  	ptr = msh->envp; diff --git a/src/ft_b_exit.c b/src/ft_b_exit.c index b9cb37b..ae421cf 100644 --- a/src/ft_b_exit.c +++ b/src/ft_b_exit.c @@ -28,7 +28,7 @@ uint8_t  	if (argc > 1)  	{ -		ft_fail_too_many_args("exit"); +		ft_fail_too_many_args("exit", msh);  		return (1);  	}  	if (argc == 1) diff --git a/src/ft_b_export.c b/src/ft_b_export.c index 767db08..fa2de45 100644 --- a/src/ft_b_export.c +++ b/src/ft_b_export.c @@ -66,7 +66,7 @@ uint8_t  		next = 0;  		if (!ft_check_valid_identifier(*ptr))  		{ -			ft_fail_identifier("export", *ptr); +			ft_fail_identifier("export", *ptr, msh);  			next = 1;  			r = 1;  		} diff --git a/src/ft_d_define.h b/src/ft_d_define.h index 3a10c58..acb1a29 100644 --- a/src/ft_d_define.h +++ b/src/ft_d_define.h @@ -19,16 +19,23 @@  ** ====== CLASSICS ======  */ +#define FT_DEFAULT_SHNAME	"minishell"  #define FT_PS_ONE			"minishell ~> "  #define FT_BUILTINS			"echo|cd|pwd|export|unset|env|exit|type"  #define FT_BUILTINS_COUNT	8  #define FT_HISTFILE			"minishell_history"  /* +** ====== OPTIONS ====== +*/ + +#define FT_INTERACT			"-i" +#define FT_COMMAND			"-c" + +/*  ** ====== FAIL MSG ======  */ -#define FT_FAIL_ALLOC			"failed to allocate memory"  #define FT_FAIL_NO_OPTIONS		"no options required"  #define FT_FAIL_TOO_MANY_ARGS	"too many arguments" diff --git a/src/ft_e_externs_next.c b/src/ft_e_externs_next.c index bf1bb38..ab5f150 100644 --- a/src/ft_e_externs_next.c +++ b/src/ft_e_externs_next.c @@ -33,7 +33,7 @@ static char  	{  		ft_lcom_clear(&msh->curr);  		ft_s_destroy(msh); -		ft_fail_alloc(); +		ft_fail_alloc(msh);  	}  	ft_memcpy(fullpath, p_path, path_len);  	*(fullpath + (path_len)) = '/'; @@ -98,7 +98,7 @@ char  		{  			ft_lcom_clear(&msh->curr);  			ft_s_destroy(msh); -			ft_fail_alloc(); +			ft_fail_alloc(msh);  		}  		return (envpath);  	} diff --git a/src/ft_f_fail.c b/src/ft_f_fail.c index b43281d..3f43bae 100644 --- a/src/ft_f_fail.c +++ b/src/ft_f_fail.c @@ -17,37 +17,42 @@  #include <errno.h>  #include "ft_d_define.h" +#include "ft_s_struct.h"  static void  	ft_write_fail(const char concern[], -				const char msg[]) +				const char msg[], +				t_msh *msh)  { -	ft_dprintf(STDERR_FILENO, "minishell: %s: %s\n", concern, msg); +	ft_dprintf(STDERR_FILENO, "%s: %s: %s\n", msh->shname, concern, msg);  }  void -	ft_fail_no_options(const char concern[]) +	ft_fail_no_options(const char concern[], +					t_msh *msh)  { -	ft_write_fail(concern, FT_FAIL_NO_OPTIONS); +	ft_write_fail(concern, FT_FAIL_NO_OPTIONS, msh);  }  void  	ft_fail_identifier(const char concern[], -					const char identifier[]) +					const char identifier[], +					t_msh *msh)  { -	ft_dprintf(STDERR_FILENO, -		"minishell: %s: `%s': not a valid identifier\n", concern, identifier); +	ft_dprintf(STDERR_FILENO, "%s: %s: `%s': not a valid identifier\n", +		msh->shname, concern, identifier);  }  void -	ft_fail_too_many_args(const char concern[]) +	ft_fail_too_many_args(const char concern[], +						t_msh *msh)  { -	ft_write_fail(concern, FT_FAIL_TOO_MANY_ARGS); +	ft_write_fail(concern, FT_FAIL_TOO_MANY_ARGS, msh);  }  void -	ft_fail_alloc(void) +	ft_fail_alloc(t_msh *msh)  { -	ft_write_fail("minishell", strerror(errno)); +	ft_dprintf(STDERR_FILENO, "%s: %s\n", msh->shname, strerror(errno));  	exit(FT_RET_ALLOC);  } diff --git a/src/ft_f_fail.h b/src/ft_f_fail.h index 60f989d..5091810 100644 --- a/src/ft_f_fail.h +++ b/src/ft_f_fail.h @@ -13,10 +13,15 @@  #ifndef FT_F_FAIL_H  #define FT_F_FAIL_H -void	ft_fail_no_options(const char concern[]); -void	ft_fail_too_many_args(const char concern[]); +#include "ft_s_struct.h" + +void	ft_fail_no_options(const char concern[], +						t_msh *msh); +void	ft_fail_too_many_args(const char concern[], +							t_msh *msh);  void	ft_fail_identifier(const char concern[], -						const char identifier[]); -void	ft_fail_alloc(void); +						const char identifier[], +						t_msh *msh); +void	ft_fail_alloc(t_msh *msh);  #endif diff --git a/src/ft_f_redir.c b/src/ft_f_redir.c index 997401a..2cd7d58 100644 --- a/src/ft_f_redir.c +++ b/src/ft_f_redir.c @@ -23,7 +23,8 @@ void  	ft_f_redir(const char path[],  			t_msh *msh)  { -	ft_dprintf(STDERR_FILENO, "minishell: %s: %s\n", path, strerror(errno)); +	ft_dprintf(STDERR_FILENO, "%s: %s: %s\n", +		msh->shname, path, strerror(errno));  	ft_lcom_clear(&msh->curr);  	ft_s_destroy(msh);  	exit(1); diff --git a/src/ft_m_argv.c b/src/ft_m_argv.c new file mode 100644 index 0000000..a4da580 --- /dev/null +++ b/src/ft_m_argv.c @@ -0,0 +1,40 @@ +/* ************************************************************************** */ +/*                                                                            */ +/*                                                        :::      ::::::::   */ +/*   ft_m_argv.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 <libft.h> +#include <stdint.h> + +#include "ft_d_define.h" +#include "ft_m_loop.h" +#include "ft_s_struct.h" + +uint8_t +	ft_m_argv(int argc, +			const char *argv[], +			t_msh *msh) +{ +	int32_t	i; + +	(void)argv; +	if (argc == 1) +	{ +		msh->ret = ft_m_loop(msh); +		return (msh->ret); +	} +	i = 1; +	while (i < argc) +	{ +		/* if (ft_strncmp(*(argv + i), )) */ +		i++; +	} +	return (msh->ret); +} diff --git a/src/ft_m_argv.h b/src/ft_m_argv.h new file mode 100644 index 0000000..2f3260d --- /dev/null +++ b/src/ft_m_argv.h @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/*                                                                            */ +/*                                                        :::      ::::::::   */ +/*   ft_m_argv.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_ARGV_H +#define FT_M_ARGV_H + +#include <stdint.h> + +#include "ft_s_struct.h" + +uint8_t	ft_m_argv(int argc, +				const char *argv[], +				t_msh *msh); + +#endif diff --git a/src/ft_m_funptr.c b/src/ft_m_funptr.c index 0a48d52..305dfc9 100644 --- a/src/ft_m_funptr.c +++ b/src/ft_m_funptr.c @@ -32,6 +32,6 @@ void  	msh->bu_ptr[7] = ft_b_type;  	if (!(msh->bu_ref = ft_split(FT_BUILTINS, '|')))  	{ -		ft_fail_alloc(); +		ft_fail_alloc(msh);  	}  } diff --git a/src/ft_p_line.c b/src/ft_p_line.c index df31973..81e02d2 100644 --- a/src/ft_p_line.c +++ b/src/ft_p_line.c @@ -12,6 +12,7 @@  #include <libft.h>  #include <stdlib.h> +  #include "ft_d_enum.h"  #include "ft_f_fail.h"  #include "ft_p_lcom.h" @@ -37,6 +38,6 @@ void  	}  	if (ft_p_lcom(line, count, msh) < 0)  	{ -		ft_fail_alloc(); +		ft_fail_alloc(msh);  	}  } diff --git a/src/ft_s_destroy.c b/src/ft_s_destroy.c index 7f495c4..f339e8d 100644 --- a/src/ft_s_destroy.c +++ b/src/ft_s_destroy.c @@ -18,6 +18,7 @@ void  {  	ft_memdel((void*)&msh->ps_one);  	ft_memdel((void*)&msh->cwd); +	ft_memdel((void*)&msh->shname);  	ft_delwords(msh->bu_ref);  	ft_memdel((void*)&msh);  } diff --git a/src/ft_s_init.c b/src/ft_s_init.c index fb3ba6a..5de17c1 100644 --- a/src/ft_s_init.c +++ b/src/ft_s_init.c @@ -24,15 +24,11 @@ t_msh  	t_msh	*msh;  	if (!(msh = (t_msh*)malloc(sizeof(t_msh)))) -	{  		return (NULL); -	} -	if (!(msh->ps_one = -		(char*)malloc((ft_strlen(FT_PS_ONE) + 1) * sizeof(char)))) -	{ +	if (!(msh->ps_one = ft_strdup(FT_PS_ONE))) +		return (NULL); +	if (!(msh->shname = ft_strdup(FT_DEFAULT_SHNAME)))  		return (NULL); -	} -	ft_strlcpy(msh->ps_one, FT_PS_ONE, ft_strlen(FT_PS_ONE) + 1);  	msh->cwd = NULL;  	msh->cwd = getcwd(NULL, 0);  	/* TODO: handle getcwd failed */ diff --git a/src/ft_s_struct.h b/src/ft_s_struct.h index 06674cc..38eeb43 100644 --- a/src/ft_s_struct.h +++ b/src/ft_s_struct.h @@ -42,6 +42,7 @@ typedef struct		s_msh  	char			*ps_one;  	char			*cwd;  	uint8_t			ret; +	char			*shname;  	char			**bu_ref;  	uint8_t			(*bu_ptr[FT_BUILTINS_COUNT])(char **, struct s_msh*);  	struct s_lcom	*curr; diff --git a/src/minishell.c b/src/minishell.c index 1b5f4da..1df809b 100644 --- a/src/minishell.c +++ b/src/minishell.c @@ -12,9 +12,11 @@  #include <libft.h>  #include <stdint.h> +#include <string.h> +#include <errno.h>  #include "ft_f_fail.h" -#include "ft_m_loop.h" +#include "ft_m_argv.h"  #include "ft_s_struct.h"  #include "ft_s_init.h"  #include "ft_s_destroy.h" @@ -27,15 +29,13 @@ int  	t_msh	*msh;  	int32_t	ret; -	(void)argc; -	(void)argv; -	/* TODO: deal with args */ +	/* TODO: increment $SHLVL */  	if (!(msh = ft_init_msh(envp)))  	{ -		ft_fail_alloc(); +		ft_dprintf(2, "%s\n", strerror(errno)); +		return (FT_RET_ALLOC);  	} -	msh->ret = ft_m_loop(msh); -	ret = msh->ret; +	ret = ft_m_argv(argc, argv, msh);  	ft_s_destroy(msh);  	return (ret);  }  | 
