anchor.diff:      DebugFn = lists:concat([Basename, ".debug"]),
       NormalFn = lists:concat([Basename, ".log"]),
       ErrorFn = lists:concat([Basename, ".error"]),
  -    {ok, DebugIoDevice} = safe_open(DebugFn, ?FILE_OPTS),
  -    {ok, NormalIoDevice} = safe_open(NormalFn, ?FILE_OPTS),
  -    {ok, ErrorIoDevice} = safe_open(ErrorFn, ?FILE_OPTS),
  +    {DebugIoDevice, NormalIoDevice, ErrorIoDevice} =
  +	try
  +	    begin
  +		{ok, D_Dev} = safe_open(DebugFn, ?FILE_OPTS),
  +		{ok, N_Dev} = safe_open(NormalFn, ?FILE_OPTS),
  +		{ok, E_Dev} = safe_open(ErrorFn, ?FILE_OPTS),
  +		{D_Dev, N_Dev, E_Dev}
  +	    end
  +	catch
  +	    X:Y ->
  +		io:format("ERROR: Failed opening logfiles : ~p ~p~n", [X, Y])
  +	end,
       {ok, #state{debug_iodev=DebugIoDevice, debug_fn=DebugFn,
   		normal_iodev=NormalIoDevice, normal_fn=NormalFn,
   		error_iodev=ErrorIoDevice, error_fn=ErrorFn}}.
  
positive.code: %%====================================================================
  
  %% XXX is it ok, to call erlang:fault/2 if file can't be opened ?
  safe_open(Filename, Args) ->
      case file:open(Filename, Args) of
  	{ok, FD} ->
  	    {ok, FD};
  	{error, _E} ->
  	    erlang:fault("Error opening logfile", [Filename, Args])
      end.
  
  %%--------------------------------------------------------------------
  
negative.code: %%--------------------------------------------------------------------
  %% Function: init([Basename])
  %%           Basename = string(), log filename base
  %% Descrip.: Initiates the server
  %% Returns : {ok, State}
  %%--------------------------------------------------------------------
  init([Basename]) ->
      %% Check if we should rotate log files when they reach a upper
  