shell / msh.c
msh.c
Raw
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/wait.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    
    pid_t pid;
    
    if (argc < 2) {
        fprintf(stderr, "Error: Please enter a command.\n");
        return EXIT_FAILURE;
    }
    
    else if ( strcmp(argv[1], "./mycopy")== 0){
        
        if (argc != 4){
            fprintf(stderr, "Error: Invalid number of arguments.\n");
            return EXIT_FAILURE;
        }
        
        pid = fork();
        if (pid < 0){
            fprintf(stderr, "An error occured\n");
            return EXIT_FAILURE;
        }
        
        if (pid == 0) execl(argv[1], argv[1], argv[2], argv[3], NULL);
        
        else waitpid(pid, NULL, 0 );
        
    }
    
    else if ( strcmp(argv[1], "./myremove")== 0){
        
        if (argc != 3){
            fprintf(stderr, "Error: Invalid number of arguments.\n");
            return EXIT_FAILURE;
        }
        
        pid = fork();
        if (pid < 0){
            fprintf(stderr, "An error occured\n");
            return EXIT_FAILURE;
        }
        
        if (pid == 0) execl(argv[1], argv[1], argv[2], NULL);
        
        else waitpid(pid, NULL, 0 );
        
    }
    
    else if ( strcmp(argv[1], "./mymove")== 0){
        
        if (argc != 4){
            fprintf(stderr, "Error: Invalid number of arguments.\n");
            return EXIT_FAILURE;
        }
        
        pid = fork();
        if (pid < 0){
            fprintf(stderr, "An error occured\n");
            return EXIT_FAILURE;
        }
        
        if (pid == 0) execl(argv[1], argv[1], argv[2], argv[3], NULL);
        
        else waitpid(pid, NULL, 0 );
        
    }
    
    
    else {
        fprintf(stderr, "Error: Please enter a command.\n");
        return EXIT_FAILURE;
    }

}