summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/b_h.c4
-rw-r--r--src/e_builtins.c6
-rw-r--r--src/m_argv.c3
3 files changed, 9 insertions, 4 deletions
diff --git a/src/b_h.c b/src/b_h.c
index 60e80ca..0e968ff 100644
--- a/src/b_h.c
+++ b/src/b_h.c
@@ -20,7 +20,7 @@
#include "s_struct.h"
#include "u_utils.h"
-static void b_print_history(const char arg[], t_msh *msh)
+static void b_print_history(const char arg[], uint64_t max_hist, t_msh *msh)
{
char *prev_hist;
char *tok;
@@ -35,7 +35,7 @@ static void b_print_history(const char arg[], t_msh *msh)
tok = ft_strtok(prev_hist, "\n");
while (tok != NULL)
{
- ft_printf("%-5u %s\n", i, tok);
+ ft_printf("%5u %s\n", i, tok);
i++;
tok = ft_strtok(NULL, "\n");
}
diff --git a/src/e_builtins.c b/src/e_builtins.c
index 90e436e..92af2c3 100644
--- a/src/e_builtins.c
+++ b/src/e_builtins.c
@@ -51,7 +51,11 @@ static void
if (ptr->env_fork != NULL)
e_export_env_fork(ptr, msh);
dup_redirs(ptr, msh);
- ret = msh->bu_ptr[bu_id](ptr->argv + 1, msh);
+ ret = 0;
+ if (bu_id == FT_ID_H && msh->fd == STDIN_FILENO)
+ ret = msh->bu_ptr[bu_id](ptr->argv + 1, msh);
+ else
+ ret = msh->bu_ptr[bu_id](ptr->argv + 1, msh);
u_eof_fd(msh->fd);
s_com_destroy(&msh->com);
s_line_clear(&msh->curr);
diff --git a/src/m_argv.c b/src/m_argv.c
index bdebd23..7661ef7 100644
--- a/src/m_argv.c
+++ b/src/m_argv.c
@@ -41,10 +41,11 @@ static char *m_get_prev_hist(t_msh *msh)
return (NULL);
if (stat(histfile, &sb) == -1)
return (NULL);
- if ((hist = (char*)malloc(sb.st_size * sizeof(char))) == NULL)
+ if ((hist = (char*)malloc((sb.st_size + 1) * sizeof(char))) == NULL)
return (NULL);
if (read(fd, hist, sb.st_size) == -1)
return (NULL);
+ hist[sb.st_size] = C_NUL;
return (hist);
}