anchor.diff:  
   linux_info_lookup(Key, File) ->
       try [string:trim(S) || S <- string:tokens(os:cmd("grep " ++ "\"" ++ Key ++ "\"" ++ " " ++ File), [$:,$\n])] of
  -        [Key, Value | _] ->
  -            Value;
  -        _ ->
  -            "-"
  +        Info ->
  +            linux_info_lookup_collect(Key, Info, [])
       catch
           _:_:_ ->
               "-"
       end.
  +
  +linux_info_lookup_collect(_Key, [], Values) ->
  +    lists:reverse(Values);
  +linux_info_lookup_collect(Key, [Key, Value|Rest], Values) ->
  +    linux_info_lookup_collect(Key, Rest, [Value|Values]);
  +linux_info_lookup_collect(_, _, Values) ->
  +    lists:reverse(Values).
       
   
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
positive.code:         _:_:_ -> "-"
      end.
  
      
  analyze_and_print_linux_host_info(Version) ->
      Distro =
          case file:read_file_info("/etc/issue") of
              {ok, _} ->
                  DistroStr = string:trim(os:cmd("cat /etc/issue")),
                  io:format("Linux: ~s"
                            "~n   ~s"
                            "~n",
                            [Version, DistroStr]),
                  case DistroStr of
                      "Wind River Linux" ++ _ ->
                          wind_river;
                      _ ->
                          other
                  end;
              _ ->
                  io:format("Linux: ~s"
                            "~n", [Version]),
                  other
          end,
      Factor =
          case (catch linux_which_cpuinfo(Distro)) of
              {ok, {CPU, BogoMIPS}} ->
                  io:format("CPU: "
                            "~n   Model:          ~s"
                            "~n   BogoMIPS:       ~s"
                            "~n   Num Schedulers: ~s"
                            "~n", [CPU, BogoMIPS, str_num_schedulers()]),
                  %% We first assume its a float, and if not try integer
                  try list_to_float(string:trim(BogoMIPS)) of
                      F when F > 5000 ->
                          1;
                      F when F > 2000 ->
                          2;
                      F when F > 1000 ->
                          3;
                      _ ->
                          5
                  catch
                      _:_:_ ->
                          try list_to_integer(string:trim(BogoMIPS)) of
                              I when I > 5000 ->
                                  1;
                              I when I > 2000 ->
                                  2;
                              I when I > 1000 ->
                                  3;
                              _ ->
                                  5
                          catch
                              _:_:_ ->
                                  5 % Be a "bit" conservative...
                          end
                  end;
              {ok, CPU} ->
                  io:format("CPU: "
                            "~n   Model:          ~s"
                            "~n   Num Schedulers: ~s"
                            "~n", [CPU, str_num_schedulers()]),
                  2; % Be a "bit" conservative...
              _X ->
                  %% io:format("X: ~p~n", [_X]),
                  5 % Be a "bit" (more) conservative...
          end,
      %% Check if we need to adjust the factor because of the memory
      try linux_which_meminfo() of
  
negative.code: linux_meminfo_lookup(Key) when is_list(Key) ->
      linux_info_lookup(Key, "/proc/meminfo").
  
  linux_meminfo_memtotal() ->
      case linux_meminfo_lookup("MemTotal") of
          [X] ->
              X;
          _ ->
              "-"
      end.
  
  %% We *add* the value this return to the Factor.
  linux_which_meminfo() ->
      case linux_meminfo_memtotal() of
          "-" ->
              0;
          MemTotal ->
  