Advertisement
Guest User

Untitled

a guest
Mar 24th, 2019
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.54 KB | None | 0 0
  1. int main(int argc, char *argv[])
  2. {  
  3.        
  4.         if(argv[1] == NULL ){
  5.                 char buffer1[1024];
  6.                 char buffer2[1024];
  7.                 char** argv2 = malloc(sizeof(char*)*100);
  8.                 char* exmpl1, *exmpl2;
  9.                 while(1){
  10.                     getcwd(buffer1, 1024);
  11.                     write(STDOUT_FILENO, buffer1, strlen(buffer1));
  12.                     write(STDOUT_FILENO, "$ ", 2);
  13.                     ssize_t read_char = read(STDIN_FILENO, buffer2, 1024);
  14.                     buffer2[read_char-1] = '\0';
  15.                     parse_line(buffer2, &argv2);
  16.                     parse_line_redir(buffer2, &argv2, &exmpl1, &exmpl2);
  17.                     write(STDOUT_FILENO, "\n", 1);
  18.                     redir_cmd(argv2, exmpl1, exmpl2);
  19.                     //affiche_cmd((const char**)argv);
  20.                     simple_cmd(argv2);
  21.                 }
  22.            
  23.         }else{
  24.             if(argc >1){
  25.                 if(!strcmp(strpbrk(argv[1], "."), ".sh")){
  26.  
  27.                     int fd = open(argv[1], O_RDONLY);
  28.                     char buffer[1024] = {0};
  29.                     char buffercpy[1024] = {0};
  30.                     char **commande = malloc(sizeof(char*)*100);
  31.                     while(read(fd, buffer, 1024) !=0){
  32.                         strcpy(buffercpy, buffer);
  33.                         char *ret, *save;
  34.                         ret = strtok_r(buffercpy, "\n", &save);
  35.                         parse_line(ret, &commande);
  36.                         simple_cmd(commande);
  37.                         freeArg(commande);
  38.                         write(1, ret, strlen(ret));
  39.                         while((ret = strtok_r(NULL, "\n", &save)) != NULL){
  40.                             char **commande = malloc(sizeof(char*)*100);
  41.                             write(1, ret, strlen(ret));
  42.                             parse_line(ret, &commande);
  43.                             simple_cmd(commande);
  44.                         }
  45.                         free(commande);
  46.                             //execvp(commande[0], commande);
  47.                         }
  48.                         close(fd);
  49.                     }
  50.                    
  51.                     exit(EXIT_SUCCESS);
  52.                 }
  53.             }
  54.         return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement