summaryrefslogtreecommitdiffstats
path: root/ruby.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-02-23 20:25:29 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-02-23 20:25:29 +0000
commite67f83271e28da8b087310db8ae21c1b2767c91d (patch)
treedd30f78a150961eae3b755f5691ffaba6b9350c9 /ruby.c
parentf0bbd9aace49c64378af012822805e5b6db261c8 (diff)
downloadruby-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.c22
1 files changed, 9 insertions, 13 deletions
diff --git a/ruby.c b/ruby.c
index 6574e1e99..04a4fe413 100644
--- a/ruby.c
+++ b/ruby.c
@@ -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) {