diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-02-23 20:25:29 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-02-23 20:25:29 +0000 |
commit | e67f83271e28da8b087310db8ae21c1b2767c91d (patch) | |
tree | dd30f78a150961eae3b755f5691ffaba6b9350c9 /ruby.c | |
parent | f0bbd9aace49c64378af012822805e5b6db261c8 (diff) | |
download | ruby-e67f83271e28da8b087310db8ae21c1b2767c91d.tar.gz ruby-e67f83271e28da8b087310db8ae21c1b2767c91d.tar.xz ruby-e67f83271e28da8b087310db8ae21c1b2767c91d.zip |
* ruby.c (proc_options): check if argument for -E exists.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@15589 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby.c')
-rw-r--r-- | ruby.c | 22 |
1 files changed, 9 insertions, 13 deletions
@@ -539,7 +539,7 @@ moreswitches(const char *s, struct cmdline_options *opt) static int proc_options(int argc, char **argv, struct cmdline_options *opt) { - int argc0 = argc; + int n, argc0 = argc; const char *s; if (argc == 0) @@ -707,10 +707,7 @@ proc_options(int argc, char **argv, struct cmdline_options *opt) break; case 'E': - if (!*++s) { - s = argv[1]; - argc--, argv++; - } + if (!*++s) goto next_encoding; goto encoding; case 'K': @@ -797,18 +794,17 @@ proc_options(int argc, char **argv, struct cmdline_options *opt) } else if (strcmp("disable-gems", s) == 0) opt->disable_gems = 1; - else if (strcmp("encoding", s) == 0) { - if (!--argc || !(s = *++argv)) { - noencoding: - rb_raise(rb_eRuntimeError, "missing argument for --encoding"); + else if (strncmp("encoding", s, n = 8) == 0 && (!s[n] || s[n] == '=')) { + s += n; + if (!*s++) { + next_encoding: + if (!--argc || !(s = *++argv)) { + rb_raise(rb_eRuntimeError, "missing argument for --encoding"); + } } encoding: opt->ext.enc.name = rb_str_new2(s); } - else if (strncmp("encoding=", s, 9) == 0) { - if (!*(s += 9)) goto noencoding; - goto encoding; - } else if (strcmp("version", s) == 0) opt->version = 1; else if (strcmp("verbose", s) == 0) { |