Skip to content
Snippets Groups Projects
Commit bc0ac8e8 authored by dunalduck's avatar dunalduck
Browse files

Finish assignment

parent f2c8d615
Branches master
No related tags found
No related merge requests found
#include <string.h> #include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include "commands.h" #include "commands.h"
#include <stdio.h>
int do_cd(int argc, char** argv) { int do_cd(int argc, char** argv) {
if (!validate_cd_argv(argc, argv)) if (!validate_cd_argv(argc, argv))
return -1; return -1;
// TODO: Fill it! // TODO: Fill it!
chdir(argv[1]);
return 0; return 0;
} }
...@@ -15,6 +16,9 @@ int do_pwd(int argc, char** argv) { ...@@ -15,6 +16,9 @@ int do_pwd(int argc, char** argv) {
return -1; return -1;
// TODO: Fill it! // TODO: Fill it!
char name[512];
getcwd(name,512);
printf("%s\n ",name);
return 0; return 0;
} }
...@@ -22,11 +26,18 @@ int do_pwd(int argc, char** argv) { ...@@ -22,11 +26,18 @@ int do_pwd(int argc, char** argv) {
int validate_cd_argv(int argc, char** argv) { int validate_cd_argv(int argc, char** argv) {
// TODO: Fill it! // TODO: Fill it!
if(argc==2&& (strcmp(argv[0],"cd")==0)) {
return 1; return 1;
} }
else{
return 0;
}
}
int validate_pwd_argv(int argc, char** argv) { int validate_pwd_argv(int argc, char** argv) {
// TODO: Fill it! // TODO: Fill it!
return 1; if(argc==1 && (strcmp(argv[0], "pwd")==0)) return 1;
else return 0;
} }
...@@ -56,10 +56,8 @@ int main() ...@@ -56,10 +56,8 @@ int main()
while (1) { while (1) {
fgets(buf, 8096, stdin); fgets(buf, 8096, stdin);
apply_alias: apply_alias:
mysh_parse_command(buf, &argc, &argv); mysh_parse_command(buf, &argc, &argv);
if (strcmp(argv[0], "") == 0) { if (strcmp(argv[0], "") == 0) {
goto release_and_continue; goto release_and_continue;
} else if (strcmp(argv[0], "cd") == 0) { } else if (strcmp(argv[0], "cd") == 0) {
...@@ -74,13 +72,15 @@ apply_alias: ...@@ -74,13 +72,15 @@ apply_alias:
if (do_alias(argc, argv)) { if (do_alias(argc, argv)) {
fprintf(stderr, "alias: Invalid arguments\n"); fprintf(stderr, "alias: Invalid arguments\n");
} }
} else if (strcmp(argv[0], "exit") == 0) { }
else if (strcmp(argv[0], "exit") == 0) {
goto release_and_exit; goto release_and_exit;
} else { } else {
for (int i = 0; i < n_aliased_command; ++i) { for (int i = 0; i < n_aliased_command; ++i) {
if (strcmp(argv[0], aliased_commands[i]->alias) == 0) { if (strcmp(argv[0], aliased_commands[i]->alias) == 0) {
// TODO: fill here! // aliased_command[i]->command;
// TODO: fill here!
goto apply_alias; goto apply_alias;
} }
} }
...@@ -116,15 +116,35 @@ static void release_argv(int argc, char*** argv) { ...@@ -116,15 +116,35 @@ static void release_argv(int argc, char*** argv) {
int do_alias(int argc, char** argv) { int do_alias(int argc, char** argv) {
if (!validate_alias_argv(argc, argv)) if (!validate_alias_argv(argc, argv))
return -1; return -1;
else{
int *tmp = *argc;
*argc=1;
strcpy(aliased_command[n_aliased_command]->alias,*(*argv+(*argc)));
for(int i=0; i<tmp;i++){
strcat(aliased_command[n_aliased_command]->command,*(*argv+i));
strcat(aliased_command[n_aliased_command]->command," ");
}
// printf("%s\n",aliased_command[n_aliased_commnad]->command);
n_aliased_command++;
//char *tmp = NULL;
//tmp=*(*argv+(*argc));
//(*argc)++;
// TODO: Fill it! // TODO: Fill it!
return 0; return 0;
} }
}
int validate_alias_argv(int argc, char** argv) { int validate_alias_argv(int argc, char** argv) {
// TODO: Fill it!
if(argc>=2 &&!strcmp(argv[0],"alias"))
return 1; return 1;
// TODO: Fill it!
else return 0;
} }
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include "utils.h" #include "utils.h"
#define MAX 250
void mysh_parse_command(const char* command, void mysh_parse_command(const char* command,
int *argc, char*** argv) int *argc, char*** argv)
{ {
// TODO: Fill this! // TODO: Fill this!
char *token=NULL;
char command1[MAX];
char *tmp = NULL;
strcpy(command1,command);
if(command1[strlen(command1)-1] == '\n')
command1[strlen(command1)-1] = '\0';
token = strtok(command1," =\n\"\0");
// **argv = (char*)malloc(sizeof(char)*MAX);
*argv = (char**)malloc(sizeof(char)*MAX);
*argc = 0;
while(1)
{
//printf("while\n");
if(token==NULL){
//*(*argv+(*argc)) = (char*)malloc(sizeof(char)*MAX);
break;
}
else {
//printf("else\n");
*(*argv+(*argc)) = (char*)malloc(sizeof(char)*MAX);
//printf("malloc\n");
strcpy(*(*argv+(*argc)),token);
//printf("intoken\n");
token = strtok(NULL," =\n\0\"");
printf("%s\n",*(*argv+(*argc)));
(*argc)++;
//printf("%s\n",*(*argv+(*argc)));
}
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment