mirror of
https://github.com/Savapitech/42sh.git
synced 2026-03-18 21:50:35 +01:00
[ADD] fix some issues when using it not solo for the history
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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 == '<')
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user