home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1996 February / VPR9602A.ISO / fwindows / archive / tmedt090.lzh / TOOLD101.LZH / MAN.LZH / README.DOC < prev    next >
Text File  |  1995-03-10  |  40KB  |  785 lines

  1.             UNIX tools(Ver 2.06a)について
  2.  
  3.                       新出尚之 nide@ics.nara-wu.ac.jp
  4.                                  94/12/16
  5.                        (ドキュメントのみ訂補 95/3/10)
  6.  
  7.   ネットワークニュースfj.binaries.msdosや、商用ネットNiftyなどで配布され
  8. ていた、斎藤靖(yasushi@is.s.u-tokyo.ac.jp)さんのUNIX like tools(LSI C使
  9. 用)―fj.binaries.msdosの
  10.  
  11.     v004i0091:  tools, UNIX tools on MSDOS binary files
  12.     v004i0094:  tools, UNIX tools on MSDOS source files
  13.     v004i0108:  toolssrc.lzh missing files
  14.  
  15. を、長く使っているうちに私なりにかなり手を加えてしまったので、どうせなら
  16. と思って流すことにしたのが、このUNIX tools Ver 2.00~です。オリジナルに
  17. 比べ、多数のバグ修正や機能アップ、新コマンドの追加などが行われています。
  18. オリジナルが私のものでないので、私(新出)による別バージョンということで、
  19. Ver 2.00~と名乗ることにしました。
  20.   オリジナルと同様、MS-DOS 2.1以降でなら汎用のはずです。但し、一部のコマ
  21. ンド(mv, cp, touch, df)については、DOS3以降で追加された非公開システムコー
  22. ルを使っているため、DOS2では正常動作しない場合があります(これはオリジナル
  23. でも同じ)。マニュアルをご覧下さい。
  24.   なお、当面このソフトの最新版は、anonymous ftp ftp.ics.nara-wu.ac.jp(IP
  25. アドレス: 160.11.66.11)のpub/dosutilにて配布します。ご利用下さい。(以前
  26. のドキュメントでは、配布するftpサイトをshannon.e.ics.nara-wu.ac.jpと記し
  27. ていましたが、ftp.ics.nara-wu.ac.jpは現在のところそれのaliasで、実体は同
  28. じです。しかし、サービスを行うホストやIPアドレスは将来変わり得ますので、
  29. アドレスとしてはftp.ics.nara-wu.ac.jpの方をお使い下さい。) 但し、メンテ
  30. ナンスや事故などのために、予告なく一時的にあるいは恒久的にサービスができ
  31. なくなることもあり得ます。
  32.   サイズもでかくなってきたため、バージョンアップの度にfj.binaries.msdos
  33. に流すとネットワーク及びモデレータにとって負担になりますので、今後はfj.
  34. binaries.msdosへの投稿は、かなり大きな変更を施したときを除いては、バージョ
  35. ンアップ2~3回おき程度にする予定です。ご了承下さい。
  36.   
  37.   配布されるアーカイブのファイル構成は以下のようになっています。
  38.  
  39.     ./readme.doc        このファイル
  40.     ./bin/*.exe        実行ファイル
  41.     ./man/*.man        マニュアル
  42.     ./src/*.[chl]        ソース
  43.     ./src/*.dif        ソースの一部を作るのに必要なパッチ(後述)
  44.     ./src/makefile        メークファイル
  45.     ./src/makedep.pl    perlで書かれたmakedepend
  46.     ./src/man/*.fin        finで整形する前のマニュアル
  47.     ./src/man/makefile    マニュアル用メークファイル
  48.     ./src/man/an.fma    マニュアル用フォーマットファイル
  49.  
  50.   含まれているコマンドは以下の通りです。追加したコマンドのうち、後述の変
  51. 更点リスト中にて追加時期を特記していないものは、Ver 2.00時点で追加したも
  52. のです。
  53.  
  54.     オリジナルからあるもの
  55.     cat, rm, mv, cp, ls, tail, which
  56.     chd(UNIXのcdに相当), makedir(同mkdirに相当), tman(manに相当)
  57.     追加したもの
  58.     fecho(echoに相当), touch, wc(以上3つはオリジナルを廃止して新製した)
  59.     chmod, cmp, df, diff, egrep, expand, fgrep, fold
  60.     foreach, head, od, pwd, sort, split(バイナリのsplitも可)
  61.     tee, test, tr, unexpand, uniq, cdate(dateに相当)
  62.     findf(findに相当), joinf(joinに相当), removdir(rmdirに相当)
  63.     cal, uuencode, uudecode(この3つはソースのみの提供)
  64.     chvol, yakc, xeq(この3つはUNIXに該当なし、下記参照)
  65.  
  66.   ワイルドカードの展開はUNIXライクになっており、MS-DOSの一般的な慣習とは
  67. 異なるのでご注意下さい。詳しくはwild.manをご覧下さい。但し、ワイルドカー
  68. ドの展開結果には不可視ファイルが含まれないのでご注意下さい(lsで環境変数
  69. LSWILDALLを指定した場合と、chmodを除く)。また、which・makedir・cdate・df
  70. ・pwd・chvol・tman・calはワイルドカード・間接引数を、trはワイルドカードを
  71. サポートしていません。逆に、ワイルドカードを利用できるコマンドは全て間接
  72. 引数もサポートしています。
  73.   なお、toolsを使うにあたってはパイプを頻繁に利用することが予想されますし、
  74. またforeach・xeq・findfのように子プロセスを起こすコマンドもありますので、
  75. pipctlやswap, rswapのようなフリーソフトを別途入手されて併用されると良いか
  76. も知れません。また、(余計なお節介ではありますが)本パッケージには収めてい
  77. ないものの、よりUNIX likeな環境を作り出すためにお薦めできるDOS上のフリー
  78. のツールとして、例えば以下のものが考えられます(私がよく使っているものの中
  79. から抜粋しました)。品揃えの参考になれば幸いです。
  80.  
  81.     sed, awk
  82.     テキスト処理言語。フリーのGNUのものがDOS上にも移植されており、日
  83.     本語化もされている
  84.     perl
  85.     これもUNIXの標準コマンドではないが広く使われている。awkやsedなど
  86.     の機能を包含し、さらに多機能な言語。日本語化もされている
  87.     emacsまたはviクローン系エディタ、ページャ
  88.     emacs系は日本語MicroEMACS, ng, demacsなど、vi系はjstevie, jelvis
  89.     などがある。ページャはlessが便利
  90.     WXP(+wxegg.exe)
  91.     私が知る唯一のDOS上のフリーの日本語入力システム。wxegg.exeはWXPの
  92.     キーバインドを、UNIX上で事実上の標準といわれるフリーの日本語入力
  93.     システムWnnのフロントプロセッサuumやeggとそっくりにするもの(イン
  94.     ターネットニュースfj.binaries.msdosに流れた)
  95.     history
  96.     コマンドラインのエディットやヒストリ、ファイル名補完などを実現。
  97.     私はUNIXのtcshそっくりにキーバインドを変更して使っている。同種の
  98.     ソフトにKI-shellというのもあるが、私は使っていないのでhistoryとの
  99.     優劣は不明
  100.     prpat
  101.     UNIXライクなコマンドではないが、DOSが^P, ^Nで勝手にプリンタ出力を
  102.     オン・オフする余計なお世話を抑止するもの。emacsやhistoryなどを使
  103.     う場合、タイミングによって^Pや^Nがプリンタ出力をオン・オフしてし
  104.     まうのを防ぐのに有効
  105.  
  106.  
  107.   コンパイルはLSI C V3.30c試食版を使って行いました。バイナリは付いていま
  108. すが、新たにコンパイルし直す場合、コンパイルに必要なshell.l, onlydquo.cと
  109. いう2ファイルを、LSI C V3.30c(V3.30でも可)試食版に含まれているshell.l,
  110. tinymain.cと、この配布に含まれている差分ファイルshell.difとから、patchコ
  111. マンド(Larry Wall氏による、UNIX上で広く使われているフリーソフトを、DOSに
  112. 移植したものです。最近はDOS標準のコマンドにもpatchという名前のコマンドが
  113. あるようですが、それとは別物で、機能も全く異なります)を使って、次のように
  114. して生成する必要があります。
  115.  
  116.   (1) LSI C V3.30のパッケージに入っている
  117.  
  118.     src/lib/tinymain.cを toolsのsrcディレクトリのonlydquo.cに
  119.     src/lib/shell.lを    toolsのsrcディレクトリのshell.lに
  120.  
  121.       それぞれコピーする
  122.  
  123.   (2) shell.difのパッチをpatchコマンドで当てる
  124.         
  125. この過程はmakefileに含まれていないので、コンパイルするには別途patchコマン
  126. ドを入手して、この過程を手作業で行っておいて下さい。
  127.   この他、マニュアルのmakeにはfinが必要です(オリジナル時代と同じ)。finと
  128. は、UNIXのroffに似た感じの、DOS上のフリーソフトのテキスト整形ツールです。
  129. 有名なものなので、多くのftpサイトやパソコン通信にあるでしょう。  
  130.  
  131.   オリジナルから含まれているコマンドやルーチンに関しては、私による修正部
  132. 分の著作権は放棄します。従って、オリジナルと同じ利用条件で利用してかまい
  133. ません。オリジナル部分の利用規定については、オリジナル版のreadme.docファ
  134. イル(このファイルの続きに付けておきました)をご覧下さい。また、私が追加し
  135. たコマンドについても、商用以外は自由に使用・改造・再配布などして頂いて結
  136. 構です。但し、オリジナル部・私による追加部のいずれについても、これを使用
  137. したことによる如何なる損害にも私は責任は負いません。
  138.   なお、追加したコマンドのうち、egrepで使っている正規表現マッチングルーチ
  139. ン(re_strcmp)は、ネットワークニュースのcomp.sources.miscに流れていた、
  140. Tasos Kotsikonas氏によるものです(日本語には対応していません)。これに関す
  141. る利用規定はregex.lをご覧下さい。また、getopt.c(オリジナルにも含まれてい
  142. たが置き換えた)とdiffコマンドは、かなり前にPublic domainとして流れていた
  143. もの(の改造)を利用しています。この他、私が追加したファイルの中にも一部、
  144. 昔に本toolsとは別にPublic domainとして配布したものもあるので、それらにつ
  145. いては今回もPublic domainとしています(その旨ソースに記載)。
  146.   UNIXライクなツール群ではありますが、多くは、DOSのシステムコールを使って
  147. いたりするためソースはDOS専用になっています。しかし以下のコマンドについて
  148. は、UNIXでも利用価値があるケースがあるかも知れないと考えたので、UNIXでも
  149. コンパイルできるようになっています。
  150.  
  151.     diff        昔のUNIXのdiffには8ビットを通さないものがあった
  152.     unexpand    expandと同様のtab stopが指定できるよう拡張した
  153.     fecho        BSD styleのechoしかないシステムで使うとよいかも
  154.     head        昔のUNIXにはtailはあるがheadはないものがあった
  155.     od        UNIXのものより一部拡張してある
  156.     split        バイナリsplit可能
  157.     touch        時刻の指定が可能(昔のBSDのtouchはそれができない)
  158.     tr        UNIXのは'\0'が扱えずしばしば不便
  159.     uudecode    出力を直接パイプへ送れる
  160.     uuencode    uudecode共々、昔のUNIXにはこれらがないものがあった
  161.  
  162.  
  163.   オリジナルからVer 2.00へのバグ修正・変更点は以下の通りです(細かいのは他
  164. にもありますが忘れた)。
  165.  
  166.  1) getopt.cの仕様がオリジナルではちょっと特殊だったので、UNIXコンパチの
  167. Public domainのものに置き換えた。その結果、'--' をオプション引数とそうで
  168. ない引数とのセパレータに利用できるようになった。例えば cat -v -- -n a.a 
  169. のような場合、「-n」はオプションとして解析されずにファイル名として扱われ
  170. る。(これに伴って、rm.cでオプション引数の指定が誤っていた場合の処理を改正
  171. した)
  172.  2) catで、誤ったオプションを指定したときのメッセージの出方を、他と揃えて
  173. 若干改正した。また、メッセージの改行が抜けていたので入れた。
  174.  3) wcを新しいものに置き換えた。多分、語数の数え方がUNIXのものに近くなっ
  175. たのではないかと思う。また、旧版wcでは対象ファイルが1つの場合、出力末尾で
  176. 改行されなかったのも直した。
  177.  4) fechoをBSDライクなもの(新製)に置き換えた。
  178.  5) tmanを、環境変数PAGERやMANPATHを見るように若干強化した。
  179.  6) touchを、時刻指定もできるようなもの(新製)に置き換えた。
  180.  7) ls -a /でボリュームファイルも表示するようにした。また、ls -ld /の時の
  181. 時刻表示が妙だったので、とりあえず1980/1/1 00:00を表示するようにした。
  182.  8) lsの出力の後ろに冗長な空白が入らないようにした。lsの出力をエディタで
  183. 編集するときに、予想外の事態が起こるのを防げる(実際、自分自身この空白のた
  184. めにトラブったことがあるためこう直した)。
  185.  9) 環境変数LSWILDALLに何でもいいからセットしておくと、lsのワイルドカード
  186. の展開結果に不可視ファイルも含める。これによって、例えば a.b が不可視のと
  187. き、ls -aとすると a.b も出力されるが、ls -a a.* だと a.b が出力されない、
  188. といった気持ち悪さを解消できる。ただ、逆に-aなしで ls a.* だと「a.b not
  189. exist.」と出てしまうという、別の気持ち悪さが発生するが…
  190.  10) bというファイルが存在するとき、mv a b がエラーになっていた(bを消さず
  191. に、aをbにrenameしようとしていたため)。
  192.  11) mvやcpで「..」をディレクトリだと思ってくれないことがあった。関数get
  193. _file_status()のバグ。
  194.  12) 漢字の混じったファイル名の場合、ごくまれにファイル名の英字が小文字に
  195. ならないことがあった。関数conv_to_unix_format()のバグ。
  196.  13) makedirを、オプション-pを指定しない限り再帰的にディレクトリを作成し
  197. ないように改正した。
  198.  14) wild.cに、extern変数 _dosfind_param を追加した。_dos_findfirstおよび
  199. _dos_findnext関数のパラメータを0x35以外のものに変更できるので、ワイルドカ
  200. ードの展開結果に不可視ファイルやボリュームファイルも含めるようなプログラ
  201. ムが書ける。上記lsのLSWILDALLの仕掛けもこれを使っている。
  202.   但し、ワイルドカードはmain関数実行前に、スタートアップルーチン内で展開
  203. されるようになっているため、main関数の実行開始後に、_dosfind_paramの値を
  204. 設定しても役に立たない。_dosfind_paramの値の変更を有効にしたければ、ワイ
  205. ルドカード展開ルーチンの中で呼ばれている、expand_controlという名前の関数
  206. (通常はこの関数は何もしない関数として定義されている)を別途定義し、その中
  207. で_dosfind_paramの値を設定するようにしなければならない。
  208.  15) 間接引数として「@-」を指定すると、標準入力を取り込んでそれをコマンド
  209. 行引数とする機能を付けた。例えばecho a.c b.h | cat @- なんてことができ、
  210. うまく使えばUNIXのshのバッククォート「` `」機能の代用やxargsコマンドの代
  211. 用として使うことができる。
  212.  16) UNIXライクなコマンドというわけではないが、xeqコマンドを追加した。
  213. stderrのリダイレクトや、ワイルドカードを展開してからの(任意の)コマンド実
  214. 行に使える他、xeqを使えばバッチコマンドの入出力のリダイレクトもできる(但
  215. し出力に、プロンプトや、echo offしない場合のコマンド行表示なども混じって
  216. しまうが)。また、ボリュームラベルの変更コマンドchvolも追加した。
  217.  17) chdがドライブの変更に失敗した(存在しないなどで)場合、エラーとならず
  218. に、ディレクトリだけ変更していたのを直した。
  219.  18) オリジナルの配布には、LSI C試食版のshell.lを改変したものが含まれてい
  220. たが、LSI C試食版の使用条件に「改変されたファイルを含むパッケージの再配布
  221. を禁じます」とあるため、この版ではLSI C3.30試食版オリジナルのshell.lとの
  222. 差分ファイルに差し替えた。もっとも、LSI C試食版の使用条件では「オリジナル
  223. の配布パッケージのうちいくつかのファイルを取り出して改変し、それを元のパ
  224. ッケージに入れ直したもの」の配布を禁ずる、と言っているだけなのかも知れな
  225. い(実際、LSI Cのパッケージ中のファイルを改造したものを組み込んだフリーソ
  226. フトがいくつか配布されている)のだが、ここでは安全側に解釈しておいた。
  227.  19) オリジナルでは、ワイルドカード機能の特殊文字のうち、直後の文字の特別
  228. な意味を消す機能(UNIXのshの「\」)には「%」が使われ、また、「何々にマッチ
  229. しない文字」という機能(grepの「[^…]」記法で使われる「^」に相当)としては
  230. 「%」が使われていたが、昔は前者が「'」、後者が「^」だった。オリジナルの作
  231. 者が、「『'』や『^』がLSI Cのスタートアップルーチンで特殊文字として処理さ
  232. れてしまうため」という理由で両方とも「%」に変更してしまったわけである。し
  233. かしこの版では、それらを元に戻し、逆にLSI Cのスタートアップルーチンで「'」
  234. 「^」を特殊文字として処理しているところをつぶした。(オリジナルのドキュメ
  235. ントを参照)
  236.  
  237.   Ver 2.00から2.01への変更点は以下の通りです。
  238.  
  239.  1) foreachとxeqが、command.comのスイッチキャラクタを「/」に決め打ちして
  240. いたので、スイッチキャラクタをそれ以外の文字に変更しているとバッチコマン
  241. ドが起動できなかった。直した。
  242.  2) lsの-lオプションと-sオプションが同時に効くようにした。
  243.  3) rmが、CTRL-Cで中断されたときカレントディレクトリを変更したままになる
  244. ことがあった(オリジナルからのバグ)のを直した。
  245.  4) testコマンドを追加。これは、オフラインのフロッピードライブにアクセス
  246. しても、Drive not readyの状態にならず、単にそのファイルを存在しないとして
  247. 扱ってくれるので、例えば立ち上げ時にドライブ構成を調べるなどの用途に使え
  248. て便利。
  249.  5) オリジナル時代からのバグで、「間接引数の展開結果が30個を超えると誤動
  250. 作する」というのを直した。これと 9)~14) で、大半のバイナリは作り直しのは
  251. め…。
  252.  6) shell.lに、extern変数 _expand_abendcodeを追加した(初期値は1)。スター
  253. トアップルーチンの中で異常事態になったときのexitコードとして使う。オリジ
  254. ナルでは常にexit(1)していたのだが、異常時のexitコードが問題となるようなコ
  255. マンドでは、いつもexit(1)では困ることがあるので、指定できるようにした。但
  256. し、これの値の変更を有効にしたければ、expand_controlという名前の関数を別
  257. 途定義し、その中で変更するようにしなければならない(変数 _dosfind_paramと
  258. 同じ理由)。
  259.  7) 上の改正を行ったため、expand_controlがもとdosfind_controlという名前だ
  260. ったのを、現在の名前に変えた。そして、wild.manに、変数 _dosfind_param,
  261. _expand_apendcodeと、関数expand_controlの記述が今までなかったので加えた。
  262.  8) cmp, egrep, fgrepの引数エラー時のexitコードを2に統一。6) を利用した。
  263. これまでは引数エラー時はexit(1)していた。
  264.  9) 「[p-rx]」のように、文字選択の中で範囲指定の後に他のものが来ると展開
  265. を誤っていたのを直した(オリジナルのバグ)。
  266.  10) 「{」が閉じてないときなどにエラーメッセージを出し損なっていた。直し
  267. た。スタートアップルーチン内で、まだstderrをfopenしてないのにそこへ書こう
  268. としていたせい(オリジナルのバグ)。
  269.  11) 「{ }」がネストすると展開結果がおかしくなっていた(オリジナルのバグ)
  270. のを直した。
  271.  12) 「[^a-z]a」が「ア」にマッチしていたのを直した。範囲指定の否定の場合、
  272. 漢字の1バイト目かどうか見ていなかったので、「[^a-z]」が「ア」の1バイト目
  273. にマッチしていたせい(オリジナルのバグ)。
  274.  13) 「[^ab]c[de]」のように、文字選択が複数あってそのうちどれかが否定形の
  275. 場合、それ以後も不当に否定形と見なして「[^ab]c[^de]」と解釈されてしまって
  276. いた(これもオリジナルのバグ)。直した。
  277.  14) 「"*"*」のように、クォートされているワイルドカード文字と、されていな
  278. いワイルドカード文字が混在していると、全体を展開してしまうのを直した。こ
  279. れはLSI Cの展開ルーチンがもともとそうなっているせいだが、おそらく、DOSで
  280. は「*」などがファイル名に混ぜられないために「"*"*」を展開するようなケース
  281. は必要ないとみてそうしてあるのだろう。しかしオリジナルでは、それを不十分
  282. にいじったため、「3"*"」のように、文字列の一部だけクォートされてそこにワ
  283. イルドカード文字が混じっている場合にも、全体を展開してしまうという、もっ
  284. と深刻なバグがあった。これも直した。
  285.  
  286.   Ver 2.01から2.02への変更点は以下の通りです。
  287.  
  288.  1) findf, teeコマンドを増発。
  289.  2) lsで、ワイルドカードを含む引数と、含まない小文字の引数とが混じってい
  290. るとファイルのソート順序を誤っていた(オリジナルのバグ)のを直した。
  291.  3) このパッケージが基にしたオリジナルは、冒頭にも書いたように91/12/14版
  292. だが、龍谷大の武田さんからの連絡で、オリジナルは92/1/8版までは更新されて
  293. Niftyに差分が置かれている(多分これが最新版か)ことがわかり、武田さんのご厚
  294. 意でそれを戴いて修正を本パッケージに反映した。しかし、バイナリとドキュメ
  295. ントの差分だけでソースの差分がなかったので、ドキュメントに書いてあった変
  296. 更箇所を基に、それに相当する修正を本パッケージで独立に行った。オリジナル
  297. の91/12/14版から92/1/8版への修正は以下の通り。
  298.  
  299.    a) catにtオプション(テキストモードで入出力する)が付加された。
  300.    b) cpコマンドのaオプションが廃止され、隠しファイルも常にコピーされるよ
  301.       うになった。
  302.    c) cpにpオプションが新設され、これが指定されたときに限りファイルのタイ
  303.       ムスタンプを保存するようになった(従来は常に保存)。
  304.    d) mv, cpがファイルの属性を保存するようになった。但し本パッケージでは
  305.       少し仕様を変更し、cpでコピー先が既存かつpオプション非指定の時には、
  306.       コピー先に元あったファイルの属性が保存されるようにした。
  307.    e) mvが、移動先ファイルが既存のときエラーになっていたバグが修正された
  308.       (これは本パッケージでもVer 2.00時点で既に修正済み)。
  309.    f) makedirが、オプション-pを指定しない限り再帰的にディレクトリを作成し
  310.       ないようになった(これも本パッケージではVer 2.00で対応済み)。
  311.    g) lsも何やら変更されているようだが、これはよくわからない(ドキュメント
  312.       にも記述はない)。
  313.  
  314.  4) catの仕様を若干改正。vオプション指定時には全文字を可視化して出力(例え
  315. ば0x81をM-^Aと表示)し、出力がテキストモードになるようにした。
  316.  5) chmodで、属性変更指示の頭に「u」か「a」を付けてもよくなった。と言って
  317. も、引数解釈をちょっといじっただけで本質的な変更は何もしていないのだが、
  318. chmod u-w file とかできて気分は一層UNIXである。:-)
  319.  6) fechoをSystem Vライクにした(但しエスケープ文字は「\」でなく「'」)。任
  320. 意のASCIIコードの文字を手軽に出力したいケースは結構多いので。BSDタイプが
  321. お好きな方は、ソース中の #define SYSV_STYLEを消して再コンパイルされたし:-)
  322.  7) 正規表現比較ルーチンをちょっといじって、egrepを少しだけ速くした。でも
  323. まだまだ遅い:-(
  324.  8) 時によって「a???????」が「a」にマッチすることがあったのを直した(オリ
  325. ジナルのバグ)。「?」のマッチを検査するとき、ファイル名の末尾に来ているか
  326. チェックせずに単にポインタだけ進めるため、メモリ上でたまたまそれ以降に来
  327. ている文字列に、ワイルドカードの残りがマッチしてしまっていたのが原因。こ
  328. れと 10) 17) 18) でまたまたほとんどのバイナリを作り直しのはめ:-(
  329.  9) オリジナル時代から、lsのsオプションのブロックサイズは1024が用いられて
  330. いたが、どうせHDのクラスタサイズは1024とは限らないので特に1024にしておく
  331. 理由はないと判断し、tail・findf及びUNIXと揃えるためブロックサイズを512に
  332. 変えた。
  333.  10) toolsはオリジナル時代から、引数にコントロール文字が混じることを許し
  334. ていないが、従来はクォートの中ではその検査をしていなかった(従ってその後の
  335. 段階で不適切なエラーメッセージを出していた)のを検査するよう強化した。
  336.  11) DOSのシステムコール0x60(非公開)の戻り値のチェックを忘れていたため、
  337. mvやcpが変なエラーを出すことがあったのを直した(オリジナルのバグ)。
  338.  12) LSI Cのexecvp()には、a.batが存在するとき、execvp("a.bat", …)とする
  339. と暴走するという変な性質があるため、xeqコマンドはxeq a.batなどとすると暴
  340. 走していた。これを直した。
  341.  13) lsをカラー化した。阪大の片岡さんのものを仕様だけ参考にしている(しか
  342. し、端末出力時のデフォルトをカラーにはしなかった)。
  343.  14) catのバッファサイズを、N・nオプションで出力する行番号の分を考えずに
  344. 決めていたため、N・nオプションを使うとcatが異常動作することがあった(PRUG
  345. の福間さんからの報告)バグを直した。これはオリジナルからのバグだが、v2.00
  346. 以後では、より現れやすい状況になっていた。ついでにcatは大幅に書き直した。
  347.  15) LSI-C 3.30cでは、DOSのシステムコール0x5aでオープンした一時ファイルを
  348. fdopenすると、なぜかそれに書き込めない(ライブラリのバグだそうである)ため、
  349. sortでオンメモリに収まらないファイルをソートしようとすると、一時ファイル
  350. への書き込みができず実行に失敗していた。とりあえず対症療法で直した。
  351.  16) sortが一時ファイルへの書き込みに失敗したとき、それを消さずに終了して
  352. いたのを、消すようにした。
  353.  17) ファイル名の先頭の「_」はワイルドカードにマッチしない仕様だが、先頭
  354. 以外の「_」もマッチの対象から外れることがあった。例えば「*?a」が「a_a」に
  355. マッチしなかった(オリジナルのバグ)。これを直した。
  356.  18) ワイルドカードのマッチの検査をするライブラリ関数、string_match()がユ
  357. ーザに提供されているが、ファイル名の先頭が「.」の場合(要するに「.」と
  358. 「..」)を除外する処理はこの関数の外で行われており、string_match()自体は
  359. 「*」を「.」にマッチさせていたため、これをユーザプログラム中で使うと期待
  360. 通りの結果にならないことがあった。また、ファイル名の先頭が「.」の場合を除
  361. く処理は無条件に行われていたため、「ls .*」とやっても「.」と「..」のリス
  362. トが得られず「No match.」となっていた(以上オリジナルのバグ)。これらを直し
  363. た。
  364.  19) 「[0-a]」のような範囲比較は、従来大文字に変換して行われていたが、自
  365. 分の好みで、小文字で比較するように変えた。
  366.  20) 「[&--]」のようなケースがちゃんと「'&'から'-'までの任意の文字」と解
  367. 釈されるようにした。オリジナルではエラーになっていた。
  368.  21) ワイルドカードを解釈しないコマンドについては、tinymain.objを修正して
  369. 作ったonlydquo.objをリンクするようにした。「" "」による空白などのクォート
  370. はしばしば、ある方が便利と感じるが、noexpand.objのそれ以外の機能(「^」に
  371. よる1文字クォートなど)はしばしば余計なお世話と感じるため。ちなみに、この
  372. onlydquo.objは、拙作のdsharというアーカイバ(バッチファイル形式のテキスト
  373. ファイルの自己解凍アーカイブを生成するソフト)の開発に使ったのと同じもの。
  374.  22) _wildcard_check_nomatchを0にしても、texpand.cの中で常に「No match.」
  375. のチェックをしていたバグを直した。
  376.  23) 間接引数を例えば「@a.dat」のように使ったとき、a.batの中身が空だと、
  377. これまでは「@a.dat」という引数を追加していた。これを、何も追加しないよう
  378. に改めた。
  379.  
  380.   Ver 2.02から2.03への変更点は以下の通りです。
  381.  
  382.  1) odコマンドを増発。
  383.  2) chmodに、属性変更に失敗しない限り何も表示しないオプション-nを追加。
  384.  3) dfを書き直した。デフォルトでは残り容量をKB単位で表示する、substのパス
  385. 名が長い場合に表示の縦がずれないように表示を2行に分ける、join先を見つけら
  386. れないことがある不具合が直った、などの修正点あり。
  387.  4) システムによっては、「.」や「..」で終わるパス名を、属性0x37で_dos_
  388. findfirstした時attribに0x40のビットが立つものがあるようだ(RAMディスクなど
  389. だとそうなる?)。ls, findf, testは従来、attribに0x40ビットが立っていたらデ
  390. バイスファイルと見なしていたため、このような状況下では、ディレクトリをデ
  391. バイスファイルと誤認することがあった。しょうがないので、そのような場合を
  392. 特別扱いして修正したが、直ったかなあ? 新たな問題を生まないかなあ?
  393.  5) src/man/an.fmaから、なぜあるのかわからない「.ww」の記述を外した。
  394.  6) toolsのワイルドカード展開ルーチンは、従来展開結果を大文字のままにして
  395. いた。エラーメッセージなどでファイル名を小文字にするのは個々のコマンドが
  396. やっていたのである。これはいろいろな面でうっとうしいので、ワイルドカード
  397. の展開結果が小文字になるように改正した。例えばfecho A b * とやると、「*」
  398. の展開結果は小文字になる。むろん「A」は大文字のまま。
  399.  7) splitは、実際にファイルを出力する必要が出るまではファイルをオープンし
  400. ないようにした。また、バイナリ分割のサイズを8進でも指定できるようにし、つ
  401. いでに、これまでバイナリ分割のサイズを16進の大文字で指定するとサイズの計
  402. 算を誤っていたバグを直した。さらに、新設の-vオプションで、生成したファイ
  403. ル名の表示を行うようにした。
  404.  8) cdateの表示が2039年以降でおかしくなるのを直した。LSI-Cのtime関係のル
  405. ーチンにバグがあるせいらしい。touchにも同様のバグがあった。
  406.  9) ハードディスクのFORMAT時に付けるラベルや、一部のソフトの出荷ディスク
  407. では、小文字の混じった変なボリュームラベルが見られるようだが、そのような
  408. ディスクでls -la / としてもボリュームファイルが「not exist」とならないよ
  409. うにした。但し、表示されるボリュームファイル名は全部小文字に直される。な
  410. お、この「変なボリュームラベル」に対処しているのはlsだけであり、他コマン
  411. ド(chvolやtouchなど)は特に何もしていない。
  412.  10) touchは、オプション-dを指定するとディレクトリやボリュームラベルのタ
  413. イムスタンプ設定も行えるようになった。但し、mvやcpがディレクトリのタイム
  414. スタンプ設定をしない点は元のままで、直していない。
  415.  11) 細かいことだが、sortが環境変数TMPとTEMPの双方を見ているのに合わせて、
  416. diffもTMPとTEMPを見るようにした。これまではdiffはTMPしか見ていなかった。
  417.  12) 2.01から2.02への変更点3-bで、副産物として「ルートディレクトリを他の
  418. ディレクトリへ再帰的にcpかmvすると、移動先のディレクトリの属性が変になる」
  419. というバグを生んでいた。直した。
  420.  13) catに-gオプション追加。PC98専用で、出力中はグラフィック文字表示モー
  421. ドに切り替わる。
  422.  14) whichの探索順序がbat com exeだったのを、command.comに揃えてcom exe
  423. batに修正(龍谷大の小林さんからの指摘)。
  424.  
  425.   Ver 2.03から2.04への変更点は以下の通りです。
  426.  
  427.  1) expand, unexpand, fold, tr, cal, uuencode, uudecodeを増発(後3者はソー
  428. スのみの提供)。また、UNIXライクなコマンドというわけではないが、日本語文字
  429. コードコンバータyakcを追加した。
  430.  2) コマンドが増えてアーカイブが膨れ上がったのを少しでも緩和するため、利
  431. 用の少ないと思われるchvolを、ソースのみの提供に格下げした。
  432.  3) catに-Tオプション追加。テキストファイルの行末をCR LFからLFだけに変え
  433. る用途に使えるようになった(逆は従来でも可能)。
  434.  4) fechoが「'v」でバックスペースを出力していたのを、「'b」でバックスペー
  435. ス、「'v」で垂直タブを出力するよう訂正し、さらに「'a」でベル文字を出力す
  436. る機能を追加。また、最後以外の引数が「'c」で終わっていたらそこで空白を置
  437. かずに次の引数の出力を開始するよう拡張した。
  438.  5) cp, mvに-uオプション追加。コピー(移動)先に存在するファイルより新しい
  439. ものだけをコピー(移動)できるようになった。
  440.  6) 旧スタイルonlyのC処理系でのコンパイル(UNIX上で試作したりlintを取った
  441. りするとき)などにANSI C形式では何かと不便も多いので、LSI Cのソースへのパ
  442. ッチ当てでできるonlydquo.c, shell.lを除き、全ソースをK&Rスタイルに変更。
  443.  7) cdateの仕様をUNIX SystemVのdateに揃えて改正。また、出力のフォーマット
  444. も指定できるようになった。
  445.  
  446.   Ver 2.04から2.05への変更点は以下の通りです。
  447.  
  448.  1) cshに合わせて、ワイルドカードを含む引数が複数ある場合、そのうち1つで
  449. も実際のファイル名にマッチしたものがあれば、「No match.」にならないよう修
  450. 正(ニコンの河野さん提供のパッチをもとにしました)。
  451.  2) いくつかのコマンドは、ソース中に、nulファイルをオープンできることを前
  452. 提とした書き方があったが、ネットワークドライブなどでそれができない場合が
  453. あるらしいので、当該箇所を書き換えた。その結果、これまでls, findf, testが
  454. ネットワークドライブなどのルートディレクトリを正常に処理できなかったバグ
  455. が修正できた(はず)。
  456.  3) diffが比較的小さな入力でもメモリ溢れを起こすのを防ぐため、一部のデー
  457. タメモリの割り当てをfar mallocに改正。
  458.  4) odでC, Sオプションを指定したとき、同一データの省略を、これまでは常に、
  459. 出力行の連続する複数行で同一データが現れるときとしていたが、これでは、出
  460. 力行の最後が2バイト文字の1バイト目である場合、その文字の2バイト目、つまり
  461. 次の行の最初のバイトが異なっていても同一データとして省略してしまう(ちなみ
  462. に、一部のUNIXシステムのodにも同じ欠点がある)。これを直した。また、引数の
  463. オフセット指定の後ろに「B」を指定すると単位を512バイトでなく1024バイトで
  464. 数えるようにした。さらに、左端に表示するオフセットが7桁を越えた場合下7桁
  465. だけ表示するようにした。
  466.  5) chdが、環境変数CDPATHに漢字混じりのディレクトリがあるとき処理を誤るこ
  467. とがあったのを直した。また、ワイルドカードを不当に2回展開していたのを直し
  468. た。
  469.  
  470.   Ver 2.05から2.06への変更点は以下の通りです。
  471.  
  472.  1) 2.04から2.05への変更点2で修正した、ls, findf, testにエンバグしてしま
  473. っていた。具体的には、カレント以外のドライブをアクセスすると、そのドライ
  474. ブのカレントディレクトリを不当に変更していた。直した(東工大の上野さんのパ
  475. ッチをそのまま使わせていただきました)。
  476.  2) 画面制御エスケープシーケンスの解釈の機種によるばらつきから、システム
  477. によってはls -cでボリュームラベルを表示した後に背景色が変わってしまうこと
  478. があったのを直した(これも東工大の上野さんのパッチによります)。
  479.  3) cp, mv, rmに-iオプションを指定したとき、y/nの応答後リターンキーを待た
  480. ずに動作していた(オリジナル時代からこうなっていた)が、UNIXに揃えて、リタ
  481. ーンキーを待つように修正した。元のままがいい人は、ソースを書き直して再コ
  482. ンパイルされたし:-) (1箇所書き直すだけでできるようにしてあります)
  483.  4) ls -U fileA fileB …とした時、出力はfileA fileB …のようになるべきだ
  484. が、逆になっていた。直した(日本ベーレー(株)の高橋さんの指摘によります)。
  485.  
  486.   Ver 2.06以降の変更点は以下の通りです。
  487.  
  488.  1) unexpand -aで、タブストップちょうどの位置以外にTABがあると処理を誤って
  489. いた。
  490.  2) yakcで、入力コードを自動判定にし、入力をテキストモードにすると、漢字
  491. が現れるまでは行末のCRを捨てていなかった。これを直した。
  492.  3) 一旦ソースのみに格下げしたchvolだが、ユーザにお叱りを受けたので、実行
  493. ファイルを復活させた。
  494.  
  495.   現時点でわかっている(けれど放ってある)バグには以下のものがあります。
  496.  
  497.  1) ワイルドカード展開ルーチンを使うとき、_wildcard_check_nomatchを0にす
  498. ると、「"c".*」という引数は、マッチするファイルがなかったら「c.*」に展開
  499. されるべきだが、現在のところ元のままの「"c".*」になってしまう。但し、これ
  500. はライブラリのバグであり、コマンド自体には、_wildcard_check_nomatchを0に
  501. しているものは今のところないので、このバグは出現しないはず。
  502.  
  503.   また、現時点までに報告されているが、作者が該当する環境を持たないため確
  504. 認できず、従って直せないバグに、以下のものがあります。だれか確認or直して
  505. くれないかな…(直せたらぜひご連絡下さい)
  506.  
  507.  1) フロッピードライブが1つの機種で、そのドライブがオフラインの状態でdfす
  508. ると、フロッピーの挿入を要求するOSからのメッセージが出て止まってしまう。
  509.  
  510.   この他にもバグを発見された方がおられましたら、インターネットニュースの
  511. fj.binaries.msdos.dか、電子メールでnide@ics.nara-wu.ac.jpまでお知らせ下さ
  512. い。環境、具体的な症状などを詳しくお知らせ頂けるほうがありがたいです。
  513.   最後に、有用なソフトウェアを作成し公開して下さった原作者・斎藤靖さんを
  514. はじめ、このパッケージで利用したルーチンやソフトの作者、またコンパイルに
  515. 利用したLSI C-86試食版を公開して下さったエル・エス・アイ ジャパンさんに感
  516. 謝します。また、オリジナルの最新版を送って下さった武田さん、バグ修正パッ
  517. チを送って下さったニコンの河野さんや東工大の上野さんをはじめ、本パッケー
  518. ジの修正やバグ発見に協力下さった方々にも感謝します。
  519.  
  520. (以下はオリジナルのreadme.docです)
  521. ------------------------------------------------------------------------
  522.                            UNIX toolsについて
  523.  
  524.                                                                   斎藤靖
  525.                                               yasushi@is.s.u-tokyo.ac.jp
  526.                                                   PBA02641 (Nifty serve)
  527.  
  528.                                      last updated : Sat Dec 14 08:53:33
  529. 1991
  530.  
  531.   UNIXでよく使われる基本的なプログラムをMSDOSの上に実装したものです. ど
  532. のプログラムもwild.cというcsh風のワイルドカードを展開するモジュールをリ
  533. ンクしているので, かなり本物に近い使い心地を持っていると思います. 加えて
  534. @FILEの形で, FILEの中味をコマンド行引数として取り込む機能(レスポンスファ
  535. イルあるいは間接引数)も一部のコマンド(ls, cp, mv, rm)はサポートしていま
  536. す.
  537.  
  538. * 利用環境
  539.  
  540.   MSDOS(v2.1以降)が動けば機種は選びません. 少なくともM500とPC9801VX, で
  541. 動くことを確認していますが, 他機種でも問題なく動くでしょう.
  542.  
  543. * 使用/配布規定
  544.  
  545.   ソースと実行ファイルとでは利用/配布規定が異なります. 注意して下さい.
  546.  
  547. - ソースの利用/配布規定
  548.  
  549.     このパッケージに含まれているソースプログラム/ ドキュメントの大部分は
  550.   斎藤靖によって書かれました. 斎藤靖によって書かれたソースについては配布
  551.   規定を以下のように定めます.
  552.  
  553.         これらのプログラムを使用した結果, あるいは使用できなかった結果生
  554.       じる損害に対して, 作者は責任を持ちません(バグ/要望にはできるだけ対
  555.       処しますがこれも作者の義務ではありません). 利用者各自が責任を持っ
  556.       て使って下さい.
  557.         このパッケージの一部を他プログラムに組み込んだもの(例えばwild.c
  558.       やgetopt.cを他プログラムとリンクする場合)を配布あるいは販売する
  559.       場合には, プログラム(のソース)は元々斎藤靖によって書かれたものであ
  560.       り, プログラムについて斎藤靖は責任を負わないということを説明書に明
  561.       記して下さい.
  562.  
  563.         上を守るかぎり, これらのプログラムの使用, 改造, あるいは再配布/
  564.       販売に制限はありません.
  565.  
  566.     ls.cとtouch.cの2つは各々前田@東大(kaoru@is.s.u-tokyo.ac.jp), 片岡@阪
  567.   大(kataoka@ics.osaka-u.ac.jp) (敬称略)の作ったものをベースにしています
  568.   . この2つについてはpublic domainである旨ソース中に書いてあります.
  569.  
  570. - 実行ファイルの利用/配布規定
  571.  
  572.     実行ファイルの配布についてはLSI-C試食版の配布規定にしたがいます.
  573.   LSI-C試食版のread.meファイルから関連記事を抜粋します.
  574.  
  575.  
  576.       (本パッケージを使用して作成したプログラム)
  577.  
  578.         本パッケージ(LSI-C試食版)を使用して作成したプログラムは、自由に
  579.       配布することができます。その際に手数料と認められる額を超える金銭の
  580.       授受を禁じます。利益を得るためのソフトウェアの開発には、別途製品版
  581.       の LSI C-86 をご購入の上、ご利用ください。
  582.  
  583.       (無保証)
  584.  
  585.         エル・エス・アイ ジャパン(株)は、本パッケージの使用に関連して
  586.       発生するいかなる損害についても責を負いません。また、バグの修正や、
  587.       バージョンアップの責務も負いません。
  588.  
  589.  
  590.   プログラムの最新版は当面utsun.s.u-tokyo.ac.jp (133.11.11.11)の
  591. anonymous ftp(fj/unixtools/)を通じて配布することにします. とは言っても気
  592. まぐれで他所にアップロードすることもあるかもしれません.
  593.  
  594. * パッケージの内容
  595.  
  596.   toolsexe.lzh, toolssrc.lzhという2つのパッケージに分けて配布されます.
  597. toolsexe.lzhは実行ファイルと整形済みドキュメントをパックしたものです.
  598. toolssrc.lzhはソースファイルとfinのドキュメントソースをパックしたもので
  599. す.
  600.  
  601.   次のコマンドが含まれています.
  602.  
  603.   rm, mv, cp, chd, ls, wc, tail, cat, which, touch, makedir
  604.  
  605.   各々, UNIXの同名コマンドとほぼ同じ働きをします.  ちなみにchdとはcd,
  606. makedirはmkdirに各々対応するコマンド名です.  コマンド別名定義をサポート
  607. するコマンドインタプリタを使っている場合には(例えばksh, history等)cd,
  608. mkdir(md)に別名定義するのが良いでしょう.
  609.  
  610.   各コマンドの使い方については, tools.doc を読んで下さい.
  611.  
  612.  
  613. * ファイル
  614.  
  615.   実行ファイルとそれらのソース, そしてマニュアル類を含みます.
  616.  
  617.   *.exe         :  実行ファイル
  618.   shell.l       : LSI-Cの配布にあるものを改変した
  619.   texpand.c     : LSI-C用スタートアップルーチン. 
  620.   wild.[ch]     : ワイルドカード展開ルーチン
  621.   setarg.c      : 間接ファイル展開ルーチン
  622.   getopt.c      : コマンド行オプションの解釈
  623.   nameconv.[lh] : 各種のパス名変換ルーチン
  624.   misc.[ch]     : その他, 複数のプログラムから共通に使われるルーチン
  625.   eq.c          : 2つのパス名が同じファイルを指しているかどうかを
  626.                   文字列比較のみから判定する
  627.   fecho.c       : ワイルドカードをサポートするecho. wild.cのテスト用
  628.   tman.c        : 非常に簡単なman. fecho.exeとtman.exeはソースのみの
  629.                   提供. 
  630.  
  631.   上以外の*.c,*.h: 各プログラムのソース
  632.  
  633.   Makefile      : LSI-C用のmakefile.
  634.   makedep       : makedependをperlで作ったもの. 
  635.                   ちょっと頭が悪いけどtools位には使える. 
  636.                   当然ながらperlが必要. 
  637.  
  638.   readme.doc    : このファイル
  639.   doc/man.fin   : tools.finから読みこまれる. 一応manマクロをまねしている
  640.                   が, 分からない所は適当に書いている. 
  641.   doc/*.fin     : 各プログラムのマニュアル. finで書かれている. 
  642.   doc/tools.man : *.finをフォーマットした結果のファイル
  643.  
  644. * インストール方法
  645.  
  646.   LSI-C(試食版)でコンパイルされることを意図しています。MakefileはLSI-C
  647. 付属のmake用のものです.
  648.  
  649.   'make'で実行ファイルが生成されます.
  650.   'make install'で, 生成された実行ファイルを実行ディレクトリにインストー
  651. ルします. その時にはMakefile中のINSTALL_DIRマクロを 書きかえておいて下さ
  652. い.
  653.  
  654. * 前版からの変更点
  655.  
  656.   (ちなみに「前版」とは一年程前にfj.binaries.msdosにポストされたもの
  657. [v002i0207-210]を指します)
  658.  
  659. - パス名の解釈をよりUNIXに近づけた. /usr//localのように, パスの区切りに
  660.   /(あるいは\)を複数書ける. また, /usr/local/ のように, 最後にパス区切り
  661.   を書いた場合には, そのパスがディレクトリであった場合に限って解釈に成功
  662.   する.
  663. - '~'をホームディレクトリに展開するようになった.
  664. - rmに-fオプションが付いた. また, -iでは, 全ファイルに対してy/nを聞くよ
  665.   うになった.
  666. - rm -rの時に, 消去対象ディレクトリに対して, 'del *.*'に相当する動作を行
  667.   うことにより消去の速度を上げた. 逆に一瞬でディレクトリを消去してしまう
  668.   ので使用には細心の注意が必要.
  669. - ls -d .が正しく動くようになった. これまでは,  -d .の時は-dは無視されて
  670.   いた.
  671. - lsに-X(サイズ順にソート), -S(ソートしない)を追加.
  672. - mv -f の時, 移動先ファイルが書き込み禁止の時に移動できなかったのを直し
  673.   た.
  674. - mvで, 異なるディスクに同じ名前で移動しようとした時にエラーになっていた
  675.   のを直した.
  676. - mvで再帰的移動のチェックがおかしかったのを直した.
  677. - chdで, '..'などが指定された時にはCDPATHを見ないようにした
  678. - wild.cをコンパイルする時にSORT_ENTRYを指定すると, ファイル名をソートし
  679.   て出力するようになった.
  680. - wild.cを, _dos_findfirst, findnextを用いて書き直した結果, スタック使用
  681.   量が減り, 1ディレクトリ中のファイル数の制限も無くなった.
  682. - wild.cで, 頭に_が付くファイルを, UNIXで'.emacs', '.login'のようにワイ
  683.   ルドカード照合の時に無視するようにした. 例えば, '_emacs'は, *にはマッ
  684.   チしない. _*, _*.elにはマッチする. IGNORE_UNDERSCORE_FILESを指定すると
  685.   この機能が有効になる.
  686. - which, touchが加わった. touchは阪大の片岡さん作のOS/2用touchを元にして
  687.   いる.
  688. - コンパイラをLSI-Cに変更した. MS-Cでも通るとは思うが..
  689. - ls -tが正しく動かなかった.
  690. - 漢字を含むファイルを正しくあつかえるよう努力したつもり. 昔は 'cp file
  691.   表'とかやるとエラーになっていた.
  692. - cat, tailなどで, 出力時エラーのチェックを行うようにした.
  693. - setarg.cでまれにメモリを壊す可能性があったのを直した.(91/3/1)
  694. - ワイルドカードのメタ文字が一部変更になった. '(直後の文字の働きを殺す
  695.   :UNIXの\)は%に, [^...](UNIXのワイルドカードの機能ではないがgrep等でサ
  696.   ポートされている.  ... に含まれない文字にマッチする)は[%...]に変更にな
  697.   った.  これは, LSI-Cのスタートアップルーチンが'や^を特殊文字として処理
  698.   してしまうため. しくしく. 本当はwild.cをスタートアップルーチンとして実
  699.   現するのが正しいと思う. でも面倒臭い. (91/3/3)
  700. - その他各種バグの修正
  701.  
  702.   バグ発見にはfj.binaries.msdos.d, NIFTY serveのユーザ等からのレポートに
  703. 非常に助けていただきました. ここで感謝します.
  704.  
  705. *  91-03-08(fj.binaries.msdosポスト)以降の変更履歴
  706.  
  707. 91-12-11
  708.  
  709.   cp,mvに-b(バックアップ)を付けた. lsに-X(拡張子順にソート)を付けた
  710.  
  711. 91-12-06
  712.  
  713.   GNU fileutilsに合わせて, lsの-X -> -Bに, -S -> -Uに変更. catをバイナリ
  714. ファイルが一応あつかえるようにした. -vとか-lを付けなければ, バイナリ
  715. ファイルのcatもできる. 
  716.  
  717. 91-11-24 10:25:00
  718.  
  719.   cpで, たとえばasdfというディレクトリがあった時にcp -r asdf asdfとや
  720. ると無限にasdf/asdf/asdf/...というディレクトリを作り続けてしまっていた.
  721. mvは大丈夫だった. 
  722.  
  723. 91-11-17 11:47:00
  724.  
  725.   cp, mv等で'/'(root)がディレクトリだと思ってくれなかった.  lsi-c 3.3
  726. 用にソースを書きかえ. スタートアップルーチンのソースが付いているので,
  727. wild.cやsetarg.cをスタートアップルーチン側に移す. 
  728.  
  729. 91-09-01 09:20:00 (yasushi saito)
  730.  
  731.   cp, mv等で現ディレクトリがルートで, 移動先ディレトリとして'.'を指定
  732. した時に, '.'を通常ファイルだと思ってしまうことがあった. これは
  733. get_file_statusのバグ
  734.  
  735. 91-05-16 01:32:00 (yasushi saito)
  736.  
  737.   wild.cでワイルドカードの展開に失敗した時には
  738. "No match."っていって死ぬようにした
  739.  
  740. 91-05-02 00:32:00 (yasushi saito)
  741.  
  742.   setargで引数の区切りをスペースにした. 
  743.   cpで, mv同様コピー先ファイルとコピー元ファイルが
  744. 等しい時にエラーを出すようにした. 
  745.  
  746. 91-04-22 10:16:00 (yasushi saito)
  747.  
  748.   マニュアルの表記を日本語にした(ここでniftyにアップロード)
  749.  
  750. 91-04-19 23:30:00 (yasushi saito)
  751.  
  752.   tailが-cオプションの時に長さを正しく数えられないことが
  753. あった:-(. tailで^Zを含んだファイルを出力すると書き込みエラーを
  754. 出すことがあったのを修正
  755.  
  756.   makedirを追加
  757.  
  758. 91-04-18 00:07:00 (yasushi saito)
  759.  
  760.   (小山富夫さんによる) wcでファイルの大きさが32Kを越えた時にサイズが0
  761. になるバグ修正. ついでに, 0d0a改行コードの処理に関連してファイルの大き
  762. さが実際の大きさより小さく表示されるバグを修正
  763.  
  764. 91-04-06 11:53:00 (yasushi saito)
  765.  
  766.   misc.c, eq.cをnameconv.cに合併. nameconv.cから各種.objファイルを生成
  767. しlibでアーカイブするようにした. 
  768.  
  769.   Makefileを短く書きかえた. 
  770.  
  771. 91-03-10 20:00:15 (yasushi saito)
  772.  
  773.   toolssrc.lzhのパッケージにtconfig.h,nameconv.cが入っていなかったとい
  774. う大ボケ判明. 
  775.  
  776. 91-03-08 0:51:30 (yasushi saito)
  777.  
  778.   chdで環境変数CDPATHを使ってchdirした場合には移動先を標準出力に表示す
  779. るようにした. 
  780.  
  781.   which -aがうまく動いていなかった. 
  782.  
  783.   whichでコマンドが見つからなかった時の, 現在パスの出力方法をUNIXと同
  784. じものに変えた. 
  785.