This file contains sample trybot output from a Windows trybot run.
It contains a warning and an error but has otherwise been shortened
for length.

"C:\Program Files (x86)\Xoreax\IncrediBuild\BuildConsole.exe" e:\b\build\slave\win\build\src\build\all.sln "/Cfg=Debug|Win32"

-----------------------------------------------------------------
IncrediBuild Console 3.60 Internal (build 1156)
Copyright (C) 2001-2010 Xoreax Software Ltd. All rights reserved.
-----------------------------------------------------------------
--------------------Configuration: toolband_proxy_lib - Debug|Win32------------
Compiling...
toolband_p.c
toolband_proxy.cc
toolband_dlldata.c
Creating library...

toolband_proxy_lib - 0 error(s), 0 warning(s)
--------------------Configuration: webcore_bindings - Debug|Win32--------------
Compiling...
CSSGrammar.cpp
e:\b\build\slave\win\build\src\third_party\webkit\javascriptcore\wtf\text\StringImpl.h(90) : warning C4355: 'this' : used in base member initializer list with a gratuitous backslash \ for testing
e:\b\build\slave\win\build\src\third_party\webkit\webcore\dom\ViewportArguments.h(78) : warning C4305: 'initializing' : truncation from '' to 'bool'
e:\b\build\slave\win\build\src\build\Debug\obj\global_intermediate\webkit\CSSGrammar.cpp(1930) : warning C4065: switch statement contains 'default' but no 'case' labels
V8DerivedSources1.cpp
--------------------Configuration: run_testserver - Debug|Win32----------------
Compiling...
run_testserver.cc
Linking...
Embedding manifest...
Embedding manifest... (rc.exe)
Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1

Copyright (C) Microsoft Corporation.  All rights reserved.

Embedding manifest... (link.exe)

run_testserver - 0 error(s), 0 warning(s)
--------------------Configuration: browser - Debug|Win32-----------------------
Compiling...
bookmark_manager_resources_map.cc
theme_resources_map.cc
shared_resources_map.cc
process_singleton_win.cc
e:\b\build\slave\win\build\src\chrome\browser\process_singleton_win.cc(95) : error C2664: 'PathService::Get' : cannot convert parameter 2 from 'std::wstring *' to 'FilePath *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
gpu_process_host.cc
ntp_background_util.cc

browser - 6 error(s), 0 warning(s)
 
1 build system warning(s):
   - PDB instance limit is enabled
 
---------------------- Done ----------------------
 
    Build: 244 succeeded, 1 failed, 233 up-to-date, 42 skipped


We also see weird paths with mixed slashes like this:

--------------------Configuration: inspector_protocol_sources - Debug|Win32----
--------------------Configuration: installer_util_nacl_win64 - Debug|x64-------
Compiling...
google_chrome_distribution_dummy.cc
helper.cc
installation_state.cc
self_reg_work_item.cc
..\chrome/installer/util/work_item.h(67) : error C2514: 'FilePath' : class has no constructors
        ..\chrome/installer/util/work_item.h(26) : see declaration of 'FilePath'
delete_tree_work_item.cc
delete_reg_key_work_item.cc
