From 8c9764d3d15fbe5be73abb92409aa947fa31a805 Mon Sep 17 00:00:00 2001 From: Dan Sheppard Date: Thu, 10 Apr 2025 13:28:13 +0100 Subject: [PATCH] delete --- coquet | Bin 33392 -> 33752 bytes main.c | 2 ++ posix.c | 43 +++++++++++++++++++++++++++++++++++++++---- vfs.h | 4 ++++ 4 files changed, 45 insertions(+), 4 deletions(-) diff --git a/coquet b/coquet index d2ea0047be821f44919cd4b68a4e570569a7edf4..2a2d542b019c61c2c8838dc232f8088f1d23d7e4 100755 GIT binary patch delta 10006 zcmZ`<34B!5xj*OL+}ZBTWM;C=l4T}=#ITr!ummI|w5ALokce2oDqD!8MAoDrk`5Te z7bC^-Xdl&3(Ndp%PhY7~A9Vw?TJ@twaHQ!1`3dthk8TB$=B|cVz{BA16p0p5uO;l(>zCcV(E8{z*v=-8+L_H`D zr-Z5g5#ia#hBe1<5nmD$=> zwKT67Cj7*4}bJLmi#5MR@oD%ldLV$>_qnLkhtF-3@;84hOwiw z4C*ili;2VbGTtt@BN#rNWeDG>|30QqR5*guOY;qB?+~q<`Ug+n5c$T4A@3g|FAzyb zaLL46L(3WrYUR_CZSq6p4@C`mY>50=g&{8)BL7r;g%<$b({{b5vL} z9LVyGIR-<+?-T9LVAxDYihD28hQ%ZB5D_mpr|~r5ah>An;vcRJJWI6c!#umpHrrtr z>PhOu(jN6K<^C}>jIGFk?6ZCUOr=sqKNZXTBWFjaFm|@7G(EaaMoEv>viOebB(U)v z+HFK8o^Q>HcWM8uM*Wt9tMg}p!GhHpOMG=#pH~U{{E@^X?Xrf3m-6%D;~+nb030_ zE4pSKh4+53Cu1DIM>3`Kyb|=MQ`$Sr`)2 zvU79A-$_UyIn3!+9r%qRk)7+i#sWYx2X$%re74^?0&9@mB5rn3S|*$e->^&(2@aq0 zPUxasJ=hUW)D8Hhwj8)v{{@!eiK6f6AGuinnnUaeZsKEvBUGBR?|drNS$CnM{X(j( z5H@{J8gs<+O;9w1B7CK|KNQOUBuMdJr|gEIANLdH#H6me3lMz$jkqBcRNe`Sr$V!` z|7{R?A9_wAKZ}a|@Z{`egQ{5rs@KGta3p)?pek=bwOi~7=a<>{D->)~*Q^UjulLC( z5L;$q44m^D%Kt-BQFboTAI>U0js6Q`u`H+X68kxtPFPSK?R}}X4X`?I_4u|yY@T>HC%@>&|wxpB)0N8HB$2wfHI$6j}MD zZs(wMlbDnL3-?YOa;C>#@mYS6yJb-Ddl89N6@S}L5l&)-8xi`g9*hnmuRJFsG)M9h z|HKqQm-nN~`&nzbF`6CcQ>}81JW1;x``rt2=af_Y1p3{WxVJ#pHScX2C1ZanG zNlNo6(G|Nsw)jgl|CTE-(>k7^lHHgc@4BT5HL?$UDFOu}6F)0OtGeP_s2 zN3kC!>J4#iJDkZ3usDxU`b`S3|nXkXlJ44e6bR)Jm$$klt=c zWl}+7*C;ar$I*C7vbJ7aR(Lt@5?cyuc)d7S*jZeUK1;oMBGy%RHohyqBl87gI%xNf zrv6J)s7nu=>{&f*t^R2FrCiik)M7spJ1edzXkB+>^Q!A(t*c{=%UhPWE|0BVvwT&o zskvo2GX&zTiuwf4Q7=0Rr*x4z`%x-29Q)Vh|AVs+^eWJ^kXQGnQjOsM2D%OO;3uin zUeJcWrc!?beG&8+Xzj67Dh=VE1|1F>IG##f4*CFSBj`!cZJ@n>gFWaKeW``1KcRB2 z4-P;*pTmL5*pE)Y0jP2k4nQ}50SBN>m|ELNj)}Y%^s28?sh2=+2kirW57d!{n>E&W zi8wcAuJ+Q0sZ_m~RkjxY@4f&Si;GnfFRI;Nh%ZsaJ)OP$h47A#*kY(2`J$(E{5t!wg=@-nn0?JtqC6lvr_}IX@$!^tfx~6M=(EoRM!e;O&Q-MCe}nf zOHCb)pVdsheeBU&L|@H5rO7YusV$z-ZoUOrZv%bi71+A}TlanIeqWGd1hsDT)(!rl zDBfPO3#<$Jrxgawx{~|G7<^DnojTsxY&N(AA$(3wg(*_yyp4hkuhT_~7(11YFV`A7v*w_9LJ%K($9B8$hVL)3dL2qilR zxl%FI&sb_oe^AZT4=e>WWl$lLQ4Ybi@;mAOtc9x)lYf+-$OT%aPwkXuOuZb{wAIux z4eDzko;Q%#e3#vKI~2SP5|>M#k2>RzVWqfqotjb&uVlU6901Q(a4gbtF)T5HW4o zTrf&H>RM6yB7m6k0AY$HqbT=c2(%K<7APFbGSZBYj873)PcKU3{H$p`t9R(W@5l`; zUq`@egAG$?`8q;+lnA~gp^SPf!T1zfzK#+4)gU2dHfhTBRxmMzmak*Hz5`5&Ld(}t zt<%~lS4s(1r+);dN}=WJn5loFT!rWrany!>UI@2g87j+@!z)8XPqF|a1 z-bGc)M=F>$oMZ&PT1=f0o?2zGl$c>lO1=m_nRbn(rA!C4OuNxiJTC5?k)OEJVkz%I zoJ@mL&&z^oPeQG|0?#&DnvMo_C3FGW2CBH+4V90{LAqP!uVkY$xKA<;!qCs`8=f2}$ z&J0*flmU=C_$C98NhwR?6yV$d&<^dK%Y9oQ8aDtSj-Uy|kS9VDml;MPrM6Ri(CynB=l{V#);^Lz@fCLc<; zKZjX4A5BixB0t(t4#@nh8!(+~^ziN~huMDzzL(zt zD?jRzgH}lIYPIHV z!8vdClF94%+(yp~g8*}_6Pr2O)jYynm@=2<3L{)2bJB6JAf3i!ifMeufbl)1@q$qo z8!xCFF#Z;y7tWH_){Ds11J>`tT29wlql_J6K6UVHtAm+SgLSoRoAp+*dB8XmS0Pob zX~-#eJ_lHZgjp{=n+9Nu2u4ey!W`21s(7j)x9WB3lj3xWYrQeG4H)f&5v6j;Kq|xN zrp?2ilOp}f{Dk@e`XoG#`UHEIN;l$&+()oiF!l#Tqf6SSFmcFBTD`df2H$#&P(Q?0 zc=0<6H!f*uzrskVB{{Qza^8wMb(y>{P`~Pv@Tne;`ye!-G<#&Y1Y^+%jGw-kCdUOgZG# zkZ(cVvLSR=pl9$c&EU^bLy)`}bJZl?DQ>u`h9|@$SH%+bHr+QLMk?LcYys~wa-hAq&0sm}&etA^%~(Hv9g_d@B4QZrnUW4wo2ih$^wmye&AOxz^lyE;D+M26Cg zQZ)nBpenCrwg&YjxX5?|#eBQncPkVsy)oHc`dkoWO51gvGOuU0PeAM*brDpV@>1pS z5==jXuJPEZ>QuKh0E8!tTKA^}WZ86oNMkx}3=15ONtE>iU65`Sj;Fi?J_QYz)=qle zXq4|kV}?V6XNf_ulZ-}Z)5}g{G1YLyyJ(p-mQrsh$wsD7E1cN;*lcawH6WVlf~FQd zynChTVs@V4Vm^+>Ifi`;3uR!I@ftVr`-e#jMoWYq-u<9yT2nAu-1_6Zm0L_il>q?a zOA}F)-a;IOionrNKDW35o(&(V4wk)f=)F254VP}Ims)Nm4qlb-bXukx6OsoqKY zW%@*YdPWs~_f|C$6mUbLgv56XCT5Ohs)J-2p_CB%qm+v~u8oY%;+KS{XK=hh>ZQCU zEL{Oa!pUJ0yDfJErXJC7UAD^$mqr-z#KM^9TbP>&WN_81>oS=F2N`ErAZ=oS8939= zi@X`S8qJCNdBE<&-kyc)Arj9X4l+eoF;c-|HXY_6&W+r{1>nnoi4>zJauCO1#?dKE zZWiH2qn0NF>P9aUnn1Gi&j!JZA$8Ue@eSYtHL6 zpW{Bwxk0lZ*L>G&>DP!eOGf&^p0RZ48#MQQJ)@Rh%cpA-%eC-v&9z;#Bc7KjX}nd_ zi8N`>1=5rIeyQ`dkxyh}f6DSR5W{_qCblnIreG62vFx$ZGRjV?WKPAJLTZ?68ICNi zP+6O$1&(O04$XeE7DNDLZO?0s8`YTcZvt%1>h;YV7d17nYF@v>WQ-5XJq;_0)$}&V zTN_JPu=TC$@F7}kU-@IvyRx3|6BRANaIf`=%$)g^G{5nZ8WT%erqNf{mPKLfa{*l~ z=sAc#!nBKm8wUTAz&b|XHMK3G0otJl`QJ_L6tVS&U}ESE!-ZZT&qHq~8K!*b{V3m* z551j@H048YmE%phc^wwPRsQhMOZW^EQ!1ve%E+Q@hQ7co6%DI`n06>D)>-I6Gz^cm z@NY8ZL-(Ex@$t%_b33%0Ww2Ipc-1A-?~+_L>$Ns0!xh^NIUPXO|F@W8wol?itZ$Ab zG3bk8>gr(lU1$Tydgz9EoU~jKd`%GlwnF6?asTRIg@Tlm`9^K|q@%_Ux%H-P zspm`ERkD0tOkEe`TSUd0;B?xs32z+=C8ndhArB}%c9*$JxkWNaJR9qn7>iI+WM^dZ%IAvZF4pLFXHf~GJn0zFtlhu_-`unTR%Hkbi8P| zsm!^{{4rve=)7ry-}>3YqP5~MEUh0mEZQsln-lmEB)Pfl&UT-8V{`ey|BhKhkdYw* z?WHbjcHwuE8SOvfBSo^k%x^6mi+(5$L+YSC4v$6G^!R^X!})&EkVx<~;&9>s?-9u@ z6P)kQH-H<&VQ>wL4DKJozjcChHr=lA1ZT;O2KQ5RSM+}YU(Qbt delta 9450 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 Tt6D~Q_THwjTe$eo>fHYasiv9S diff --git a/main.c b/main.c index c308131..4242725 100644 --- a/main.c +++ b/main.c @@ -42,6 +42,8 @@ int main() { bail(&cq,r); r = (cq.vfs_funcs.close)(cq.vfs_data,COQUET_FILE_MAIN); bail(&cq,r); + r = (cq.vfs_funcs.delete)(cq.vfs_data,COQUET_FILE_MAIN); + bail(&cq,r); r = coquet_finish(&cq); bail(&cq,r); return 0; diff --git a/posix.c b/posix.c index 693e9b8..18f2ff1 100644 --- a/posix.c +++ b/posix.c @@ -180,9 +180,8 @@ static int posix_open(void * vfs_data, int which_file, } r = sync_dir(pd); - if(r) { - set_error(pd,"Failed to sync parent directory",1); - return COQUET_RET_VFSERR; + if(r != COQUET_RET_OK) { + return r; } *fd_field = fd; @@ -198,11 +197,14 @@ static int posix_close(void * vfs_data, int which_file) { set_error(pd,"File not open",0); return COQUET_RET_VFSERR; } + r = close(*fd_field); if(r==-1) { set_error(pd,"close failed",1); return COQUET_RET_VFSERR; } + + *fd_field = -1; return COQUET_RET_OK; } @@ -349,6 +351,38 @@ static int posix_lock(void * vfs_data, int which_lock, int lock_mode, return COQUET_RET_OK; } +static int posix_delete(void *vfs_data, int which_file) { + struct posix_data * pd = (struct posix_data *)vfs_data; + int *fd, r; + char *path; + + fd = file_fd(pd,which_file); + if(fd && *fd != -1) { + set_error(pd,"trying to delete open file",0); + return COQUET_RET_VFSERR; + } + + path = filename(pd,which_file); + if(path == NULL) { + return COQUET_RET_HEAPERR; + } + + r = unlink(path); + free(path); + if(r == -1) { + set_error(pd,"delete failed",1); + return COQUET_RET_VFSERR; + } + + r = sync_dir(pd); + if(r != COQUET_RET_OK) { + return r; + } + + return COQUET_RET_OK; +} + + vfs_t vfs_posix = { .make = posix_make, .start = posix_start, @@ -358,5 +392,6 @@ vfs_t vfs_posix = { .close = posix_close, .write = posix_write, .read = posix_read, - .finish = posix_finish + .finish = posix_finish, + .delete = posix_delete }; diff --git a/vfs.h b/vfs.h index 8982bd9..8e144d5 100644 --- a/vfs.h +++ b/vfs.h @@ -74,6 +74,10 @@ typedef struct vfs { */ int (*finish)(void *vfs_data); + /* Delete the given file. File will be closed. + */ + int (*delete)(void *vfs_data, int which_file); + } vfs_t; #endif -- 2.30.2