mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* ruby.c (set_option_encoding_once): dry.
* ruby.c (proc_options): checks extra argument for -E/--encoding. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20575 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									a41eedddd3
								
							
						
					
					
						commit
						ecc83033ba
					
				
					 3 changed files with 46 additions and 34 deletions
				
			
		|  | @ -1,3 +1,9 @@ | |||
| Mon Dec  8 10:32:33 2008  Nobuyoshi Nakada  <nobu@ruby-lang.org> | ||||
| 
 | ||||
| 	* ruby.c (set_option_encoding_once): dry. | ||||
| 
 | ||||
| 	* ruby.c (proc_options): checks extra argument for -E/--encoding. | ||||
| 
 | ||||
| Sun Dec  7 23:47:37 2008  Nobuyoshi Nakada  <nobu@ruby-lang.org> | ||||
| 
 | ||||
| 	* configure.in (LIBPATHFLAG): use numbered specifier if RPATHFLAG | ||||
|  |  | |||
							
								
								
									
										64
									
								
								ruby.c
									
										
									
									
									
								
							
							
						
						
									
										64
									
								
								ruby.c
									
										
									
									
									
								
							|  | @ -622,36 +622,27 @@ dump_option(const char *str, int len, void *arg) | |||
| } | ||||
| 
 | ||||
| static void | ||||
| set_internal_encoding_once(struct cmdline_options *opt, const char *e, int elen) | ||||
| set_option_encoding_once(const char *type, VALUE *name, const char *e, int elen) | ||||
| { | ||||
|     VALUE ename; | ||||
| 
 | ||||
|     if (!elen) elen = strlen(e); | ||||
|     ename = rb_str_new(e, elen); | ||||
| 
 | ||||
|     if (opt->intern.enc.name && | ||||
| 	rb_funcall(ename, rb_intern("casecmp"), 1, opt->intern.enc.name) != INT2FIX(0)) { | ||||
|     if (*name && | ||||
| 	rb_funcall(ename, rb_intern("casecmp"), 1, *name) != INT2FIX(0)) { | ||||
| 	rb_raise(rb_eRuntimeError, | ||||
| 		 "default_internal already set to %s", RSTRING_PTR(opt->intern.enc.name)); | ||||
| 		 "%s already set to %s", type, RSTRING_PTR(*name)); | ||||
|     } | ||||
|     opt->intern.enc.name = ename; | ||||
|     *name = ename; | ||||
| } | ||||
| 
 | ||||
| static void | ||||
| set_external_encoding_once(struct cmdline_options *opt, const char *e, int elen) | ||||
| { | ||||
|     VALUE ename; | ||||
| 
 | ||||
|     if (!elen) elen = strlen(e); | ||||
|     ename = rb_str_new(e, elen); | ||||
| 
 | ||||
|     if (opt->ext.enc.name && | ||||
| 	rb_funcall(ename, rb_intern("casecmp"), 1, opt->ext.enc.name) != INT2FIX(0)) { | ||||
| 	rb_raise(rb_eRuntimeError, | ||||
| 		 "default_external already set to %s", RSTRING_PTR(opt->ext.enc.name)); | ||||
|     } | ||||
|     opt->ext.enc.name = ename; | ||||
| } | ||||
| #define set_internal_encoding_once(opt, e, elen) \ | ||||
|     set_option_encoding_once("default_intenal", &opt->intern.enc.name, e, elen) | ||||
| #define set_external_encoding_once(opt, e, elen) \ | ||||
|     set_option_encoding_once("default_extenal", &opt->ext.enc.name, e, elen) | ||||
| #define set_source_encoding_once(opt, e, elen) \ | ||||
|     set_option_encoding_once("source", &opt->src.enc.name, e, elen) | ||||
| 
 | ||||
| static int | ||||
| proc_options(int argc, char **argv, struct cmdline_options *opt, int envopt) | ||||
|  | @ -663,10 +654,11 @@ proc_options(int argc, char **argv, struct cmdline_options *opt, int envopt) | |||
| 	return 0; | ||||
| 
 | ||||
|     for (argc--, argv++; argc > 0; argc--, argv++) { | ||||
| 	if (argv[0][0] != '-' || !argv[0][1]) | ||||
| 	const char *const arg = argv[0]; | ||||
| 	if (arg[0] != '-' || !arg[1]) | ||||
| 	    break; | ||||
| 
 | ||||
| 	s = argv[0] + 1; | ||||
| 	s = arg + 1; | ||||
|       reswitch: | ||||
| 	switch (*s) { | ||||
| 	  case 'a': | ||||
|  | @ -955,14 +947,28 @@ proc_options(int argc, char **argv, struct cmdline_options *opt, int envopt) | |||
| 	    else if (is_option_with_arg("encoding", Qfalse, Qtrue)) { | ||||
| 		char *p; | ||||
| 	      encoding: | ||||
| 		p = strchr(s, ':'); | ||||
| 		if (p) { | ||||
| 		    if (p > s) | ||||
| 			set_external_encoding_once(opt, s, p-s); | ||||
| 		    if (*++p) | ||||
| 			set_internal_encoding_once(opt, p, 0); | ||||
| 		do { | ||||
| #	define set_encoding_part(type) \ | ||||
| 		    if (!(p = strchr(s, ':'))) { \ | ||||
| 			set_##type##_encoding_once(opt, s, 0); \ | ||||
| 			break; \ | ||||
| 		    } \ | ||||
| 		    else if (p > s) { \ | ||||
| 			set_##type##_encoding_once(opt, s, p-s); \ | ||||
| 		    } | ||||
| 		else     | ||||
| 		    set_encoding_part(external); | ||||
| 		    if (!*(s = ++p)) break; | ||||
| 		    set_encoding_part(internal); | ||||
| 		    if (!*(s = ++p)) break; | ||||
| 		    rb_raise(rb_eRuntimeError, "extra argument for %s: %s", | ||||
| 			     (arg[1] == '-' ? "--encoding" : "-E"), s); | ||||
| #	undef set_encoding_part | ||||
| 		} while (0); | ||||
| 	    } | ||||
| 	    else if (is_option_with_arg("internal-encoding", Qfalse, Qtrue)) { | ||||
| 		set_internal_encoding_once(opt, s, 0); | ||||
| 	    } | ||||
| 	    else if (is_option_with_arg("external-encoding", Qfalse, Qtrue)) { | ||||
| 		set_external_encoding_once(opt, s, 0); | ||||
| 	    } | ||||
| 	    else if (strcmp("version", s) == 0) { | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| #define RUBY_VERSION "1.9.1" | ||||
| #define RUBY_RELEASE_DATE "2008-12-07" | ||||
| #define RUBY_RELEASE_DATE "2008-12-08" | ||||
| #define RUBY_VERSION_CODE 191 | ||||
| #define RUBY_RELEASE_CODE 20081207 | ||||
| #define RUBY_RELEASE_CODE 20081208 | ||||
| #define RUBY_PATCHLEVEL 5000 | ||||
| 
 | ||||
| #define RUBY_VERSION_MAJOR 1 | ||||
|  | @ -9,7 +9,7 @@ | |||
| #define RUBY_VERSION_TEENY 1 | ||||
| #define RUBY_RELEASE_YEAR 2008 | ||||
| #define RUBY_RELEASE_MONTH 12 | ||||
| #define RUBY_RELEASE_DAY 7 | ||||
| #define RUBY_RELEASE_DAY 8 | ||||
| 
 | ||||
| #ifdef RUBY_EXTERN | ||||
| RUBY_EXTERN const char ruby_version[]; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 nobu
						nobu