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
|
*.d
|
||||||
*.o
|
*.o
|
||||||
obj/
|
obj/
|
||||||
.vscode
|
.minishell_history
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
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> +#+ */
|
/* 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);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user