12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273openCoreopenImportmoduleUnix=Unix_syscallsletargv=Sys.argvletexecutable_name=Sys.executable_nameletwrap1fx1=In_thread.run(fun()->fx1)letwrap2fx1x2=In_thread.run(fun()->fx1x2)letwhen_file_changes?(poll_delay=sec0.5)file=letlast_reported_mtime=refTime.epochinletreader,writer=Pipe.create()inletrecloop()=Monitor.try_with(fun()->Unix.statfile)>>>funstat_result->ifnot(Pipe.is_closedwriter)then((matchstat_resultwith|Error_->()|Okst->letmtime=st.mtimeinifnot(Time.equalmtime!last_reported_mtime)then(last_reported_mtime:=mtime;Pipe.write_without_pushbackwritermtime));Clock.afterpoll_delay>>>loop)inloop();reader;;letchdir=wrap1Sys.chdirletcommand=wrap1Sys.commandletcommand_exn=wrap1Sys.command_exnletquote=Sys.quoteletgetcwd=wrap1Sys.getcwdlethome_directory=wrap1Sys.home_directoryletls_dir=wrap1Sys.ls_dirletreaddir=wrap1Sys.readdirletremove=wrap1Sys.removeletrename=wrap2Sys.renameletwrap_isf?follow_symlinkspath=In_thread.run(fun()->f?follow_symlinkspath)letfile_exists=wrap_isSys.file_existsletfile_exists_exn=wrap_isSys.file_exists_exnletwhen_file_exists?follow_symlinks?(poll_delay=sec0.5)file=Deferred.create(funi->letrecloop()=file_exists?follow_symlinksfile>>>function|`Yes->Ivar.filli()|`No->upon(Clock.afterpoll_delay)loop|`Unknown->raise_s[%message"when_file_exists can not check file"(file:string)]inloop());;letis_directory=wrap_isSys.is_directoryletis_directory_exn=wrap_isSys.is_directory_exnletis_file=wrap_isSys.is_fileletis_file_exn=wrap_isSys.is_file_exnletc_int_size=Sys.c_int_sizeletexecution_mode=Sys.execution_modeletgetenv=Sys.getenvletgetenv_exn=Sys.getenv_exnletint_size=Sys.int_sizeletinteractive=Sys.interactiveletocaml_version=Sys.ocaml_versionletos_type=Sys.os_typeletword_size=Sys.word_sizeletopaque_identity=Sys.opaque_identityletbig_endian=Sys.big_endian