anchor.diff:  
   
   init_per_testcase(_Case, Config) ->
  -    ?line Dog = ?t:timetrap(?default_timeout),
  +    Dog = ?t:timetrap(?default_timeout),
       [{watchdog, Dog} | Config].
   end_per_testcase(_Case, Config) ->
       Dog = ?config(watchdog, Config),
  
positive.code: 
  % Tests
  rb_basic() ->
      ?line clean_rd(),
      % Behold, the magic parameters to activate rb logging...
      ?line Node = start_node(nn(),"-boot start_sasl -sasl error_logger_mf_dir "++
  		      quote(rd())++" error_logger_mf_maxbytes 5000 "
  		      "error_logger_mf_maxfiles 5"),
      ?line Self = self(),
      ?line GL = group_leader(),
      ?line warning = warning_map(Node),
      ?line Report = [{self,Self},{gl,GL},make_ref()],
      ?line fake_gl(Node,warning_msg,"~p~n",[Self]),
      ?line fake_gl(Node,warning_report,Report),
      ?line nice_stop_node(Node),
      ?line application:start(sasl),
      ?line rb:start([{report_dir, rd()}]),
      ?line rb:list(),
      ?line true = (one_rb_lines([error]) =:= 0),
      ?line true = (one_rb_lines([error_report]) =:= 0),
      ?line 0 = one_rb_findstr([error],pid_to_list(Self)),
      ?line 0 = one_rb_findstr([error_report],pid_to_list(Self)),
      ?line 1 = one_rb_findstr([warning_msg],pid_to_list(Self)),
      ?line 1 = one_rb_findstr([warning_report],pid_to_list(Self)),
      ?line 0 = one_rb_findstr([info_msg],pid_to_list(Self)),
      ?line 0 = one_rb_findstr([info_report],pid_to_list(Self)),
      ?line 2 = one_rb_findstr([],pid_to_list(Self)),
      ?line true = (one_rb_findstr([progress],"===") > 4),
      ?line rb:stop(),
      ?line application:stop(sasl),
      ?line stop_node(Node),
      ok.
  
  rb_warnings_info() ->
      ?line clean_rd(),
      ?line Node = start_node(nn(),"+W i -boot start_sasl -sasl error_logger_mf_dir "++
  		      quote(rd())++" error_logger_mf_maxbytes 5000 "
  		      "error_logger_mf_maxfiles 5"),
      ?line Self = self(),
      ?line GL = group_leader(),
      ?line info = warning_map(Node),
      ?line Report = [{self,Self},{gl,GL},make_ref()],
      ?line fake_gl(Node,warning_msg,"~p~n",[Self]),
      ?line fake_gl(Node,warning_report,Report),
      ?line nice_stop_node(Node),
      ?line application:start(sasl),
      ?line rb:start([{report_dir, rd()}]),
      ?line rb:list(),
      ?line true = (one_rb_lines([error]) =:= 0),
      ?line true = (one_rb_lines([error_report]) =:= 0),
      ?line 0 = one_rb_findstr([error],pid_to_list(Self)),
      ?line 0 = one_rb_findstr([error_report],pid_to_list(Self)),
      ?line 0 = one_rb_findstr([warning_msg],pid_to_list(Self)),
      ?line 0 = one_rb_findstr([warning_report],pid_to_list(Self)),
      ?line 1 = one_rb_findstr([info_msg],pid_to_list(Self)),
      ?line 1 = one_rb_findstr([info_report],pid_to_list(Self)),
      ?line 2 = one_rb_findstr([],pid_to_list(Self)),
      ?line true = (one_rb_findstr([progress],"===") > 4),
      ?line rb:stop(),
      ?line application:stop(sasl),
      ?line stop_node(Node),
      ok.
  
  rb_warnings_errors() ->
      ?line clean_rd(),
      ?line Node = start_node(nn(),"+W e -boot start_sasl -sasl error_logger_mf_dir "++
  		      quote(rd())++" error_logger_mf_maxbytes 5000 "
  		      "error_logger_mf_maxfiles 5"),
      ?line Self = self(),
      ?line GL = group_leader(),
      ?line error = warning_map(Node),
      ?line Report = [{self,Self},{gl,GL},make_ref()],
      ?line fake_gl(Node,warning_msg,"~p~n",[Self]),
      ?line fake_gl(Node,warning_report,Report),
      ?line nice_stop_node(Node),
      ?line application:start(sasl),
      ?line rb:start([{report_dir, rd()}]),
      ?line rb:list(),
      ?line true = (one_rb_lines([error]) > 1),
      ?line true = (one_rb_lines([error_report]) > 1),
      ?line 1 = one_rb_findstr([error],pid_to_list(Self)),
      ?line 1 = one_rb_findstr([error_report],pid_to_list(Self)),
      ?line 0 = one_rb_findstr([warning_msg],pid_to_list(Self)),
      ?line 0 = one_rb_findstr([warning_report],pid_to_list(Self)),
      ?line 0 = one_rb_findstr([info_msg],pid_to_list(Self)),
      ?line 0 = one_rb_findstr([info_report],pid_to_list(Self)),
      ?line 2 = one_rb_findstr([],pid_to_list(Self)),
      ?line true = (one_rb_findstr([progress],"===") > 4),
      ?line rb:stop(),
      ?line application:stop(sasl),
      ?line stop_node(Node),
      ok.
  
  rb_trunc() ->
      ?line clean_rd(),
      ?line Node = start_node(nn(),"-boot start_sasl -sasl error_logger_mf_dir "++
  		      quote(rd())++" error_logger_mf_maxbytes 5000 "
  		      "error_logger_mf_maxfiles 5"),
      ?line Self = self(),
      ?line GL = group_leader(),
      ?line Report = [{self,Self},{gl,GL},make_ref()],
      ?line fake_gl(Node,warning_msg,"~p~n",[Self]),
      ?line fake_gl(Node,warning_report,Report),
      ?line nice_stop_node(Node),
      ?line application:start(sasl),
      ?line {ok,File} = file:read_file(rf()),
      ?line S=byte_size(File)-2,
      ?line <<TFile:S/binary,_/binary>>=File,
      ?line file:write_file(rf(),TFile),
      ?line rb:start([{report_dir, rd()}]),
      ?line rb:list(),
      ?line true = (one_rb_lines([error]) =:= 0),
      ?line true = (one_rb_lines([error_report]) =:= 0),
      ?line 0 = one_rb_findstr([error],pid_to_list(Self)),
      ?line 0 = one_rb_findstr([error_report],pid_to_list(Self)),
      ?line 1 = one_rb_findstr([warning_msg],pid_to_list(Self)),
      ?line 0 = one_rb_findstr([warning_report],pid_to_list(Self)),
      ?line 0 = one_rb_findstr([info_msg],pid_to_list(Self)),
      ?line 0 = one_rb_findstr([info_report],pid_to_list(Self)),
      ?line 1 = one_rb_findstr([],pid_to_list(Self)),
      ?line true = (one_rb_findstr([progress],"===") > 4),
      ?line rb:stop(),
     ?line  application:stop(sasl),
      ?line stop_node(Node),
      ok.
  
  rb_utc() ->
      ?line clean_rd(),
      ?line Node = start_node(nn(),"-boot start_sasl -sasl error_logger_mf_dir "++
  		      quote(rd())++" error_logger_mf_maxbytes 5000 "
  		      "error_logger_mf_maxfiles 5 -sasl utc_log true"),
      ?line Self = self(),
      ?line GL = group_leader(),
      ?line Report = [{self,Self},{gl,GL},make_ref()],
      ?line fake_gl(Node,warning_msg,"~p~n",[Self]),
      ?line fake_gl(Node,warning_report,Report),
      ?line nice_stop_node(Node),
      ?line application:stop(sasl),
      ?line UtcLog=case application:get_env(sasl,utc_log) of
  		     {ok,true} ->
  			 true;
  		     _AllOthers ->
  			 application:set_env(sasl,utc_log,true),
  			 false
  	   end,
      ?line application:start(sasl),
      ?line rb:start([{report_dir, rd()}]),
      ?line rb:list(),
      ?line Pr=one_rb_findstr([progress],"==="),
      ?line Wm=one_rb_findstr([warning_msg],"==="),
      ?line Wr=one_rb_findstr([warning_report],"==="),
      ?line Sum=Pr+Wm+Wr,
      ?line Sum=one_rb_findstr([],"UTC"),
      ?line rb:stop(),
      ?line application:stop(sasl),
      ?line application:set_env(sasl,utc_log,UtcLog),
      ?line stop_node(Node),
      ok.
      
  file_utc() ->
      ?line file:delete(lf()),
      ?line SS="-stdlib utc_log true -kernel error_logger "++ oquote("{file,"++iquote(lf())++"}"),
      %erlang:display(SS),
      ?line Node = start_node(nn(),SS),
      %erlang:display(rpc:call(Node,application,get_env,[kernel,error_logger])),
      ?line Self = self(),
      ?line GL = group_leader(),
      ?line fake_gl(Node,error_msg,"~p~n",[Self]),
      ?line fake_gl(Node,warning_msg,"~p~n",[Self]),
      ?line fake_gl(Node,info_msg,"~p~n",[Self]),
      ?line Report = [{self,Self},{gl,GL},make_ref()],
      ?line fake_gl(Node,error_report,Report),
      ?line fake_gl(Node,warning_report,Report),
      ?line fake_gl(Node,info_report,Report),
      ?line nice_stop_node(Node),
      ?line receive after 5000 -> ok end, % Let the node die, needed
      ?line 6 = findstr("UTC",lf()),
      ?line 2 = findstr("WARNING",lf()),
      ?line 2 = findstr("ERROR",lf()),
      ?line 2 = findstr("INFO",lf()),
      ?line stop_node(Node),
      ok.
  
negative.code: 
  findstrc(String,File) ->
      case string:str(File,String) of
          N when is_integer(N),
                 N > 0 ->
              S2 = lists:sublist(File,N,length(File)),
              case string:str(S2,"\n") of
                  0 ->
                      1;
                  M ->
                      S3 = lists:sublist(S2,M,length(S2)),
                      1 + findstrc(String,S3)
              end;
          _ ->
              0
      end.
  
  % Doesn't count empty lines
  