mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	ruby.c: debug options in command line
* ruby.c (debug_option): parse options in --debug command line option same as RUBY_DEBUG env. available only in the trunk. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59129 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									9cacc53d4a
								
							
						
					
					
						commit
						793f5d8fe8
					
				
					 2 changed files with 18 additions and 6 deletions
				
			
		
							
								
								
									
										20
									
								
								debug.c
									
										
									
									
									
								
							
							
						
						
									
										20
									
								
								debug.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -121,8 +121,8 @@ UINT ruby_w32_codepage[2];
 | 
			
		|||
#endif
 | 
			
		||||
extern int ruby_rgengc_debug;
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
set_debug_option(const char *str, int len, void *arg)
 | 
			
		||||
int
 | 
			
		||||
ruby_env_debug_option(const char *str, int len, void *arg)
 | 
			
		||||
{
 | 
			
		||||
    int ov;
 | 
			
		||||
    size_t retlen;
 | 
			
		||||
| 
						 | 
				
			
			@ -131,7 +131,7 @@ set_debug_option(const char *str, int len, void *arg)
 | 
			
		|||
	if (len == sizeof(name) - 1 &&	    \
 | 
			
		||||
	    strncmp(str, (name), len) == 0) { \
 | 
			
		||||
	    (var) = (val);		    \
 | 
			
		||||
	    return;			    \
 | 
			
		||||
	    return 1;			    \
 | 
			
		||||
	}				    \
 | 
			
		||||
    } while (0)
 | 
			
		||||
#define NAME_MATCH_VALUE(name)				\
 | 
			
		||||
| 
						 | 
				
			
			@ -168,7 +168,7 @@ set_debug_option(const char *str, int len, void *arg)
 | 
			
		|||
    if (NAME_MATCH_VALUE("rgengc")) {
 | 
			
		||||
	if (!len) ruby_rgengc_debug = 1;
 | 
			
		||||
	else SET_UINT_LIST("rgengc", &ruby_rgengc_debug, 1);
 | 
			
		||||
	return;
 | 
			
		||||
	return 1;
 | 
			
		||||
    }
 | 
			
		||||
#if defined _WIN32
 | 
			
		||||
# if RUBY_MSVCRT_VERSION >= 80
 | 
			
		||||
| 
						 | 
				
			
			@ -179,10 +179,18 @@ set_debug_option(const char *str, int len, void *arg)
 | 
			
		|||
    if (NAME_MATCH_VALUE("codepage")) {
 | 
			
		||||
	if (!len) fprintf(stderr, "missing codepage argument");
 | 
			
		||||
	else SET_UINT_LIST("codepage", ruby_w32_codepage, numberof(ruby_w32_codepage));
 | 
			
		||||
	return;
 | 
			
		||||
	return 1;
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
    fprintf(stderr, "unexpected debug option: %.*s\n", len, str);
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
set_debug_option(const char *str, int len, void *arg)
 | 
			
		||||
{
 | 
			
		||||
    if (!ruby_env_debug_option(str, len, arg)) {
 | 
			
		||||
	fprintf(stderr, "unexpected debug option: %.*s\n", len, str);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										4
									
								
								ruby.c
									
										
									
									
									
								
							
							
						
						
									
										4
									
								
								ruby.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -856,12 +856,16 @@ disable_option(const char *str, int len, void *arg)
 | 
			
		|||
    feature_option(str, len, arg, 0U);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
RUBY_EXTERN const int  ruby_patchlevel;
 | 
			
		||||
int ruby_env_debug_option(const char *str, int len, void *arg);
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
debug_option(const char *str, int len, void *arg)
 | 
			
		||||
{
 | 
			
		||||
    static const char list[] = EACH_DEBUG_FEATURES(LITERAL_NAME_ELEMENT, ", ");
 | 
			
		||||
#define SET_WHEN_DEBUG(bit) SET_WHEN(#bit, DEBUG_BIT(bit), str, len)
 | 
			
		||||
    EACH_DEBUG_FEATURES(SET_WHEN_DEBUG, ;);
 | 
			
		||||
    if (ruby_patchlevel < 0 && ruby_env_debug_option(str, len, 0)) return;
 | 
			
		||||
    rb_warn("unknown argument for --debug: `%.*s'", len, str);
 | 
			
		||||
    rb_warn("debug features are [%.*s].", (int)strlen(list), list);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue