add persistent history

This commit is contained in:
whaffman 2025-02-05 17:13:48 +01:00
parent c2ca3c4176
commit 39af6d2d52
7 changed files with 69 additions and 4 deletions

2
.gitignore vendored
View File

@ -3,4 +3,4 @@ a.out
*.d *.d
*.o *.o
obj/ obj/
.vscode .minishell_history

View File

@ -6,7 +6,7 @@
/* By: whaffman <whaffman@student.codam.nl> +#+ */ /* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */ /* +#+ */
/* Created: 2025/02/04 16:35:35 by whaffman #+# #+# */ /* Created: 2025/02/04 16:35:35 by whaffman #+# #+# */
/* Updated: 2025/02/05 16:05:44 by whaffman ######## odam.nl */ /* Updated: 2025/02/05 17:05:32 by whaffman ######## odam.nl */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -17,5 +17,7 @@
void print_banner(void); void print_banner(void);
char *ft_prompt(t_minishell *minishell); char *ft_prompt(t_minishell *minishell);
void ft_write_history(char *line);
void ft_load_history(void);
#endif // PROMPT_H #endif // PROMPT_H

View File

@ -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/05 16:28:45 by whaffman ######## odam.nl */ /* Updated: 2025/02/05 17:06:47 by whaffman ######## odam.nl */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -19,6 +19,7 @@ int main(int argc, char **argv, char **envp)
(void)argc; (void)argc;
(void)argv; (void)argv;
print_banner(); print_banner();
ft_load_history();
minishell = init_minishell(); minishell = init_minishell();
parse_enviroment(envp, &(minishell->enviroment)); parse_enviroment(envp, &(minishell->enviroment));
while (TRUE) while (TRUE)

View File

@ -0,0 +1,34 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_load_history.c :+: :+: */
/* +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/02/05 16:44:51 by whaffman #+# #+# */
/* Updated: 2025/02/05 17:11:59 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#include "minishell.h"
void ft_load_history(void)
{
int fd;
char *line;
fd = open(".minishell_history", O_RDONLY);
if (fd < 0)
return ;
while (TRUE)
{
line = get_next_line(fd);
if (!line)
return ;
line[ft_strlen(line) - 1] = '\0';
if (*line)
add_history(line);
free(line);
}
close(fd);
}

View File

@ -0,0 +1,25 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_write_history.c :+: :+: */
/* +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/02/05 17:12:17 by whaffman #+# #+# */
/* Updated: 2025/02/05 17:12:23 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#include "minishell.h"
void ft_write_history(char *line)
{
int fd;
fd = open(".minishell_history", O_WRONLY | O_APPEND | O_CREAT, 0644);
if (fd < 0)
return ;
if (*line)
ft_putendl_fd(line, fd);
close(fd);
}

View File

@ -6,7 +6,7 @@
/* By: whaffman <whaffman@student.codam.nl> +#+ */ /* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */ /* +#+ */
/* Created: 2025/02/04 16:13:08 by whaffman #+# #+# */ /* Created: 2025/02/04 16:13:08 by whaffman #+# #+# */
/* Updated: 2025/02/05 16:18:18 by whaffman ######## odam.nl */ /* Updated: 2025/02/05 17:05:12 by whaffman ######## odam.nl */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -75,6 +75,9 @@ char *ft_prompt(t_minishell *minishell)
line = readline(prompt); line = readline(prompt);
free(prompt); free(prompt);
if (line != NULL) if (line != NULL)
{
add_history(line); add_history(line);
ft_write_history(line);
}
return (line); return (line);
} }