Merge branch 'master' into sadjigui
This commit is contained in:
commit
86d4bbcd25
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/03/09 22:33:49 by apommier #+# #+# */
|
||||
/* Updated: 2022/04/09 04:59:53 by apommier ### ########.fr */
|
||||
/* Updated: 2022/04/09 18:48:25 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -75,7 +75,7 @@ char *get_command(char **exec, char **env);
|
||||
|
||||
//free_cmd
|
||||
void free_cmd(t_cmd *cmd);
|
||||
void exit_shell(t_cmd *cmd, char **env);
|
||||
void exit_shell(t_cmd *cmd);
|
||||
|
||||
//redirection.c set redirection and input good
|
||||
char *set_redirection(t_s_cmd *cmd, char *line, int index);
|
||||
@ -93,8 +93,8 @@ int find_pwd(t_s_cmd *cmd);
|
||||
void init_s_cmd(t_s_cmd *cmd, char **env);
|
||||
int tab_len(char **tab);
|
||||
int find_len(char *input, int i, char c);
|
||||
//void lone_export(t_s_cmd *cmd);
|
||||
//void find_variable(char *variable, t_s_cmd *cmd);
|
||||
void lone_export(t_s_cmd *cmd);
|
||||
void find_variable(char *variable, t_s_cmd *cmd);
|
||||
|
||||
//real builtin
|
||||
void ft_env(t_s_cmd *cmd, char **env);
|
||||
|
||||
86
srcs/main.c
86
srcs/main.c
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/03/06 13:27:11 by apommier #+# #+# */
|
||||
/* Updated: 2022/04/09 04:47:37 by apommier ### ########.fr */
|
||||
/* Updated: 2022/04/09 19:19:30 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -14,7 +14,14 @@
|
||||
|
||||
void crtl_c(int num)
|
||||
{
|
||||
// close(0);
|
||||
int tmpin;
|
||||
|
||||
tmpin = dup(0);
|
||||
num = 0;
|
||||
|
||||
close(0);
|
||||
//dup2(tmpin, 0);
|
||||
//close(tmpin);
|
||||
printf("\n");
|
||||
rl_replace_line("", 0);
|
||||
rl_on_new_line();
|
||||
@ -23,47 +30,12 @@ void crtl_c(int num)
|
||||
|
||||
void sig_quit(int num)
|
||||
{
|
||||
num = 0;
|
||||
ft_putstr_fd("\b \b\b \b", 1);
|
||||
//printf("quit num= %d\n", num);
|
||||
//exit(0);
|
||||
}
|
||||
|
||||
void print_prompt(char **path)
|
||||
{
|
||||
char *input;
|
||||
t_cmd *cmd;
|
||||
int i;
|
||||
|
||||
input = 0;
|
||||
i = 0;
|
||||
cmd = 0;
|
||||
while (1)
|
||||
{
|
||||
i = 0;
|
||||
input = readline("\033[1;31m~$ \033[0m");
|
||||
if (!input)
|
||||
exit_shell(cmd, path);
|
||||
add_history(input);
|
||||
if (!ft_strcmp("exit", input) && input)
|
||||
{
|
||||
free(input);
|
||||
exit_shell(cmd, path);
|
||||
}
|
||||
if (ft_strlen(input) && next_space(input, 0) && input)
|
||||
{
|
||||
cmd = set_cmd(input, path);
|
||||
if (cmd)
|
||||
{
|
||||
cmd->err_var = 0;
|
||||
execute(cmd, path);
|
||||
path = cmd->env;
|
||||
free_cmd(cmd);
|
||||
}
|
||||
}
|
||||
free(input);
|
||||
}
|
||||
}
|
||||
|
||||
char **ft_dup_double(char **env)
|
||||
{
|
||||
char **new_tab;
|
||||
@ -83,6 +55,44 @@ char **ft_dup_double(char **env)
|
||||
return (new_tab);
|
||||
}
|
||||
|
||||
void print_prompt(char **path)
|
||||
{
|
||||
char *input;
|
||||
t_cmd *cmd;
|
||||
int i;
|
||||
char **swap;
|
||||
|
||||
input = 0;
|
||||
i = 0;
|
||||
cmd = 0;
|
||||
while (1)
|
||||
{
|
||||
i = 0;
|
||||
input = readline("\033[1;31m~$ \033[0m");
|
||||
if (!input)
|
||||
exit_shell(cmd);
|
||||
add_history(input);
|
||||
if (!ft_strcmp("exit", input) && input)
|
||||
{
|
||||
free(input);
|
||||
exit_shell(cmd);
|
||||
}
|
||||
if (ft_strlen(input) && next_space(input, 0) && input)
|
||||
{
|
||||
cmd = set_cmd(input, path);
|
||||
if (cmd)
|
||||
{
|
||||
cmd->err_var = 0;
|
||||
execute(cmd, path);
|
||||
path = ft_dup_double(cmd->env);
|
||||
free_cmd(cmd);
|
||||
cmd = 0;
|
||||
}
|
||||
}
|
||||
free(input);
|
||||
}
|
||||
}
|
||||
|
||||
int main(int ac, char **av, char **path)
|
||||
{
|
||||
char **env;
|
||||
|
||||
@ -6,17 +6,18 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/03/09 12:33:30 by apommier #+# #+# */
|
||||
/* Updated: 2022/04/09 04:48:22 by apommier ### ########.fr */
|
||||
/* Updated: 2022/04/09 19:19:58 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "../../includes/minishell.h"
|
||||
|
||||
void exit_shell(t_cmd *cmd, char **env)
|
||||
void exit_shell(t_cmd *cmd)
|
||||
{
|
||||
int i;
|
||||
|
||||
i = 0;
|
||||
if (cmd)
|
||||
free_double(cmd->env);
|
||||
clear_history();
|
||||
//print_double_fd(cmd->s_cmds[0]->env, 1);
|
||||
@ -43,6 +44,7 @@ void free_cmd(t_cmd *cmd)
|
||||
free(cmd->s_cmds[i]);
|
||||
i++;
|
||||
}
|
||||
free_double(cmd->env);
|
||||
free_double(cmd->path);
|
||||
free(cmd->s_cmds);
|
||||
free(cmd);
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/03/08 15:19:42 by apommier #+# #+# */
|
||||
/* Updated: 2022/04/09 04:53:02 by apommier ### ########.fr */
|
||||
/* Updated: 2022/04/09 18:47:25 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -54,7 +54,7 @@ t_s_cmd *set_s_cmd(char *line, t_cmd *cmd, int index)
|
||||
return (s_cmd);
|
||||
}
|
||||
|
||||
t_cmd *split_cmd(t_cmd *cmd, char **cmds, char **env)
|
||||
t_cmd *split_cmd(t_cmd *cmd, char **cmds)
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -100,7 +100,7 @@ t_cmd *set_cmd(char *input, char **env)
|
||||
//cmd->outfile = 0;
|
||||
//cmd->infile = 0;
|
||||
cmd->nb_s_cmd = double_size(cmds);
|
||||
cmd = split_cmd(cmd, cmds, env); //split each cmd into args in s_cmd
|
||||
cmd = split_cmd(cmd, cmds); //split each cmd into args in s_cmd
|
||||
free(cmds);
|
||||
if (cmd)
|
||||
{
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/03/09 15:18:58 by apommier #+# #+# */
|
||||
/* Updated: 2022/04/06 16:18:01 by apommier ### ########.fr */
|
||||
/* Updated: 2022/04/09 19:04:35 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -37,7 +37,7 @@ char *cut_str(char *str, int start, int end)
|
||||
return (str);
|
||||
}
|
||||
|
||||
char *get_word(char *str, int start, int end)
|
||||
char *get_word(char *str, int start)
|
||||
{
|
||||
char *new;
|
||||
//char *swap;
|
||||
@ -87,7 +87,7 @@ char *set_input(char *line, t_s_cmd *cmd, int index)
|
||||
i++;
|
||||
while ((line[i] != ' ' && line[i] != '<' && line[i] != '>') && line[i])
|
||||
i++;
|
||||
cmd->infile = get_word(line, word_index, i);
|
||||
cmd->infile = get_word(line, word_index);
|
||||
line = cut_str(line, index, i);
|
||||
return (line);
|
||||
}
|
||||
@ -108,7 +108,7 @@ char *set_output(char *line, t_s_cmd *cmd, int index)
|
||||
i++;
|
||||
while ((line[i] != ' ' && line[i] != '<' && line[i] != '>') && line[i])
|
||||
i++;
|
||||
cmd->outfile = get_word(line, index, i);
|
||||
cmd->outfile = get_word(line, index);
|
||||
line = cut_str(line, index, i);
|
||||
return (line);
|
||||
}
|
||||
@ -178,7 +178,7 @@ char **add_line(char **tab, char *line)
|
||||
if (tab)
|
||||
size = double_size(tab);
|
||||
//printf("size= %d\n", size);
|
||||
ret = ft_calloc(size + 1, sizeof(char*));
|
||||
ret = ft_calloc(size + 2, sizeof(char*));
|
||||
if (!ret)
|
||||
{
|
||||
// if (tab)
|
||||
@ -191,10 +191,10 @@ char **add_line(char **tab, char *line)
|
||||
ret[i] = ft_strjoin(tab[i], 0);
|
||||
i++;
|
||||
}
|
||||
ret[i] = line;
|
||||
ret[i] = ft_strjoin(line, 0);
|
||||
ret[i + 1] = 0;
|
||||
//if (tab)
|
||||
// free_double(tab);
|
||||
if (tab)
|
||||
free_double(tab);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
@ -216,7 +216,10 @@ char *set_heredoc(int index, char **in)
|
||||
file_name = ft_strjoin(".heredoc", 0);
|
||||
fd = open(file_name, O_RDWR | O_CREAT | O_TRUNC, 0666);
|
||||
if (fd > 0)
|
||||
{
|
||||
print_double_fd(in, fd);
|
||||
free_double(in);
|
||||
}
|
||||
close(fd);
|
||||
return (file_name);
|
||||
}
|
||||
@ -234,8 +237,11 @@ void wait_prompt(t_s_cmd *cmd, int index)
|
||||
ft_putstr_fd("> ", 0);
|
||||
input = get_next_line(0);
|
||||
//printf("input = -%s-\n", input);
|
||||
if (!input)
|
||||
return ;
|
||||
input[ft_strlen(input) - 1] = 0;
|
||||
//printf("input2 = -%s-\n", input);
|
||||
if (ft_strcmp(input, cmd->infile))
|
||||
history = add_line(history, input);
|
||||
//print_double(history);
|
||||
}
|
||||
@ -243,6 +249,7 @@ void wait_prompt(t_s_cmd *cmd, int index)
|
||||
//free_double(history);
|
||||
free(input);
|
||||
free(cmd->infile);
|
||||
cmd->infile = 0;//option?
|
||||
cmd->infile = set_heredoc(index, history);
|
||||
//cmd->infile = 0;
|
||||
cmd->in_type = 0;
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/03/11 16:35:37 by apommier #+# #+# */
|
||||
/* Updated: 2022/04/09 04:34:47 by apommier ### ########.fr */
|
||||
/* Updated: 2022/04/09 19:16:39 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user