pdp10_stdio:fopen/2: silence unwanted crash report on failure; scan_state:fopen/1: likewise

This commit is contained in:
Mikael Pettersson 2019-09-08 19:06:29 +02:00
parent d3e5383f36
commit 858cec95bb
2 changed files with 10 additions and 4 deletions

View File

@ -76,7 +76,10 @@ stdin() ->
do_fopen(stdin).
do_fopen(File) ->
gen_server:start(?MODULE, File, []).
case gen_server:start(?MODULE, File, []) of
{error, {shutdown, Reason}} -> {error, Reason};
Result -> Result
end.
-spec ungetc(byte(), scan_state()) -> ok | {error, {module(), term()}}.
ungetc(Ch, Pid) ->
@ -108,7 +111,9 @@ init(stdin) ->
init(File) ->
case file:open(File, [raw, read, read_ahead]) of
{ok, IoDev} -> do_init(File, IoDev);
{error, Reason} -> {stop, {file, Reason}}
{error, Reason} ->
%% The {shutdown, ...} wrapper prevents an unwanted crash report.
{stop, {shutdown, {file, Reason}}}
end.
do_init(FileName, IoDev) ->

View File

@ -110,6 +110,7 @@ fopen(Path, Modes) ->
do_open(What) ->
case gen_server:start(?MODULE, What, []) of
{ok, Pid} -> {ok, #file{pid = Pid}};
{error, {shutdown, Reason}} -> {error, Reason};
{error, _Reason} = Error -> Error
end.
@ -190,8 +191,8 @@ do_init({ok, {IoDev, Read, Write}}) ->
, iodir = seek
}};
do_init({error, Reason}) ->
%% FIXME: this still seems to generate crash reports
{stop, Reason}.
%% The {shutdown, ...} wrapper prevents an unwanted crash report.
{stop, {shutdown, Reason}}.
handle_call(Req, _From, State) ->
case Req of