diff --git a/srcs/main.c b/srcs/main.c index 3d83bd4..8e77107 100644 --- a/srcs/main.c +++ b/srcs/main.c @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/03/06 13:27:11 by apommier #+# #+# */ -/* Updated: 2022/04/17 19:26:30 by apommier ### ########.fr */ +/* Updated: 2022/04/18 04:38:12 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,7 +26,18 @@ void sig_quit(int num) { num = 0; ft_putstr_fd("\b \b\b \b", 1); - printf("quit num= %d\n", num); + //printf("quit num= %d\n", num); + //exit(0); +} + +void sig_quit2(int num) +{ + num = 0; + //ft_putchar_fd(127, 1); + //ft_putchar_fd(127, 1); + ft_putstr_fd("\b \b\b \b", 1); + ft_putstr_fd("sigquit2\n", 1); + //printf("sig_quit2\n"); //exit(0); } @@ -58,6 +69,20 @@ void print_prompt(char **path) input = 0; err_var = 0; cmd = 0; + + struct sigaction test; + + memset(&test, 0, sizeof(test)); + test.sa_handler = &sig_quit; + test.sa_flags = 0; + //test.sa_mask = 0; + if (sigaction(SIGQUIT, &test, 0) == -1) + { + printf("Minishell: sigaction error\n"); + exit(1); + } + else + printf("sigaction good\n"); while (1) { input = readline("\033[1;31m~$ \033[0m"); @@ -97,7 +122,17 @@ void print_prompt(char **path) int main(int ac, char **av, char **path) { char **env; + //struct sigaction test; + /*test.sa_handler = &sig_quit; + test.sa_flags = 0; + if (sigaction(SIGQUIT, &test, 0) == -1) + { + printf("sigaction error\n"); + exit(1); + } + else + printf("sigaction quit good\n");*/ if (!isatty(0)) { printf("Not today\n"); @@ -112,7 +147,7 @@ int main(int ac, char **av, char **path) } printf("---MINISHELL START---\n"); signal(SIGINT, crtl_c); - + //signal(SIGQUIT, sig_quit); print_prompt(env); return (0); } \ No newline at end of file diff --git a/srcs/pipe/pipe.c b/srcs/pipe/pipe.c index 8da7d90..770ce70 100644 --- a/srcs/pipe/pipe.c +++ b/srcs/pipe/pipe.c @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/04/02 18:51:31 by apommier #+# #+# */ -/* Updated: 2022/04/18 03:16:38 by apommier ### ########.fr */ +/* Updated: 2022/04/18 06:32:01 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -91,6 +91,11 @@ void exec_cmd(t_cmd *cmd, char **env, int *fdpipe) ft_putstr_fd("Minishell: command not found: ", 2); ft_putstr_fd(cmd->current_s_cmd->cmd + 1, 2); ft_putstr_fd("\n", 2); + close(0); + close(1); + close(cmd->tmpin); + close(cmd->tmpout); + free_cmd(cmd); exit(127); } if (-1 == execve(cmd->current_s_cmd->cmd, cmd->current_s_cmd->args, env)) @@ -138,8 +143,8 @@ void execute(t_cmd *cmd, char **env) fdin = dup(tmpin); while(cmd->current_s_cmd) { - if (i > 0 ) - close(fdout); + //if (i != 0) + // close(fdout); cmd->current_s_cmd->child = 1; fdout = -1; if (i > 0 && cmd->current_s_cmd->infile) diff --git a/srcs/set_quote/set_quote.c b/srcs/set_quote/set_quote.c index e4582ef..cbdf880 100644 --- a/srcs/set_quote/set_quote.c +++ b/srcs/set_quote/set_quote.c @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/04/09 23:58:21 by apommier #+# #+# */ -/* Updated: 2022/04/16 13:47:49 by apommier ### ########.fr */ +/* Updated: 2022/04/18 06:43:23 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -141,23 +141,24 @@ char *change_var(t_cmd *big_cmd, char *cmd, int *index) while (cmd[i] && (ft_isalnum(cmd[i]) || cmd[i] == '_' || cmd[i] == '?')) i++; swap = ft_substr(cmd, *index + 1, i - *index - 1); - //printf("swap= -%s-\n", swap); var = get_var(big_cmd, swap); - //printf("var -%s-\n", var); + free(swap); swap2 = ft_strdup(cmd + i); cmd[*index] = 0; ret = ft_strjoin(cmd, var); + free(cmd); *index += ft_strlen(var) - 1; free(var); var = ret; ret = ft_strjoin(ret, swap2); - //printf("change_var -%s-\n", ret); + free(swap2); return (ret); } char *set_var(t_cmd *big_cmd, char *cmd) { int i; + char *del; //printf("set_var\n"); i = 0; @@ -192,7 +193,9 @@ char *set_var(t_cmd *big_cmd, char *cmd) } i++; } + del = cmd; cmd = del_char(cmd, &i); + free(cmd); } //i++; @@ -210,14 +213,18 @@ int parse_quote(t_cmd *cmd) { int i; int j; - + char *swap; + i = 0; while (cmd->s_cmds[i]) { j = -1; while (cmd->s_cmds[i]->args[++j]) { + swap = cmd->s_cmds[i]->args[j]; cmd->s_cmds[i]->args[j] = set_var(cmd, cmd->s_cmds[i]->args[j]); + if (cmd->s_cmds[i]->args[j] != swap) + free(swap); } //printf("parse quote -%s-\n", cmd->s_cmds[i]->args[0]); if (!is_builtin(cmd->s_cmds[i]->args[0]))