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