/*
                      LHlk.X/EXE         Version 1.02

         複数の LZH ファイルを展開することなく 1 つの LZH ファイルに
         リンクするツール

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

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

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

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

  こんにちは、ArctanX です。

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

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

2. インストールの方法

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

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

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

3.1) ヘルプの表示方法

lhlk[CR] あるいは lhlk -h[CR] でヘルプが出てきます。
------------------------------------------------------------------------------
C:\>lhlk
lhlk - LZH linker    Version 1.02  (1995/02/05)
Copyright (C) 1995   田辺 英昭 (Hideaki `ArctanX' TANABE)
                     KFA05024@niftyserve.or.jp
Usage  : lhlk [Option(s)]   [Option(s)]
Func   :  で指定される 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 ファイルは正常動作がある程度期待されるので、本
オプションをつけて試してみる価値はあります。

  しかし、本オプションを使うと全く関係のないテキストファイルや実行ファイル等
もリンクできてしまうので、ヘタをすると展開のできない壊れた LZH ファイルを作っ
てしまうことになります。新しく作ってしまったなら削除すれば済みますが、既存の
LZH ファイルを展開できなくしてしまっては大変です。本オプションは十分に注意し
て(必要なら作業対象ファイルのバックアップを取ってから)、使用するようにして
下さい。

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) その他

  拡張子を省略した場合は LZH が補われます。また LHA の書庫でないファイルの拡
張子を LZH にしても、内部で簡単なチェックをしているので、(多分)問題ないと
思います。ただし、チェックはあくまで簡単なものですから、過信は禁物です。関係
ないファイルを破壊されたりしないように、作業は慎重に行い、大事なファイルを扱
う時にはバックアップを取りましょう。

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

  ワイルドカードは(シェルが展開してくれる処理系でなければ)csh ライクなもの
を内蔵しています。したがって、'*.*' を指定すると、ピリオドのないファイルにマッ
チしなくなってしまうので、全てのファイルにマッチさせたい場合には '*' を指定
して下さい。

3.3) パラメータ

3.3.1) 

  リンクした結果を格納する LZH ファイル名をここで指定します。指定したファイ
ルが存在しなかった場合には新規作成、存在している場合には最後尾に追加書き込み
することになります。既存の場合には LZH ファイルかどうかをチェックしています。
  本パラメータは 1 つしか指定できません。

3.3.2) 

  リンクしたい LZH ファイル名をここで指定します。複数指定することができます。
既存のファイル以外は指定できません。LZH ファイルかどうかをチェックしています。

  ファイル末尾にゴミデータがついていたり、ファイル先頭に Macintosh ヘッダが
ついている場合、強制的にそれらのゴミやヘッダは削除されますので、注意して下さ
い。ちなみに Macintosh ヘッダのついている書庫に関しては、拡張子を .BAK に置
き換えたバックアップファイルを自動生成しますが、末尾にゴミがついている書庫に
ついてはバックアップファイルを作らず、ゴミデータ部分を削除します。ゴミデータ
部分を削除されて困ることはあまりないと思いますが、必要なら各自でコピーを取っ
ておいて下さい。

   と同じファイルを指定することはできません。

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

  通常、LHA で書庫を作成している限り、同じ書庫の中に複数の同一ファイル名のファ
イルを格納することはできませんが、本プログラムではそこまでチェックせず単にリ
ンクしているだけなので、同一エントリを複数含む書庫を作ることが可能です。しか
し、そのような書庫を展開しようとすると、(展開するツールにも依りますが)重複
チェックのメッセージが何度も出てきて不便なことがあるかも知れません。混乱の原
因にもなるので、理由がない限り同一エントリを含む書庫をリンクして 1 つの書庫
にはしないことをお勧めします。

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

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 の方々、その他大勢の方々にも大変お世話になっておりま
す。ここに感謝の意を表します。

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

以上、LHlk.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-mail(Internet)   tanabe@esc.longdist.cae.ntt.jp
                           (Inside Japan Only)

(e.o.f)

★LHlkのページに戻る


arctanx@hauN.org