diff --git a/mysh b/mysh new file mode 100755 index 0000000000000000000000000000000000000000..eb078009319c297c5d7f03f798c0683dfa947dd2 Binary files /dev/null and b/mysh differ diff --git a/src/commands.c b/src/commands.c index 28a7cfcab1b75297ffe7b750166cfbff1f19b6c7..3850db051e56d62aec6cb76ed2f84eea984261d5 100644 --- a/src/commands.c +++ b/src/commands.c @@ -1,19 +1,31 @@ #include <string.h> - +#include <stdio.h> #include "commands.h" - +#include <unistd.h> +#define MAX_SIZE 300 +char buf[MAX_SIZE]; +int ch; int do_cd(int argc, char** argv) { if (!validate_cd_argv(argc, argv)) return -1; +else if ((ch=chdir(argv[1]))==0) +{ +return 0; +} +else{ +return -1; +} // TODO: Fill it! - return 0; + } int do_pwd(int argc, char** argv) { if (!validate_pwd_argv(argc, argv)) return -1; +getcwd(buf,MAX_SIZE); +printf("%s\n",buf); // TODO: Fill it! return 0; @@ -22,11 +34,27 @@ int do_pwd(int argc, char** argv) { int validate_cd_argv(int argc, char** argv) { // TODO: Fill it! - return 1; + if(strcmp(argv[0],"cd")==0) +{ +if(argc==2) +{ +return 1; +} +} +else +return 0; } int validate_pwd_argv(int argc, char** argv) { // TODO: Fill it! - return 1; +if(strcmp(argv[0],"pwd")==0) +{ +if(argc==1) +{ +return 1; +} +} +else +return 0; } diff --git a/src/utils.c b/src/utils.c index 619c771cd29d38dcf0e265e8688b55e1cfe3d6a0..893068ae5123387ebfa40164c093460267a2ddc4 100644 --- a/src/utils.c +++ b/src/utils.c @@ -1,7 +1,34 @@ #include "utils.h" +#include <string.h> +#include <stdlib.h> +void mysh_parse_command(const char* command,int *argc, char*** argv) +{ + +char *tmp= (char*)malloc(sizeof(char)*60); +char *token; +*argv= (char**)malloc(sizeof(char)*60); +int c=0; +*argc=0; +(*argv)[c]=(char*)malloc(sizeof(char)*60); +strcpy(tmp,command); +token=strtok(tmp,"' '\t\n\0"); -void mysh_parse_command(const char* command, - int *argc, char*** argv) +if(token==NULL) +{ +strcpy((*argv)[c],""); +c=c+1; +} +while(1) { - // TODO: Fill this! +if(token==NULL) +break; + +strcpy((*argv)[c],token); +c=c+1; +(*argv)[c]=(char*)malloc(sizeof(char)*60); +token=strtok(NULL,"' '\n\t\0"); + +} +*argc=c; + }