anchor.diff:      %% we need to find some other way to find some info...
       %% Also, I suppose its possible that we for some other
       %% reason *fail* to get the info...
  -    case analyze_darwin_software_info() of
  -        [] ->
  -            io:format("Darwin:"
  -                      "~n   Version:               ~s"
  -                      "~n   Num Online Schedulers: ~s"
  -                      "~n", [Version, str_num_schedulers()]),
  -            {num_schedulers_to_factor(), []};
  -        SwInfo when  is_list(SwInfo) ->
  -            SystemVersion = analyze_darwin_sw_system_version(SwInfo),
  -            KernelVersion = analyze_darwin_sw_kernel_version(SwInfo),
  -            HwInfo        = analyze_darwin_hardware_info(),
  -            ModelName     = analyze_darwin_hw_model_name(HwInfo),
  -            ModelId       = analyze_darwin_hw_model_identifier(HwInfo),
  -            ProcName      = analyze_darwin_hw_processor_name(HwInfo),
  -            ProcSpeed     = analyze_darwin_hw_processor_speed(HwInfo),
  -            NumProc       = analyze_darwin_hw_number_of_processors(HwInfo),
  -            NumCores      = analyze_darwin_hw_total_number_of_cores(HwInfo),
  -            Memory        = analyze_darwin_hw_memory(HwInfo),
  -            io:format("Darwin:"
  -                      "~n   System Version:        ~s"
  -                      "~n   Kernel Version:        ~s"
  -                      "~n   Model:                 ~s (~s)"
  -                      "~n   Processor:             ~s (~s, ~s, ~s)"
  -                      "~n   Memory:                ~s"
  -                      "~n   Num Online Schedulers: ~s"
  -                      "~n", [SystemVersion, KernelVersion,
  -                             ModelName, ModelId,
  -                             ProcName, ProcSpeed, NumProc, NumCores, 
  -                             Memory,
  -                             str_num_schedulers()]),
  +    Label  = ts_extra_platform_label(),
  +    {BaseFactor, MemFactor} =
  +        case analyze_darwin_software_info() of
  +            [] ->
  +                io:format("Darwin:"
  +                          "~n   Version:                 ~s"
  +                          "~n   Num Online Schedulers:   ~s"
  +                          "~n   TS Extra Platform Label: ~s"
  +                          "~n", [Version, str_num_schedulers(), Label]),
  +                {num_schedulers_to_factor(), 1};
  +            SwInfo when  is_list(SwInfo) ->
  +                SystemVersion = analyze_darwin_sw_system_version(SwInfo),
  +                KernelVersion = analyze_darwin_sw_kernel_version(SwInfo),
  +                HwInfo        = analyze_darwin_hardware_info(),
  +                ModelName     = analyze_darwin_hw_model_name(HwInfo),
  +                ModelId       = analyze_darwin_hw_model_identifier(HwInfo),
  +                {Processor, CPUFactor} = analyze_darwin_hw_processor(HwInfo),
  +                Memory        = analyze_darwin_hw_memory(HwInfo),
  +                io:format("Darwin:"
  +                          "~n   System Version:          ~s"
  +                          "~n   Kernel Version:          ~s"
  +                          "~n   Model:                   ~s (~s)"
  +                          "~n   Processor:               ~s"
  +                          "~n   Memory:                  ~s"
  +                          "~n   Num Online Schedulers:   ~s"
  +                          "~n   TS Extra Platform Label: ~s"
  +                          "~n~n",
  +                          [SystemVersion, KernelVersion,
  +                           ModelName, ModelId,
  +                           Processor, 
  +                           Memory,
  +                           str_num_schedulers(), Label]),
  +                {CPUFactor, analyze_darwin_memory_to_factor(Memory)}
  +        end,
  +    AddLabelFactor = label2factor(simplify_label(Label)),
  +    AddMemFactor = if
  +                       (MemFactor > 0) ->
  +                           MemFactor - 1;
  +                       true ->
  +                           0
  +                   end,
  +    TSScaleFactor = ts_scale_factor(),
  +    io:format("Factor calc:"
  +              "~n      Base Factor:     ~w"
  +              "~n      Label Factor:    ~w"
  +              "~n      Mem Factor:      ~w"
  +              "~n      TS Scale Factor: ~w"
  +              "~n~n",
  +              [BaseFactor, AddLabelFactor, AddMemFactor, TSScaleFactor]),
  +    {BaseFactor + AddLabelFactor + AddMemFactor + TSScaleFactor,
  +     [{label, Label}]}.
  +
  +analyze_darwin_sw_system_version(SwInfo) ->
  +    proplists:get_value("system version", SwInfo, "-").
  +
  +analyze_darwin_sw_kernel_version(SwInfo) ->
  +    proplists:get_value("kernel version", SwInfo, "-").
  +
  +analyze_darwin_software_info() ->
  +    analyze_darwin_system_profiler("SPSoftwareDataType").
  +
  +analyze_darwin_hw_chip(HwInfo) ->
  +    proplists:get_value("chip", HwInfo, "-").
  +
  +analyze_darwin_hw_model_name(HwInfo) ->
  +    proplists:get_value("model name", HwInfo, "-").
  +
  +analyze_darwin_hw_model_identifier(HwInfo) ->
  +    proplists:get_value("model identifier", HwInfo, "-").
  +
  +analyze_darwin_hw_processor(HwInfo) ->
  +    case analyze_darwin_hw_processor_name(HwInfo) of
  +        "-" -> % Maybe Apple Chip
  +            case analyze_darwin_hw_chip(HwInfo) of
  +                "-" ->
  +                    "-";
  +                Chip ->
  +                    NumCores = analyze_darwin_hw_total_number_of_cores(HwInfo),
  +                    CPUFactor = analyze_darwin_cpu_to_factor(Chip, NumCores),
  +                    {f("~s [~s]", [Chip, NumCores]), CPUFactor}
  +            end;
  +        ProcName ->
  +            ProcSpeed = analyze_darwin_hw_processor_speed(HwInfo),
  +            NumProc   = analyze_darwin_hw_number_of_processors(HwInfo),
  +            NumCores  = analyze_darwin_hw_total_number_of_cores(HwInfo),
               CPUFactor = analyze_darwin_cpu_to_factor(ProcName,
                                                        ProcSpeed,
                                                        NumProc,
                                                        NumCores),
  -            MemFactor = analyze_darwin_memory_to_factor(Memory),
  -            if (MemFactor =:= 1) ->
  -                    {CPUFactor, []};
  -               true ->
  -                    {CPUFactor + MemFactor, []}
  -            end
  -    end.
  -
  -analyze_darwin_sw_system_version(SwInfo) ->
  -    proplists:get_value("system version", SwInfo, "-").
  -
  -analyze_darwin_sw_kernel_version(SwInfo) ->
  -    proplists:get_value("kernel version", SwInfo, "-").
  -
  -analyze_darwin_software_info() ->
  -    analyze_darwin_system_profiler("SPSoftwareDataType").
  -
  -analyze_darwin_hw_model_name(HwInfo) ->
  -    proplists:get_value("model name", HwInfo, "-").
  -
  -analyze_darwin_hw_model_identifier(HwInfo) ->
  -    proplists:get_value("model identifier", HwInfo, "-").
  +            {f("~s [~s, ~s, ~s]",
  +               [ProcName, ProcSpeed, NumProc, NumCores]), CPUFactor}
  +    end.
   
   analyze_darwin_hw_processor_name(HwInfo) ->
       case proplists:get_value("processor name", HwInfo, "-") of
  
positive.code:         _ ->
              20
      end.
  
  
  %% The speed is a string: "<speed> <unit>"
  
negative.code: %%    "Key: Value1:Value2"
  analyze_darwin_system_profiler(DataType) ->
      %% First, make sure the program actually exist:
      case string:trim(os:cmd("which system_profiler")) of
          [] ->
              case string:trim(os:cmd("which /usr/sbin/system_profiler")) of
                  [] ->
                      [];
                  Cmd1 ->
                      analyze_darwin_system_profiler(Cmd1, DataType)
              end;
          Cmd2 ->
              analyze_darwin_system_profiler(Cmd2, DataType)
      end.
  
  analyze_darwin_system_profiler(Cmd, DataType) ->
      D0 = os:cmd(Cmd ++ " " ++ DataType),
      D1 = string:tokens(D0, [$\n]),
      D2 = [string:trim(S1) || S1 <- D1],
      D3 = [string:tokens(S2, [$:]) || S2 <- D2],
      analyze_darwin_system_profiler2(D3).
  
  analyze_darwin_system_profiler2(L) ->
      analyze_darwin_system_profiler2(L, []).
  