From 218617161f0c4bd10c5865052183e269b3f2fa9a Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 12 May 2015 06:50:05 +0000 Subject: [PATCH] vm_dump.c: highlight preface * vm_dump.c (preface_dump): highlight very important but very ofhen ignored message like a Xmas tree. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50472 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- vm_dump.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/vm_dump.c b/vm_dump.c index f0d56bac6c..7766c27296 100644 --- a/vm_dump.c +++ b/vm_dump.c @@ -950,8 +950,29 @@ preface_dump(void) " * /Library/Logs/DiagnosticReports\n" " for more details.\n" "\n"; + const char *const endmsg = msg + sizeof(msg) - 1; + const char *p = msg; +#define RED "\033[;31;1;7m" +#define GREEN "\033[;32;7m" +#define RESET "\033[m" - fputs(msg, stderr); + if (isatty(fileno(stderr))) { + const char *e = strchr(p, '\n'); + const int w = (int)(e - p); + fputs(RED, stderr); + fwrite(p, 1, w, stderr); + fputs(RESET, stderr); + fputc('\n', stderr); + while ((p = e + 1) < endmsg && (e = strchr(p, '\n')) != 0 && e > p + 1) { + int i = (int)(e - p); + fputs(GREEN, stderr); + fwrite(p, 1, e - p, stderr); + for (; i < w; ++i) fputc(' ', stderr); + fputs(RESET, stderr); + fputc('\n', stderr); + } + } + fwrite(p, 1, endmsg - p, stderr); #endif }