#include #include #include #include "mylib.h" /** * @brief Permet de récupérer la commande de l’utilisateur * * @param user_input entrée de l’utilisateur, contiendrat la commande à exécuter */ void get_input(char *user_input) { char *buffer = (char *) malloc(MAX_LENGTH); memset(user_input, 0, MAX_LENGTH); printf("\n> "); fgets(buffer, MAX_LENGTH, stdin); while (buffer[0] == '\n') { printf("\n> "); fgets(buffer, MAX_LENGTH, stdin); } strncpy(user_input, buffer, strlen(buffer)-1); free(buffer); } /** * @brief récupère l’entrée de l’utilisateur et la découpe * selon le caractère passé en paramètre * * @param args Tableau de string qui sera modifié avec * les arguments de la commande * @param find Le caractère à utiliser pour découper la chaine */ void parse_char(char *args[], char find) { char *user_input = (char *) malloc(MAX_LENGTH); get_input(user_input); char *token = strtok(user_input, &find); int i = 0; while (token != NULL && i < MAX_LENGTH) { strcpy(args[i], token); i++; token = strtok(NULL, &find); } // le dernier argument doit être NULL // car il est vide et provoque une erreur si non NULL free(args[i]); args[i] = NULL; free(token); free(user_input); } /* * @brief parse la chaine orig avec les espaces et la met dans le tableau dest * */ void tok_space(char *orig, char* dest[]) { char find = ' '; char *token = strtok(orig, &find); int i = 0; while (token != NULL && i < MAX_LENGTH) { strcpy(dest[i], token); i++; token = strtok(NULL, &find); } // le dernier argument doit être NULL // car il est vide et provoque une erreur si non NULL free(dest[i]); dest[i] = NULL; free(token); }