The initial 0 "reset/normal" was setting attr = ANSI_OFF, which was
subsequently being or'ed with ANSI_COLOR.
The color resolution was then checking for the ANSI_OFF bit and
turning all coloring off, even though ANSI_COLOR was also set.
Change the color resolution to check for "attr == ANSI_OFF" instead, so
the color isn't reset unless the reset occurs last in the sequence.
{
color ^= A_BLINK;
}
- else if (a->attr & ANSI_OFF)
+ else if (a->attr == ANSI_OFF)
{
a->attr = 0;
}