anchor.diff:  
   code_change(_OldVsn, State, _Extra) -> {ok, State}.
   
  +job_event_handler(FName) ->
  +        {ok, F} = file:open(FName, [append, raw]),
  +        job_event_handler_do(F, [], 0). 
  +
  +job_event_handler_do(F, Buf, BufSize) when BufSize > ?EVENT_BUFFER_SIZE ->
  +        flush_buffer(F, Buf),
  +        job_event_handler_do(F, [], 0);
  +
  +job_event_handler_do(F, Buf, BufSize) ->
  +        receive
  +                {event, Line} ->
  +                        job_event_handler_do(F, [Line|Buf], BufSize + 1);
  +                done ->
  +                        flush_buffer(F, Buf),
  +                        file:close(F);
  +                E ->
  +                        error_logger:warning_report(
  +                                {"Unknown message in job_event_handler", E}),
  +                        file:close(F)
  +        after ?EVENT_BUFFER_TIMEOUT ->
  +                flush_buffer(F, Buf),
  +                job_event_handler_do(F, [], 0)
  +        end.
  +
  +flush_buffer(F, Buf) ->
  +        file:write(F, lists:reverse(Buf)).
  +                        
  +                        
  +                
  +        
  +        
  
positive.code: handle_cast({job_done, JobName}, {Events, MsgBuf} = S) ->
          case ets:lookup(event_files, JobName) of
                  [] -> ok;
                  [{_, F}] ->
                          file:close(F),
                          ets:delete(event_files, JobName)
          end,
          case dict:find(JobName, MsgBuf) of
  
negative.code:         H = list_to_binary(Host),
          Line = <<"[\"", T/binary, "\",\"", H/binary, "\",", Msg/binary, "]", 10>>,
  
          [{_, EventProc}] = ets:lookup(event_files, JobName),
          EventProc ! {event, Line},
  
          if LstLen0 + 1 > ?EVENT_PAGE_SIZE * 2 ->
                  MsgLst = lists:sublist([Line|MsgLst0], ?EVENT_PAGE_SIZE),
  