From: nobu.nakada@... Date: 2002-05-22T21:43:59+09:00 Subject: [ruby-dev:17190] Re: コマンドラインオプションの順序制約 なかだです。 とりあえず-T関係だけコミットしました。 At Wed, 22 May 2002 18:58:36 +0900, Nobuyoshi-Nakada wrote: > > でも、-*-とRUBYOPTまわりの変更はよくわからなかったんですが。 > > というか、-*-に関しては元のコードも十分わからないという、自 > > 分が書いたんだろうに。 > > あ、-*-ですか。いや、これ何だろうとは思ったんですが、あんまり気 > にしてなかった。うーん、あのパッチだと #!ruby -*-ruby-*- なんて > のがエラーになりますね。逆に今はコマンドラインでも -* がエラー > にならないとか。 #!でシステムからargvで渡される可能性もあるから、こんな感じかなぁ。 とりあえず空白は無視するようにしてみましたが。 でも、Linuxのように一つの引数にして渡すシステムはいいけど、分割 して渡すシステム(http://www.cwi.nl/~aeb/std/hashexclam-1.htmlに よるとBSDI?)だとダメかも。 -*-...-*-には空白を入れるなとか、もっといいのは二行目に書けとい うことかも。 > RUBYOPTまわりは単に、moreswitches()の先頭で空白は飛ばしてるので > 毎回は不要だろうというだけです。 これは思いっきり勘違いしてました。 Index: ruby.c =================================================================== RCS file: /cvs/ruby/src/ruby/ruby.c,v retrieving revision 1.59 diff -u -2 -p -r1.59 ruby.c --- ruby.c 2002/05/22 12:32:15 1.59 +++ ruby.c 2002/05/22 12:32:26 @@ -625,8 +625,15 @@ proc_options(argc, argv) break; - case '*': case ' ': - if (s[1] == '-') s+=2; - break; + if (*++s == '-') ++s; + goto reswitch; + + case '*': + if (s[1] == '-') { + if ((s = strstr(s + 2, "-*-")) == 0) break; + s += 3; + goto reswitch; + } + /* through */ default: @@ -840,5 +847,12 @@ load_file(fname, script) p++; /* skip space before `-' */ while (*p == '-') { - p = moreswitches(p+1); + if (*++p == '*' && p[1] == '-') { + p = strstr(p + 2, "-*-"); + if (!p) break; + p += 3; + while (ISSPACE(*p)) p++; + continue; + } + p = moreswitches(p); } } -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦