From f578366906c27c6d8d080b4ba150b520754d55f7 Mon Sep 17 00:00:00 2001 From: auric Date: Thu, 29 Feb 2024 13:42:06 -0600 Subject: [PATCH] I don't know what to write here. I'm going to hate this commit in the future --- bin/fex | Bin 28008 -> 29080 bytes inc/config.h | 10 +++++++++- inc/fetch.h | 19 +++++++++++++++++++ inc/fex.h | 14 +++++++------- inc/install.h | 6 +++++- inc/mirrors.h | 15 +++++++++++++++ inc/nprint.c | 6 ++++++ obj/fetch.o | Bin 0 -> 4152 bytes obj/fex.o | Bin 13136 -> 13096 bytes obj/install.o | Bin 4696 -> 4736 bytes obj/nprint.o | Bin 10624 -> 10624 bytes obj/sanity.o | Bin 8656 -> 9120 bytes src/fetch.c | 13 +++++++++++++ src/fex.c | 46 +++++++++++++++++++++++++--------------------- src/install.c | 21 +++++++++++++++++++-- src/sanity.c | 17 +++++++++-------- 16 files changed, 127 insertions(+), 40 deletions(-) create mode 100644 inc/fetch.h create mode 100644 inc/mirrors.h create mode 100644 obj/fetch.o create mode 100644 src/fetch.c diff --git a/bin/fex b/bin/fex index fe54eb931e7546af2079cf8e38cd224bd1057802..028efe1752114a42e691d7d0d5ae8e566e482007 100755 GIT binary patch literal 29080 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 diff --git a/inc/config.h b/inc/config.h index d010035..1e3d58a 100644 --- a/inc/config.h +++ b/inc/config.h @@ -5,6 +5,14 @@ #ifndef CONFIG_H #define CONFIG_H -#define debugEnabled +/* Run `make clean` after changing this file, or it won't reflect in the binary */ + +#define debugEnabled // Uncomment to enable debug output +// #define silentOutput // Uncomment to remove output + +enum status { // define status output for more readable code + OK, + ERROR +}; #endif //CONFIG_H diff --git a/inc/fetch.h b/inc/fetch.h new file mode 100644 index 0000000..d548e77 --- /dev/null +++ b/inc/fetch.h @@ -0,0 +1,19 @@ +// +// Created by auric on 2/29/24. +// + +#ifndef FETCH_H +#define FETCH_H + +int fetch(int type, char** input); + +enum type { + TYPE_PRELIM, + TYPE_BINARY, + TYPE_SOURCE, + TYPE_GENERIC, +}; + +extern int type; + +#endif //FETCH_H diff --git a/inc/fex.h b/inc/fex.h index 87fa092..a95e203 100644 --- a/inc/fex.h +++ b/inc/fex.h @@ -7,15 +7,15 @@ enum Flags { FLAG_INSTALL = 1 << 0, - //FLAG_SOURCE = 1 << 1, - //FLAG_UNINSTALL = 1 << 1, - FLAG_LIST = 1 << 1, - FLAG_SEARCH = 1 << 2, - FLAG_FORCE = 1 << 3, - FLAG_UPGRADE = 1 << 4, + FLAG_SOURCE = 1 << 1, + FLAG_REMOVE = 1 << 2, + //FLAG_LIST = 1 << 1, + FLAG_SEARCH = 1 << 3, + FLAG_FORCE = 1 << 4, + FLAG_UPGRADE = 1 << 5, }; extern char* flagNames[]; -extern int flagSource, flagUninstall; +//extern int flagSource, flagUninstall; #endif //FEX_H diff --git a/inc/install.h b/inc/install.h index 75d05bf..610f786 100644 --- a/inc/install.h +++ b/inc/install.h @@ -5,6 +5,10 @@ #ifndef INSTALL_H #define INSTALL_H -int installPackages(char** package, int pkgCount, int source, int uninstall); +//int installPackage(char** packages, int pkgCount, int type); + +int installBinaries(char** packages, int pkgCount); +int installSources(char** packages, int pkgCount); +int removePackages(char** packges, int pkgCount); #endif //INSTALL_H diff --git a/inc/mirrors.h b/inc/mirrors.h new file mode 100644 index 0000000..64b0bfa --- /dev/null +++ b/inc/mirrors.h @@ -0,0 +1,15 @@ +// +// Created by auric on 2/29/24. +// + +#ifndef MIRRORS_H +#define MIRRORS_H + +/* Define mirrors here */ +const char* mirrors[] = { + "https://mirror.japegames.com/", +}; + +const int num_mirrors = sizeof(mirrors) / sizeof(mirrors[0]); + +#endif //MIRRORS_H diff --git a/inc/nprint.c b/inc/nprint.c index ca563bc..a9b37b7 100644 --- a/inc/nprint.c +++ b/inc/nprint.c @@ -5,6 +5,7 @@ #include "nprint.h" #include +#ifndef silentOutput void nprint(const char *tag, const char *format, ...) { const char *color = ""; const char *bgcolor = ""; @@ -47,3 +48,8 @@ void nprint(const char *tag, const char *format, ...) { printf("\n"); } +#else + void nprint(const char *tag, const char *format, ...) { + do {} while (0); + } +#endif \ No newline at end of file diff --git a/obj/fetch.o b/obj/fetch.o new file mode 100644 index 0000000000000000000000000000000000000000..eb7a6efa72d055199d7dc3f021f6c7384ed7a1ed GIT binary patch literal 4152 zcmbVO2~3n%5PrKTA}FjD5IoAF?Rpf~U7)TQqacX3f;S3Y?7?zGVCk|bv>H(?)vzim ztr%&QRHN1-YVp>(qNdeqYc+W)sz&?fX9kwX+B6RNcjo(M=FPn0e?JRH z#l^~HGDad}!&wU=ma)c;Eq0`2MzTN_z_gB&QoL59hQIg2TEZlY#u|hM;rxnAsVREB zS${{*w!HS#MYmA<+N?gMx1Kyr)!&fK@ThXHn;NUyJ$>tD zd)yAi?}hzUgO*&{IMUuzQF|g&ec3(arK#fUj^18Mh1>JKzUQX8FAFW!XlBXk+1_nl zQPk%_oDbprih;}HeHLpJF=Z&YIU|n zKfF`NzAcJbKg^-K*MGKN7ZY}N#_A148H@JL9NOKqbMw^g#k+p;nzvE~se z@e@{@@T}(R_H=TCTmSg!-*g+_`+A7)u(9!`u48oX))c-xw%@pC?V@W1VRoPN@(rhh zWye&Vy|=`bZrxI$-xI1zo8aSh`^u@i3%;9KGqJ9Gt7npjYHZTlkyGp|%O(cdV|#u1 ztYX2GCl9acj&2Lo*$;HR+}r%zqh!Y#&B_D6oDMK94!(2bO3wYm`-@VdH$5nR^+odC zlJkGMFG!!{e?7iW!j7hfX`c(*^uN3$%Ck_@$?+_>cC<&eqbRxb;vvsDmFsUj@-xgE ze>rmjv|Gx?pn9Ehb@!8v?%QMY!$Ta|Nh_zl z-M8w!kJ#ww=%LDfqs`eii$$poQ-`Xx$vL5#&~S}b8#d6YRpw|z`=diiywq7c{;T9q zd;W|bm%!vq<^YaFhM4B#iw@bxlb9@DA?wkpgGVWM0^bvTZj}5V8pdnK>R-7Eace$Z zt-Wqim#sNKZp@=CDe<1K;XA*E_jwJkXv4!b*43#`nlp^hh0lzHthXfIo#>X1Q_VJ0 zy4u7f&9d{dlCv_bR*N;aIaD%Wy{HBdG-H?{>>UZs4EPTG`2ZbVQ3DUT!HE3@9wF5Ah^(c`KLjWUIGv28HCON#M4;^p57R7{NCW?0`YJT2Lj-tYEsSo zIK%@4eiGtvfuDsqLg3AahYNfb;%I@Nhd3U!*uN5aSTpB!W9r<3EStf|wawb3)5)@# z^KDF>Vz3#Q+L)Wm)K*IqXws0ORckqI&NN72V5u`LCPOBXW@BDjaz=Klg^wfI2BXnx zp4-Z8uo|+{%rLw(jue)ek!_|FUWQDdlO=4jWM%Qs22*ESY-Tn80u0Qx8BB8!r)B4< zbF7vev(;9B}(9T31|-H(Caf`?BN`|Y4d*)#C^}c@mhLgg7vpGODULM6 zI!j*;;2gebehAMM&j^ek13z4x-w9V3&N1ZE`wcN5W13W}I}Ir6pESgQE%u)X!CYW& z&LU!1C+IQKIf&bd_)!T!9=;Q>N0d)IymwMBVv3B31JNSbX7kG>o3KZ4C+HJ zw(GH00nm$OK$>`mQyxE&13UgY|Wl zufPLI_w4KP4^Tb@pk9FaI)SIUq#fK(wsUBe_(GsljJ?2l*s4}{ImZVvpY{*ao7a!< zJ#N65V*b7VnSYz-y4t^cxF57nuz$Y%p=~1GRc#)|0$@-sN}O;vZo~hqVm@%LmTCyT ae{erLi@1JWxYJd>RE+x?oRhgN=Kl+HgVpB% literal 0 HcmV?d00001 diff --git a/obj/fex.o b/obj/fex.o index da546d454bfd714d444d4578ef75f06fb7e20e5b..239537bcb39bb8083eea2162ffea77d6d5e13825 100644 GIT binary patch literal 13096 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 E7pa@r2LJ#7 delta 1807 zcmZWp3s4hR6y1c)XJfM20Gf@pkXXbh)JakxK`bOFn6&8!BsC%^L9mW82qR9JmN5w_ zl*mWYC(5rXRMC!7b*xqgivcTAKE)9k!H!C(C{@P_C}79dW|K|L&^xnp-#PcbchBDY zc1?>0gDS;FoDKbFO4mvW2_PIQn%b46TC1_XQhlN=4<`aDowodK*CI)~>Ap_w25Y3h zsV$G0m6}rjyISj%+WM!|K1O6&Z)vShTu^PfOmR`#$lrI~R9k*#u1{5^s8UrMR2vzW zxq)9gvu)>OMg@h~2SKER^6TF*WTd5Krrk?}s1cZ`+eByC274AfPTNh>nvvjT=P=Ai+d6XNsmL;{)b@?8oY$}Kh!iFSV{791nt;&8BgM~^GLt7etCUrKcRoPe+1FlMv$oxy4&UgaPVju7 z@o3I*Z-G}`a=iuXDx%PK3AXCfO@*8}Xj@!*!m52Uc}Za+CN?)3+OMKkTzNhi#I$a0 z%AXALx9#ooRVRvDxHsU`9eGC0c&ooDx$s427uCXEpv_a(HkKPc40)v2l`cJc;Q;de zk9iY~j^b^1W-N;xWrNb>&+5iwu+)|n`=`;2raEQ z#lWY1A9*_3^nbxU-5iq;gRi9u^nNYtqC_vVgNyxA%4vF*HDc*7?SW#uOwQ~5;Tm3< zV+y)slLer(7sF3?aIF_b5!1K-K19E6&y)BJaj>l#S?dbD#`*Pi9d^6D%iflT z9u^1$#>w$QaXiKi754R*;A(udW~OanSx%vK;Gh{GO|gYly6P%m)0LU6MK;^O!Ct@i zjKr|Ho1fpz9L*>l!HP>x^%_Q>8FX}6%}{&VL%~pb?e$=Zl-f*(7AE8}bxhaJ$qGs&U#;S;O7#(feK57*U9XHOP_)>P7+3zzOICYqxCjy=O8UI>26f0i1*tU<^)* z%_UOeQEU%24#g{cG^nr~)}Z1t+A361Ojn}{3nLy?W}^xfDp8^0SX3B`;;|?ei!wEr zJ9>J5?E@%P#s>+E)s&BcnZXC0 z3^6bc^02V;#`ox;!8_rMaxKR^WtgF zwLgigfE3{iJXgx2#6m{D1qOt#Iy!4_D2Y#a@r3?N5})f1^Xyg|~IAV55K+3vG zQJ>+>*+UGufh|X7+}8`r2M)HJavGRvZvZuy4U`<*3z=M~h7*Gfl4VW+2S<+NFx>Dw z5TSCUge-Ro7@SB!RCHPaXh7wZ^I!;#p@@Ni8$*3S1;0|76F`VJIfAl|%)7qRMpy%F?5*Zcaf>Q~iM)zf7QVGHR9 zT8r6qi3RJUjM!#l^^^x`>txAK@B#34 z@Hlv9=XENr4&Hy&ag+EIco=n_1MdbmzNZF@!bGI(G94cV*U{mvAfa}7L_ zZxP=BPh`K5odO>&J|n#eKH|M3Zh?=YhNs|TE_dz)_;~6u*=cYc^}Ge2bY4^ZJJSXy z>1k4zVj6mLY2MWp@++2I?g&@o50kn`Y+{~-^j!IY?}LB9cA@^zmS;h6AMwQ()82t~yuDCxM;W+L%=IuIX1&1ReY4!2vE+J9Kl6X8c1e80UF@;bj`A=v=F z)3KHulU099*4*%TOOESDa?FwwktRg<%)%tH&u;M1UtjT9JpUgQ?C<*n?u>_-z3R6}QN-&3p1Vgy!N z4^&F5ifURNCjSf6nssXc000000003100000006UC1(pJT1VIc2;QW(KSWiYhvnwdb zDZ+uR#rY0muZW%1p|GH*V(SwKb{2<~l~3UF_y(3XPU5+pQ)I}OpP6Ag5DC?ENkjm? zSF&&LE?}he&q^4j)n)okE=uaB+?TMbFVTt|(o!GZQlztW5&bf=Mlx@vF=VKG0Wsd5 zmC19J1iTM_;YJ3E&!^K0h4}t972PNEkco98D6TbI%$hw>c1hb(g-vSIH BvBm%Z delta 927 zcmV;Q17Q4sQ-D*j-2#8}x@XN|X2vl(aU(>O1jWRt5Emp0E-@2GTt_d_gCaNwy@(5l z;K6uMMi3oPLA>ZeFkZxi1Oy2}M1mJ@f_U>HUc{=uSAst1dSCxl{i=GZdOB?(Y$1)H zwTMlpSg=0Ih;24jcX^Pu4(1(nIfuxM(&dgKNSh>Y1vW)3Zqa`RfgvIbbeAp@QeJ3J zE*dY>WN}@P)&5-I&wV2NyG!ndXyy z=8O^oFS|bZfj96*=O@<)?g!_=1K=Wf6Sx8%1b2fsgL}bSzysi|;34o3co@75d;q*1 zJPzL3ah*!5fp>qk-y}W-9!8z#z`Mb9@SfBcvKPR6TVIjA4BnS}L-s0oznP+Qu7O8# zP2wBiiOe^$Q{cmeXQVg4M@lb=o8Y6U;VJl-!<~BpKJGpyI}NU(p10tW<~7B?^V(pN zB~9uQOv9RNig$H|{EB6VJHplY!=x?}dofQ!danGy_d$PPn^1pf%dw!ikGVPJ&$4?b z%bZ7JxhAb?78nv7o%TE%SXj-Tc@?;4nOGBwM|>$}!eDTC1s{gIKVu28tbSsWyd^#} zSQYPyp1787Ve7;tC~jP7Ws_>b>*+vz2sNE)@H^aYUTXVcMNfnuY4H8_RLE<7$3ijz ze5YeAIVOMmELnBJ<1IO^AIULGPDGjzT{8=l$hCHzkNz5Sm{0%8!#^~o;5;MhJmEnu zo0=6bJj~_#d++pr3s2i#;q>>jJkSa}RP9VPZW~Tg)=w{Om5gjpV!XqD3d8`rcdc{zsDX zr$6+J9n1g#00001000000000p0{{R30000100029>w>c1GAwf-vUV_ Bs4f5i diff --git a/obj/sanity.o b/obj/sanity.o index 019585921582936ad56601c6c93a5132a8636c79..1d6f8b996a3ae5ab18defe4c465c78df719e3829 100644 GIT binary patch literal 9120 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 k?M2j+%Lj@@3E>COxFM%uPxQ4#00+( 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 diff --git a/src/fetch.c b/src/fetch.c new file mode 100644 index 0000000..027073b --- /dev/null +++ b/src/fetch.c @@ -0,0 +1,13 @@ +// +// Created by auric on 2/29/24. +// + +#include "../inc/mirrors.h" +#include "../inc/fetch.h" +#include "../inc/config.h" +#include + +int fetch(int type, char** input) { + + return OK; +}; diff --git a/src/fex.c b/src/fex.c index f4b1019..8bec797 100644 --- a/src/fex.c +++ b/src/fex.c @@ -2,9 +2,9 @@ // Created by auric on 2/21/24. // -#include +/*#include #include -#include +#include */ #include #include #include "sanity.h" @@ -12,22 +12,24 @@ #include "debug.h" #include "fex.h" #include "install.h" +#include "fetch.h" void help() { nprint("E", "Usage: fex (OPT) (PACKAGES)"); } -char* flagNames[] = {"INSTALL","LIST", "SEARCH", "FORCE", "UPGRADE"}; +char* flagNames[] = {"INSTALL", "SOURCE", "REMOVE", "SEARCH", "FORCE", "UPGRADE"}; +/*int flagSource, flagUninstall = 0;*/ +int type; int main(int argc, char** argv) { unsigned int flags = 0; char* packages[argc - 1]; int pkgCount = 0; - int flagSource, flagUninstall = 0; if (argc < 2) { help(); - return 1; + return ERROR; } for(int i = 1; i < argc; i++) { @@ -38,16 +40,18 @@ int main(int argc, char** argv) { flags |= FLAG_INSTALL; break; case 'S': // source, 1 - //flags |= FLAG_SOURCE; - flagSource = 1; + flags |= FLAG_SOURCE; + type = TYPE_SOURCE; + //flagSource = 1; break; case 'r': // remove, 2 - //flags |= FLAG_UNINSTALL; - flagUninstall = 1; + flags |= FLAG_REMOVE; + type = TYPE_GENERIC; // Reusing code. This is for fetch();, but is used here to define the type for `installPackage`. + //flagUninstall = 1; break; - case 'l': // list, 3 + /*case 'l': // list, 3 flags |= FLAG_LIST; - break; + break;*/ case 's': // search, 4 flags |= FLAG_SEARCH; break; @@ -59,7 +63,7 @@ int main(int argc, char** argv) { break; default: nprint("E", "Flag '%c' is unknown.", argv[i][j]); - return 1; + return ERROR; } } } else { @@ -69,12 +73,12 @@ int main(int argc, char** argv) { const int sysSanity = isSysSane(); if ((isSyntaxSane(flags, pkgCount))) { - return 1; + return ERROR; } #ifdef debugEnabled DEBUG_PRINT("sysSanity: %d", sysSanity); - unsigned int flagValues[] = {0b00001, 0b00010, 0b00100, 0b01000, 0b10000}; + unsigned int flagValues[] = {0b000001, 0b000010, 0b000100, 0b001000, 0b010000, 0b100000}; int numFlags = sizeof(flagValues) / sizeof(flagValues[0]); for(int i = 0; i < numFlags; i++) { if (flags & flagValues[i]) { @@ -91,18 +95,18 @@ int main(int argc, char** argv) { /* End Prelogic */ DEBUG_PRINT("[!] Break parselogic"); - if(flags & FLAG_LIST) { + /*if(flags & FLAG_LIST) { DEBUG_PRINT("HIT: List"); // list packages - } + }*/ if(flags & FLAG_SEARCH) { DEBUG_PRINT("HIT: Search"); // search packages } if(!(getuid())) { - if (flags & FLAG_INSTALL) { - DEBUG_PRINT("HIT: Install. Source: %d; Uninstall: %d", flagSource, flagUninstall); - installPackages(packages, pkgCount, flagSource, flagUninstall); + if ((flags & FLAG_INSTALL)) { + DEBUG_PRINT("HIT: Install"); + installBinaries(packages, pkgCount); } if(flags & FLAG_UPGRADE) { DEBUG_PRINT("HIT: Upgrade"); @@ -110,7 +114,7 @@ int main(int argc, char** argv) { } } else { nprint("E", "Superuser permissions required for this operation."); - return 1; + return ERROR; } - return 0; + return OK; } \ No newline at end of file diff --git a/src/install.c b/src/install.c index dbdde75..abd968e 100644 --- a/src/install.c +++ b/src/install.c @@ -3,10 +3,27 @@ */ #include "../inc/debug.h" +#include "../inc/fetch.h" -int installPackages(char** packages, int pkgCount, int source, int uninstall) { - for(int i = 0; i < pkgCount; i++) { +int installBinaries(char** packages, int pkgCount) { + for (int i = 0; i < pkgCount; i++) { DEBUG_PRINT("PACKAGE: %s", packages[i]); DEBUG_PRINT("pkgCount ('i'): %d", i); + fetch(type, &packages[i]); } } +int installSources(char** packages, int pkgCount) { + for (int i = 0; i < pkgCount; i++) { + DEBUG_PRINT("PACKAGE: %s", packages[i]); + DEBUG_PRINT("pkgCount ('i'): %d", i); + fetch(type, &packages[i]); + } +} + +int removePackages(char** packages, int pkgCount) { + for (int i = 0; i < pkgCount; i++) { + DEBUG_PRINT("PACKAGE: %s", packages[i]); + DEBUG_PRINT("pkgCount ('i'): %d", i); + fetch(type, &packages[i]); + } +} \ No newline at end of file diff --git a/src/sanity.c b/src/sanity.c index 685f400..9737b38 100644 --- a/src/sanity.c +++ b/src/sanity.c @@ -2,6 +2,7 @@ #include "../inc/sanity.h" #include "../inc/fex.h" #include "../inc/nprint.h" +#include "../inc/config.h" /* * Uses bitwise operations to determine the sanity of the system's directory hierarchy. In particular, it checks if the directories of @@ -32,25 +33,25 @@ int isSysSane() { } int isSyntaxSane(unsigned int flags, int pkgCount) { - /*if((flags & FLAG_INSTALL)) { + if((flags & FLAG_INSTALL) && (flags & FLAG_REMOVE)) { nprint("E", "You cannot install and uninstall at the same time"); // Sequential parsing of flags would leave so many ambiguous cases and expand these checks greatly. Not worth it without extensive research - return 1; - }*/ + return ERROR; + } if((flags & FLAG_INSTALL) && (pkgCount == 0)) { nprint("E", "You must specify at least one package"); - return 1; + return ERROR; } if(flags == FLAG_FORCE) { nprint("E", "Force may not be used alone"); - return 1; + return ERROR; } - if((flags == FLAG_LIST) || (flags == FLAG_SEARCH)) { + if(/*(flags == FLAG_LIST) || */flags == FLAG_SEARCH) { nprint("E", "List and search must be used alone"); - return 1; + return ERROR; } - return 0; + return OK; }