int main(int argc, char** argv) { int ret = MYSHELL_CMD_OK; cmd ma_cmd; int i; char* readlineptr; struct passwd* infos; char str[1024]; char hostname[256]; char workingdirectory[256]; printf("pid = %d; ppid = %d\n", getpid(), getppid()); while(ret != MYSHELL_FCT_EXIT)//TODO WHY { infos=getpwuid(getuid()); gethostname(hostname, 256); getcwd(workingdirectory, 256); sprintf(str, "{myshell}%s@%s:%s$ ", infos->pw_name, hostname, workingdirectory); readlineptr = readline(str); while(*readlineptr != '\0' && *readlineptr == ' ') { readlineptr ++; } if(*readlineptr == '\0') continue; else if( strcmp(readlineptr, "exit")==0) break; add_history(readlineptr); parse_membres(readlineptr, &ma_cmd); parse_args(&ma_cmd); //aff_membres(&ma_cmd); //aff_args(&ma_cmd); for(i=0; i<ma_cmd.nb_membres; i++) { parse_redirect(i, &ma_cmd); //aff_redirect(&ma_cmd, i); } //chdir(".."); exec_cmd(&ma_cmd); alarm(0); free_membres(&ma_cmd); free_args(&ma_cmd); free_redirect(&ma_cmd); free(readlineptr); //.......... } //.......... return 0; }
int main() { cmd ma_cmd; int i; char chaine[100] = "cat acpi0< var/log/messages | grep acpi| wc -l 2>> truc.txt"; parse_membres(chaine, &ma_cmd); aff_membres(&ma_cmd); parse_args(&ma_cmd); aff_args(&ma_cmd); for(i=0; i<ma_cmd.nb_membres; i++) { parse_redirect(i, &ma_cmd); aff_redirect(&ma_cmd, i); } return 0; }
int main(int argc, char** argv) { //.......... int ret = MYSHELL_CMD_OK; cmd mycmd; char* readlineptr, * tampon; struct passwd* infos; char str[1024]; char hostname[256]; char workingdirectory[256]; rl_bind_key ('\t', rl_complete);/*initialisation de l'auto complétion*/ using_history(); //.......... while(ret != MYSHELL_FCT_EXIT) { infos=getpwuid(getuid()); gethostname(hostname, 256); getcwd(workingdirectory, 256); sprintf(str, "\n{myshell}%s@%s:%s$ ", infos->pw_name, hostname, workingdirectory); readlineptr = readline(str); if (strstr(readlineptr, "exit") != NULL) { ret = MYSHELL_FCT_EXIT; } else { tampon = (char *)malloc((strlen(readlineptr) + 1) * sizeof(char)); if (tampon == NULL) { exit(-1); } strcpy(tampon, readlineptr); add_history(tampon); //.......... parse_membres(readlineptr, &mycmd); parse_args(&mycmd); parse_redirection(&mycmd); exec_commande(&mycmd); //.......... //aff_membres(&mycmd); //aff_args(&mycmd); //aff_redirection(&mycmd); free(readlineptr); free_membres(&mycmd); free_args(&mycmd); free_redirection(&mycmd); //.......... } } clear_history(); //.......... return 0; }