Skip to content
Snippets Groups Projects
Select Git revision
  • ce0d6da37a3be7698be8da39d044c260dce103ad
  • master default
  • report
3 results

built_in.c

Blame
  • Forked from sce213ta / mysh-1
    Source project has a limited visibility.
    built_in.c 1.29 KiB
    #include <stdio.h>
    #include <string.h>
    #include "commands.h"
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <unistd.h>
    #include <linux/limits.h>
    
    #include "built_in.h"
    
    int do_sleep(int argc, char** argv){
    
    sleep(100);
    
    }
    int do_cd(int argc, char** argv) {
      if (!validate_cd_argv(argc, argv))
        return -1;
    
      if (chdir(argv[1]) == -1)
        return -1;
    
      return 0;
    }
    
    int do_pwd(int argc, char** argv) {
      if (!validate_pwd_argv(argc, argv))
        return -1;
    
      char curdir[PATH_MAX];
    
      if (getcwd(curdir, PATH_MAX) == NULL)
        return -1;
    
      printf("%s\n", curdir);
    
      return 0;
    }
    
    int do_fg(int argc, char** argv) {
    
     if (!validate_fg_argv(argc, argv))
        return -1;
     else{
      if(background_st!=0){printf("%d running",background_st);}
    	//TODO: Fill this.
    
      return 0;
     }
    }
    int validate_sleep_argv(int argc,char **argv){
    return 1;}
    
    int validate_cd_argv(int argc, char** argv) {
      if (argc != 2) return 0;
      if (strcmp(argv[0], "cd") != 0) return 0;
    
      struct stat buf;
      stat(argv[1], &buf);
    
      if (!S_ISDIR(buf.st_mode)) return 0;
    
      return 1;
    }
    
    int validate_pwd_argv(int argc, char** argv) {
      if (argc != 1) return 0;
      if (strcmp(argv[0], "pwd") != 0) return 0;
    
      return 1;
    }
    
    int validate_fg_argv(int argc, char** argv) {
      if (argc != 1) return 0;
      if (strcmp(argv[0], "fg") != 0) return 0;
      
      return 1;
    }