Let BASH do de Batchmode, stupid

This commit is contained in:
whaffman 2025-03-01 11:02:21 +01:00
parent 3106486ae0
commit 128cb915b9

View File

@ -6,7 +6,7 @@
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* 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)
{
t_minishell *msh;
@ -120,10 +70,7 @@ int main(int argc, char **argv, char **envp)
msh = init_minishell();
signal_init_minishell();
environment_parse(msh, envp);
if (argc == 1)
main_loop(msh);
else if (argc == 3)
main_loop_from_file(msh, argv[1], argv[2]);
free_minishell(&msh);
rl_clear_history();
return (EXIT_SUCCESS);