int run_cmd(int argc, char **argv) { if (strcmp(argv[0],"echo")==0) { return echo(argc,argv); } else if (strcmp(argv[0],"cd")==0 || strcmp(argv[0],"chdir")==0) { return cd(argc,argv); } else if (strcmp(argv[0],"exit")==0) { fprintf(stderr,"exit\n"); exit(0); return 0; } else if (strcmp(argv[0],"exec")==0) { return exec(argc,argv); } else if (strcmp(argv[0],"pushd")==0) { return pushd(argc,argv); } else if (strcmp(argv[0],"popd")==0) { return popd(argc,argv); } else if (strcmp(argv[0],"dirs")==0) { return dirs(argc,argv); } else if (strcmp(argv[0],"help")==0) { return help(argc,argv); } else if (strcmp(argv[0],"exitc")==0) { return exitc(argc,argv); } else if (strcmp(argv[0],"pwd")==0) { return pwd(argc,argv); } else if (strcmp(argv[0],"setpipe")==0) { return setpipe(argc,argv); } else if (strcmp(argv[0],"runpipe")==0) { return runpipe(argc,argv); } else { return run(argc,argv); } }
//big ass switchy thingy int find_and_exec(const char * command_name, const char * parameters){ int ret; if(command_name == NULL){ return 0; } else if(strcmp(command_name,"pwd") == 0){ return pwd(); } else if(strcmp(command_name,"cd") == 0){ return cd(parameters); } else if(strcmp(command_name,"echo") == 0){ return echo(parameters); } else if(strcmp(command_name,"pushd") == 0){ return pushd(parameters); } else if(strcmp(command_name,"popd") == 0){ return popd(); } else if(strcmp(command_name,"exit") == 0){ exitc(parameters); } else if(strcmp(command_name,"set") == 0){ printf("Did you mean export? If you are looking for windows try your walls\n"); return 0; } else if(strcmp(command_name,"history") == 0){ print_stack_lines(history); return 0; } else if(strcmp(command_name,"unsetenv") == 0){ return unsetenv(parameters); } else { int pid = fork(); if(pid == -1){return 1;} else if(pid == 0){ if(parameters == NULL) { execlp(command_name,command_name,NULL); } else { execvp(command_name,split_spaces_cmd(command_name,parameters)); } } else { wait(&ret); return ret; } } return 0; }