[ADD] fix some issues when using it not solo for the history

This commit is contained in:
Titouanhct
2025-04-16 14:51:51 +02:00
parent aa2a18ba03
commit 0d825c9cdb
4 changed files with 22 additions and 5 deletions

View File

@@ -77,7 +77,7 @@ char *his_last_command(char *line,
char *his_last_same_command(char *line,
his_variable_t *his_variable, his_command_t *his_command)
{
char *new_line = &line[1];
char *new_line = &line[his_variable->coord_variable + 1];
char *new_str = NULL;
for (int i = his_command->sz - 1; i >= 0; i--) {
@@ -101,7 +101,7 @@ char *his_last_same_command(char *line,
char *his_id_command(char *line,
his_variable_t *his_variable, his_command_t *his_command)
{
int id = ((int)line[1] - 48) - 1;
int id = atoi(&line[his_variable->coord_variable + 1]);
char *new_line;
char *new_str = NULL;

View File

@@ -35,6 +35,8 @@ typedef struct parsing_history_s {
char *(*funct)(char *, his_variable_t *, his_command_t *);
} parsing_history_t;
extern const parsing_history_t tab_fnct[];
int parse_history(char **pointer_line,
size_t *buffer_len, size_t *buffer_sz, his_command_t **cmd_history);
char *his_last_command(char *line,

View File

@@ -34,6 +34,8 @@ void debug_env_entries(env_t *env)
static
void check_basic_error(char const *buffer)
{
if (buffer == NULL)
return;
if (*buffer == '|')
WRITE_CONST(STDERR_FILENO, "Invalid null command.\n");
if (*buffer == '>' || *buffer == '<')

View File

@@ -8,9 +8,21 @@
#include "builtins_handler.h"
#include "u_str.h"
his_command_t *save_command(char *cmd, his_command_t *cmd_history)
static int check_cmd(char *cmd)
{
if (!cmd)
return 84;
for (int i = 0; cmd[i] != 0; i++)
if (cmd[i] == CHAR_HIST &&
(cmd[i + 1] != ' ' && cmd[i + 1] != '\t'
&& cmd[i + 1] != '\0'))
return 84;
return 0;
}
his_command_t *save_command(char *cmd, his_command_t *cmd_history)
{
if (check_cmd(cmd) == 84)
return cmd_history;
if (cmd_history->sz < 100) {
cmd_history[cmd_history->sz] = set_cmd(cmd,
@@ -27,8 +39,9 @@ size_t update_command(char **buffer,
buffer_len = u_strlen(*buffer);
(*buffer)[buffer_len - 1] = '\0';
parse_history(buffer, &buffer_len,
buffer_sz, &builtin_handler->history_command);
if (parse_history(buffer, &buffer_len,
buffer_sz, &builtin_handler->history_command) == 84)
return -1;
builtin_handler->history_command = save_command(*buffer,
builtin_handler->history_command);
return buffer_len;