Let BASH do de Batchmode, stupid
This commit is contained in:
parent
3106486ae0
commit
128cb915b9
57
src/main.c
57
src/main.c
@ -6,7 +6,7 @@
|
|||||||
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/02/04 16:19:22 by whaffman #+# #+# */
|
/* Created: 2025/02/04 16:19:22 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/02/28 17:03:02 by whaffman ######## odam.nl */
|
/* Updated: 2025/03/01 11:01:03 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -59,56 +59,6 @@ static void main_loop(t_minishell *msh)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int redirect_stdout_stderr(t_minishell *msh, char *file_out)
|
|
||||||
{
|
|
||||||
int fd_out;
|
|
||||||
int fd_log;
|
|
||||||
|
|
||||||
fd_out = open(file_out, O_WRONLY | O_CREAT | O_TRUNC, 0644);
|
|
||||||
if (fd_out < 0)
|
|
||||||
return (error_msg("open", "redirect_stdout"), FAILURE);
|
|
||||||
fd_log = open("minishell.log", O_WRONLY | O_CREAT | O_TRUNC, 0644);
|
|
||||||
if (fd_log < 0)
|
|
||||||
return (error_msg("open", "redirect_stderr"), FAILURE);
|
|
||||||
if (dup2(fd_out, STDOUT_FILENO) == -1)
|
|
||||||
return (error_msg("dup2", "redirect_stdout"), FAILURE);
|
|
||||||
if (dup2(fd_log, STDERR_FILENO) == -1)
|
|
||||||
return (error_msg("dup2", "redirect_stderr"), FAILURE);
|
|
||||||
close(fd_out);
|
|
||||||
close(fd_log);
|
|
||||||
return (SUCCESS);
|
|
||||||
}
|
|
||||||
static int main_loop_from_file(t_minishell *msh,
|
|
||||||
char *file_in, char *file_out)
|
|
||||||
{
|
|
||||||
int fd_in;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
i = 1;
|
|
||||||
fd_in = open(file_in, O_RDONLY);
|
|
||||||
if (fd_in < 0)
|
|
||||||
return (error_msg("open", "main_loop_from_file"), FAILURE);
|
|
||||||
if (redirect_stdout_stderr(msh, file_out) == FAILURE)
|
|
||||||
return (FAILURE);
|
|
||||||
while (TRUE)
|
|
||||||
{
|
|
||||||
msh->line = get_next_line(fd_in);
|
|
||||||
if (msh->line == NULL)
|
|
||||||
break ;
|
|
||||||
printf("%d:> %s", i, msh->line);
|
|
||||||
fprintf(stderr, "%d:> %s", i, msh->line);
|
|
||||||
msh->lexer = ft_lexer_new(msh);
|
|
||||||
msh->tokens = ft_parse_input(msh);
|
|
||||||
msh->commands = parser_get_commands(msh);
|
|
||||||
simple_builtins(msh);
|
|
||||||
free_minishell_line(msh);
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
close(fd_in);
|
|
||||||
close(STDOUT_FILENO);
|
|
||||||
return (SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char **argv, char **envp)
|
int main(int argc, char **argv, char **envp)
|
||||||
{
|
{
|
||||||
t_minishell *msh;
|
t_minishell *msh;
|
||||||
@ -120,10 +70,7 @@ int main(int argc, char **argv, char **envp)
|
|||||||
msh = init_minishell();
|
msh = init_minishell();
|
||||||
signal_init_minishell();
|
signal_init_minishell();
|
||||||
environment_parse(msh, envp);
|
environment_parse(msh, envp);
|
||||||
if (argc == 1)
|
main_loop(msh);
|
||||||
main_loop(msh);
|
|
||||||
else if (argc == 3)
|
|
||||||
main_loop_from_file(msh, argv[1], argv[2]);
|
|
||||||
free_minishell(&msh);
|
free_minishell(&msh);
|
||||||
rl_clear_history();
|
rl_clear_history();
|
||||||
return (EXIT_SUCCESS);
|
return (EXIT_SUCCESS);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user