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

Finish assignment

parent f2c8d615
No related branches found
No related tags found
No related merge requests found
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include "commands.h"
#include <stdio.h>
int do_cd(int argc, char** argv) {
if (!validate_cd_argv(argc, argv))
return -1;
// TODO: Fill it!
chdir(argv[1]);
return 0;
}
......@@ -15,6 +16,9 @@ int do_pwd(int argc, char** argv) {
return -1;
// TODO: Fill it!
char name[512];
getcwd(name,512);
printf("%s\n ",name);
return 0;
}
......@@ -22,11 +26,18 @@ int do_pwd(int argc, char** argv) {
int validate_cd_argv(int argc, char** argv) {
// TODO: Fill it!
if(argc==2&& (strcmp(argv[0],"cd")==0)) {
return 1;
}
else{
return 0;
}
}
int validate_pwd_argv(int argc, char** argv) {
// TODO: Fill it!
return 1;
if(argc==1 && (strcmp(argv[0], "pwd")==0)) return 1;
else return 0;
}
......@@ -56,10 +56,8 @@ int main()
while (1) {
fgets(buf, 8096, stdin);
apply_alias:
mysh_parse_command(buf, &argc, &argv);
if (strcmp(argv[0], "") == 0) {
goto release_and_continue;
} else if (strcmp(argv[0], "cd") == 0) {
......@@ -74,13 +72,15 @@ apply_alias:
if (do_alias(argc, argv)) {
fprintf(stderr, "alias: Invalid arguments\n");
}
} else if (strcmp(argv[0], "exit") == 0) {
}
else if (strcmp(argv[0], "exit") == 0) {
goto release_and_exit;
} else {
for (int i = 0; i < n_aliased_command; ++i) {
if (strcmp(argv[0], aliased_commands[i]->alias) == 0) {
// TODO: fill here!
// aliased_command[i]->command;
// TODO: fill here!
goto apply_alias;
}
}
......@@ -116,15 +116,35 @@ static void release_argv(int argc, char*** argv) {
int do_alias(int argc, char** argv) {
if (!validate_alias_argv(argc, argv))
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!
return 0;
}
}
int validate_alias_argv(int argc, char** argv) {
// TODO: Fill it!
if(argc>=2 &&!strcmp(argv[0],"alias"))
return 1;
// TODO: Fill it!
else return 0;
}
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include "utils.h"
#define MAX 250
void mysh_parse_command(const char* command,
int *argc, char*** argv)
{
// 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