ruby-changes:45243
From: nobu <ko1@a...>
Date: Fri, 13 Jan 2017 10:46:51 +0900 (JST)
Subject: [ruby-changes:45243] nobu:r57315 (trunk): vm_dump.c: postscript_dump
nobu 2017-01-13 10:46:45 +0900 (Fri, 13 Jan 2017) New Revision: 57315 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=57315 Log: vm_dump.c: postscript_dump * vm_dump.c (postscript_dump): mention crash report log twice because important. Modified files: trunk/vm_dump.c Index: vm_dump.c =================================================================== --- vm_dump.c (revision 57314) +++ vm_dump.c (revision 57315) @@ -922,6 +922,33 @@ rb_dump_machine_register(const ucontext_ https://github.com/ruby/ruby/blob/trunk/vm_dump.c#L922 # define rb_dump_machine_register(ctx) ((void)0) #endif /* HAVE_PRINT_MACHINE_REGISTERS */ +FUNC_MINIMIZED(static void bug_important_message(FILE *out, const char *const msg, size_t len)); + +static void +bug_important_message(FILE *out, const char *const msg, size_t len) +{ + const char *const endmsg = msg + len; + const char *p = msg; + + if (!len) return; + if (isatty(fileno(out))) { + static const char red[] = "\033[;31;1;7m"; + static const char green[] = "\033[;32;7m"; + static const char reset[] = "\033[m"; + const char *e = strchr(p, '\n'); + const int w = (int)(e - p); + do { + int i = (int)(e - p); + fputs(*p == ' ' ? green : red, out); + fwrite(p, 1, e - p, out); + for (; i < w; ++i) fputc(' ', out); + fputs(reset, out); + fputc('\n', out); + } while ((p = e + 1) < endmsg && (e = strchr(p, '\n')) != 0 && e > p + 1); + } + fwrite(p, 1, endmsg - p, out); +} + static void preface_dump(void) { @@ -937,26 +964,28 @@ preface_dump(void) https://github.com/ruby/ruby/blob/trunk/vm_dump.c#L964 " for more details.\n" "Don't forget to include the above Crash Report log file in bug reports.\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" + const size_t msglen = sizeof(msg) - 1; +#else + const char *msg = NULL; + const size_t msglen = 0; +#endif + bug_important_message(stderr, msg, msglen); +} - if (isatty(fileno(stderr))) { - const char *e = strchr(p, '\n'); - const int w = (int)(e - p); - do { - int i = (int)(e - p); - fputs(*p == ' ' ? GREEN : RED, stderr); - fwrite(p, 1, e - p, stderr); - for (; i < w; ++i) fputc(' ', stderr); - fputs(RESET, stderr); - fputc('\n', stderr); - } while ((p = e + 1) < endmsg && (e = strchr(p, '\n')) != 0 && e > p + 1); - } - fwrite(p, 1, endmsg - p, stderr); +static void +postscript_dump(void) +{ +#if defined __APPLE__ + static const char msg[] = "" + "[IMPORTANT]\n" + "Don't forget to include the Crash Report log file in bug reports.\n" + "\n"; + const size_t msglen = sizeof(msg) - 1; +#else + const char *msg = NULL; + const size_t msglen = 0; #endif + bug_important_message(stderr, msg, msglen); } void @@ -1080,4 +1109,6 @@ rb_vm_bugreport(const void *ctx) https://github.com/ruby/ruby/blob/trunk/vm_dump.c#L1109 } #endif /* __FreeBSD__ */ } + + postscript_dump(); } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/