続きです。
pr_sgr_startを実行している箇所を探します。
takk@deb9:~/tmp/grep-3.1/src$ grep -n pr_sgr_start grep.c 303:pr_sgr_start (char const *s) 316:pr_sgr_start_if (char const *s) 319: pr_sgr_start (s); 1055: pr_sgr_start_if (filename_color); 1064: pr_sgr_start_if (sep_color); 1073: pr_sgr_start_if (color); 1179: pr_sgr_start (line_color); 1188: pr_sgr_start_if (match_color); 1216: pr_sgr_start (line_color); 1321: pr_sgr_start_if (sep_color); takk@deb9:~/tmp/grep-3.1/src$
それほど多くないですね。pr_sgr_start_ifが混ざっているので、pr_sgr_startに限定しましょう。
takk@deb9:~/tmp/grep-3.1/src$ grep -n 'pr_sgr_start\>' grep.c 303:pr_sgr_start (char const *s) 319: pr_sgr_start (s); 1179: pr_sgr_start (line_color); 1216: pr_sgr_start (line_color); takk@deb9:~/tmp/grep-3.1/src$
各前5行を見てみましょう。各検索結果を見やすくするため空行も挿入します。
takk@deb9:~/tmp/grep-3.1/src$ grep -nB5 'pr_sgr_start\>' grep.c | perl -pe '$_.="\n\n\n" if /^\d+:/'
298-static const char *sgr_start = "\33[%sm\33[K";
299-static const char *sgr_end = "\33[m\33[K";
300-
301-/* SGR utility functions. */
302-static void
303:pr_sgr_start (char const *s)
--
314-}
315-static void
316-pr_sgr_start_if (char const *s)
317-{
318- if (color_option)
319: pr_sgr_start (s);
--
1174- if (! print_line_head (b, match_size, lim, sep))
1175- return NULL;
1176- }
1177- else
1178- {
1179: pr_sgr_start (line_color);
--
1211- eol_size += (lim - eol_size > beg && lim[-(1 + eol_size)] == '\r');
1212- tail_size = lim - eol_size - beg;
1213-
1214- if (tail_size > 0)
1215- {
1216: pr_sgr_start (line_color);
takk@deb9:~/tmp/grep-3.1/src$
切り分けするため、1つ1つ埋め込み確認をしていきたいと思います。
まずは、上の結果の318行目。color_option次第で、pr_sgr_startの実施を決めています。
pr_sgr_start_ifにprintfを埋め込んで確認したいと思います。
315 static void
316 pr_sgr_start_if (char const *s)
317 {
318 printf("[COLOR]=%d",color_option);
319 if (color_option)
320 pr_sgr_start (s);
321 }
こんな感じにします。
では、makeして確認。
takk@deb9:~/tmp/grep-3.1/src$ make
takk@deb9:~/tmp/grep-3.1/src$ ./grep --color colorize grep.c
takk@deb9:~/tmp/grep-3.1/src$ ./grep --color colorize grep.c | tail

パイプ後は、埋め込んだ文字列は表示されていません。pr_sgr_start_ifからごっそり実行されていないんですね。
つづく

コメント