From 920f9d71bbb654039c6bf841ea7919cb2549f4bf Mon Sep 17 00:00:00 2001
From: Jaegeon <resistangce@gmail.com>
Date: Thu, 11 Oct 2018 12:18:25 +0900
Subject: [PATCH] update on the server

---
 include/commands.h |   1 +
 mysh               | Bin 13776 -> 13776 bytes
 src/commands.c     |   2 --
 src/main.c         |  70 +++++++++++++++++++++++++++++++++++----------
 src/utils.c        |   9 ++++--
 5 files changed, 63 insertions(+), 19 deletions(-)

diff --git a/include/commands.h b/include/commands.h
index 178349d..43f055d 100644
--- a/include/commands.h
+++ b/include/commands.h
@@ -1,6 +1,7 @@
 #ifndef MYSH_COMMANDS_H_
 #define MYSH_COMMANDS_H_
 
+char print_buff[1024];
 /**
   do_cd(argc, argv)
 
diff --git a/mysh b/mysh
index 954c05f41dc9da77d666cd13ce665aa60ef354da..6e63160a92de0d6787455b300a761c03074585e3 100755
GIT binary patch
delta 3031
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
F0|0?^*t`G$

delta 2190
zcmcbReIa|o1uhw31~8Bjo_K4Y&=vtOhhd9=1DLTzVDc))TOunt74|3SGd=4q;d!;t
zMtE~uX|m?#8B9{F`~m_F3?9c1F5m}I$CWo9WM^ZXe33(>e#Y<r|3OA{w@&%}|9@`)
zW9L*5!z1~EM|W$*@BjZj7%%W|W9Vq@|NZ~}%V!J>4Bf30U@Acjj~V>irh+6prm!CP
z_y2#xUJyrtzjZ2HZSxC8j~T~Wz|v6d9y2^TkG~N4SO5RNN9UpLR**A5VpEPT`2GL?
z@zyy|XT3Io%XLHKy1{ZDGdvg%!I=EpAZB+kHG?G?ArjVLht}*n4yHk#YzEuIh~(FL
z+@6Jagp0qG_y7O@&3i$9W#Dg_1ostoFFF4u$w&1d??RkQyqD^*c?lYV2OltlLU!*T
zuroZmTQfj$*eQS<q%hHLhVF=|ppf=RzT|Q65i?SddUUsdW5S~oJxoFN)a>)<ZY}uz
z|9|&X5Vuocf=9ROj}#AM7F7)f28I&W7w0A?aN9H1O<uq)#;qdYz_0@p{4Z)JALMr6
z@%jD#|9%G51cnz(zbEtZq=?3dC@^^Rwgx=-|9{^Cc?JfM2VP8W<B`{u19_vn)#Jhc
z{~p~8{M#5>4)C|EWn^IRfD7)k2PN&!<1f}s*5{R){Dz0ax&*9%^^>pygGcAVU1AIj
z4Eq=v7#Q|D2{<sknEmVj|CfPaB`|~cMMBN+pRCWTWFroiWSt7tFAmoq3({`~(*K14
z#SNuU{hxkLHsF<vy28l7(0YKsWfxc#s|C~`Nw`7PAcG$M{Qv*ubg&Y*L#9Fvn)>tq
ze~<}N7#J9iw>mt4WYX6blbQKc>LbCDrK~R_{{8>o43=f=X1y$?z+egH)a-%>kAO!v
z>ntG!hJCXj21DXO<LCeXuNfzFx7vULws$Hxd^@jo9)B^Lfq~)Wv%mlUW0S07U|^VV
zyfxYd<{XdiRuJ1`hDSHc(FY0%3?8iqN^~#;JCDCm|MCAnT>LmhF(^qigAHKpW)%aw
z-eqz%zZ8?`kIB>d&6(DGpL~H|QefhDP~^Kl@Hh_Az%XI*Np3j~AqG$gm$FY@CnV{*
z0~EQjhtu@<<y*jN_~l&~7#zbL!yG&RJBB)j`1GpA@hLEbdi3go=wQ#zZ=Ri3eKenX
zG{52SIQW<O#qn>G`Gp_VGcYhPN;6v*FfcIiGB7akeEa`@4+8_kn{WUB_b@OpJo^6s
z{}ToVhK67N|FbYMFg*M9|Gx?&1B2o3|NmVW85jb7|No!D$iR^Q`~UwIMg|7UfB*k4
zVPs&K`S1V#Ba93Tr~m!`|Adi&;myDQ|5=zA7-Iha|L?=Zz#sy4H3P%s1`!FSh;Nf;
ziRdwTe4TtsM6LeYxBvg=F)=VOIPwX!F*)<HG0$Y;Vdr3wVPIfL0p+!y|Np0fw8P|?
z5<${nc~D^N`uYFAH;TL)Tz&}y1H;pw|NqM)%SVBw!TOIdFw`?V!J_~a7LR}a|9=X_
zfk)vE1cg!Wpa1_8kS$<}2HODg04VIv{`vpk2w6TCEDd&m3!^dv!~H-1|AV3%9s<4)
z1umcvU}Ru;Fj-K{ot5M7|Nl&z6UElEZ!QoEVV*1?=fET)usKNX9<!GSw3Y<f0>jJ<
z0t^aR#RcKDDoibiW@Zp#&=A~QrDVs%^p<b(E)_i{3E|1FRQi~<2u!Y0)sqC(upot?
zpa9YNj0_Ay415f;CLdH?&Lko*IZLgKk!A8jwQ@$2$&u>iQZU<DK&lxS7)~-lG%Vns
z{7St{N|^^zwS&W!fq~&4RQf6R<SGq0#(9%xYUC^W@<SAX1CW7%p^_P5Mm<zqXtSnf
zI|ow{$K*|hdR(w@5D}RC%Fs*@<^Tm~V`AcDLnD1Iq$Wj{kr|hUAjAd@!Og3T)R+O*
C=w$K$

diff --git a/src/commands.c b/src/commands.c
index 4adfea4..ca43e2c 100644
--- a/src/commands.c
+++ b/src/commands.c
@@ -3,8 +3,6 @@
 #include <stdio.h>
 #include "commands.h"
 
-char print_buff[1024];
-
 int do_cd(int argc, char** argv) {
 	if (!validate_cd_argv(argc, argv))
     	return -1;
diff --git a/src/main.c b/src/main.c
index c7bd632..34bd4c4 100644
--- a/src/main.c
+++ b/src/main.c
@@ -51,8 +51,9 @@ static void release_argv(int argc, char*** argv);
 int main()
 {
   char buf[8096];
-  int argc;
+  int argc, i, j;
   char** argv;
+
   while (1) {
     fgets(buf, 8096, stdin);
 
@@ -76,10 +77,11 @@ apply_alias:
     } else if (strcmp(argv[0], "exit") == 0) {
       goto release_and_exit;
     } else {
-      for (int i = 0; i < n_aliased_command; ++i) {
+      for (i = 0; i < n_aliased_command; ++i) {
         if (strcmp(argv[0], aliased_commands[i]->alias) == 0) {
-          // TODO: fill here!
-
+		  for(j = 0; aliased_commands[i]->command[j] != '\0'; j++)
+		  	buf[j] = aliased_commands[i]->command[j];
+		  buf[j] = '\0';
           goto apply_alias;
         }
       }
@@ -94,7 +96,7 @@ release_and_exit:
     break;
   }
 
-  for (int i = 0; i < n_aliased_command; ++i) {
+  for (i = 0; i < n_aliased_command; ++i) {
     if (aliased_commands[i]) {
       free(aliased_commands[i]);
       aliased_commands[i] = NULL;
@@ -113,17 +115,55 @@ static void release_argv(int argc, char*** argv) {
 }
 
 int do_alias(int argc, char** argv) {
-  if (!validate_alias_argv(argc, argv))
-    return -1;
-
-  // TODO: Fill it!
-
-  return 0;
+	int i, j, tmp_i, flag;
+	struct aliased_command *tmp_ac;
+
+	if (!validate_alias_argv(argc, argv))
+		return -1;
+	if(argc == 1){
+		for (i = 0; i < n_aliased_command; ++i) {
+			if (aliased_commands[i])
+				printf("alias %s='%s'\n", aliased_commands[i]->alias, aliased_commands[i]->command);
+		}
+		return 0;
+	} else {
+		tmp_i = 0;
+		flag = 0;
+		tmp_ac = malloc(sizeof(struct aliased_command));
+		tmp_ac->alias[0] = '\0';
+		tmp_ac->command[0] = '\0';
+		for(i = 0; argv[1][i] != '\0'; i++){
+			print_buff[tmp_i++] = argv[1][i];
+			if(!flag && argv[1][i] == '=' && argv[1][i+1] == '"'){
+				print_buff[tmp_i - 1] = '\0';
+				for(j = 0; j<n_aliased_command; j++)
+					if(strcmp(print_buff, aliased_commands[j]->alias) == 0){
+						free(tmp_ac);
+						return -1;
+					}
+				for(j = 0; j<tmp_i; j++)
+					tmp_ac->alias[j] = print_buff[j];
+				tmp_i = 0;
+				flag = 1;
+				i++;
+			}else if(flag && argv[1][i] == '"'){
+				print_buff[tmp_i - 1] = '\0';
+				for(j = 0; j<tmp_i; j++)
+					tmp_ac->command[j] = print_buff[j];
+				aliased_commands[n_aliased_command++] = tmp_ac;
+				return 0;
+			}
+		}
+		if(tmp_ac->alias[0] == '\0' || tmp_ac->command[0] == '\0'){
+			free(tmp_ac);
+			return -1;
+		}
+	}
+	return 0;
 }
 
 int validate_alias_argv(int argc, char** argv) {
-  // TODO: Fill it!
-  return 1;
+	if(argc > 2)
+		return 0;
+	return 1;
 }
-
-
diff --git a/src/utils.c b/src/utils.c
index cbd10c8..b787367 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -6,17 +6,18 @@ void mysh_parse_command(const char* command,
 	char point;
 	char buf[300];
 	char *tmp_argv[100];
-	int buf_i, command_i, argv_i, i;
+	int buf_i, command_i, argv_i, i, flag;
 	
 	buf_i = 0;
 	command_i = 0;
 	argv_i = 0;
+	flag = 0;
 	point = command[command_i++];
 	
 	while(point != '\n'){
 	    buf[buf_i++] = point;
 	
-	    if(point == ' '){
+	    if(!flag && point == ' '){
 	            buf[buf_i - 1] = '\0';
 	            tmp_argv[argv_i] = malloc(buf_i * sizeof(char));
 	            for(i=0; i<buf_i; i++)
@@ -24,6 +25,9 @@ void mysh_parse_command(const char* command,
 	            buf_i = 0;
 	            argv_i++;
 	    }
+	    if(point == '"')
+	    	flag = 1 - flag;
+	    
 	    point = command[command_i++];
 	}
 	
@@ -41,3 +45,4 @@ void mysh_parse_command(const char* command,
 		(*argv)[i] = tmp_argv[i];
 	*argc = argv_i;
 }
+
-- 
GitLab