From 4df0e8e18424a7720ceb0e1be42a4a55b34a5349 Mon Sep 17 00:00:00 2001
From: LEE JEONG EUN <dlwjddms0102@hanmail.net>
Date: Mon, 9 Apr 2018 06:33:59 +0900
Subject: [PATCH] Update shell

alias implement.
---
 src/commands.c | 31 +++++++++++++++++++++----------
 src/main.c     | 39 ++++++++++++++++++++++++++++++++++++---
 src/utils.c    | 14 ++++++++++++++
 3 files changed, 71 insertions(+), 13 deletions(-)

diff --git a/src/commands.c b/src/commands.c
index 28a7cfc..b787841 100644
--- a/src/commands.c
+++ b/src/commands.c
@@ -4,29 +4,40 @@
 
 int do_cd(int argc, char** argv) {
   if (!validate_cd_argv(argc, argv))
-    return -1;
+    	return -1;
 
   // TODO: Fill it!
-  return 0;
+  else
+  	return 0;
 }
 
 int do_pwd(int argc, char** argv) {
-  if (!validate_pwd_argv(argc, argv))
-    return -1;
-
+  if (!validate_pwd_argv(argc, argv))	
+	return -1 ; 
   // TODO: Fill it!
-
-  return 0;
+  else{
+	char buf[255];
+	getcwd(buf,255);
+	printf("%s\n",buf);
+ 	 return 0;
+	}
 }
 
 
 int validate_cd_argv(int argc, char** argv) {
-  // TODO: Fill it!
-  return 1;
+ // TODO: Fill it!
+ if(chdir(argv[1]))
+  	return 0;
+ else
+  	return 1;
 }
 
 int validate_pwd_argv(int argc, char** argv) {
   // TODO: Fill it!
-  return 1;
+  char buf[255];
+  if(getcwd(buf,255)==NULL)
+	return 0;
+  else
+	return 1;
 }
 
diff --git a/src/main.c b/src/main.c
index fddc6fc..940d5f3 100644
--- a/src/main.c
+++ b/src/main.c
@@ -80,6 +80,8 @@ apply_alias:
       for (int i = 0; i < n_aliased_command; ++i) {
         if (strcmp(argv[0], aliased_commands[i]->alias) == 0) {
           // TODO: fill here!
+	  memset(buf,0,sizeof(buf));
+	  strcpy(buf,aliased_commands[i]->command);
 
           goto apply_alias;
         }
@@ -118,13 +120,44 @@ int do_alias(int argc, char** argv) {
     return -1;
 
   // TODO: Fill it!
-
-  return 0;
+  struct aliased_command * con = (struct aliased_command *)malloc(sizeof(struct aliased_command));
+ 
+  for(int i=2; i<argc; i++){
+  	strcat(argv[1]," ");
+  	strcat(argv[1],argv[i]);
+  }
+  
+  char * ptr = strtok(argv[1],"=");
+  if(ptr != NULL){
+  	strcpy(con->alias,ptr);
+	ptr = strtok(NULL,"\"");
+	if(ptr != NULL){
+		strcpy(con->command,ptr);
+		aliased_commands[n_aliased_command++] = con;
+		return 0;	
+	}
+  }
+  return -1;
 }
 
 int validate_alias_argv(int argc, char** argv) {
   // TODO: Fill it!
-  return 1;
+                
+  if(argc<2){
+	printf("Error occur!\n");
+	return 0;
+  }
+  char  ptr[10];
+  strcpy(ptr,argv[1]);
+  char * ptr1 = strtok(ptr,"\" \n");
+  if(ptr1 != NULL){
+	ptr1 = strtok(NULL,"\" \n");
+  	if(strcmp(ptr1,"cd")== 0 || strcmp(ptr1,"pwd")== 0){
+  		return 1;	
+  	}
+  }
+  printf("Error occur!\n");
+  return 0;
 }
 
 
diff --git a/src/utils.c b/src/utils.c
index 619c771..bbee050 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -1,7 +1,21 @@
 #include "utils.h"
+#include <string.h>
 
 void mysh_parse_command(const char* command,
                         int *argc, char*** argv)
 {
   // TODO: Fill this!
+  int i=0;
+  argv[0] = (char **)malloc(sizeof(char*)*50);
+  for(int i=0; i <50; i++){
+  	argv[0][i] =(char *)malloc(sizeof(char)*50);
+	memset(argv[0][i],0x00,sizeof(char)*50);	
+  }
+  
+  char * ptr = strtok(command, " \n");
+  while(ptr != NULL){
+  	strcpy(argv[0][i++],ptr);
+	ptr = strtok(NULL," \n");
+  }
+  *argc = i;  
 }
-- 
GitLab