Package: colormake
Version: 0.9-1

I was using colormake and noticed that my g++ lines weren't getting coloured 
when the compiler was anything other than plain "g++".  I'm using a few cross 
compilers, but you can test this with the mingw compiler.

Here's an example line:

    i686-w64-mingw32-g++ -Wall -O2 -g -mconsole -c main.cc

I believe the problem is in this bit of the gcc regex...

    (([[:ascii:]]+-)?g?cc|(g|c)\+\+).*)$

This matches one or more ascii's followed by dash then "cc" or "gcc", but not 
"g++".  The "|" is within the overall brackets so only allows "ascii-gcc" OR 
"g++", so non-crosscompiler "g++" lines were correctly matched.  I believe the 
fix is the addition of brackets so that gcc|cc|g++|c++ are all an atom apart 
from the [ascii] prefix.

    (([[:ascii:]]+-)?(g?cc|(g|c)\+\+)).*)$

Now "([[:ascii:]]+-)?" is one optional prefix atom and (g?cc|(g|c)\+\+)) is 
the required suffix atom, and can be any of "gcc", "cc", "g++", or "c++".

I've attached a patch that makes this change, but it's trivial enough that it 
could be done quicker by hand.
--- /usr/share/colormake/colormake.pl.bak	2014-07-09 13:39:56.000000000 +0100
+++ /usr/share/colormake/colormake.pl	2014-07-09 13:41:33.000000000 +0100
@@ -88,7 +88,7 @@
 	{
 		$in = 'make';
 	}
-	elsif ($thisline =~ s/^(\s*(libtool:\s*)?((compile|link):\s*)?(([[:ascii:]]+-)?g?cc|(g|c)\+\+).*)$/$col_gcc$1$col_norm/)
+	elsif ($thisline =~ s/^(\s*(libtool:\s*)?((compile|link):\s*)?(([[:ascii:]]+-)?(g?cc|(g|c)\+\+)).*)$/$col_gcc$1$col_norm/)
 	{
 		$in = 'gcc';
 	}

Reply via email to