From JCA02266 @ nifty.ne.jp Thu Nov 14 04:04:54 2002 From: JCA02266 @ nifty.ne.jp (Koji Arai) Date: Thu, 14 Nov 2002 04:04:54 +0900 (JST) Subject: [Lha-users] LHa for UNIX の利用に関するメーリングリスト Message-ID: <20021114.040454.11104595.JCA02266@nifty.ne.jp> このメーリングリストは、LHa for UNIX の利用に関するメーリン グリストです。 これまで、LHA BBS (http://www2m.biglobe.ne.jp/~dolphin/cgi-bin/raib.cgi) で、メンテナンス/アナウンスして来た LHa for UNIX (autoconf 化パッチ)をこの度 sourceforge 上での運用に移行し、メーリングリスト を開設しました。 sourceforge.jp 上で配布される LHa for UNIX は、岡本継男氏の version 1.14i (http://www2m.biglobe.ne.jp/~dolphin/lha/lha.htm) を元に改修を行った分裂バージョンとなります。 # なお、現在、CVSリポジトリがまだ登録手続き中です。 # このメールを書いてる時点では sourceforge 上では何も配布さ # れていない事になります。(^^; # これまで配布して来たパッチは # http://ns103.net/~arai/lha/index.html # から入手可能です。 まあ、LHa for UNIX 自体は枯れたソフトなので、それほど活発な メーリングリストにはならないであろうと思ってますが、のんびり とメンテナンスを行っていこうと考えてます。もし、LHa for UNIX の利用に関して何か質問がありましたら、このメーリングリストを 利用して頂ければと思います。(autoconf化版に限らず LHa for UNIX全般に関する事で結構です) 最後に、現時点で一般に広まっている LHa for UNIX version 1.14i からの修正点を添付します。アーカイブ同梱の 00readme.autoconf から抜粋したものです。元もとパッチ形式の配 布だったので内容もそのことを前提としたものになってます。 -- 新井康司 (Koji Arai) --------------------------------------------------------------------- autoconfiscated for LHa for UNIX version 1.14i Wed, Oct 16 2002 by Koji Arai このファイルは LHa for UNIX version 1.14i を autoconf、automake 化した (autoconfiscate と言うそうです。Jargon 参照)ときのメモです。 LHa for UNIX に関しては岡本継男さんのページ を参照してください。 ・コンパイルの手順 コンパイルの手順は以下のようになります。 gzip -dc lha-114i.tar.gz | tar xvf - cd lha-114i patch -T -p1 < ../lha-1.14i-autoconf.diff # touch aclocal.m4 Makefile.in */Makefile.in configure.ac config.h.in configure sh ./configure make make check make install MinGW 対応はα版です。ほとんどテストされていません(make check が成功 する程度)。Cygwin 環境で MinGW 版を試すには sh ./configure CC='gcc -mno-cygwin' --build=i686-pc-mingw32 --with-tmp-file=no などとしてください。 autoconf/automake がインストールされている場合で、lha ソースや configure.ac, Makefile.am をメンテナンスする場合は以下の手順になりま す。autoconf/automake のバージョンはそれぞれ autoconf 2.5x, automake 1.6.x 以降での利用を前提としています。 gzip -dc lha-114i.tar.gz | tar xvf - cd lha-114i patch -p1 < ../lha-1.14i-autoconf.diff aclocal automake -a autoheader autoconf sh ./configure make make check make install ・マクロの置き換え オリジナルの LHa for UNIX 1.14i で使われていたマクロは autoconf 標準 のマクロ名に置き換えられました。(IFNAMES ファイルに詳細が書かれてい ます) IFNAMESファイルは、 マクロ名 定義のあるファイル... コメント という構成になっています。このファイルはautoconfと一緒に配布される ifnamesコマンドの出力を元にしました。 IFNAMESファイルの# で始まっている行は該当のマクロが置き換えられたり、 configure コマンドのコマンドオプションで指定されるようになったことを 示します。そのままの行はautoconfで判断する必要がないかまたは私が判断 できないため、そのまま放置したことを示します。 ・-lh6-, -lh7- メソッドのアーカイブ作成 オリジナルの LHa for UNIX 1.14i では、SUPPORT_LH7 の定義をせずにコン パイルした場合、-lh6- および -lh7- メソッドのアーカイブを作成できま せんでした。このことは別に構わないのですが SUPPORT_LH7 を定義すると デフォルトで -lh7- メソッドのアーカイブ作成を強制されてしまいます。 そこで、もう少し柔軟に lha 利用者がこれらを選択できるよう SUPPORT_LH7 は常に定義するようにし、デフォルトで作成されるアーカイブ のメソッド指定を configure オプションの --with-default-method=[567] で指定できるようにしました。 このオプションの省略値は -lh5- です。つまりデフォルトでは -lh5- アー カイブを作成します。(そして、上で述べた通り、lhaの o6 または o7 オプ ションによりいつでも-lh6-、-lh7- アーカイブを作成でき、configure オ プションによりデフォルトの挙動を変更することができます) ・アーカイブ中の漢字ファイル名 オリジナルの LHa for UNIX 1.14i はアーカイブに格納するファイル名の漢 字コードに関して無頓着です。コンパイル時に MULTIBYTE_CHAR を定義した ときでもアーカイブ中の Shift JIS ファイル名を EUC にすることもなく、 EUC コードのまま(正確にはシステムの漢字コードのまま)アーカイブに格納 したりします。 autoconf 版では、configure オプション --enable-multibyte-filename に より漢字ファイル名が使用でき、アーカイブに格納されるファイル名の漢字 コードを SJIS 固定として扱います。 --enable-multibyte-filename の引数(システムのファイル名の漢字コード 指定)は、以下の通りです。 --enable-multibyte-filename=sjis システムの漢字コードを SJIS として扱います。 --enable-multibyte-filename=euc システムの漢字コードを EUC として扱います。 --enable-multibyte-filename=utf8 システムの漢字コードを UTF-8 として扱います。 今のところ Mac OS X でだけこのオプションをサポートします。 --enable-multibyte-filename=auto (または yes または引数なし) システムの漢字コードを自動で判別します。自動といっても現状は、 Cygwin, MinGW, HP-UX の場合に SJIS、Mac OS X の場合 UTF-8、 それ以外を EUC とみなすだけです。 --enable-multibyte-filename=no --disable-multibyte-filename ファイル名のマルチバイトサポートを無効にします。 デフォルトは、auto です。 将来的には lha のコマンドラインオプションや環境変数によりアーカイブ、 システムの各漢字コードを指定できるようにするかもしれませんが、今のと ころ実装はしていません。 Mac OS X 用の utf8 <-> sjis 変換は、2002/6 に坂井浩人さんに作成して いただきました。ありがとうございます。 ・標準入力からの展開ファイルの指定 オリジナルの LHa for UNIX 1.14i は、 echo foo.txt | lha x foo.lzh find bar -name '*.[ch]' | lha c bar.lzh とすると、foo.lzh から foo.txt だけを展開したり、bar ディレクトリ配 下のファイルを bar.lzh に格納したりできます。つまり、標準入力から、 圧縮/展開ファイルを指定できる機能なのですが、いまいち使い道がないわ りに邪魔な機能です(圧縮の例は、cpio 同様まあ使えるけど、このためのオ プションを新設するのが良いと考えています) tty からの利用しか想定してないと思われますが、おそらく daemon から lha を実行する場合などで意図しない動作をするでしょう。そういうわけで 勝手ながらこの機能は削除しました。以下のような事ができない Windows 環境では意味のある機能だったかもしれませんが lha x bar.lzh `echo foo.txt` 残念ながら MinGW で isatty() がうまく動作しませんでしたから Windows では使えないのでした。 オリジナルの仕様を復活させたい場合は、lharc.c の 360行目付近の #if 0 を #if 1 にしてください。 ・拡張ヘッダ(ユーザ名/グループ名)のサポート ユーザ名、グループ名の拡張ヘッダ(0x52, 0x53)を作成できるようにしまし た(デフォルトはoff)。詳細は header.doc.euc を参照してください。展開 と一覧表示のときにヘッダにこの情報があれば ID に優先してこの情報が利 用されます。作成は configure オプション --enable-user-name-header を 指定して build した場合に有効になります。 ・バックアップファイル作成の抑止 オリジナル LHa for UNIX 1.14i では、アーカイブにファイルを追加したと きやアーカイブからファイルを削除したときに、元のアーカイブを .bak と いう拡張子で保存します。この挙動は煩わしく感じたので autoconf 版では バックアップファイルを作成しないようにしました。この autoconf 版パッ チが信用できないような人は configure オプション --enable-backup-archive を指定して build してください(ぜひそうするべきです:p)。オリジナルと 同じ挙動になります。 ・header.c の書き換え header.c の主要部分は作り変えられました。上記に示した変更に加えて オリジナル LHa for UNIX 1.14i から以下の不具合が修正されました。 o level 2 header のバグ total header size (アーカイブヘッダの先頭 2 byte) が 256 以上 であるアーカイブを正しく読むことができませんでした。また、total header size がちょうど 256 になるような不正なアーカイブを作成し ていました。LHA のヘッダ仕様ではヘッダ先頭が 0 であればアーカイ ブの終端とみなすため total header size を 256 の倍数にできません。 (256 などは little-endian で 0x00 0x01 となるため、先頭が 0 にな ります。) 読み込み時にヘッダの CRC check を行うようにしました。 o level 1 header のバグ ファイル名に対して拡張ヘッダを使用することがないため、230 バイト を越えるファイル名(ディレクトリを含まない)をアーカイブに書くとアー カイブヘッダのサイズ制限を越えた不正なアーカイブが作成されていま した。 o level 0 header のバグ 長いパス名(ディレクトリも含む)に対してアーカイブヘッダのサイズ制 限を越えた不正なアーカイブが作成されていました(実際には、オリジ ナルは level 0 header にディレクトリの情報を一切書かないのでこの 制限はやはりファイル名長だけが対象になります)。autoconf 版では制 限を越えたパス名は warning メッセージを出力し、パス名の後ろをを 切り詰めます。(level 0 header は使用するべきではありません) 空の(ディレクトリ名情報のない) -lhd- ヘッダが作成されていました。 $ mkdir foo $ lha c0 foo.lzh foo $ lha v foo.lzh PERMSSN UID GID PACKED SIZE RATIO METHOD CRC STAMP NAME ---------- ----------- ------- ------- ------ ---------- ------------ ------------- drwxrwxr-x 1000/1000 0 0 ****** -lhd- 0000 Jul 29 00:18 ---------- ----------- ------- ------- ------ ---------- ------------ ------------- Total 1 file 0 0 ****** Jul 29 00:18 なお、level 0 header で -lhd- method は使えないという説がある http://kuwa.omosiro.com/x68k/KGARC/ARC/LHAHED15.ZIP のですが、吉崎栄泰氏のオリジナル LHA (DOS/Windows版) (ver 2.55, 2.67) などは -lhd- method を level 0 header で作成します。 o g オプションを付けたときの level 0, 1, 2 header g オプションは、アーカイブ作成のとき UNIX 固有の情報をアーカイブ に作成するのを抑止すると man にはあるのですが、実際にはディレク トリ情報まで抑止されていました。 $ mkdir foo $ touch foo/bar $ lha cg1 foo.lzh foo $ lha foo.lzh PERMSSN UID GID SIZE RATIO STAMP NAME ---------- ----------- ------- ------ ------------ -------------------- [generic] 0 ****** Jul 29 00:02 bar ---------- ----------- ------- ------ ------------ -------------------- Total 1 file 0 ****** Jul 29 00:02 autoconf 版では上記は foo/bar になります。(オリジナルはわざとそ うしていたのかもしれませんが、そうする理由はないと判断しました) g オプションで -lhd- の作成が抑止されるのは同じです。 なお、g オプションとヘッダレベルの指定を同時に行うときは上記のよ うに g オプションを先に指定する必要があります。lha c1g など g オ プションを後に指定すると level 0 header が作成されます(このオリ ジナル仕様はちょっとわかりにくいです)。 ・level 3 header 世の中には、level 3 header というものが存在するようですが、まだ仕様 としてfix されてないようなので*読み込みのみ*サポートしました。追加の 拡張ヘッダは未対応です。(特に対応すべきヘッダが見当たらなかった) largefile 対応する場合は、この level 3 header をサポートした方が良さ そうです。 ・ヘッダのダンプ まったくのおまけ機能としてヘッダのダンプ機能を追加しました。これは完 全にデバッグ用です。 lha vvv foo.lzh とすると、アーカイブの内容一覧にまざってダンプが出力されます。 ・ヘッダレベル アーカイブを作成するときのデフォルトのヘッダレベルを 2 にしました。 (オリジナルの LHa for UNIX 1.14i ではレベル 1 がデフォルト) ・拡張ヘッダ 拡張ヘッダ Windows timestamp (0x41) を解釈するようにしました。(level 1 header のみ)。level 2 以上では、基本ヘッダに time_t の情報があるの で、拡張ヘッダの方は無視します。 level 1 header のアーカイブに対して、Windows timestamp 拡張ヘッダ を出力する LHA アーカイバが存在するかどうかは未確認です。あまり、 役に立たない修正だった気がしますがせっかく作ったので残してます:-) From JCA02266 @ nifty.ne.jp Fri Nov 15 02:54:07 2002 From: JCA02266 @ nifty.ne.jp (Koji Arai) Date: Fri, 15 Nov 2002 02:54:07 +0900 (JST) Subject: [Lha-users] LHa for UNIX 最新ソース取得手順 Message-ID: <20021115.025407.74756693.JCA02266@nifty.ne.jp> 新井です。 CVS リポジトリが sourceforge.jp に登録されました。 興味のあるかたはどうぞご利用ください。 ここでは、sourceforge.jp に登録した LHa for UNIX (autoconf版) の最新ソースをCVSで取得する手順を示します。CVS に不慣れだと 面倒臭く思えるかも知れませんが、手順が複雑なのは最初だけです。 後は、cvs update と make の繰り返しだけで基本的に最新ソース を追っかける事ができます。 # 最新過ぎて不安定である可能性があります^^; なお、以下のソフトが必要になるので注意してください。 1. CVS 2. automake 3. autoconf では手順です。まず、2つのコマンドを実行します。最初に cvs login (以下)を実行します。パスワードを聞かれますが、単に Enter を押します。(このコマンドを実行すると ~/.cvspass とい うファイルが作成されます。このファイルがあるうちは二度と login は必要ありません。ちなみに logout という行為はありませ ん) cvs -d:pserver:anonymous @ cvs.sourceforge.jp:/cvsroot/lha login Logging in to :pserver:anonymous @ cvs.sourceforge.jp:2401/cvsroot/lha CVS password: <- Enter 次に、もう1つのコマンド cvs co (checkout) コマンドでリポジト リからソースを取ってきます(以下)。 cvs -z3 -d:pserver:anonymous @ cvs.sourceforge.jp:/cvsroot/lha co lha これで、カレントディレクトリに lha ディレクトリ(これを「作業 ディレクトリ」と言います)とその配下に最新ソースが展開されま す。作業ディレクトリはリネームしても問題ありません。 cd lha これ以降 LHa for UNIX のバイナリを作成する手順は、 00readme.autoconf に書かれている通りです。ただし、configure 等は CVS に入れてないので autoconf/automake が必要です。 (aclocal や autoheader は、autoconf、automake 付属のコマンド です) o configure コマンドを作成 aclocal automake -a autoheader autoconf o Makefile, lha を作成&テスト&インストール sh ./configure make make check su make install 以降、私がソースを修正してその結果を sourceforge のリポジト リに反映したとします。その最新ソースを取得するには、以下のコ マンドを作業ディレクトリ(lha ディレクトリ)の下で実行します。 cvs update -P -d また、 cvs -q update -P -d っとすれば実際に最新ソースがローカルの作業ディレクトリに反映 されず、どのファイルに更新が行われているかだけを知る事ができ ます。 以下、もう少し開発に参加したい人は以下のコマンドを使うかもし れません。例えば、LHa for UNIX にバグを見つけ、それを改修し たとします。最新ソースから以下のコマンドでパッチを作成し、私 宛にフィードバックすることができます(ぜひやってください^^)。 cvs -q diff -u -p > /tmp/lha.patch この lha.patch ファイルと修正内容の説明をメーリングリスト lha-users @ lists.sourceforge.jp かあるいは私 (jca02266 @ nifty.ne.jp)宛に送ってください。 CVS は他にもさまざまな事ができます。CVS に関しての日本語リソー スとしては http://www-vox.dj.kit.ac.jp/nishi/cvs/cvs.html が詳しいです。 CVS リポジトリの内容は以下のページから Web 経由で参照する事 もできます。 http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/lha/lha/ -- 新井康司 (Koji Arai) From JCA02266 @ nifty.ne.jp Fri Nov 15 06:30:27 2002 From: JCA02266 @ nifty.ne.jp (Koji Arai) Date: Fri, 15 Nov 2002 06:30:27 +0900 (JST) Subject: [Lha-users] Re: LHa for UNIX 最新ソース取得手順 In-Reply-To: <20021115.025407.74756693.JCA02266@nifty.ne.jp> References: <20021115.025407.74756693.JCA02266@nifty.ne.jp> Message-ID: <20021115.063027.74751985.JCA02266@nifty.ne.jp> 新井です。 LHA BBS http://www2m.biglobe.ne.jp/~dolphin/cgi-bin/raib.cgi にも書きましたが、こちらでも。 In message "LHa for UNIX 最新ソース取得手順" on Fri, 15 Nov 2002 02:54:07 +0900 (JST), Koji Arai wrote: > また、 > > cvs -q update -P -d > > っとすれば実際に最新ソースがローカルの作業ディレクトリに反映 > されず、どのファイルに更新が行われているかだけを知る事ができ > ます。 cvs -n update -P -d の間違いです。-q は、update の表示を(ある程度)うるさくしない オプション。 あと、安定版ソースの tarball をダウンロードしたい場合は、 http://sourceforge.jp/frs/index.php?group_id=315&release_id=1548 こちらからどうぞ。 -- 新井康司 (Koji Arai) From Shoichi.Shiota @ lightwell.co.jp Mon Nov 18 07:32:57 2002 From: Shoichi.Shiota @ lightwell.co.jp (Shoichi.Shiota @ lightwell.co.jp) Date: Mon, 18 Nov 2002 07:32:57 +0900 Subject: [Lha-users] lha-114i.autoconf-20020903.tar.gz の install 失敗について Message-ID: <02Nov18.073301jst.119041@inetgw.lightwell.co.jp> はじめまして。 潮田と申します。 lha-114i.autoconf-20020903.tar.gz を download し、 ./configure gmake su - gmake install で、 AIX 上に install しようとしたのですが、最後の gmake install で以下の様に失敗しました。 # gmake install Making install in man gmake[1]: Entering directory `/usr/local/src/OTHER/lha/lha-114i.autoconf/man' gmake[2]: Entering directory `/usr/local/src/OTHER/lha/lha-114i.autoconf/man' gmake[2]: Nothing to be done for `install-exec-am'. /bin/sh ../mkinstalldirs /usr/local/man/mann .././install-sh -c -m 644 ./lha.n /usr/local/man/mann/lha.n /bin/sh: .././install-sh: 0403-006 実行許可がありません。 gmake[2]: *** [install-mann] Error 126 理由は、勿論 TOP ディレクトリにある install-sh に実行権限がないことなので chmod a+x install-sh gmake install で無事正常終了しました。 すでに、 CVS 上のソースでは修正済みかも知れませんが、手近かに CVS が動いていいないので、確認できません。 (使い方も知らないのですが) その故、 Bugs ではなく、こちらへ投稿しました。 以上 From JCA02266 @ nifty.ne.jp Mon Nov 18 08:02:36 2002 From: JCA02266 @ nifty.ne.jp (Koji Arai) Date: Mon, 18 Nov 2002 08:02:36 +0900 (JST) Subject: [Lha-users] lha-114i.autoconf-20020903.tar.gz の install 失敗について In-Reply-To: <02Nov18.073301jst.119041@inetgw.lightwell.co.jp> References: <02Nov18.073301jst.119041@inetgw.lightwell.co.jp> Message-ID: <20021118.080236.43076712.JCA02266@nifty.ne.jp> 新井です。 In message "[Lha-users] lha-114i.autoconf-20020903.tar.gz の install 失敗について" on Mon, 18 Nov 2002 07:32:57 +0900, Shoichi.Shiota @ lightwell.co.jp wrote: > はじめまして。 > 潮田と申します。 はじめまして。 > で、 AIX 上に install しようとしたのですが、最後の > gmake install で以下の様に失敗しました。 > 理由は、勿論 TOP ディレクトリにある install-sh に実行権限がないことなので > chmod a+x install-sh > gmake install > で無事正常終了しました。 そうか、tarball のはパッチを当てたものを使ってるから実行権が なくなってしまってるのですね。後日リリースファイルを置き直す ことにします。 御報告ありがとうございました。 -- 新井康司 (Koji Arai) From JCA02266 @ nifty.ne.jp Tue Nov 19 00:52:47 2002 From: JCA02266 @ nifty.ne.jp (Koji Arai) Date: Tue, 19 Nov 2002 00:52:47 +0900 (JST) Subject: [Lha-users] lha-114i.autoconf-20020903.tar.gz の install 失敗について In-Reply-To: <20021118.080236.43076712.JCA02266@nifty.ne.jp> References: <02Nov18.073301jst.119041@inetgw.lightwell.co.jp> <20021118.080236.43076712.JCA02266@nifty.ne.jp> Message-ID: <20021119.005247.110224530.JCA02266@nifty.ne.jp> 新井です。 > そうか、tarball のはパッチを当てたものを使ってるから実行権が > なくなってしまってるのですね。後日リリースファイルを置き直す > ことにします。 置き直しました。せっかくだから新しいのリリースしても良かった かもしれませんね。まあいいか。 -- 新井康司 (Koji Arai)