diff options
Diffstat (limited to 'lib/sasl/src')
| -rw-r--r-- | lib/sasl/src/erlsrv.erl | 15 | ||||
| -rw-r--r-- | lib/sasl/src/format_lib_supp.erl | 4 | ||||
| -rw-r--r-- | lib/sasl/src/overload.erl | 3 | ||||
| -rw-r--r-- | lib/sasl/src/rb.erl | 14 | ||||
| -rw-r--r-- | lib/sasl/src/release_handler.erl | 101 | ||||
| -rw-r--r-- | lib/sasl/src/release_handler_1.erl | 2 | ||||
| -rw-r--r-- | lib/sasl/src/sasl.appup.src | 14 | ||||
| -rw-r--r-- | lib/sasl/src/sasl_report_file_h.erl | 6 | ||||
| -rw-r--r-- | lib/sasl/src/sasl_report_tty_h.erl | 4 | ||||
| -rw-r--r-- | lib/sasl/src/si.erl | 4 | ||||
| -rw-r--r-- | lib/sasl/src/si_sasl_supp.erl | 8 | ||||
| -rw-r--r-- | lib/sasl/src/systools_lib.erl | 12 | ||||
| -rw-r--r-- | lib/sasl/src/systools_make.erl | 71 | ||||
| -rw-r--r-- | lib/sasl/src/systools_relup.erl | 19 | 
14 files changed, 155 insertions, 122 deletions
| diff --git a/lib/sasl/src/erlsrv.erl b/lib/sasl/src/erlsrv.erl index 086dc7c651..0d931f1779 100644 --- a/lib/sasl/src/erlsrv.erl +++ b/lib/sasl/src/erlsrv.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %%  -%% Copyright Ericsson AB 1998-2011. All Rights Reserved. +%% Copyright Ericsson AB 1998-2013. All Rights Reserved.  %%   %% The contents of this file are subject to the Erlang Public License,  %% Version 1.1, (the "License"); you may not use this file except in @@ -39,7 +39,7 @@ current_version() ->  run_erlsrv(Command) ->      run_erlsrv(current_version(),Command).  run_erlsrv(EVer, Command) -> -    case catch(open_port({spawn, erlsrv(EVer) ++ " " ++ Command},  +    case catch(open_port({spawn, "\"" ++ erlsrv(EVer) ++ "\" " ++ Command},  			 [{line,1000}, in, eof])) of  	{'EXIT',{Reason,_}} ->  	    {port_error, Reason}; @@ -53,7 +53,7 @@ run_erlsrv(EVer, Command) ->      end.  run_erlsrv_interactive(EVer, Commands) -> -    case catch(open_port({spawn, erlsrv(EVer) ++ " readargs"},  +    case catch(open_port({spawn, "\""++ erlsrv(EVer) ++ "\" readargs"},  			 [{line,1000}, eof])) of  	{'EXIT',{Reason,_}} ->  	    {port_error, Reason}; @@ -71,11 +71,14 @@ write_all_data(Port,[]) ->      Port ! {self(), {command, io_lib:nl()}},      ok;  write_all_data(Port,[H|T]) -> -    Port ! {self(), {command, H ++ io_lib:nl()}}, +    Port ! {self(), {command, unicode:characters_to_binary([H,io_lib:nl()])}},      write_all_data(Port,T).  read_all_data(Port) -> -	lists:reverse(read_all_data(Port,[],[])). +    Data0 = lists:reverse(read_all_data(Port,[],[])), +    %% Convert from utf8 to a list of chars +    [unicode:characters_to_list(list_to_binary(Data)) || Data <- Data0]. +  read_all_data(Port,Line,Lines) ->      receive  	{Port, {data, {noeol,Data}}} -> @@ -178,7 +181,7 @@ get_service(EVer, ServiceName) ->  				[]  			end  		end, -	    %%% First split by Env: +            %%% First split by Env:  	    {Before, After} = split_by_env(Data),  	    FirstPass = lists:flatten(lists:map(F,Before)),  	    %%% If the arguments are there, split them to diff --git a/lib/sasl/src/format_lib_supp.erl b/lib/sasl/src/format_lib_supp.erl index af15fd3288..5348bc6d59 100644 --- a/lib/sasl/src/format_lib_supp.erl +++ b/lib/sasl/src/format_lib_supp.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %%  -%% Copyright Ericsson AB 1996-2009. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. All Rights Reserved.  %%   %% The contents of this file are subject to the Erlang Public License,  %% Version 1.1, (the "License"); you may not use this file except in @@ -77,7 +77,7 @@ print_format(Device, Line, [{data, Data}|T]) ->      print_data(Device, Line, Data),      print_format(Device, Line, T);  print_format(Device, Line, [{table, Table}|T]) -> -    print_table(Device, Line, Table), +    _ = print_table(Device, Line, Table),      print_format(Device, Line, T);  print_format(Device, Line, [{items, Items}|T]) ->      print_items(Device, Line, Items), diff --git a/lib/sasl/src/overload.erl b/lib/sasl/src/overload.erl index 97f7bebe00..736423484a 100644 --- a/lib/sasl/src/overload.erl +++ b/lib/sasl/src/overload.erl @@ -1,8 +1,7 @@ -%% -*- coding: utf-8 -*-  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1996-2012. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. All Rights Reserved.  %%  %% The contents of this file are subject to the Erlang Public License,  %% Version 1.1, (the "License"); you may not use this file except in diff --git a/lib/sasl/src/rb.erl b/lib/sasl/src/rb.erl index 8004ef2c5a..eb65aa8786 100644 --- a/lib/sasl/src/rb.erl +++ b/lib/sasl/src/rb.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 1996-2011. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. All Rights Reserved.  %%  %% The contents of this file are subject to the Erlang Public License,  %% Version 1.1, (the "License"); you may not use this file except in @@ -309,11 +309,11 @@ scan_files(RptDir, Max, Type) ->  	{ok, Fd} ->  	    case catch file:read(Fd, 1) of  		{ok, [LastWritten]} ->  -		    file:close(Fd), +		    ok = file:close(Fd),  		    Files = make_file_list(RptDir, LastWritten),  		    scan_files(RptDir, Files, Max, Type);		  		_X -> -		    file:close(Fd), +		    _ = file:close(Fd),  		    exit("cannot read the index file")  	    end;  	_X -> exit("cannot read the index file") @@ -386,7 +386,7 @@ read_reports(No, Fd, Fname, Max, Type) ->      io:format("rb: reading report..."),      case catch read_reports(Fd, [], Type) of  	{ok, Res} ->  -	    file:close(Fd), +	    ok = file:close(Fd),  	    io:format("done.~n"),  	    NewRes =   		if @@ -397,7 +397,7 @@ read_reports(No, Fd, Fname, Max, Type) ->  		end,  	    add_report_data(NewRes, No, Fname);  	{error, [Problem | Res]} -> -	    file:close(Fd), +	    _ = file:close(Fd),  	    io:format("Error: ~p~n",[Problem]),  	    io:format("Salvaged ~p entries from corrupt report file ~s...~n",  		      [length(Res),Fname]), @@ -898,7 +898,7 @@ handle_bad_form(Date, Msg, Device, Abort, Log) ->      end.  read_rep_msg(Fd, FilePosition) -> -    file:position(Fd, {bof, FilePosition}), +    {ok,_} = file:position(Fd, {bof, FilePosition}),      Res =   	case catch read_report(Fd) of  	    {ok, Report} -> @@ -906,5 +906,5 @@ read_rep_msg(Fd, FilePosition) ->  		{Date, Report};  	    _ -> error  	end, -    file:close(Fd), +    ok = file:close(Fd),      Res. diff --git a/lib/sasl/src/release_handler.erl b/lib/sasl/src/release_handler.erl index c1b715b970..1ad60af7c2 100644 --- a/lib/sasl/src/release_handler.erl +++ b/lib/sasl/src/release_handler.erl @@ -585,11 +585,9 @@ init([]) ->  handle_call({unpack_release, ReleaseName}, _From, S)    when S#state.masters == false -> -    RelDir = S#state.rel_dir, -    case catch do_unpack_release(S#state.root, RelDir, +    case catch do_unpack_release(S#state.root, S#state.rel_dir,  				 ReleaseName, S#state.releases) of  	{ok, NewReleases, Vsn} ->  -	    clean_release(RelDir, ReleaseName),  	    {reply, {ok, Vsn}, S#state{releases = NewReleases}};  	{error, Reason}   ->  	    {reply, {error, Reason}, S};  @@ -739,7 +737,7 @@ mk_lib_name([]) -> [].  handle_info(timeout, S) ->      case soft_purge(S#state.unpurged) of  	[] -> -	    timer:cancel(S#state.timer), +	    _ = timer:cancel(S#state.timer),  	    {noreply, S#state{unpurged = [], timer = undefined}};  	Unpurged ->  	    {noreply, S#state{unpurged = Unpurged}} @@ -850,15 +848,11 @@ do_unpack_release(Root, RelDir, ReleaseName, Releases) ->      Dir = filename:join([RelDir, Vsn]),      copy_file(RelFile, Dir, false), -    {ok, NewReleases, Vsn}. +    %% Clean release +    _ = file:delete(Tar), +    _ = file:delete(RelFile), -%% Note that this function is not executed by a client -%% release_handler. -clean_release(RelDir, ReleaseName) -> -    Tar = filename:join(RelDir, ReleaseName ++ ".tar.gz"), -    Rel = filename:join(RelDir, ReleaseName ++ ".rel"), -    file:delete(Tar), -    file:delete(Rel). +    {ok, NewReleases, Vsn}.  check_rel(Root, RelFile, Masters) ->      check_rel(Root, RelFile, [], Masters). @@ -1184,7 +1178,8 @@ rename_tmp_service(EVsn,TmpVsn,NewVsn) ->  	{error, _Error} ->  	    ok;  	_Data -> -	    erlsrv:remove_service(ToName) +	    {ok,_} = erlsrv:remove_service(ToName), +	    ok      end,      rename_service(EVsn,FromName,ToName). @@ -1237,13 +1232,12 @@ do_make_services_permanent(PermanentVsn,Vsn, PermanentEVsn, EVsn) ->  	    UpdData = erlsrv:new_service(Name, Data, []),  	    case erlsrv:store_service(EVsn,UpdData) of  		ok -> -		    erlsrv:disable_service(PermanentEVsn, PermName), -		    erlsrv:enable_service(EVsn, Name), -		    erlsrv:remove_service(PermName), +		    {ok,_} = erlsrv:disable_service(PermanentEVsn, PermName), +		    {ok,_} = erlsrv:enable_service(EVsn, Name), +		    {ok,_} = erlsrv:remove_service(PermName),  		    %%% Read comments about these above...  		    os:putenv("ERLSRV_SERVICE_NAME", Name), -		    heart:cycle(), -		    ok; +		    ok = heart:cycle();  		Error4 ->  		    throw(Error4)  	    end @@ -1288,7 +1282,7 @@ do_make_permanent(#state{releases = Releases,  		_ ->  		    ok  	    end, -	    init:make_permanent(filename:join(Dir, "start"), Sys), +	    ok = init:make_permanent(filename:join(Dir, "start"), Sys),  	    {ok, NewReleases, brutal_purge(Unpurged)};  	{value, #release{status = permanent}} ->  	    {ok, Releases, Unpurged}; @@ -1309,13 +1303,13 @@ do_back_service(OldVersion, CurrentVersion,OldEVsn,CurrentEVsn) ->  		  Data ->  		      erlsrv:new_service(OldName, Data, [])  	      end, -    case erlsrv:store_service(OldEVsn,UpdData) of -	ok -> -	    erlsrv:disable_service(CurrentEVsn,CurrentName), -	    erlsrv:enable_service(OldEVsn,OldName); -	Error2 -> -	    throw(Error2) -    end, +    _ = case erlsrv:store_service(OldEVsn,UpdData) of +	    ok -> +		{ok,_} = erlsrv:disable_service(CurrentEVsn,CurrentName), +		{ok,_} = erlsrv:enable_service(OldEVsn,OldName); +	    Error2 -> +		throw(Error2) +	end,      OldErlSrv = filename:nativename(erlsrv:erlsrv(OldEVsn)),      CurrentErlSrv = filename:nativename(erlsrv:erlsrv(CurrentEVsn)),      case heart:set_cmd(CurrentErlSrv ++ " remove " ++ CurrentName ++  @@ -1386,10 +1380,18 @@ set_permanent_files(RelDir, _EVsn, Vsn, Masters, _Static) ->  do_remove_service(Vsn) -> -    %%% Very unconditionally remove the service. +    %% Very unconditionally remove the service. +    %% Note that the service could already have been removed when +    %% making another release permanent.      ServiceName = hd(string:tokens(atom_to_list(node()),"@"))   	++ "_" ++ Vsn, -    erlsrv:remove_service(ServiceName). +    case erlsrv:get_service(ServiceName) of +	{error, _Error} -> +	    ok; +	_Data -> +	    {ok,_} = erlsrv:remove_service(ServiceName), +	    ok +    end.  do_remove_release(Root, RelDir, Vsn, Releases) ->      % Decide which libs should be removed @@ -1603,8 +1605,7 @@ do_write_file(File, Str, FileOpts) ->      case file:open(File, [write | FileOpts]) of  	{ok, Fd} ->  	    io:put_chars(Fd, Str), -	    file:close(Fd), -	    ok; +	    ok = file:close(Fd);  	{error, Reason} ->  	    {error, {Reason, File}}      end. @@ -1651,9 +1652,9 @@ get_appls([], Res) ->  mon_nodes(true) -> -    net_kernel:monitor_nodes(true); +    ok = net_kernel:monitor_nodes(true);  mon_nodes(false) -> -    net_kernel:monitor_nodes(false), +    ok = net_kernel:monitor_nodes(false),      flush().  flush() -> @@ -1691,7 +1692,7 @@ prepare_restart_nt(#release{erts_vsn = EVsn, vsn = Vsn},  	{error, _} = Error2 ->  	    throw(Error2);  	_X -> -	    erlsrv:disable_service(EVsn, FutureServiceName), +	    {ok,_} = erlsrv:disable_service(EVsn, FutureServiceName),  	    ErlSrv = filename:nativename(erlsrv:erlsrv(EVsn)),  	    StartDisabled = ErlSrv ++ " start_disabled " ++ FutureServiceName,  	    case heart:set_cmd(StartDisabled) of @@ -1877,8 +1878,7 @@ do_write_release(Dir, RELEASES, NewReleases) ->      case file:open(filename:join(Dir, RELEASES), [write]) of  	{ok, Fd} ->  	    ok = io:format(Fd, "~p.~n", [NewReleases]), -	    file:close(Fd), -	    ok; +	    ok = file:close(Fd);  	{error, Reason} ->  	    {error, Reason}      end. @@ -2010,7 +2010,7 @@ do_rename_files([]) ->  %% Remove a list of files. Ignore failure.  %%-----------------------------------------------------------------  do_remove_files([File|Files]) -> -    file:delete(File), +    _ = file:delete(File),      do_remove_files(Files);  do_remove_files([]) ->      ok. @@ -2030,7 +2030,8 @@ do_ensure_RELEASES(RelFile) ->  %% Make a directory, ignore failures (captured later).  %%-----------------------------------------------------------------  make_dir(Dir, false) -> -    file:make_dir(Dir); +    _ = file:make_dir(Dir), +    ok;  make_dir(Dir, Masters) ->      lists:foreach(fun(Master) -> rpc:call(Master, file, make_dir, [Dir]) end,  		  Masters). @@ -2062,12 +2063,12 @@ at_all_masters([], _, _, _) ->  %% Ignore {M,F,A} return value.  %%-----------------------------------------------------------------  takewhile(Master, Masters, M, F, A) -> -    lists:takewhile(fun(Ma) when Ma == Master -> -			    false; -		       (Ma) -> -			    rpc:call(Ma, M, F, A), -			    true -		    end, Masters), +    _ = lists:takewhile(fun(Ma) when Ma == Master -> +				false; +			   (Ma) -> +				rpc:call(Ma, M, F, A), +				true +			end, Masters),      ok.  consult(File, false)   -> file:consult(File); @@ -2205,23 +2206,23 @@ set_static_files(SrcDir, DestDir, Masters) ->  write_ini_file(RootDir,EVsn,Masters) ->     BinDir = filename:join([RootDir,"erts-"++EVsn,"bin"]),     Str0 = io_lib:format("[erlang]~n" -                        "Bindir=~s~n" +                        "Bindir=~ts~n"                          "Progname=erl~n" -                        "Rootdir=~s~n", +                        "Rootdir=~ts~n",  		        [filename:nativename(BinDir),  		         filename:nativename(RootDir)]), -   Str = re:replace(Str0,"\\\\","\\\\\\\\",[{return,list},global]), +   Str = re:replace(Str0,"\\\\","\\\\\\\\",[{return,list},global,unicode]),     IniFile = filename:join(BinDir,"erl.ini"),     do_write_ini_file(IniFile,Str,Masters).  do_write_ini_file(File,Data,false) -> -    case do_write_file(File, Data) of +    case do_write_file(File, Data, [{encoding,utf8}]) of  	ok    -> ok;  	Error -> throw(Error)      end;  do_write_ini_file(File,Data,Masters) ->      all_masters(Masters), -    safe_write_file_m(File, Data, Masters). +    safe_write_file_m(File, Data, [{encoding,utf8}], Masters).  %%----------------------------------------------------------------- @@ -2235,13 +2236,15 @@ do_write_ini_file(File,Data,Masters) ->  %% (as long as possible), except for 4 which is allowed to fail.  %%-----------------------------------------------------------------  safe_write_file_m(File, Data, Masters) -> +    safe_write_file_m(File, Data, [], Masters). +safe_write_file_m(File, Data, FileOpts, Masters) ->      Backup = File ++ ".backup",      Change = File ++ ".change",      case at_all_masters(Masters, ?MODULE, do_copy_files,  			[File, [Backup]]) of  	ok ->  	    case at_all_masters(Masters, ?MODULE, do_write_file, -				[Change, Data]) of +				[Change, Data, FileOpts]) of  		ok ->  		    case at_all_masters(Masters, file, rename,  					[Change, File]) of diff --git a/lib/sasl/src/release_handler_1.erl b/lib/sasl/src/release_handler_1.erl index b37ae2f944..fa6ef77b2d 100644 --- a/lib/sasl/src/release_handler_1.erl +++ b/lib/sasl/src/release_handler_1.erl @@ -349,7 +349,7 @@ eval({load, {Mod, _PrePurgeMethod, PostPurgeMethod}}, EvalState) ->      {value, {_Mod, Bin, File}} = lists:keysearch(Mod, 1, Bins),      % load_binary kills all procs running old code      % if soft_purge, we know that there are no such procs now -    code:load_binary(Mod, File, Bin), +    {module,_} = code:load_binary(Mod, File, Bin),      % Now, the prev current is old.  There might be procs      % running it.  Find them.      Unpurged = do_soft_purge(Mod,PostPurgeMethod,EvalState#eval_state.unpurged), diff --git a/lib/sasl/src/sasl.appup.src b/lib/sasl/src/sasl.appup.src index a4a38ee40a..0c4d80a74f 100644 --- a/lib/sasl/src/sasl.appup.src +++ b/lib/sasl/src/sasl.appup.src @@ -17,13 +17,11 @@  %% %CopyrightEnd%  {"%VSN%",   %% Up from - max two major revisions back - [{<<"2\\.3(\\.[0-9]+)*">>,[restart_new_emulator]},         %% R16 -  {<<"2\\.2(\\.[0-9]+)*">>,[restart_new_emulator]},         %% R15 -  {<<"2\\.1\\.10(\\.[0-9]+)*">>,[restart_new_emulator]},    %% R14B04 -  {<<"2\\.1\\.9\\.[24](\\.[0-9]+)*">>,[restart_new_emulator]}],%% R14B-R14B03 + [{<<"2\\.4(\\.[0-9]+)*">>,[restart_new_emulator]},         %% R17 +  {<<"2\\.3(\\.[0-9]+)*">>,[restart_new_emulator]},         %% R16 +  {<<"2\\.2(\\.[0-9]+)*">>,[restart_new_emulator]}],        %% R15   %% Down to - max two major revisions back - [{<<"2\\.3(\\.[0-9]+)*">>,[restart_new_emulator]},         %% R16 -  {<<"2\\.2(\\.[0-9]+)*">>,[restart_new_emulator]},         %% R15 -  {<<"2\\.1\\.10(\\.[0-9]+)*">>,[restart_new_emulator]},    %% R14B04 -  {<<"2\\.1\\.9\\.[24](\\.[0-9]+)*">>,[restart_new_emulator]}] %% R14B-R14B03 + [{<<"2\\.4(\\.[0-9]+)*">>,[restart_new_emulator]},         %% R17 +  {<<"2\\.3(\\.[0-9]+)*">>,[restart_new_emulator]},         %% R16 +  {<<"2\\.2(\\.[0-9]+)*">>,[restart_new_emulator]}]         %% R15  }. diff --git a/lib/sasl/src/sasl_report_file_h.erl b/lib/sasl/src/sasl_report_file_h.erl index f4810d31cc..f42b4b5ff2 100644 --- a/lib/sasl/src/sasl_report_file_h.erl +++ b/lib/sasl/src/sasl_report_file_h.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %%  -%% Copyright Ericsson AB 1996-2009. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. All Rights Reserved.  %%   %% The contents of this file are subject to the Erlang Public License,  %% Version 1.1, (the "License"); you may not use this file except in @@ -40,7 +40,7 @@ init({File, Type}) ->  handle_event({_Type, GL, _Msg}, State) when node(GL) /= node() ->      {ok, State};  handle_event(Event, {Fd, File, Type}) -> -    sasl_report:write_report(Fd, Type, tag_event(Event)), +    _ = sasl_report:write_report(Fd, Type, tag_event(Event)),      {ok, {Fd, File, Type}};  handle_event(_, State) ->      {ok, State}. @@ -53,7 +53,7 @@ handle_info(_, State) ->  handle_call(_Query, _State) -> {error, bad_query}.  terminate(_, {Fd, _File, _Type}) -> -    file:close(Fd), +    _ = file:close(Fd),      [].  tag_event(Event) ->     diff --git a/lib/sasl/src/sasl_report_tty_h.erl b/lib/sasl/src/sasl_report_tty_h.erl index 064f0471f2..8d63428aeb 100644 --- a/lib/sasl/src/sasl_report_tty_h.erl +++ b/lib/sasl/src/sasl_report_tty_h.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %%  -%% Copyright Ericsson AB 1996-2009. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. All Rights Reserved.  %%   %% The contents of this file are subject to the Erlang Public License,  %% Version 1.1, (the "License"); you may not use this file except in @@ -35,7 +35,7 @@ init(Type) ->  handle_event({Type, GL, _Msg}, Type) when node(GL) /= node() ->      {ok, Type};  handle_event(Event, Type) -> -    sasl_report:write_report(standard_io, Type, tag_event(Event)), +    _ = sasl_report:write_report(standard_io, Type, tag_event(Event)),      {ok, Type}.  handle_info(_, Type) -> {ok, Type}. diff --git a/lib/sasl/src/si.erl b/lib/sasl/src/si.erl index eeed7a9f55..e2f6d95e58 100644 --- a/lib/sasl/src/si.erl +++ b/lib/sasl/src/si.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %%  -%% Copyright Ericsson AB 1996-2009. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. All Rights Reserved.  %%   %% The contents of this file are subject to the Erlang Public License,  %% Version 1.1, (the "License"); you may not use this file except in @@ -135,7 +135,7 @@ pi_impl(Opt, XPid) ->  		{status_info, Pid, {module, Module}, Data} ->  		    si_sasl_supp:do_best_printout(Opt, Pid, Module, Data);  		{error, Reason} -> -		    si_sasl_supp:ppi_impl(Pid), +		    _ = si_sasl_supp:ppi_impl(Pid),  		    {error, {"can not get status info from process:",  			     XPid,  			     Reason}}; diff --git a/lib/sasl/src/si_sasl_supp.erl b/lib/sasl/src/si_sasl_supp.erl index c4fc0c5f08..12b2557cd6 100644 --- a/lib/sasl/src/si_sasl_supp.erl +++ b/lib/sasl/src/si_sasl_supp.erl @@ -162,7 +162,7 @@ handle_call(stop, _From, State) ->      {stop, normal, stopped, State}.  terminate(_Reason, _State) -> -    close_device(get(device)), +    _ = close_device(get(device)),      ok.  handle_cast(_Msg, State) -> @@ -190,7 +190,7 @@ open_log_file(undefined, NewFile) ->  open_log_file(standard_io, NewFile) ->      open_log_file(NewFile);  open_log_file(OldFile, NewFile) -> -    file:close(OldFile), +    _ = file:close(OldFile),      open_log_file(NewFile).  open_log_file(standard_io) -> standard_io; @@ -317,7 +317,7 @@ pi_impl(Opt, XPid) ->  		{status_info, Pid, {module, Module}, Data} ->  		    do_best_printout(Opt, Pid, Module, Data);  		{error, Reason} -> -		    ppi_impl(Pid), +		    _ = ppi_impl(Pid),  		    {error, {"can not get status info from process:",  			     XPid,  			     Reason}} @@ -335,7 +335,7 @@ do_best_printout(Opt, Pid, Mod, Data) when is_pid(Pid) ->      case print_info(get(device), Pid, {Mod, format_status}, Opt, Data) of  	ok -> ok;  	{error, Reason} -> -	    ppi_impl(Pid), +	    _ = ppi_impl(Pid),  	    {error, Reason}      end. diff --git a/lib/sasl/src/systools_lib.erl b/lib/sasl/src/systools_lib.erl index 6618baa2aa..0a96f2bd48 100644 --- a/lib/sasl/src/systools_lib.erl +++ b/lib/sasl/src/systools_lib.erl @@ -34,8 +34,10 @@  file_term2binary(FileIn, FileOut) ->      case read_term(FileIn) of  	{ok, Term} -> -	    file:write_file(FileOut, term_to_binary(Term)), -	    ok; +	    case file:write_file(FileOut, term_to_binary(Term)) of +		ok -> ok; +		{error,Error} -> {error,{open,FileOut,Error}} +	    end;  	Other ->  	    Other      end. @@ -51,8 +53,10 @@ read_term(File) ->      case file:open(File, [read]) of  	{ok, Stream} ->  	    Res = read_term_from_stream(Stream, File), -	    file:close(Stream), -	    Res; +	    case file:close(Stream) of +		ok -> Res; +		{error,Error} -> {error,{close,File,Error}} +	    end;  	{error, Error} ->  	    {error, {open,File,Error}}      end. diff --git a/lib/sasl/src/systools_make.erl b/lib/sasl/src/systools_make.erl index b2e95fdbee..b86130612d 100644 --- a/lib/sasl/src/systools_make.erl +++ b/lib/sasl/src/systools_make.erl @@ -406,9 +406,9 @@ check_rel(Release) ->      end.  check_rel1({release,{Name,Vsn},{erts,EVsn},Appl}) when is_list(Appl) -> -    check_name(Name), -    check_vsn(Vsn), -    check_evsn(EVsn), +    Name = check_name(Name), +    Vsn = check_vsn(Vsn), +    EVsn = check_evsn(EVsn),      {{Appls,Incls},Ws} = check_appl(Appl),      {ok, {Name,Vsn,EVsn,Appls,Incls},Ws};  check_rel1(_) -> @@ -974,7 +974,8 @@ check_xref(Appls, Path, XrefP) ->  	    ok;  	{error, {already_started, _Pid}} ->  	    xref:stop(?XREF_SERVER), %% Clear out any previous data -	    xref:start(?XREF_SERVER, XrefArgs) +	    {ok,_} = xref:start(?XREF_SERVER, XrefArgs), +	    ok      end,      {ok, _} = xref:set_default(?XREF_SERVER, verbose, false),      LibPath = case Path == code:get_path() of @@ -1146,14 +1147,17 @@ generate_script(Output, Release, Appls, Flags) ->  	{ok, Fd} ->  	    io:format(Fd, "%% script generated at ~w ~w\n~p.\n",  		      [date(), time(), Script]), -	    file:close(Fd), - -	    BootFile = Output ++ ".boot", -	    case file:write_file(BootFile, term_to_binary(Script)) of +	    case file:close(Fd) of  		ok -> -		    ok; +		    BootFile = Output ++ ".boot", +		    case file:write_file(BootFile, term_to_binary(Script)) of +			ok -> +			    ok; +			{error, Reason} -> +			    {error, ?MODULE, {open,BootFile,Reason}} +		    end;  		{error, Reason} -> -		    {error, ?MODULE, {open,BootFile,Reason}} +		    {error, ?MODULE, {close,ScriptFile,Reason}}  	    end;  	{error, Reason} ->  	    {error, ?MODULE, {open,ScriptFile,Reason}} @@ -1529,14 +1533,16 @@ mk_tar(RelName, Release, Appls, Flags, Path1) ->      Tar = open_main_tar(TarName),      case catch mk_tar(Tar, RelName, Release, Appls, Flags, Path1) of  	{error,Error} -> -	    del_tar(Tar, TarName), +	    _ = del_tar(Tar, TarName),  	    {error,?MODULE,Error};  	{'EXIT',Reason} -> -	    del_tar(Tar, TarName), +	    _ = del_tar(Tar, TarName),  	    {error,?MODULE,Reason};  	_ -> -	    close_tar(Tar), -	    ok +	    case erl_tar:close(Tar) of +		ok -> ok; +		{error,Reason} -> {error,?MODULE,{close,TarName,Reason}} +	    end      end.  open_main_tar(TarName) -> @@ -1591,14 +1597,13 @@ add_variable_tar({Variable,P}, Appls, Tar, Flags) ->  	    case catch add_applications(Appls, VarTar, [{Variable,P}],  					Flags, Variable) of  		ok when Flag == include -> -		    close_tar(VarTar), +		    close_tar(VarTar,TarName),  		    add_to_tar(Tar, TarName, TarName),  		    del_file(TarName);  		ok when Flag == ownfile -> -		    close_tar(VarTar), -		    ok; +		    close_tar(VarTar,TarName);  		Error -> -		    del_tar(VarTar, TarName), +		    _ = del_tar(VarTar, TarName),  		    throw(Error)  	    end      end. @@ -1856,12 +1861,15 @@ open_tar(TarName) ->  	    throw({error,{tar_error, {open, TarName, Error}}})      end. -close_tar(Tar) -> -    erl_tar:close(Tar). +close_tar(Tar,File) -> +    case erl_tar:close(Tar) of +	ok -> ok; +	{error,Reason} -> throw({error,{close,File,Reason}}) +    end.  del_tar(Tar, TarName) -> -    close_tar(Tar), -    del_file(TarName). +    _ = erl_tar:close(Tar), +    file:delete(TarName).  add_to_tar(Tar, FromFile, ToFile) ->      case erl_tar:add(Tar, FromFile, ToFile, [compressed, dereference]) of @@ -1916,13 +1924,20 @@ read_file(File, Path) ->  			 Other ->  			     Other  		     end, -	    file:close(Stream), -	    Return; +	    case file:close(Stream) of +		ok -> Return; +		{error, Error} -> {error, {close,File,Error}} +	    end;  	_Other ->  	    {error, {not_found, File}}      end. -del_file(File) -> file:delete(File). +del_file(File) -> +    case file:delete(File) of +	ok -> ok; +	{error, Error} -> +	    throw({error, {delete, File, Error}}) +    end.  dirp(Dir) ->      case file:read_file_info(Dir) of @@ -2238,6 +2253,12 @@ format_error({read,File}) ->  format_error({open,File,Error}) ->      io_lib:format("Cannot open ~p - ~ts~n",  		  [File,file:format_error(Error)]); +format_error({close,File,Error}) -> +    io_lib:format("Cannot close ~p - ~ts~n", +		  [File,file:format_error(Error)]); +format_error({delete,File,Error}) -> +    io_lib:format("Cannot delete ~p - ~ts~n", +		  [File,file:format_error(Error)]);  format_error({tar_error,What}) ->      form_tar_err(What);  format_error(ListOfErrors) when is_list(ListOfErrors) -> diff --git a/lib/sasl/src/systools_relup.erl b/lib/sasl/src/systools_relup.erl index 716dc2b5ff..b3494542e5 100644 --- a/lib/sasl/src/systools_relup.erl +++ b/lib/sasl/src/systools_relup.erl @@ -523,7 +523,7 @@ to_list(X) when is_atom(X) -> atom_to_list(X);  to_list(X) when is_list(X) -> X. -%% write_relup_file(Relup, Opts) -> {ok. Relup} +%% write_relup_file(Relup, Opts) -> ok  %%   %% Writes a relup file.  %% @@ -545,12 +545,17 @@ write_relup_file(Relup, Opts) ->  	    case file:open(Filename, [write]) of  		{ok, Fd} ->  		    io:format(Fd, "~p.~n", [Relup]), -		    file:close(Fd); +		    case file:close(Fd) of +			ok -> ok; +			{error,Reason} -> +			    throw({error, ?MODULE, +				   {file_problem, {"relup", {close,Reason}}}}) +		    end;  		{error, Reason} -> -		    throw({error, ?MODULE, {file_problem, {"relup", Reason}}}) +		    throw({error, ?MODULE, +			   {file_problem, {"relup", {open, Reason}}}})  	    end -    end, -    {ok, Relup}.     +    end.  add_code_path(Opts) ->      case get_opt(path, Opts) of @@ -597,8 +602,6 @@ print_error({error, Mod, Error}) ->  print_error(Other) ->      io:format("Error: ~p~n", [Other]). -format_error({file_problem, {"relup", _Posix}}) -> -    io_lib:format("Could not open file relup~n", []);  format_error({file_problem, {File, What}}) ->      io_lib:format("Could not ~w file ~ts~n", [get_reason(What), File]);  format_error({no_relup, File, App, Vsn}) -> @@ -642,12 +645,14 @@ format_warning(Prefix, What) ->  get_reason({error, {open, _, _}}) -> open;  get_reason({error, {read, _, _}}) -> read;  get_reason({error, {parse, _, _}}) -> parse; +get_reason({error, {close, _, _}}) -> close;  get_reason({error, {open, _}}) -> open;  get_reason({error, {read, _}}) -> read;  get_reason({error, {parse, _}}) -> parse;  get_reason({open, _}) -> open;  get_reason({read, _}) -> read;  get_reason({parse, _}) -> parse; +get_reason({close, _}) -> close;  get_reason(open) -> open;  get_reason(read) -> read;  get_reason(parse) -> parse. | 
