1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950typet=Unix.statsletnull_stat={Unix.st_dev=-1;st_ino=-1;st_kind=Unix.S_REG;st_nlink=-1;st_perm=-1;st_uid=-1;st_gid=-1;st_rdev=-1;st_size=-1;st_atime=nan;st_mtime=nan;st_ctime=nan}letget_resfilename=tryResult.ok@@Unix.statfilenamewith_->Error("Stat for"^filename^"couldn't be gathered")letgetfilename=matchget_resfilenamewith|Okfn->fn|Error_->null_statletcheckab=a==b||a!=null_stat&&b!=null_stat&&letopenUnixina.st_mtime=b.st_mtime&&a.st_size=b.st_size&&a.st_ino=b.st_ino&&a.st_dev=b.st_devletcache=refNoneletwith_cachek=Std.let_refcache(Some(Hashtbl.create7))kletgetfilename=match!cachewith|None->getfilename|Sometable->(matchHashtbl.findtablefilenamewith|stats->Logger.log~section:"stat_cache"~title:"reuse cache""%s"filename;stats|exceptionNot_found->letstats=getfilenameinHashtbl.addtablefilenamestats;stats)