That's an interesting discovery about ninja. On Windows:<div><br></div><div><div><div>D:\>more build.ninja</div><div>rule cc</div><div>  command = /bin/echo "\\" $in</div><div>build test: cc dir\test.c</div><div><br></div><div>D:\>ninja -t compdb cc</div><div>[</div><div>  {</div><div>    "directory": "D:\\",</div><div>    "command": "/bin/echo \"\\\\\" dir\\test.c",</div><div>    "file": "dir\\test.c"</div><div>  }</div><div>]</div></div><div><br></div><div>So ninja isn't even internally consistent! I'll file a bug against ninja. That being said, I'm not convinced that it makes sense to handle anything other than the literal \" specially--we still need to skip processing every other 'normal' escape sequence, so we may as well limit this special behavior to the combination of the two.</div><div><br></div><div class="gmail_quote">On Mon Nov 24 2014 at 9:51:16 AM Tomasz Miąsko <<a href="mailto:tomasz.miasko@gmail.com">tomasz.miasko@gmail.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">And then quotes, backslash and space character all have special meaning outside<br>
quotes. So probably there should be separate implementation of skipEscape for<br>
unquoted string. Sorry for the noise.<br>
<br>
<a href="http://reviews.llvm.org/D6376" target="_blank">http://reviews.llvm.org/D6376</a><br>
<br>
<br>
</blockquote></div></div>