Exemplo n.º 1
0
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);
	}
}
Exemplo n.º 2
0
//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;
}