21static int check_command_arg(
int i,
char **command)
25 if (COMMAND_TABLE[i].arg_nb < len_command - 1)
26 return (EXIT_FAILURE);
27 return (EXIT_SUCCESS);
40 if (strcmp(command[0], COMMAND_TABLE[i].command) == 0) {
41 r_val = check_command_arg(i, command);
45 return (EXIT_FAILURE);
50 char **command = NULL;
69static char ***parse_individual_command(
char **buf)
74 commands = malloc(
sizeof(
char **) * (command_nb + 1));
75 if (commands == NULL) {
79 for (
size_t i = 0; i < command_nb; ++i) {
81 if (commands[i] == NULL) {
86 commands[command_nb] = NULL;
90static void *free_values(
char **array,
char *str)
99 char *str = malloc(
sizeof(
char) * (buf_size + 2));
105 (void) memcpy(str, buffer, buf_size);
106 str[buf_size + 1] =
'\0';
109 return (free_values(buf, str));
111 commands = parse_individual_command(buf);
112 if (commands == NULL) {
113 return (free_values(buf, str));
115 free_values(buf, str);
char *** parse_buffer(uint8_t *buffer, ssize_t buf_size)
Get all command in buffer (a command is delimited by COMMAND_SEPARATOR)
char ** parse_command(char *str)
Parse a command using COMMAND_DELIMITER as delimiter.
int check_command_exist(char **command)
Verify if command exist and if it is valid.
#define COMMAND_DELIMITER
#define CLIENT_COMMAND_NB
#define COMMAND_SEPARATOR
void free_array(void *to_free)
! FREE !!
size_t get_array_len(char **array)
! GETTER !!
void free_array_size_n(void *to_free, const size_t n)
Free any ** array up to n.
char ** str_to_word_array(const char *str, const char delim)
Turn string to char **.