diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-02-23 21:13:05 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-02-23 21:13:05 +0000 |
commit | 552badf29f3aa5e9b76d02716f93f37b94ba8353 (patch) | |
tree | 2c751d83a3a4d15fe94ab76fb40d5c1091a095f4 /debug.c | |
parent | b3b3ff29b5e266c1fb9d2c5b5581614155b60f60 (diff) | |
download | ruby-552badf29f3aa5e9b76d02716f93f37b94ba8353.tar.gz |
* debug.c (ruby_set_debug_option): separated ruby_each_words().
* util.c (ruby_each_words): extracted from ruby_set_debug_option().
* ruby.c (proc_options): generalized enable/disable options.
* ruby.c (ruby_init_gems): take enabled flag. [ruby-core:14840]
* ruby.c (process_options): added --disable-rubyopt flag.
* include/ruby/util.h (ruby_each_words): prototype.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15590 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'debug.c')
-rw-r--r-- | debug.c | 37 |
1 files changed, 16 insertions, 21 deletions
@@ -11,6 +11,7 @@ #include "ruby/ruby.h" #include "ruby/encoding.h" +#include "ruby/util.h" #include "debug.h" #include "vm_core.h" @@ -121,31 +122,25 @@ ruby_debug_breakpoint(void) } #ifdef RUBY_DEBUG_ENV -#include <ctype.h> - -void -ruby_set_debug_option(const char *str) +static void +set_debug_option(const char *str, int len, void *arg) { - const char *end; - int len; - - if (!str) return; - for (; *str; str = end) { - while (ISSPACE(*str) || *str == ',') str++; - if (!*str) break; - end = str; - while (*end && !ISSPACE(*end) && *end != ',') end++; - len = end - str; -#define SET_WHEN(name, var) \ +#define SET_WHEN(name, var) do { \ if (len == sizeof(name) - 1 && \ strncmp(str, name, len) == 0) { \ extern int ruby_##var; \ ruby_##var = 1; \ - continue; \ - } - SET_WHEN("gc_stress", gc_stress); - SET_WHEN("core", enable_coredump); - fprintf(stderr, "unexpected debug option: %.*s\n", len, str); - } + return; \ + } \ + } while (0) + SET_WHEN("gc_stress", gc_stress); + SET_WHEN("core", enable_coredump); + fprintf(stderr, "unexpected debug option: %.*s\n", len, str); +} + +void +ruby_set_debug_option(const char *str) +{ + ruby_each_words(str, set_debug_option, 0); } #endif |