From 7b0b62248b1417259bc454cc3a1f52f9bb4534ee Mon Sep 17 00:00:00 2001 From: bigsketti Date: Fri, 29 Nov 2024 12:56:01 -0500 Subject: [PATCH] Fixed current directory shown as full path --- cshell | Bin 16640 -> 16672 bytes handleJSON.c | 8 ++++---- main.c | 30 +++++++++++++++++++++++------- 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/cshell b/cshell index 1449a24141242c25a4651da0b19e88bc947b50de..33b949f668a662015dd268ab3272b2c37826bbd9 100755 GIT binary patch delta 2001 zcmZ8hZA@Eb6uxg+*R|uTv`{JpFRd^f3IPh^L!=CupSj_TNBu>HTVL09$`_HiO;I0j1R8e0lYEY_D?B7*Z*phd5ZHB0hc$uloXvMU^x@yWEDXEqX^UmZ&% zIVQr3F-5t8h(Im?9@moaK_U|@f&E+xP^UQcdJIpeWhaf(Ev@dG7}goelDnyg*Wtul z4AogWkfl|6Tv5T90V+jYB^3t@rm9bu0QZL4*OEG+DZe_Ii;8lIbjLgC znh)WK;X;lSB^)m`K-))?dAAX-=Q|0XGd}i~bv^BmMu%Slow*#z@9l(zB#%Qn(`vke zxP9qc3n9kujlgb1Si{a|3xT|$loN$8QVzn1!a4%eLonl#bkTi`)Zp{BkQ!)$uPI|9 zto*Ae-jGwr4s|=tw2J2Aw401(gwkBxL2F3O@ueec=1s+0FBM$Hkq@`X1FrSHgY~P9p&ujEOg~a4{_l^ zn#6yIOUvbRORLfVX>X@n?STbjk4(6)BQOX^Y|9}HtfK_j32Zw5a z3m*V$U?OZG)7=Y0>;blvPe7>r4Tz`nm3+<7R;kdKR{%A)tHXl;TpJ78GqW`xiR(}? z)`-QpQnbOUO|%AkL=W29_AYSY3iS1TTZgg|Y8qjqA)b4Ras*7v--^-#c2`7E0$?wK z4S}^TD9RMr3t$BpPTqY*5fOgbl5dVeXg)wfqb8M@C*Zch-HH1w8*+z0a5r(+C#QC+ z8j{wkb|z}zPo52~_u;;WM=e?EepuDuX;@u`)j5o;Sy{JW6@&C&!hhob=!DPKKzOj; zdRT|AKV6Atg4!Z?0=j|al0(RaAC{a#Gq|_ZVMrFCb2Sv7CL{}! z96d-mg0PvOsF^+wQ06gUrV5$DSv#k2^C3mar$cla49wlj(KC3v+GM^6s9u#RoVRl~ zH)D9T%!GcXS?=P6GLyNB>vZZFg`OlV|H8R8llcKh9Y%)Ivw-CyRY<~JHWL!*vy48U zqt6}m`6iyWnbaNdYZCF0%7A)^S3LlG3*BGF_2nk?J>~uqJX~IZH0|#kIM}eGF?hP- z=vq~)23u;2v@@A3^$gxsdlEI`>Dprbe)7|TD{hy9xzEXW*ZB0CwG# LY?p!e)I9zldiXXf delta 1842 zcmZWpe@t6d6u!5trDf$ufv$8lqoW%#2w(?g6BsKh;VlL?XUNc)2&iD3YzAo-61T!i zg{IaGug;MWor!;_F~+21VN)0kLcztv_=nja&PC0Z*RX6DVp1mXJm=oaAo!BrbMN`S z^PTVB+xIS=r9Efq`2yNAxaYR1!ASViz$~=XRGlPN)zL$=o|>w~id3^9-Gl7*SI%kA z-JWyj&OPy0LLuX~^6Q48!%12yJ;a7B@t4)RtC|+7TMnFFCcaW7T&F5wqJ$e&CG@Kj zimCkoD-nHDDj~RRg5@;|9n>>0!=f|hYuHfz0M_&AK&_J0;#F3Y^;qgozT{fjtE@e% zEbR|7YR!nUU)Yyfm5%lm=n|?+D1p-n;@bu)Ax?^^9c(4b_T)dyfCneK3}7%Z?*#m~ z#H+9pl4$NQutw3$+*G3yx})^o`;Ikaj~I_6fD;%y!g8(K{TH_Kop7Ey_b-^Y!N3hj!ChP2vj20mv}kf?)$))>CpwNW2>jPsLi4P4-%j!ZjunV;#`s*^+1_t68 zoBMqu(OLGX&E|Ik2mYBT)h~gcuq-Cd;dPlaVJ<4pZr%D@5%r6_xM0qm_yuf71t+!R?%-|F5@7vJs4*Okv)wh3x0z{nQ&ZmH3nBDHd{{ zq&~Lf{)Bqj;NCh`QI=`n3;&W#l192SK?R-;5lAI-m)U3oA6xkN4r_r-56 #include -enum TokenType { +typedef enum TokenType { INTEGER, CHAR, TRUE, @@ -19,12 +19,12 @@ enum TokenType { DOUBLE_QUOTES, COMMA, END_OF_FILE, -}; +} Token_type; -struct Token { +typedef struct Token { enum TokenType type; char value[100]; -}; +} Token; void advancePosition(int *pos, char *currentChar, char *input[]) { if(pos < sizeof(input)) { diff --git a/main.c b/main.c index 6813c24..fe6e506 100644 --- a/main.c +++ b/main.c @@ -8,6 +8,18 @@ #define INPUT_SIZE 1024 #define VERSION 0.1f +char *trimCWD(char *cwd) { + char *token = strtok(cwd, "/"); + char *trimmedCWD = NULL; + + while (token != NULL) { + trimmedCWD = token; + token = strtok(NULL, "/"); + } + + return trimmedCWD; +} + void execute(char **args) { pid_t pid = fork(); if (pid == 0) { @@ -53,10 +65,11 @@ int main() { char *args[100]; char user[100] = "defaultusr"; char *cwd = getCWD(); + char *trimmedCWD = trimCWD(cwd); while (1) { if (cwd != NULL) { - printf("[cShell-%s] %s $> ", user, cwd); + printf("[cShell-%s] /%s $> ", user, trimmedCWD); } else { printf("[cShell-%s] $> ", user); } @@ -75,16 +88,16 @@ int main() { // also modify permissions for admin users and regular users // This will have to come after i finish the JSON parser - // TODO: add mkdir, rmdir, mkfile, and rmfile commands built in - - if (strcmp("exit", input) == 0) { + // TODO: refactor this to a switch case one day im bored + // these else ifs are getting ugly and its just gonna get worse + if (strcmp("exit", args[0]) == 0) { exit(0); - } else if (strcmp("help", input) == 0) { + } else if (strcmp("help", args[0]) == 0) { printf("Welcome to cShell, my simple terminal written in C\nBuilt-in commands:\n\texit\n\thelp\n\tcd [dir name]\n\tversion\n\tmkdir [dir name]\n\trmdir [dir name]\n\tmkfile [file name]\n\trmfile [file name]\n\n"); continue; - } else if (strcmp("version", input) == 0) { + } else if (strcmp("version", args[0]) == 0) { printf("cShell version: %f\n", VERSION); continue; @@ -97,6 +110,7 @@ int main() { } else { free(cwd); cwd = getCWD(); + trimmedCWD = trimCWD(cwd); } } continue; @@ -125,8 +139,10 @@ int main() { perror("Error removing directory"); } else { printf("success\n"); } continue; - } + } else if (strcmp("ls", args[0])) { + // TODO: finish this hoe + } // execute the external command execute(args);