• R/O
  • HTTP
  • SSH
  • HTTPS

コミット

タグ
未設定

よく使われているワード(クリックで追加)

javac++androidlinuxc#objective-cqtwindows誰得cocoapythonphprubygameguibathyscaphec翻訳omegat計画中(planning stage)frameworktwittertestdomvb.netdirectxbtronarduinopreviewerゲームエンジン

oga's tools


コミットメタ情報

リビジョンafd573572220e3e089ca55c3e108f410ee9953b7 (tree)
日時2014-12-06 09:24:21
作者oga <hyperoga@gmai...>
コミッターoga

ログメッセージ

14/12/06 V0.13 support -nc (no color), NT color

変更サマリ

差分

--- a/cgrep.c
+++ b/cgrep.c
@@ -4,6 +4,7 @@
44 * 00/04/18 V0.10 by oga
55 * 13/12/14 V0.11 support -i (ignore case)
66 * 14/02/01 V0.12 support MS VC6
7+ * 14/12/06 V0.13 support -nc (no color), NT color
78 *
89 */
910 #include <stdio.h>
@@ -17,8 +18,68 @@
1718
1819 enum {COL_ESC, COL_BS};
1920 int color = 6; /* -c : yellow? */
20-int vf = 0; /* -v: verbose */
21-int igcf = 0; /* -i: ignore case V0.11-A */
21+int vf = 0; /* -v : verbose */
22+int igcf = 0; /* -i : ignore case V0.11-A */
23+int ncf = 0; /* -nc: no color V0.13-A */
24+
25+/* V0.13-A start */
26+/* NT color */
27+void backup_color()
28+{
29+#ifdef _WIN32
30+ /* backup current color */
31+ CONSOLE_SCREEN_BUFFER_INFO scrinfo;
32+
33+ if (GetConsoleScreenBufferInfo(
34+ GetStdHandle(STD_OUTPUT_HANDLE),
35+ &scrinfo)) {
36+ colorbk = scrinfo.wAttributes;
37+ if (vf) printf("backup color: 0x%04x\n", colorbk);
38+ }
39+#endif /* DOS */
40+ return;
41+}
42+
43+void restore_color()
44+{
45+#ifdef _WIN32
46+ /* restore color */
47+ if (colorbk != 0xffff) {
48+ if (vf) printf("restore color.\n");
49+ SetConsoleTextAttribute(
50+ GetStdHandle(STD_OUTPUT_HANDLE),
51+ colorbk);
52+ }
53+#endif /* DOS */
54+ return;
55+}
56+
57+void printf_nt(char *str)
58+{
59+ int i;
60+ int j;
61+
62+#ifdef _WIN32
63+ for (i = 0; i < strlen(str); i++) {
64+ if (str[i] == 27) { /* ESC */
65+ for (j = 0; j < sizeof(col_tbl)/sizeof(coltbl_t); j++) {
66+ if (!strncmp(&str[i], col_tbl[j].escsec, strlen(col_tbl[j].escsec))) {
67+ SetConsoleTextAttribute(
68+ GetStdHandle(STD_OUTPUT_HANDLE),
69+ col_tbl[j].color);
70+ i += strlen(col_tbl[j].escsec);
71+ break;
72+ }
73+ }
74+ }
75+ if (str[i]) putchar((unsigned char)str[i]);
76+
77+ }
78+#else
79+ printf("%s", str);
80+#endif
81+}
82+/* V0.13-A end */
2283
2384 /*
2485 * add color ESC sequence to "key" in "buf"
@@ -84,6 +145,7 @@ void usage()
84145 printf(" -c <color> : specify 1-7. default 6\n");
85146 printf(" -b : bold with backspace (for less)\n");
86147 printf(" -i : ignore case\n");
148+ printf(" -nc : no color\n"); /* V0.13-A */
87149 }
88150
89151 /*
@@ -153,6 +215,13 @@ int main(int a, char *b[])
153215 }
154216 /* V0.11-A end */
155217
218+ /* V0.13-A start */
219+ if (!strcmp(b[i],"-nc")) {
220+ ncf = 1;
221+ continue;
222+ }
223+ /* V0.13-A end */
224+
156225 if (key == NULL) {
157226 key = b[i];
158227 continue;
@@ -184,7 +253,7 @@ int main(int a, char *b[])
184253 pt = strstr(buf, key);
185254 }
186255 if (pt) {
187- ChangeBold(buf, key, ctype);
256+ if (!ncf) ChangeBold(buf, key, ctype); /* V0.13-C */
188257 if (files > 1) {
189258 printf("%s:%s", filename[x], buf);
190259 } else {
@@ -196,6 +265,10 @@ int main(int a, char *b[])
196265 if (files) fclose(fp);
197266 } while ( ++x < files);
198267
199- return 0;
268+ return 0;
200269 }
201270
271+/*
272+ * vim:ts=8:sw=4:
273+ */
274+