diff --git a/erlang/apps/lib/src/escript_runtime.erl b/erlang/apps/lib/src/escript_runtime.erl index 1bd5316..9f924b5 100644 --- a/erlang/apps/lib/src/escript_runtime.erl +++ b/erlang/apps/lib/src/escript_runtime.erl @@ -1,7 +1,7 @@ %%% -*- erlang-indent-level: 2 -*- %%% %%% Runtime support for stand-alone programs started as escripts. -%%% Copyright (C) 2018 Mikael Pettersson +%%% Copyright (C) 2018-2019 Mikael Pettersson %%% %%% This file is part of pdp10-tools. %%% @@ -27,22 +27,12 @@ , start/2 ]). -%% TODO: drop these macros when dropping support for OTP < OTP-21 --ifdef(OTP_RELEASE). % >= OTP-21 --define(EXN_WITH_STACKTRACE(Class, Reason, Stacktrace), Class:Reason:Stacktrace). --define(GET_STACKTRACE(Stacktrace), ok). --else. % < OTP-21 --define(EXN_WITH_STACKTRACE(Class, Reason, Stacktrace), Class:Reason). --define(GET_STACKTRACE(Stacktrace), Stacktrace = erlang:get_stacktrace()). --endif. - %% escript logs unhandled exceptions to standard output, but we want them to %% end up on standard error start(Main, Argv) -> try Main(Argv) - catch ?EXN_WITH_STACKTRACE(Class, Reason, Stacktrace) -> - ?GET_STACKTRACE(Stacktrace), + catch Class:Reason:Stacktrace -> fmterr("~s: Unhandled exception ~p:~p\n~p\n", [progname(), Class, Reason, Stacktrace]), halt(1) end.