fix some things

This commit is contained in:
kinou-p 2022-04-18 06:51:03 +02:00
parent e392ba03c4
commit 0f485659bc
3 changed files with 58 additions and 11 deletions

View File

@ -6,7 +6,7 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */ /* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/03/06 13:27:11 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; num = 0;
ft_putstr_fd("\b \b\b \b", 1); 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); //exit(0);
} }
@ -58,6 +69,20 @@ void print_prompt(char **path)
input = 0; input = 0;
err_var = 0; err_var = 0;
cmd = 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) while (1)
{ {
input = readline("\033[1;31m~$ \033[0m"); input = readline("\033[1;31m~$ \033[0m");
@ -97,7 +122,17 @@ void print_prompt(char **path)
int main(int ac, char **av, char **path) int main(int ac, char **av, char **path)
{ {
char **env; 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)) if (!isatty(0))
{ {
printf("Not today\n"); printf("Not today\n");
@ -112,7 +147,7 @@ int main(int ac, char **av, char **path)
} }
printf("---MINISHELL START---\n"); printf("---MINISHELL START---\n");
signal(SIGINT, crtl_c); signal(SIGINT, crtl_c);
//signal(SIGQUIT, sig_quit);
print_prompt(env); print_prompt(env);
return (0); return (0);
} }

View File

@ -6,7 +6,7 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */ /* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/04/02 18:51:31 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("Minishell: command not found: ", 2);
ft_putstr_fd(cmd->current_s_cmd->cmd + 1, 2); ft_putstr_fd(cmd->current_s_cmd->cmd + 1, 2);
ft_putstr_fd("\n", 2); ft_putstr_fd("\n", 2);
close(0);
close(1);
close(cmd->tmpin);
close(cmd->tmpout);
free_cmd(cmd);
exit(127); exit(127);
} }
if (-1 == execve(cmd->current_s_cmd->cmd, cmd->current_s_cmd->args, env)) 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); fdin = dup(tmpin);
while(cmd->current_s_cmd) while(cmd->current_s_cmd)
{ {
if (i > 0 ) //if (i != 0)
close(fdout); // close(fdout);
cmd->current_s_cmd->child = 1; cmd->current_s_cmd->child = 1;
fdout = -1; fdout = -1;
if (i > 0 && cmd->current_s_cmd->infile) if (i > 0 && cmd->current_s_cmd->infile)

View File

@ -6,7 +6,7 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */ /* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/04/09 23:58:21 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] == '?')) while (cmd[i] && (ft_isalnum(cmd[i]) || cmd[i] == '_' || cmd[i] == '?'))
i++; i++;
swap = ft_substr(cmd, *index + 1, i - *index - 1); swap = ft_substr(cmd, *index + 1, i - *index - 1);
//printf("swap= -%s-\n", swap);
var = get_var(big_cmd, swap); var = get_var(big_cmd, swap);
//printf("var -%s-\n", var); free(swap);
swap2 = ft_strdup(cmd + i); swap2 = ft_strdup(cmd + i);
cmd[*index] = 0; cmd[*index] = 0;
ret = ft_strjoin(cmd, var); ret = ft_strjoin(cmd, var);
free(cmd);
*index += ft_strlen(var) - 1; *index += ft_strlen(var) - 1;
free(var); free(var);
var = ret; var = ret;
ret = ft_strjoin(ret, swap2); ret = ft_strjoin(ret, swap2);
//printf("change_var -%s-\n", ret); free(swap2);
return (ret); return (ret);
} }
char *set_var(t_cmd *big_cmd, char *cmd) char *set_var(t_cmd *big_cmd, char *cmd)
{ {
int i; int i;
char *del;
//printf("set_var\n"); //printf("set_var\n");
i = 0; i = 0;
@ -192,7 +193,9 @@ char *set_var(t_cmd *big_cmd, char *cmd)
} }
i++; i++;
} }
del = cmd;
cmd = del_char(cmd, &i); cmd = del_char(cmd, &i);
free(cmd);
} }
//i++; //i++;
@ -210,14 +213,18 @@ int parse_quote(t_cmd *cmd)
{ {
int i; int i;
int j; int j;
char *swap;
i = 0; i = 0;
while (cmd->s_cmds[i]) while (cmd->s_cmds[i])
{ {
j = -1; j = -1;
while (cmd->s_cmds[i]->args[++j]) 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]); 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]); //printf("parse quote -%s-\n", cmd->s_cmds[i]->args[0]);
if (!is_builtin(cmd->s_cmds[i]->args[0])) if (!is_builtin(cmd->s_cmds[i]->args[0]))