>> On Sun, 28 May 1995 21:28:57 +0900, Naitoh Ryuichi <night> said:
> なぜこんなことを言いだしたかというと、MS-DOS のファイルシステムを読む
> プログラムを作っているのですが、もう少しで完成しそうだからです。
> このプログラムは、MS-DOS でフォーマットされている FD の内容を読むとい
> うもので、ディレクトリの内容一覧表示とファイルの内容を表示する機能をも
> たせるつもりです。
> 今のところは、Linux 上のアプリケーションとしてのみ動作していますが、
> malloc を使わないようにするなど、少し手直しして、boot プログラムに組み
> 込もうとおもっています。
というメイルを kernel メイリングリストに出しましたが、Linux で動作する
とりあえず版ができたのでメイルにて公開します。
はっきり言って、品質は非常に悪いです(多分)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
以下に、インストールと使いかたを書いたドキュメントと uuencode した内容
をつけます。
dosfs について
==============
o インストール方法
ファイルは、uuencode にて変換してあります。
メイルにてファイルを受けとったら、メイルの内容を適当なファイルに
移してください。
ファイルの中身は、
begin 664 dosfs.tar.gz
ではじまり、
end
で終わるようにしてください。
ファイルを作成したら、次のコマンドを実行してください。
(ここでは、メイルの内容を入れたファイルを foo という名前にしてあります)
uudecode foo
uudecode を実行したら、dosfs.tar.gz というファイルができているはずです。
以下のコマンドを実行してファイルの中身を展開してください。
gzip -d < dosfs.tar.gz | tar xvf -
そうするとカレントディレクトリに、以下のファイルが作成されるはずです。
00README
Makefile
TAGS
cat.c
dir.c
dosfs.c
dosfs.h
fat.c
filesystem.c
lowdev.c
ls.c
paths.c
おもむろに、make を実行してください。ソースファイルがコンパイルされ、
dosfs という実行ファイルができるはずです。
o 使いかた
現バージョンの dosfs には、次の機能があります。
1) ディレクトリの一覧表示
2) ファイルの内容の表示(標準出力にファイルの内容を出力)
ディレクトリの一覧表示は次のように実行します。
dosfs /dev/fd0H720 ls /
最初の引数 '/dev/fd0H720' は、DOS 形式にフォーマットされた FD をアクセ
スするためのスペシャルファイル名です。
最後にある '/' がディレクトリ名を示します。この場合だと FD のルートディ
レクトリの一覧が表示されます。
ファイルの中身の出力は、次のように実行します。
dosfs /dev/fd0H720 cat /setup.def
この場合には、ルートディレクトリにある '/setup.def' の内容が表示されま
す。
o 制限事項
1) 現在読めるのは、720Kbyte フォーマットされた FD だけです。これ以外の
形式の FD は読めません。
2) スペシャルファイル名が固定です。たとえば、720Kbyte フォーマットされ
た FD を表すスペシャルファイル名 /dev/fd0H720 でない場合、エラーと
なります。
o 将来のアップデート項目
720Kbyte 形式以外の複数の FD フォーマットのサポート。
cat、ls 以外のコマンドのサポート。mkdir、write など。
B-Free OS の boot プログラムへの組み込み。
o 注意事項
1) ソースファイル内の日本語文字コードは、EUC を使用しています。シフ
ト JIS ではないので、注意してください。
2) まだ、このプログラムはテストを十分に行っていません。
また、エラー処理についてはいいかげんです。十分に注意して使用して
ください(ただ、スペシャルファイルは read-only でオープンしている
ので、ファイルの破壊などがおこることはないと思います)。
もし、バグなどがありましたら、次のアドレスへメイルを出してください。
必ず修正するという保証はしませんが、ひょっとしたら直るかもしれません。
内藤隆一 (night@bfree.rim.or.jp)
o Copyright
本ソフトウェアの著作権は、B-Free プロジェクトが保持します。
修正および再配布は自由ですが、再配布の際には本ファイルおよび著作権に
ついての記述をつけるようにしてください。
本ソフトウェアを実行した結果、何らかの損害が発生しても保障はしません。
また、本ソフトウェアは、無償で公開/配布されるものであり、その動作に
ついても一切保証はありません。
------------------------
Last Update: 28 Mar,1995
Autor: 内藤 隆一
以下が、ソースファイルを uuencode した結果です。
uudecode プログラムで元にもどすことができます。
begin 664 dosfs.tar.gz
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
MOZ\V,K-Q:VT;C@'071FI&RL1L<ASV%%@,53O#&@P8TY\.@95"P_<&TUE2
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
H@\%@,!@,!H/!8#`8#`:#P6`P&`P&@\%@,!@,!N._P2\81T4"`*```%C^
`
end
-- 内藤隆一 (ggc00661@niftyserve.or.jp/night@bfree.rim.or.jp)