glsl/glcpp: Fix line-continuation code to handle multiple newline flavors
authorCarl Worth <cworth@cworth.org>
Thu, 3 Jul 2014 05:49:58 +0000 (22:49 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Thu, 7 Aug 2014 23:08:29 +0000 (16:08 -0700)
commitf1340745c00617bead8352d314306642138ed0bd
treee5cb2f60ae702459820610bd5bbbe7473a0b26b6
parentec69e00843ecafcd817b47f22229b84561c5e624
glsl/glcpp: Fix line-continuation code to handle multiple newline flavors

Sometimes the newline separator is a single character, and sometimes it is two
characters. Before we can fold away and line-continuation backslashes, we
identify the flavor of line separator that is in use.

With this identified, we then correctly search for backslashes followed
immediately by the first character of the line separator.

Also, when re-inserting newlines to replace collapsed newlines, we carefully
insert newlines of the same flavor.

With this commit, almost all remaining test are fixed as tested by
glcpp-test-cr-lf:

\r: 142/143 tests pass
\r\n: 142/143 tests pass
\n\r: 143/143 tests pass

(The only remaining failures have nothing to do with the actual pre-processor
code, but are due to a bug in the way the test suite uses grep to try to
extract test-specific command-line options from the source files.)

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/glsl/glcpp/pp.c