In message <199709181458.XAA15550@bfree.rim.or.jp>
"[b-free 539] Re: ファイル名の長さ"
"Naitoh Ryuichi <night@bfree.rim.or.jp>" wrote:
night> ファイルの属性をレコードとして扱うかどうかという選択もありますね。
night> 属性をレコードとして扱うならば、可変長レコードにするだけで、ファイル名の
night> 長さが可変長にできますから。
前のメールを書いたときは忘れていましたが、BTRON2の属性レコード
には普通にデータを記憶しておくには不向きで特別扱い(※1)する必要
のあるものが一杯あるので、レコードとして扱うかどうかの問題では
ないと思います。データフォーマット上、データレコードと同じ構造
を取るかどうかが焦点ですね。データレコードと同じ構造なら可変長
レコードになるので長さは自由ですが、効率は多少落ちるでしょう。
別扱いで固定長の領域を確保すれば速くアクセスできます。短い場合
は固定長領域に格納して長い場合にはデータレコードと同様に扱うと
いうのがシステムの効率からみれば良いでしょう。
% ※1. 読み出し時にシステム状態や他の属性レコードを参照して値を
% 計算しなければならない属性、書き込みによりシステムの動作や
% 他の属性の値に変化を生じる属性がある。
night> > 以上、2点は新たにファイルフォーマットを作った場合の方法です。
night> > そうでない場合、標準FDと互換性を持たせたまま長い実身名を付ける
night> > 方法としては、長い実身名を特定のレコードタイプ、サブタイプの
night> > データレコードとして表す方法があります。この場合、通常の実身名
night> > の領域には長い実身名の初めの部分だけを入れます。長い実身名に
night> > 対応していないシステムでは長い実身名は扱えませんが、それ以外に
night> > 特に問題はないでしょう。
night>
night> 標準 FD については、長いファイル名を使うことは考えていませんでした。
night> 標準 FD の場合だと、短いファイル名でしかアクセスできない OS がある
night> ので、長いファイル名を扱えるようにするのは難しいように思います。
night> 他の OS のようにひとつのファイルを複数のファイル名でアクセスできる
night> ならば、Windows 95 のように短いファイル名と長いファイル名の併用も
night> できるのですが。。。(でも、弊害はありそう)
私の案は正に長いファイル名と短いファイル名の両方を持たせる方法
です。やり方としては
・長いファイル名は(特定のレコードタイプの)データレコードに格納
・短いファイル名は長いファイル名の先頭20文字(40byte)
というものです。BTRONはファイル名を重視していないので、これで
特に問題はありません。
# 名前が途中で切れて見えるという問題は考えないことにして(^_^;)
night> ただ、BTRON には、ファイルシステム間でのリンクを張る機能があるので、
night> それを考えると「非互換」ファイルシステムでも長いファイル名をサポー
night> トするのはいろいろ問題がありそうです。
night>
night> # リンク情報の中にもファイル名が入っているんですよね?
上記の方法では、非互換システム上では長いファイル名はデータの
一部に過ぎないのでシステムに悪影響はありません。非互換システム
で名前が変えられた場合、長いファイル名レコードは不用になります
が、互換システムで不整合な長いファイル名レコードを発見した場合
に削除すればすみます。
リンクファイルにもファイル名は入っていますが、このファイル名
でファイルを探すわけではないので特に問題はないでしょう。なお、
上記の手法を取る場合にはリンクファイルには短いファイル名だけ
が入ります(互換性を取って長いファイル名を入れる方法が無い)。
従って、非互換システムがリンクファイルのファイル名情報を参照
したとしても問題は生じません。虚身状態では短いファイル名しか
見えなくなりますが不都合はないでしょう。
# 間接参照は普通ファイルシステム名とファイルIDで解決されます。
night> > 以上、どの案も長い実身名を効率的に扱うことは考えていません。
night>
night> 完全に予想にすぎませんが、多分、極端に長いファイル名を使うことは
night> 少ないと思います。
night> 長いファイル名を扱うときだけ特別扱いして、短いファイル名を効率よ
night> くすることでいいと思いますが。
同感です。
night> ただファイル名を長くするだけでは芸がないので、ファイル「名」に TAD を
night> 使えるようにして、ファイル名を図形にするのも面白そうです。
night> (この辺の話は、昔にも出ましたか)
ファイル名に文字以外のものを入れると検索などで問題になりそう
なのでファイル名とは別のものにしてください。
BTRON仕様ではTAD注釈レコードやTAD補助レコードなどのレコード
タイプも定義されているので、そういうレコードを活用するという
のはどうですか?
night> ただ、テキストエディタだけでは図形が扱えないので、プログラムを組むにも
night> 図形も扱えるワープロが必要になってしまいますが。。。
night> スクリプト言語だと、仮身をそのままひっぱってこれるので、それほど問題は
night> ないかもしれません。
プログラム中に直接に図形を埋め込む必要はないでしょう。でも
TADの解釈を簡単にかつ統一的に扱うために標準ライブラリを作成
する必要はあるでしょうね。
# あるいは拡張システムコール。共有ライブラリが一番だけど。
--- 林(takanori@ohsaki.meidensha.co.jp)