[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00809] Re: configure 時のエラーについて
- Subject: [FDclone-users:00809] Re: configure 時のエラーについて
- From: Takashi SHIRAI <shirai@unixusers.net>
- Date: Tue, 01 Jul 2008 21:38:49 +0900
しらいです。
In Message-Id <20080629122929.35F2848067A@yuka.unixusers.net>
Takashi SHIRAI <shirai@unixusers.net>writes:
> しらいです。
> BSD4 時代の /bin/test は -f で「directory ではない」ことを
> 検出していましたが、POSIX では「regular file である」ことを
> 検出することが要求されています。
> そもそも Bourne shell には builtin test など存在しないので、
> どちらの仕様にあわせるべきかは微妙なところです。これに関して
> は「BASHSTYLE」専用にするかも知れません。
この件ですが、さんざ悩んだ挙げ句やはり BASHSTYLE 未定義時
には従来の仕様、即ち -f は「directory ではない」ことを検出す
る仕様にします。
今となっては BSD 時代のしがらみを引きずっている人など皆無
なんじゃないかとも思って、もしそうなら POSIX に準拠して新仕
様に変更するつもりでいました。
しかし、色々調べてみると、依然 -f が BSD 仕様であることを
前提に書かれている script が意外と生き残っているんですね。
決め手となったのは Solaris 10 の test(1) にある -f option
の説明文です。
True if file exists and is a regular file. Alternatively,
if /usr/bin/sh users specify /usr/ucb before /usr/bin in
their PATH environment variable, then test will return true
if file exists and is (not-a-directory).
Solaris は歴史的経緯で BSD 由来の command を /usr/ucb に残
しているんですが、/usr/ucb/test は未だ -f を「directory でな
い」と見なしているんですね。
compatibility って時間の流れとは関係ないんだと思い知らされ
ました。
という訳で、FDclone の builtin test は -f で dcirectory で
さえなければ device や fifo でも真を返すという従来の仕様を踏
襲します。
識別子 BASHSTYLE 又は STRICTPOSIX が定義されている場合は、
bash や POSIX の仕様に準拠して -f は通常ファイルのみ真を返す
仕様になります。
但しこれらの識別子は標準では定義されていませんので、何も手
を加えずに build する場合は従来仕様です。
しらい たかし