pr_sgr_start_ifに埋め込んだ[COLOR]が表示されませんでした。
ということでpr_sgr_start_ifの使用箇所を検索してみます。
takk@deb9:~/tmp/grep-3.1/src$ grep -n pr_sgr_start_if grep.c 316:pr_sgr_start_if (char const *s) 1056: pr_sgr_start_if (filename_color); 1065: pr_sgr_start_if (sep_color); 1074: pr_sgr_start_if (color); 1189: pr_sgr_start_if (match_color); 1322: pr_sgr_start_if (sep_color); takk@deb9:~/tmp/grep-3.1/src$
それぞれの使用関数をさらっと挙げていきます。
316は関数本体なのでスキップ。まずは1056行目。
1052 /* Print the current filename. */ 1053 static void 1054 print_filename (void) 1055 { 1056 pr_sgr_start_if (filename_color); 1057 fputs_errno (input_filename ()); 1058 pr_sgr_end_if (filename_color); 1059 }
1065行目。
1061 /* Print a character separator. */ 1062 static void 1063 print_sep (char sep) 1064 { 1065 pr_sgr_start_if (sep_color); 1066 putchar_errno (sep); 1067 pr_sgr_end_if (sep_color); 1068 }
1074行目。
1070 /* Print a line number or a byte offset. */ 1071 static void 1072 print_offset (uintmax_t pos, const char *color) 1073 { 1074 pr_sgr_start_if (color); 1075 printf_errno ("%*"PRIuMAX, offset_width, pos); 1076 pr_sgr_end_if (color); 1077 }
1189行目。
1137 static char * 1138 print_line_middle (char *beg, char *lim, 1139 const char *line_color, const char *match_color) 1140 { ~省略~ 1147 for (cur = beg; 1148 (cur < lim 1149 && ((match_offset = execute (compiled_pattern, beg, lim - beg, 1150 &match_size, cur)) != (size_t) -1)); 1151 cur = b + match_size) 1152 { 1159 /* Avoid hanging on grep --color "" foo */ 1160 if (match_size == 0) 1161 { ~省略~ 1167 } 1168 else 1169 { ~省略~ 1172 if (only_matching) 1173 { ~省略~ 1177 } 1178 else 1179 { 1180 pr_sgr_start (line_color); ~省略~ 1187 } 1188 1189 pr_sgr_start_if (match_color); ~省略~ 1194 } 1195 } ~省略~ 1202 return cur; 1203 }
1322行目。
1295 static void 1296 prtext (char *beg, char *lim) 1297 { ~省略~ 1306 if (!out_quiet) 1307 { 1308 ~省略~ 1317 /* Print the group separator unless the output is adjacent to 1318 the previous output in the file. */ 1319 if ((0 <= out_before || 0 <= out_after) && used 1320 && p != lastout && group_separator) 1321 { 1322 pr_sgr_start_if (sep_color); 1323 fputs_errno (group_separator); 1324 pr_sgr_end_if (sep_color); 1325 putchar_errno ('\n'); 1326 } 1327 ~省略~
次回、今回挙げた関数についてみていきます。
コメント