|
いくつか。
> Dos環境ではワイルドカードの展開がそれぞれのツールにまかされていると
現実的には問題ないとは言え、実はこれは最大の問題だったりする。
ソースが公開されているフリーウェアの場合、ものによっては、複数の処理系に
対応していたりするわけです。さらに、それぞれの処理系用のmakefileまで同梱
されていたりして。
そういう場合、DOSの時代の国産ソフトだと、たいがいはMS-C(or Quick C)とTurbo C(or Borland C)とLSI C-86ですが、配布されている実行ファイルをそのま
ま使っているうちはいいけれど、手持ちの処理系でコンパイルしなおしたら挙動
が違う、なんて事はありそうな話。
もう一つ、#136であった話ですが。
> 注意せよ。DOS本来のワイルドカード解釈では「*」は、ファイル名
> の本体および拡張子のそれぞれの中において、「*」以降の文字列照
> 合をしない、という意味を持っており(例えば「p*」は「pqr.c」に
> はマッチしない)
前段については、DOSの仕様として明記されている話のようです。
以下、NEC版MS-DOS5.0Aユーザーズリファレンスマニュアルより引用。
> アスタリスク(*)は、ファイル名の名前と拡張子の中で、それ以降が“1文
> 字以上の任意の文字列”を表すワイルドカードです。
ところで、手元には、ASCII出版局の「標準MS-DOSハンドブック」があります。
序文によると、この本は、さらに古いDOS2.0を対象に書かれています。なにせ、
84年が初版です。この本では、単純に
> "*"は、任意の複数文字とマッチします。
としか書かれていません。
ただ、この本の後ろの方には、重要な記述がありました。
> "*"はユーザープログラムまたはシステムコールによって"?"に展開しなければ
> ならない
これらから、以下は推測。
仕様としては、「*」は「????????.」に展開されるべきであった。ところが、な
ぜかシステムコールでは「????????.???」に展開されてしまっている。
おまけ。
参考というか、検証すればすぐわかる事なんですが。
今回、文太さん、「*」というワイルドカードについて調べています。
が、「*.」というワイルドカード指定であれば、多分、もっと安定な結果が得ら
れるのではないかと思います。
|
|