diff options
author | Siri Hansen <[email protected]> | 2012-02-24 15:52:34 +0100 |
---|---|---|
committer | Siri Hansen <[email protected]> | 2012-03-19 09:48:54 +0100 |
commit | 537773c0e6969cb89f92aec0244ba29b07ec66ea (patch) | |
tree | e9b0cb88965ddad387bc6e7a154bc067538dbacb /lib/reltool/src/reltool_utils.erl | |
parent | c714eff72c1bd15f8831cffe7256f3dfd8faf806 (diff) | |
download | otp-537773c0e6969cb89f92aec0244ba29b07ec66ea.tar.gz otp-537773c0e6969cb89f92aec0244ba29b07ec66ea.tar.bz2 otp-537773c0e6969cb89f92aec0244ba29b07ec66ea.zip |
[reltool] Improve error handling
OTP-9794
Stopping configuration (throw/catch) at first error instead of
continuing through all steps and then returning the error at the
end.
Start of reltool_server will no longer succeed if the configuration
causes an error.
reltool:get_status can only return {error,Reason} in the case where
the reltool_server has terminated. In all other cases it will return
{ok,Warnings}.
Bug fix in this commit:
* warnings are no longer duplicated in pop-up or return from reltool_server
Diffstat (limited to 'lib/reltool/src/reltool_utils.erl')
-rw-r--r-- | lib/reltool/src/reltool_utils.erl | 35 |
1 files changed, 8 insertions, 27 deletions
diff --git a/lib/reltool/src/reltool_utils.erl b/lib/reltool/src/reltool_utils.erl index 39d057d994..a9107355c7 100644 --- a/lib/reltool/src/reltool_utils.erl +++ b/lib/reltool/src/reltool_utils.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2010. All Rights Reserved. +%% Copyright Ericsson AB 2009-2012. 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 @@ -30,7 +30,7 @@ get_item/1, get_items/1, get_selected_items/3, select_items/3, select_item/2, - safe_keysearch/5, print/4, return_first_error/2, add_warning/2, + safe_keysearch/5, print/4, add_warning/2, create_dir/1, list_dir/1, read_file_info/1, write_file_info/2, read_file/1, write_file/2, @@ -392,31 +392,12 @@ print(X, X, Format, Args) -> print(_, _, _, _) -> ok. -%% -define(SAFE(M,F,A), safe(M, F, A, ?MODULE, ?LINE)). -%% -%% safe(M, F, A, Mod, Line) -> -%% case catch apply(M, F, A) of -%% {'EXIT', Reason} -> -%% io:format("~p(~p): ~p:~p~p -> ~p\n", [Mod, Line, M, F, A, Reason]), -%% timer:sleep(infinity); -%% Res -> -%% Res -%% end. - -return_first_error(Status, NewError) when is_list(NewError) -> - case Status of - {ok, _Warnings} -> - {error, NewError}; - {error, OldError} -> - {error, OldError} - end. - -add_warning(Status, Warning) -> - case Status of - {ok, Warnings} -> - {ok, [Warning | Warnings]}; - {error, Error} -> - {error, Error} +add_warning({ok,Warnings}, Warning) -> + case lists:member(Warning,Warnings) of + true -> + {ok,Warnings}; + false -> + {ok,[Warning|Warnings]} end. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |