Skip to content

Commit

Permalink
Merge pull request #5 from dimadem/main
Browse files Browse the repository at this point in the history
Link Roman
  • Loading branch information
dimadem authored Jun 11, 2024
2 parents ab80033 + 982070b commit 48f3d53
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 24 deletions.
Empty file added To
Empty file.
6 changes: 4 additions & 2 deletions inc/tokens.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
/* By: rmikhayl <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/31 20:53:51 by rmikhayl #+# #+# */
/* Updated: 2024/06/07 19:00:49 by rmikhayl ### ########.fr */
/* Updated: 2024/06/11 14:59:54 by rocky ### ########.fr */
/* */
/* ************************************************************************** */

Expand Down Expand Up @@ -50,7 +50,9 @@ void parse_loop(char **input, char **tokens, int *pos, int *bufsize);
char **parse_input(char *input);
char *generate_prompt(t_minishell_data *data);
void make_history(char *line);
void cleanup(char *line, char **parsed_text, t_token *tokens);
void cleanup(char *line, char **parsed_text, t_token *tokens, \
char *prompt);
void free_minishell_data(t_minishell_data *data);
char *check_heredoc(char *line);
char *heredoc(char *eof);
void init_minishell_data(t_minishell_data *data, char **envp);
Expand Down
42 changes: 25 additions & 17 deletions src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
/* By: rmikhayl <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/05 13:23:26 by rmikhayl #+# #+# */
/* Updated: 2024/06/10 17:45:18 by dmdemirk ### ########.fr */
/* Updated: 2024/06/11 15:22:12 by rocky ### ########.fr */
/* */
/* ************************************************************************** */

Expand All @@ -28,30 +28,38 @@ void is_exit_status_var(char *line)
exit_status_var();
}

int main(int argc, char **argv, char **envp)
void main_loop(t_minishell_data data)
{
t_minishell_data data;
char *prompt;
char *line;
t_token *tokens;
char **parsed_text;

prompt = generate_prompt(&data);
tokens = NULL;
line = readline(prompt);
is_exit_status_var(line);
line = check_heredoc(line);
if (!line || ft_strcmp(line, "exit") == 0)
exit(EXIT_FAILURE);
make_history(line);
parsed_text = parse_input(line);
execute_command(parsed_text, &tokens);
data.args = list_to_array(tokens);
execute(&data);
cleanup(line, parsed_text, tokens, prompt);
}

int main(int argc, char **argv, char **envp)
{
t_minishell_data data;

print_maxishell();
init_minishell_data(&data, envp);
initialise(argc, argv);
while (1)
{
tokens = NULL;
line = readline(generate_prompt(&data));
is_exit_status_var(line);
line = check_heredoc(line);
if (!line || ft_strcmp(line, "exit") == 0)
break ;
make_history(line);
parsed_text = parse_input(line);
execute_command(parsed_text, &tokens);
data.args = list_to_array(tokens);
execute(&data);
cleanup(line, parsed_text, tokens);
}
main_loop(data);
free_minishell_data(&data);
free_env(data.envp);
return (0);
}
1 change: 0 additions & 1 deletion src/parser/output.txt

This file was deleted.

49 changes: 45 additions & 4 deletions src/utils/clean.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,59 @@
/* ::: :::::::: */
/* clean.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: rmikhayl <marvin@42.fr> +#+ +:+ +#+ */
/* By: rocky <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/05 17:20:07 by rmikhayl #+# #+# */
/* Updated: 2024/06/05 17:20:20 by rmikhayl ### ########.fr */
/* Created: 2024/06/11 14:56:25 by rocky #+# #+# */
/* Updated: 2024/06/11 14:58:49 by rocky ### ########.fr */
/* */
/* ************************************************************************** */

#include "tokens.h"
#include "env.h"

void cleanup(char *line, char **parsed_text, t_token *tokens)
void free_args(char **args)
{
int i;

i = 0;
if (args)
{
while (args[i] != NULL)
free(args[i++]);
free(args);
}
}

void free_env_list(t_env *env)
{
t_env *temp;

while (env)
{
free(env->key);
free(env->value);
temp = env;
env = env->next;
free(temp);
}
}

void free_minishell_data(t_minishell_data *data)
{
if (data)
{
free_args(data->args);
free_env_list(data->envp);
free_env_list(data->local_env);
free(data->current_dir);
free(data);
}
}

void cleanup(char *line, char **parsed_text, t_token *tokens, char *prompt)
{
free(line);
free(parsed_text);
free_stack(&tokens);
free(prompt);
}

0 comments on commit 48f3d53

Please sign in to comment.