/* * File: mysh.c * Author: Arthur Brandao * * Created on 31 octobre 2018, 12:43 */ #include #include #include #include "parser.h" #include "mysh.h" /* --- Fonctions privées --- */ void test_write(){ char* a = "azerty\n"; int tmp = write(1, a, strlen(a)); printf("%d\n", tmp); } /* --- Main --- */ int main(int argc, char* argv[]) { CommandTab ct; char str[500]; int a; //Recup ligne //printf("%s\n", fgets(str, 500, stdin));& memset(str, 0, 500); a = read(STDIN, str, 500); printf("%s\n", str); //Separe les commandes a = parse_line(&ct, str); printf("Result : %d\n\n", a); //Parse les commandes a = parse_all_command(&ct); printf("Result : %d\n\n", a); //Affiche resultat for(int i = 0; i < ct.length; i++){ Command* c = ct.cmd[i]; printf("Commande %d (%s) : \n", i, c->name); for(int j = 0; j < c->argc; j++){ printf(" Argument %d : %s\n", j, c->argv[j]); } printf("Commande en fond : %d\n\n", ct.bck); } //Supprime clean_command(&ct); return (EXIT_SUCCESS); } /* --- Commandes internes --- */ void cd(int argc, char** argv){ //Si trop d'arguments if(argc > 2) { printf("too many arguments : 1 required, %d given\n", argc-1); } else { //Si aucun argument on vas à la racine if(argc == 1) { if(chdir("/") == ERR){ perror("Erreur chdir() : "); } } //Sinon on va dans le dossier indiqué par l'utilisateur else { if(chdir(argv[1]) == ERR){ printf("path does not exist\n"); } } } //show_current_dir("current working directory is: ", "\n"); } /* --- Fonctions utilitaires --- */ void show_current_dir(const char* before, const char* after){ char buffer[512]; if (getcwd(buffer, sizeof(buffer)) == NULL){ perror("Erreur getcwd() : "); } else { printf("%s%s%s", before, buffer, after); } }