/*
                      LHsep.X/EXE         Version 1.00

             LZH ファイルを展開することなく複数の LZH ファイルに
             分割するツール

                                 X680x0版/MSDOS版 共通ドキュメント

         Copyright (C) 1995        田辺 英昭 (Hideaki `ArctanX' TANABE)
*/

------------------------------------------------------------------------------

1. はじめに〜本プログラムの特徴

  こんにちは、ArctanX です。

  本プログラムは LZH ファイルを展開することなく、圧縮されたまま個々のファイ
ルに分割するためのツールです。利用分野は・・・探してみて下さい(笑)。私は
LZH ファイルを分割した後、必要なものだけを取捨選択して、必要ならソートするな
どしてから、拙作 LHlk(LZH linker)でリンクして新しい LZH を再構築するために
作りました。他にも活用できる使い方があるかも知れません。

------------------------------------------------------------------------------

2. インストールの方法

  このドキュメントの含まれている LHSP100X.LZH (あるいは LHSP100D.LZH)を解
凍して下さい。中に含まれている LHsep.X(あるいは LHSEP.EXE)をパスの通ってい
るところにコピーすればおしまいです。チャイルドプロセスで別のプログラムを呼ん
だりはしていないので、その辺は気にしなくて大丈夫です。

------------------------------------------------------------------------------

3. 本プログラムの使い方

3.1) ヘルプの表示方法

lhsep[CR] あるいは lhsep -h[CR] でヘルプが出てきます。
------------------------------------------------------------------------------
C:\>lhsep
lhsep - LZH separater   Version 1.00  (1995/05/08)
Copyright (C) 1995      田辺 英昭 (Hideaki `ArctanX' TANABE)
                        KFA05024@niftyserve.or.jp
Usage  : lhsep [Option(s)]  [Option(s)]
Func   :  で指定される LZH ファイル群をバラバラにして、
         個別の LZH に分割します。
Option : -f (--force)........ 拡張子が LZH でなくても作業します。
         -h (--help)......... このヘルプを表示します。
         -i (--ignore)....... LZH ファイルでなくても作業します(要注意)。
         -q (--quiet)........ 画面に表示されるメッセージを抑制します。
         -R (--recursive).... サブディレクトリも検索します。
         -v (--verbose)...... バーボーズモードです。
                              指定する個数でバーボーズレベルが変化します。
         -V (--version)...... このプログラムのバージョンを表示します。
etc    : 拡張子 LZH は省略できます。ワイルドカード、
         インダイレクトファイル(@filename) 対応です。
         オプションは -fvR のように続けて指定することもできます。
------------------------------------------------------------------------------

3.2) オプションの説明

3.2.1) -f (--force) オプション

  デフォルトでは拡張子が LZH 以外のファイルは無視しますが、このオプションを
つけると拡張子が LZH 以外でも作業の対象にします。ただし、本当に LZH ファイル
かどうかを内部で簡単にチェックしていますので、そのチェックに引っ掛かってしまっ
た場合は、やはり作業の対象にはなりません。どうしても作業の対象にしたい場合に
は後述の -i (--ignore) オプションを使います。
  また、本オプションをつけていると、ファイルの上書き確認がスキップされて、強
制的に上書きされます。

3.2.2) -h (--help) オプション

  前述のヘルプが表示されます。

3.2.3) -i (--ignore) オプション

  デフォルトでは内部の LZH チェックルーチンをクリアできないファイルは LZH ファ
イルとして認められないので作業の対象となりませんが、本オプションをつけると、
それらのチェックを殺すことができます。すなわち、どのようなファイルでも作業の
対象にできます。

  本プログラムでは、明らかに LZH ファイルでないものや、LZH ファイルであって
も圧縮方法が -lzs- / -lz4- / -lz5- / -lh6- / -lh7- のものは、私の環境で動作
確認が取れないため、チェックルーチンをクリアできないようになっています。しか
し、-lh6- / -lh7- などの LZH ファイルは正常動作がある程度期待されるので、本
オプションをつけて試してみる価値はあります。

  しかし、本オプションを使うと全く関係のないテキストファイルや実行ファイル等
を分割しようとしてしまうので(元ファイルを壊してしまう可能性は極めて低いです
が)、-i を指定する場合には、本当に関係のないファイルが処理の対象とならない
ように、ファイル名をワイルドカードで指定する場合等、十分注意して下さい。

3.2.4) -q (--quiet) / -v (--verbose) オプション

  -v / -q オプションでバーボーズレベルを上げ下げできます。-v で上がり、 -q 
で下がります。複数指定することもできます。バーボーズレベルとは、作業中にどの
程度詳しく(お節介に?)メッセージを出すかを制御するものです。何もオプション
をつけないとバーボーズレベルは 1 で、これがデフォルトとなります。

レベル  オプション  内容
---------------------------------------------------------------------
   0        -q      エラーが出ても何も表示されない。
   1       なし     エラーメッセージだけ表示される。
   2        -v      エラーメッセージと作業内容が表示される。
   3       -vv      エラーメッセージと作業内容が詳しく表示される。
  (4)     (-vvv)    レベル 3 + デバッグ用のメッセージまで表示される。
---------------------------------------------------------------------

  レベル 4 (-vvv オプション) はデバッグ用なので、普段は使う必要はありません。
誤動作する場合等にバグレポートをして戴く際に、動作ログを取るために使います。
-vv までのエラーメッセージ等に納得できない場合には、-vvv を指定してみると何
かわかるかも知れません。

3.2.5) -R (--recursive) オプション

  サブディレクトリにあるファイルも検索して、処理の対象にします。

3.2.6) -V (--version) オプション

  本プログラムのバージョン番号や作者名や制作年月日等が表示されます。

3.2.7) その他

  オプションは -tvR のように続けて指定できます。さらに Usage 中のカッコ内の
ようにして、ロングオプションを指定することもできます。例えば、-h の代わりに
--help のように記述できます(ロングオプションを続けて記述することはできませ
ん)。ロングオプションは他のロングオプションと区別がつくところまで指定すれば
正しく機能します。例えば --vers だけで --verbose とは区別できるので、 
--version と認識できます。

3.3) パラメータ 

  分割したい LZH ファイル名をここで指定します。複数指定することができます。
既存のファイル以外は指定できません。LZH ファイルかどうかをチェックしています。
  ファイル末尾にゴミデータがついていたり、ファイル先頭に Macintosh ヘッダが
ついている場合は、それらは自動的に無視されます。
  拡張子を省略した場合は LZH が補われます。また LHA の書庫でないファイルの拡
張子を LZH にしても、内部で簡単なチェックをしているので、(多分)問題ないと
思います。ただし、チェックはあくまで簡単なものですから、過信は禁物です。関係
ないファイルを破壊されたりしないように、作業は慎重に行い、大事なファイルを扱
う時にはバックアップを取りましょう。
  ワイルドカードは(シェルが展開してくれる処理系でなければ)csh ライクなもの
を内蔵しています。したがって、'*.*' を指定すると、ピリオドのないファイルにマッ
チしなくなってしまうので、全てのファイルにマッチさせたい場合には '*' を指定
して下さい。

3.4) 生成される書庫について

  本バージョンでは分割されて生成される LZH ファイルは全てカレントディレクト
リに作成されます。ファイル名は書庫内にエントリされているファイル名がそのまま
使用されます。すなわち、TEST.LZH の中に TEST.DOC と TEST.TXT が入っている場
合、分割されたファイルは「圧縮ファイルにも関わらず」 TEST.DOC と TEST.TXT に
なります。したがって本当に展開したい場合には「A:\>lha x TEST.DOC」などとやる
ことになるわけです。圧縮ファイルであることがわかるように拡張子だけ LZH にす
ることも検討しましたが、前述の例だと TEST.DOC と TEST.TXT が拡張子を LZH に
してしまうと区別できなくなりますし、ファイル名でソートすることもできなくなっ
てしまうので、敢えてファイル名をそのままにしています。
  したがって、前述の TEST.DOC などをそのままにしておくと、圧縮ファイルである
ことを忘れて、ドキュメントファイルとカン違いする原因になりますので、早急にリ
ネームするなり、LHlk(*1) で必要なものだけをリンクして新しい書庫を作り直して
しまい、分割した TEST.DOC などは早めに削除した方がよいでしょう。
  また、同様の理由から、他のファイルが同居しているディレクトリで分割作業をす
ることは、自ら自分を混乱に追い込んでいるようなものです。分割作業用のディレク
トリを作って、その中で作業をするようにしましょう。

  分割された LZH が全てカレントディレクトリに作られてしまう都合上、同じファ
イル名のファイルが異なるディレクトリに置かれている状態をそっくり再帰オプショ
ン付きで圧縮した LZH ファイル等を分割しようとすると、あとから出てきた方のファ
イルが「上書き」の扱いになってしまい、上書きするかスキップするかしかありませ
ん。保存されているディレクトリ名を使って同じ名前のディレクトリを作成して、そ
の中に分割された LZH を作るという方法もあるのですが、この辺はどのようにイン
プリメントするか迷っています。何か良いアイデアがあったら、教えて下さい。

------------------------------------------------------------------------------

4. 対応しているファイル

本プログラムで扱うことのできる LZH ファイルの圧縮方法は以下のものだけです。

・-lh5-, -lh4- (LHA で作られるデフォルト)
・-lh1-        (LHArc / LHA(LHArc 互換モード))
・-lh0-        (非圧縮)
・-lhd-        (ディレクトリ情報だけを保存している)

以下の圧縮方法で作られた書庫は動作確認を取っていないので、通常は扱えません。

・-lh6-, -lh7-        (LHA Ver 3 サポートされている)
・-lz4-, -lz5-, -lzs- (LArc などで作られる書庫)

  ただし、-i (--ignore) オプションをつけることで、これらの圧縮方法で作成され
た書庫に対しても処理を試みることができます。しかし動作は保証されませんので、
注意して下さい。

また、ヘッダレベルに関しては、

・レベル 0     (LHArc / LHA(LHArc 互換モード))
・レベル 1     (LHA で作られるデフォルト)
・レベル 2     (LHA で -h2 オプションをつけると作られる)

の全てに対応しています。

------------------------------------------------------------------------------

5. このプログラムは無保証です

  本プログラムは正しく機能することを期待して作成されていますが、本プログラム
を使用することで、使用者がいかなる損害を受けることがあったとしても、私はいっ
さい責任を取れませんので、「覚悟の上で」使用して下さい。本プログラムは「無保
証」です。

  したがって、大事な LZH ファイルに対して本プログラムを用いる場合には、前もっ
てバックアップを取るなどして、事故に対する対策を十二分に施した上でこれを行っ
て下さい。もちろん、「大事でない」LZH ファイルに対しても同様の配慮をすること
が望ましいことは言うまでもありません。

------------------------------------------------------------------------------

6. 著作権について

  本プログラムの著作権は私「ArctanX」こと「田辺 英昭」が所持しており, その権
利を放棄はしていません。なお、このプログラムは'free software'です。PDS 
(Public Domain Software)でも Freeware でも Shareware でもありませんので、ご
注意下さい。
  尚、本プログラムで使用している GNU getopt の部分は上記の限りではなく、私が
改変した箇所以外については GPL に準拠するものとします。

------------------------------------------------------------------------------

7. 転載について

  転載の際には、書庫の内容を変更しないようにして下さい。また、転載した場合に
は、事後で構わないので転載報告をお願いします。(どこのネットに転載しましたと
いう内容だけでも構わないので。まあ、強制はしませんけど。)
  転載した方は、使用者の声(バグレポート、改良等の意見)を可能な限り、私にエ
コーバックするようにして下さい。可能な限り、反映させたいと思います。なにかあ
りましたら、メール等でご相談下さい。

------------------------------------------------------------------------------

8. 開発環境

  このツールは以下の開発環境で作成されました。作者の方々に感謝致します(敬称
略)。大変失礼で申し訳ないのですが、私が作者を全員把握していないため、抜けて
いる方々もいらっしゃるかと思いますが、お許し下さい。

< X68000-PRO(8MB RAM) + SCSI 100MB + SASI 40MB + 3.5 MO >

   Gcc version 1.28 Tool#2      FSF / まりこ氏
   HAS Ver3.09                  YuNK氏
   HLK Ver3.01                  そると氏
   Gnu Make Ver 3.62(X6_12)     FSF / homy氏
   KSH v4.8 (X6_25)             homy氏
   Twentyone Ver 1.36a          Ext氏
   lndrv Ver1.23                沖@沖氏
   μEMACS 3.10 J1.43 (rel.4p5) icam/homy/lika/SALT/PEACE/SHUNA/rima 各氏
   X680x0 libc 1.1.32A          Project LIBC Group
   LHA Version 2.13 Rel.47      ともちゃん氏(岡田 紀雄氏)/吉崎 栄泰氏
   LZX.X Ver. 0.43.4h Beta      F&I氏

< PC-9801 RA2(2MB RAM) + SCSI 200MB >

   Borland C/C++ Version 2.0    Borland International
   MAKE Version 3.6             Borland International
   MicroEmacs 3.10J3
   LHA Version 2.13.00          吉崎 栄泰氏

< X68000 / PC-9801 共通>

   getopt.c, getopt.h           FSF
   wild.c, wild.h               Yasushi Saito氏, TAIST
   setarg.c, setarg.h           Yasushi Saito氏, TAIST
   C Magazine 1991 Jan.         ソフトバンク

また本プログラムのアップロードや開発ツールのダウンロードには、西表山猫氏作の
「TMN Σ」を使用させて戴いています。

------------------------------------------------------------------------------

9. 動作確認環境

本プログラムは以下の環境下で動作を確認しました。

・X680x0 版

  X68000 PRO(8MB RAM:無改造) + Human68k Ver 3.01

・MSDOS 版

  PC-9801 RA2(2MB RAM) + MSDOS Ver 3.30D

  MSDOS 版に関しては、98 シリーズとその互換機以外の MSDOS マシンでは動作確認
していませんので、もしかすると動作しないかも知れません。(一応、98 固有の機
能は使っていないので大丈夫だとは思うのですが・・・)

------------------------------------------------------------------------------

10. 謝辞

  本プログラムの開発に関しては、下記に示す私が所属しているネットワークの皆様
方、x6chat Mailing List の方々、その他大勢の方々にも大変お世話になっておりま
す。ここに感謝の意を表します。

------------------------------------------------------------------------------

11.(*1) 拙作 LHlk (LHlk.X/EXE) について

A:\>lhlk
lhlk - LZH linker    Version 1.02  (1995/02/05)
Copyright (C) 1995   田辺 英昭 (Hideaki `ArctanX' TANABE)
                     KFA05024@niftyserve.or.jp

以下、LHLK.DOC から抜粋します。

・・・・前略・・・・
  LZH ファイルは書庫の構造上、gz(gzip)ファイルのように単純に 2 つの圧縮ファ
イルを繋いで 1 つにすることができません。本プログラムは、まるでオブジェクト
ファイルをリンクして実行ファイルを作るかのように、複数の LZH ファイルをリン
クして 1 つの LZH ファイルを作るためのものです。
・・・・以下略・・・・

------------------------------------------------------------------------------

以上、LHsep.X/EXE プログラム作成、およびドキュメント作成


        ALTA Net           ALTA1565
        Bug-House BBS      BUG0064                   \    \/
        Cecile BBS         CEL0322    Arctan /  \UTMC
        Inside BBS         INSD0053                 ̄ ̄   ̄ ̄
        Palmtown Network   PALM0466   田辺 英昭 (Hideaki TANABE)
        Mapletown Network  MAP2492
        Network-SCoT       SCOT0032
        Nifty Serve        KFA05024@niftyserve.or.jp

(e.o.f)

★LHsepのページに戻る


arctanx@hauN.org