add persistent history
This commit is contained in:
parent
c2ca3c4176
commit
39af6d2d52
2
.gitignore
vendored
2
.gitignore
vendored
@ -3,4 +3,4 @@ a.out
|
||||
*.d
|
||||
*.o
|
||||
obj/
|
||||
.vscode
|
||||
.minishell_history
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
||||
/* +#+ */
|
||||
/* 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);
|
||||
char *ft_prompt(t_minishell *minishell);
|
||||
void ft_write_history(char *line);
|
||||
void ft_load_history(void);
|
||||
|
||||
#endif // PROMPT_H
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
||||
/* +#+ */
|
||||
/* 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)argv;
|
||||
print_banner();
|
||||
ft_load_history();
|
||||
minishell = init_minishell();
|
||||
parse_enviroment(envp, &(minishell->enviroment));
|
||||
while (TRUE)
|
||||
|
||||
34
src/prompt/ft_load_history.c
Normal file
34
src/prompt/ft_load_history.c
Normal 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);
|
||||
}
|
||||
25
src/prompt/ft_write_history.c
Normal file
25
src/prompt/ft_write_history.c
Normal 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);
|
||||
}
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
||||
/* +#+ */
|
||||
/* 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);
|
||||
free(prompt);
|
||||
if (line != NULL)
|
||||
{
|
||||
add_history(line);
|
||||
ft_write_history(line);
|
||||
}
|
||||
return (line);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user