@@ -1024,14 +1024,12 @@ read_file(Pid, Name) ->
10241024 Timeout :: timeout (),
10251025 Error :: {error , reason ()}.
10261026read_file (Pid , Name , FileOpTimeout ) ->
1027- case open (Pid , Name , [read , binary ], FileOpTimeout ) of
1028- {ok , Handle } ->
1029- {ok ,{_WindowSz ,PacketSz }} = recv_window (Pid , FileOpTimeout ),
1030- Res = read_file_loop (Pid , Handle , PacketSz , FileOpTimeout , []),
1031- close (Pid , Handle ),
1032- Res ;
1033- Error ->
1034- Error
1027+ maybe
1028+ {ok , Handle } ?= open (Pid , Name , [read , binary ], FileOpTimeout ),
1029+ {ok , {_WindowSz , PacketSz }} ?= recv_window (Pid , FileOpTimeout ),
1030+ Res = read_file_loop (Pid , Handle , PacketSz , FileOpTimeout , []),
1031+ close (Pid , Handle ),
1032+ Res
10351033 end .
10361034
10371035read_file_loop (Pid , Handle , PacketSz , FileOpTimeout , Acc ) ->
@@ -1066,15 +1064,12 @@ overwritten if it exists.
10661064write_file (Pid , Name , List , FileOpTimeout ) when is_list (List ) ->
10671065 write_file (Pid , Name , to_bin (List ), FileOpTimeout );
10681066write_file (Pid , Name , Bin , FileOpTimeout ) ->
1069- case open (Pid , Name , [write , binary ], FileOpTimeout ) of
1070- {ok , Handle } ->
1071- {ok ,{_Window ,Packet }} = send_window (Pid , FileOpTimeout ),
1072- Res = write_file_loop (Pid , Handle , 0 , Bin , byte_size (Bin ), Packet ,
1073- FileOpTimeout ),
1074- close (Pid , Handle , FileOpTimeout ),
1075- Res ;
1076- Error ->
1077- Error
1067+ maybe
1068+ {ok , Handle } ?= open (Pid , Name , [write , binary ], FileOpTimeout ),
1069+ {ok , {_Window , Packet }} ?= send_window (Pid , FileOpTimeout ),
1070+ Res = write_file_loop (Pid , Handle , 0 , Bin , byte_size (Bin ), Packet , FileOpTimeout ),
1071+ close (Pid , Handle , FileOpTimeout ),
1072+ Res
10781073 end .
10791074
10801075write_file_loop (_Pid , _Handle , _Pos , _Bin , 0 , _PacketSz ,_FileOpTimeout ) ->
@@ -1896,8 +1891,10 @@ to_bin(Data) when is_binary(Data) -> Data.
18961891
18971892
18981893read_repeat (Pid , Handle , Len , FileOpTimeout ) ->
1899- {ok ,{_WindowSz ,PacketSz }} = recv_window (Pid , FileOpTimeout ),
1900- read_rpt (Pid , Handle , Len , PacketSz , FileOpTimeout , <<>>).
1894+ maybe
1895+ {ok , {_WindowSz , PacketSz }} ?= recv_window (Pid , FileOpTimeout ),
1896+ read_rpt (Pid , Handle , Len , PacketSz , FileOpTimeout , <<>>)
1897+ end .
19011898
19021899read_rpt (Pid , Handle , WantedLen , PacketSz , FileOpTimeout , Acc ) when WantedLen > 0 ->
19031900 case read (Pid , Handle , min (WantedLen ,PacketSz ), FileOpTimeout ) of
@@ -1915,8 +1912,10 @@ read_rpt(_Pid, _Handle, WantedLen, _PacketSz, _FileOpTimeout, Acc) when WantedLe
19151912write_to_remote_tar (_Pid , _SftpHandle , <<>>, _FileOpTimeout ) ->
19161913 ok ;
19171914write_to_remote_tar (Pid , SftpHandle , Bin , FileOpTimeout ) ->
1918- {ok ,{_Window ,Packet }} = send_window (Pid , FileOpTimeout ),
1919- write_file_loop (Pid , SftpHandle , 0 , Bin , byte_size (Bin ), Packet , FileOpTimeout ).
1915+ maybe
1916+ {ok , {_Window , Packet }} ?= send_window (Pid , FileOpTimeout ),
1917+ write_file_loop (Pid , SftpHandle , 0 , Bin , byte_size (Bin ), Packet , FileOpTimeout )
1918+ end .
19201919
19211920position_buf (Pid , SftpHandle , BufHandle , Pos , FileOpTimeout ) ->
19221921 {ok ,# bufinf {mode = Mode ,
@@ -1953,18 +1952,19 @@ position_buf(Pid, SftpHandle, BufHandle, Pos, FileOpTimeout) ->
19531952 end .
19541953
19551954read_buf (Pid , SftpHandle , BufHandle , WantedLen , FileOpTimeout ) ->
1956- {ok ,{_Window ,Packet }} = send_window (Pid , FileOpTimeout ),
1957- {ok ,B0 } = call (Pid , {get_bufinf ,BufHandle }, FileOpTimeout ),
1958- case do_the_read_buf (Pid , SftpHandle , WantedLen , Packet , FileOpTimeout , B0 ) of
1959- {ok ,ResultBin ,B } ->
1960- call (Pid , {put_bufinf ,BufHandle ,B }, FileOpTimeout ),
1961- {ok ,ResultBin };
1962- {error ,Error } ->
1963- {error ,Error };
1964- {eof ,B } ->
1965- call (Pid , {put_bufinf ,BufHandle ,B }, FileOpTimeout ),
1966- eof
1967- end .
1955+ maybe
1956+ {ok , {_Window , Packet }} ?= send_window (Pid , FileOpTimeout ),
1957+ {ok , B0 } ?= call (Pid , {get_bufinf ,BufHandle }, FileOpTimeout ),
1958+ {ok , ResultBin , B } ?= do_the_read_buf (Pid , SftpHandle , WantedLen , Packet , FileOpTimeout , B0 ),
1959+ call (Pid , {put_bufinf , BufHandle , B }, FileOpTimeout ),
1960+ {ok ,ResultBin }
1961+ else
1962+ {error , Error } ->
1963+ {error ,Error };
1964+ {eof , BufInf } ->
1965+ call (Pid , {put_bufinf , BufHandle , BufInf }, FileOpTimeout ),
1966+ eof
1967+ end .
19681968
19691969do_the_read_buf (_Pid , _SftpHandle , WantedLen , _Packet , _FileOpTimeout ,
19701970 B = # bufinf {plain_text_buf = PlainBuf0 ,
@@ -2016,15 +2016,14 @@ do_the_read_buf(Pid, SftpHandle, WantedLen, Packet, FileOpTimeout, B=#bufinf{enc
20162016
20172017
20182018write_buf (Pid , SftpHandle , BufHandle , PlainBin , FileOpTimeout ) ->
2019- {ok ,{_Window ,Packet }} = send_window (Pid , FileOpTimeout ),
2020- {ok ,B0 = # bufinf {plain_text_buf = PTB }} = call (Pid , {get_bufinf ,BufHandle }, FileOpTimeout ),
2021- case do_the_write_buf (Pid , SftpHandle , Packet , FileOpTimeout ,
2022- B0 # bufinf {plain_text_buf = <<PTB /binary ,PlainBin /binary >>}) of
2023- {ok , B } ->
2024- call (Pid , {put_bufinf ,BufHandle ,B }, FileOpTimeout ),
2025- ok ;
2026- {error ,Error } ->
2027- {error ,Error }
2019+ maybe
2020+ {ok , {_Window , Packet }} ?= send_window (Pid , FileOpTimeout ),
2021+ {ok , B0 = # bufinf {plain_text_buf = PTB }} ?= call (Pid , {get_bufinf ,BufHandle }, FileOpTimeout ),
2022+ {ok , B } ?=
2023+ do_the_write_buf (Pid , SftpHandle , Packet , FileOpTimeout ,
2024+ B0 # bufinf {plain_text_buf = <<PTB /binary ,PlainBin /binary >>}),
2025+ call (Pid , {put_bufinf ,BufHandle ,B }, FileOpTimeout ),
2026+ ok
20282027 end .
20292028
20302029do_the_write_buf (Pid , SftpHandle , Packet , FileOpTimeout ,
0 commit comments