123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102(*
include In_channel
*)typet=in_channeltypeopen_flag=Pervasives.open_flag=Open_rdonly|Open_wronly|Open_append|Open_creat|Open_trunc|Open_excl|Open_binary|Open_text|Open_nonblockletstdin=stdinletopen_bin=open_in_binletopen_text=open_inletopen_gen=open_in_genletread_and_closechannelf=Stdcompat__fun.protect~finally:(fun()->close_in_noerrchannel)(fun()->fchannel)letwith_open_binfilenamef=read_and_close(open_binfilename)fletwith_open_textfilenamef=read_and_close(open_textfilename)fletwith_open_genflagspermfilenamef=read_and_close(open_genflagspermfilename)fletseek=LargeFile.seek_inletpos=LargeFile.pos_inletlength=LargeFile.in_channel_lengthletclose=close_inletclose_noerr=close_in_noerrletinput_charic=trySome(input_charic)withEnd_of_file->Noneletinput_byteic=trySome(input_byteic)withEnd_of_file->Noneletinput_lineic=trySome(input_lineic)withEnd_of_file->Noneletinput=inputletreally_inputicbufposlen=tryreally_inputicbufposlen;Some()withEnd_of_file->Noneletreally_input_stringiclen=trySome(Stdcompat__pervasives.really_input_stringiclen)withEnd_of_file->Noneletset_binary_mode=set_binary_mode_inletrecadd_channel_to_the_end~chunk_sizebufferchannel=iftryStdcompat__buffer.add_channelbufferchannelchunk_size;truewithEnd_of_file->falsethenadd_channel_to_the_end~chunk_sizebufferchannelletinput_allchannel=letbuffer_size=in_channel_lengthchannel-pos_inchannelinletchunk_size=65536inletbuffer=Buffer.createbuffer_sizeinadd_channel_to_the_end~chunk_sizebufferchannel;Buffer.contentsbuffer