From fd83e9dcea12ce5a98d909694c4609c88a760b8c Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Fri, 1 May 2020 14:07:41 -0500 Subject: [PATCH] Starting file reading --- Makefile | 2 +- onyx | Bin 16552 -> 20160 bytes onyx.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 55 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 86761a43..1df1e52e 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ OBJ_FILES=\ CC=gcc INCLUDES= LIBS= -FLGAS=-g +FLAGS=-g %.o: %.c $(CC) $(FLAGS) -c $< -o $@ $(INCLUDES) diff --git a/onyx b/onyx index e33fe9cd51db82c640b9b58720afeae0d569172d..e8adb76455dd27e120c61eb3bf1f51764899959d 100755 GIT binary patch literal 20160 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

&42S~U`;Y%EoP8elb2 zHo?p#bD3yl14Wo4MD3%B%biNa+S4ea{ZPrVcp4j_Omj38*(_RyQzOxq!8G(k$(BfT ztR>t+qgO?DPJOJRWmu>|TQ(u?YP4g&R3e&8q4mSGMM_pQ9*LTfP&OpYkrb{clWbH^ z4Pv8KZq(`s8uLjp8p;l|dDSsiP2A@!O$mZcq49M2x=L@G=U3>g&LbwhE% zf2kl{(9l3}shovTf1yHuD7kU{K85SnnP`_5?~}C4+_ez|%s@RF2UkWJBEiRaY(Lwtq<7DDx)v>S&uPk+%>N&fk{1L;!Q zk3+*wQ+|#>7^Nq0%vb+~+Vv##HB|n&3(2}P&FAOuq)Nk_arG168lDa~$JJ{}-&xPM zBtCbXe=PmX9dDP=1d^U!IO0!Bp$6&~>L4V(>{m+M!tCcZ;66K`^1qPy-0{3e`l&6h zig})U2k?5athg_eUDD#W!8P}Kk4itRHA`uYM)h~jyT7@B{u2w}PcML<08aIEUZ=la zK>tJFzS-&(a~k5m*tJaX^9UBul72B3Vr+y7n@r~er*;jfexVsZrDHhiG5$vb$k-C? zJs|zVs()LQtQmete;{B}MwXVBr0-lrT_y2SUE=x|z-ie`?HUM_+KdACl|qtxMEa?n zv)FnJ_(k*R{|NZJ`?cfAcowtca5|gG=CFAoEN1sio7oW)ld&YG)TS9pnL~-xU?^cm zvZ-{&4CTfJeOQu+;!_j<){WaX&aXr}x8r6goeoW4zLQN)h*&x_f|*EeWMl#+HqNBV zl&JD-#_YMVV|TaNeO;G{?b@Y!m=t#HyRKt*@6J+*+#wDK^IWq#s5}I_ZWQLOzUwyo27UQM&itjAT;ga3~q!nHx?2Oq$2qLqa_R zelU|!zU6$D8d>Vy+QwgsnI<;hbKlXf{CT(9%cxlsOSv{E+4W!Q(3jF&Dqe9kh0-WW?1+m6G`~9C?=^= zGKSR%{n-LLV?vgWCPHMOa-)f?@XL7lv(a(n=>mW(CC7q4I;@8La0Ir@Sr*pVw=6gh z$DxsU7^SA*3n#xUz;cHE5Pn>RBe=3q+2~+y2zH_55H4B8#*?uW=R<>7T#PY?zq}FU zJVG_kUE_Za(M$=qQ2a((iRbA|oiirVwWqIup~qot&+~bvYwXI%^L?J-Ey&pIdEU>| z$BK$N?Yn^g7SHmze15;dl*{Mecbd=G6Frp0?4VeGUPmzPR}HR&4rSRMk5Od08D~6! zDBAB=6=eEzORacz#_tYD=v@WZpVuW!IsROK)?<1n?CISH^Spjx+Nw%+)}JdRpOJ%M zdtT=-J*gDAd}sR~fSj7#sr2}L4%4S>_L!Z`iQl(?QB0_QGVwf3QRhrvg_pHO9yzP4LGFDxQfhIA=0btA)hOJbexQx2Veox1c2(20?UrC==vbc+0OIZEUWJqFKmlvdpmWgNX1vSTl&NFl8<8~*(G8vS_MdfG8ao{Z4p#gZHp;N~ delta 1990 zcmZWqU2GIp6ux)%ueh7rFCapp^LCHTjZy;-FCLD?JTYpE0toRWu+J}jV(~3 zL1GI8rPfBa$He$xQg|>Jd8jlo__m6_FQ#H3gv6vxH1eRKC?sN(@!XkvjnuoD`Of*y z&%O8DduEI8(X&VCsYs&{B=#^IAbVT5fMAejvI5_Aq_)se2=sd#Q@^KhO$%J6j&_+s zCDr^YS5?ST-ET^caT^?^ug5~FqbeG`5E72+X=aza)c7DC*dQHQoX?4V9 z(?W;i;YDyknOCWHJB0mS`j6EEDX#*h-cooOA9qjad}t;x9W-DjcwgW1nA4mpyMa;W zRO&kfD||pFcC`9yKlZ!J_r$JtyLIimlB?Z5FDtdMJ^ zRXVJZ>()Mk969t*pLskbG0~j(X|&9oOsz)63NL9`iQSfEed(#yVZWS6Po;|G$o+iR zvM#Xn&s_Yy;{HF=J91O0$#sOJpUO^LN%v(ZZl|}WC;sX)rxHhyeloY_Z}a#sCD+I9 z&b?K&zjQ9?3rf?fJ8kY68X8u23?CR8jInfdrK>fG$gWxGl4T7du0zZruDWSiZz8rK zo&402B)Cah(x|oyjL=$+POO!7lnFX2FAM<@I3R~x-5D_;91C<3S8)p z$fAn`9)m^n7dKsCImAp|7X2Ym#VookdP!grP9rNiP9XN7IR=BSApS|Hm7;-DUyQmDYt-Acbe=Nu&YpPgB90IRGEEk // TODO: Replace with custom lib #include // TODO: Replace with custom lib -int main() { - puts("Hello World!"); +#include +#include +#include +#include + +typedef struct File { + int fd; + int open : 1; + const char* path; +} File; + +int file_open(File *f, const char* path, int flags) { + f->fd = open(path, flags, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); + + if (f->fd < 0) + return 1; + + f->open = 1; + f->path = path; + return 0; +} + +int file_close(File* f) { + if (close(f->fd) < 0) { + return errno; + } + + f->open = 0; + return 0; +} + +unsigned char file_read_byte(File* f) { + if (!f->open) return 0; + + unsigned char byte; + read(f->fd, &byte, 1); + return byte; +} + +int main(int argc, char *argv[]) { + + if (argc < 2) { + fprintf(stderr, "Expected file to compile\n"); + return -1; + } + + File file; + + if (!file_open(&file, argv[1], O_RDONLY)) { + fprintf(stderr, "Failed to open file: %s\n", argv[1]); + return -1; + } + + file_close(&file); return 0; } -- 2.25.1