続きです。
色が付く時は、[ABC]が表示されて、
takk@deb9:~/tmp/grep-3.1/src$ ./grep --color colorize grep.c
色が付かない時は、[ABC]が表示されません。
takk@deb9:~/tmp/grep-3.1/src$ ./grep --color colorize grep.c | tail
つまり、print_start_colorizeが実行されていないってことですね。
print_start_colorizeを実行する箇所でも見てみます。
301 /* SGR utility functions. */ 302 static void 303 pr_sgr_start (char const *s) 304 { 305 if (*s) 306 print_start_colorize (sgr_start, s); 307 }
文字列がNULLなら実行しないようです。
では、ここにもprintfを埋め込んでみます。
301 /* SGR utility functions. */ 302 static void 303 pr_sgr_start (char const *s) 304 { 305 printf("%s",*s == 0 ? "<NULL>":"<STRING>"); 306 if (*s) 307 print_start_colorize (sgr_start, s); 308 }
ビルド。
takk@deb9:~/tmp/grep-3.1/src$ make CC grep.o CCLD grep takk@deb9:~/tmp/grep-3.1/src$
パイプなし、パイプあり、それぞれの出力を見ると、
パイプがある時は、埋め込んだ文字列が
pr_sgr_startも実行されていないってことになります。
つづく
コメント