@@ -1030,14 +1030,12 @@ read_file(Pid, Name) ->
10301030 Timeout :: timeout (),
10311031 Error :: {error , reason ()}.
10321032read_file (Pid , Name , FileOpTimeout ) ->
1033- case open (Pid , Name , [read , binary ], FileOpTimeout ) of
1034- {ok , Handle } ->
1035- {ok ,{_WindowSz ,PacketSz }} = recv_window (Pid , FileOpTimeout ),
1036- Res = read_file_loop (Pid , Handle , PacketSz , FileOpTimeout , []),
1037- close (Pid , Handle ),
1038- Res ;
1039- Error ->
1040- Error
1033+ maybe
1034+ {ok , Handle } ?= open (Pid , Name , [read , binary ], FileOpTimeout ),
1035+ {ok , {_WindowSz , PacketSz }} ?= recv_window (Pid , FileOpTimeout ),
1036+ Res = read_file_loop (Pid , Handle , PacketSz , FileOpTimeout , []),
1037+ close (Pid , Handle ),
1038+ Res
10411039 end .
10421040
10431041read_file_loop (Pid , Handle , PacketSz , FileOpTimeout , Acc ) ->
@@ -1072,15 +1070,12 @@ overwritten if it exists.
10721070write_file (Pid , Name , List , FileOpTimeout ) when is_list (List ) ->
10731071 write_file (Pid , Name , to_bin (List ), FileOpTimeout );
10741072write_file (Pid , Name , Bin , FileOpTimeout ) ->
1075- case open (Pid , Name , [write , binary ], FileOpTimeout ) of
1076- {ok , Handle } ->
1077- {ok ,{_Window ,Packet }} = send_window (Pid , FileOpTimeout ),
1078- Res = write_file_loop (Pid , Handle , 0 , Bin , byte_size (Bin ), Packet ,
1079- FileOpTimeout ),
1080- close (Pid , Handle , FileOpTimeout ),
1081- Res ;
1082- Error ->
1083- Error
1073+ maybe
1074+ {ok , Handle } ?= open (Pid , Name , [write , binary ], FileOpTimeout ),
1075+ {ok , {_Window , Packet }} ?= send_window (Pid , FileOpTimeout ),
1076+ Res = write_file_loop (Pid , Handle , 0 , Bin , byte_size (Bin ), Packet , FileOpTimeout ),
1077+ close (Pid , Handle , FileOpTimeout ),
1078+ Res
10841079 end .
10851080
10861081write_file_loop (_Pid , _Handle , _Pos , _Bin , 0 , _PacketSz ,_FileOpTimeout ) ->
@@ -1902,8 +1897,10 @@ to_bin(Data) when is_binary(Data) -> Data.
19021897
19031898
19041899read_repeat (Pid , Handle , Len , FileOpTimeout ) ->
1905- {ok ,{_WindowSz ,PacketSz }} = recv_window (Pid , FileOpTimeout ),
1906- read_rpt (Pid , Handle , Len , PacketSz , FileOpTimeout , <<>>).
1900+ maybe
1901+ {ok , {_WindowSz , PacketSz }} ?= recv_window (Pid , FileOpTimeout ),
1902+ read_rpt (Pid , Handle , Len , PacketSz , FileOpTimeout , <<>>)
1903+ end .
19071904
19081905read_rpt (Pid , Handle , WantedLen , PacketSz , FileOpTimeout , Acc ) when WantedLen > 0 ->
19091906 case read (Pid , Handle , min (WantedLen ,PacketSz ), FileOpTimeout ) of
@@ -1921,8 +1918,10 @@ read_rpt(_Pid, _Handle, WantedLen, _PacketSz, _FileOpTimeout, Acc) when WantedLe
19211918write_to_remote_tar (_Pid , _SftpHandle , <<>>, _FileOpTimeout ) ->
19221919 ok ;
19231920write_to_remote_tar (Pid , SftpHandle , Bin , FileOpTimeout ) ->
1924- {ok ,{_Window ,Packet }} = send_window (Pid , FileOpTimeout ),
1925- write_file_loop (Pid , SftpHandle , 0 , Bin , byte_size (Bin ), Packet , FileOpTimeout ).
1921+ maybe
1922+ {ok , {_Window , Packet }} ?= send_window (Pid , FileOpTimeout ),
1923+ write_file_loop (Pid , SftpHandle , 0 , Bin , byte_size (Bin ), Packet , FileOpTimeout )
1924+ end .
19261925
19271926position_buf (Pid , SftpHandle , BufHandle , Pos , FileOpTimeout ) ->
19281927 {ok ,# bufinf {mode = Mode ,
@@ -1959,18 +1958,19 @@ position_buf(Pid, SftpHandle, BufHandle, Pos, FileOpTimeout) ->
19591958 end .
19601959
19611960read_buf (Pid , SftpHandle , BufHandle , WantedLen , FileOpTimeout ) ->
1962- {ok ,{_Window ,Packet }} = send_window (Pid , FileOpTimeout ),
1963- {ok ,B0 } = call (Pid , {get_bufinf ,BufHandle }, FileOpTimeout ),
1964- case do_the_read_buf (Pid , SftpHandle , WantedLen , Packet , FileOpTimeout , B0 ) of
1965- {ok ,ResultBin ,B } ->
1966- call (Pid , {put_bufinf ,BufHandle ,B }, FileOpTimeout ),
1967- {ok ,ResultBin };
1968- {error ,Error } ->
1969- {error ,Error };
1970- {eof ,B } ->
1971- call (Pid , {put_bufinf ,BufHandle ,B }, FileOpTimeout ),
1972- eof
1973- end .
1961+ maybe
1962+ {ok , {_Window , Packet }} ?= send_window (Pid , FileOpTimeout ),
1963+ {ok , B0 } ?= call (Pid , {get_bufinf ,BufHandle }, FileOpTimeout ),
1964+ {ok , ResultBin , B } ?= do_the_read_buf (Pid , SftpHandle , WantedLen , Packet , FileOpTimeout , B0 ),
1965+ call (Pid , {put_bufinf , BufHandle , B }, FileOpTimeout ),
1966+ {ok ,ResultBin }
1967+ else
1968+ {error , Error } ->
1969+ {error ,Error };
1970+ {eof , BufInf } ->
1971+ call (Pid , {put_bufinf , BufHandle , BufInf }, FileOpTimeout ),
1972+ eof
1973+ end .
19741974
19751975do_the_read_buf (_Pid , _SftpHandle , WantedLen , _Packet , _FileOpTimeout ,
19761976 B = # bufinf {plain_text_buf = PlainBuf0 ,
@@ -2022,15 +2022,14 @@ do_the_read_buf(Pid, SftpHandle, WantedLen, Packet, FileOpTimeout, B=#bufinf{enc
20222022
20232023
20242024write_buf (Pid , SftpHandle , BufHandle , PlainBin , FileOpTimeout ) ->
2025- {ok ,{_Window ,Packet }} = send_window (Pid , FileOpTimeout ),
2026- {ok ,B0 = # bufinf {plain_text_buf = PTB }} = call (Pid , {get_bufinf ,BufHandle }, FileOpTimeout ),
2027- case do_the_write_buf (Pid , SftpHandle , Packet , FileOpTimeout ,
2028- B0 # bufinf {plain_text_buf = <<PTB /binary ,PlainBin /binary >>}) of
2029- {ok , B } ->
2030- call (Pid , {put_bufinf ,BufHandle ,B }, FileOpTimeout ),
2031- ok ;
2032- {error ,Error } ->
2033- {error ,Error }
2025+ maybe
2026+ {ok , {_Window , Packet }} ?= send_window (Pid , FileOpTimeout ),
2027+ {ok , B0 = # bufinf {plain_text_buf = PTB }} ?= call (Pid , {get_bufinf ,BufHandle }, FileOpTimeout ),
2028+ {ok , B } ?=
2029+ do_the_write_buf (Pid , SftpHandle , Packet , FileOpTimeout ,
2030+ B0 # bufinf {plain_text_buf = <<PTB /binary ,PlainBin /binary >>}),
2031+ call (Pid , {put_bufinf ,BufHandle ,B }, FileOpTimeout ),
2032+ ok
20342033 end .
20352034
20362035do_the_write_buf (Pid , SftpHandle , Packet , FileOpTimeout ,
0 commit comments