UNLHA32.DLL for Win32: Compress and extracting LZH files Top Page

Common Archivers Library - 統合アーカイバ・プロジェクト
--- Sorry, Home Page in English is under construction.
     

.lzh ファイルの圧縮/展開(解凍)

UNLHA32.DLL for Windows 9x/Me/NT/200x/XP/Vista

世界的にも圧縮形式のリーディング的存在の一つであり、国内では標準的なアーカイバ形式となっている .lzh ファイルの圧縮/展開(解凍)を行うライブラリ。
・履 歴  to top 
 
  • 2008/6/29 Ver 2.64b 正式版公開。

    • 非インストーラモードでの WinSFX32M 作成に失敗していたバグを修正しました。

  • 2008/5/26 Ver 2.64a 正式版公開。

    • 正式版としてコンパイルを行っただけで, 特に変更点はありません。

  • 2008/5/11 Ver 2.64β版公開。

    • WinSFX32(M) について, WH_CBT フック処理の改善を行いました。

    • コントロールに対しての位置調整処理について, GetSystemMetrics() API を使ったものから ClientToScreen() を使ったものへ変更しました (Windows Vista 等では SM_CXSIZEFRAME 等に対する従来の前提が通用しないため)。

  • 2008/3/30 Ver 2.63i 正式版公開。

    • WinSFX32U が英語モードで正常に動作しないことのあったバグを修正しました。

    • MyReadFile() について, ERROR_HANDLE_EOF を返すべきところを ERROR_INVALID_PARAMETER を返してしまうことのあったバグを修正しました。

    • 拡張ヘッダ内での HDR_EXPLOIT_SIZE 発生については, 即時に ERROR_HDR_EXPLOIT エラーで処理を中止するようにしました。

  • 2008/3/18 Ver 2.63h 正式版公開。

    • Ver 2.63 以降,一部のソフトについて UnlhaFindFirstW() 等による検索が行えなくなっていたバグを修正。

  • 2008/3/16 Ver 2.63g 正式版公開。

    • Ver 2.63 以降において, ヘッダサイズ調整のダミーデータが付加されたヘッダの CRC 計算が正しく行われていなかったバグを修正しました。

  • 2008/3/3 Ver 2.63fβ版公開。

    • Ver 2.63 以降において, h0 形式ヘッダについて常にパスを付加して扱ってしまっていたバグを修正しました。
    • 安易に設定変更を行った結果, 正常に格納ファイルを扱えなくなる事例が後を絶たないことから, 設定ダイアログの『厳密なファイル名サーチ』項目を削除しました。これに伴い, 既存の設定による影響を排除するため, レジストリについても変更が行われています。

  • 2008/3/1 Ver 2.63eβ版公開。

    • MyMoveFileExW() の MoveFileEx() API 代替ルーチンについて,MOVEFILE_REPLACE_EXISTING が指定されていない場合に (無条件で) エラーを返してしまうことのあったバグを修正しました。

    • MyMoveFileExW() の MoveFileEx() API 代替ルーチンについて, 前処理の MyDeleteFileW() が FILE_NOT_FOUND となった場合に, そのままエラーを返して終了してしまう可能性のあったバグを修正しました。

    • Ver 2.53 以降において, UnlhaOpenArchive2() 等の API へ "-jx" スイッチが渡された際に, NULL ポインタ参照で一般保護エラーとなってしまっていたバグを修正しました。

  • 2008/2/23 Ver 2.63dβ版公開。

    • UnlhaEnumMembersProc() を使用しての圧縮 (格納) ファイル名指定が行えなくなっていたバグを修正しました。

    • WinSFX32U でのショートカット作成について, Unicode での DDE コマンド実行が正常に行われず, Explorer が落ちてしまうことのあったバグを修正しました (SFX のダイアログが ANSI で作成されてしまうことがあり, サーバ側に対してのみ Unicode ウィンドウの確認を行っていたため)。

  • 2008/2/16 Ver 2.63cβ版公開。

    • "-gr" スイッチを使用してのメンバ名変更が正常に行えなくなっていたバグを修正しました。

  • 2008/2/11 Ver 2.63bβ版公開。

    • WinSFX32U が Windows NT 4.0 で動作しなかったバグを修正しました (フラグの指定ミスで CP_THREAD_ACP が適用されてしまっていたため)。

    • WinSFX32U のテロップ表示が乱れてしまうことのあったバグを修正しました。
    • Ver 2.63 以降, 'J' 命令での書庫連結が正常に行われていなかったバグを修正しました。

    • lh0/lh1 形式で格納された lhd メンバに対して, ファイル名ヘッダ警告を行ってしまっていたバグを修正しました。

  • 2008/2/9 Ver 2.63aβ版公開。

    • 空き容量チェックの既定値がオフとなってしまっていたバグを修正しました。

    • 新たなサイズでの CreateFileMappingA() が行われずに, (UNLHA32.DLL による復旧処置として) そのまま通常の入出力アクセスへ切り替わってしまうことのあったバグを修正しました。

    • 利便性を考慮して, 設定ダイアログでのバッファフラッシュ指定がメモリマップトファイルにも適用されるようにしました。 詳細については HISTORY.TXT を参照してください。

    • 設定ダイアログでのレジストリ保存指定について, 必要のない項目についてはレジストリへの書き込みを行わないように改善しました。

    • Windows Vista 上でのプログレスバー表示について, トップ (右端) 位置への到達タイミングを簡易予測し, 先回りして描画を行うことで, アニメーションによる影響 (バーの伸び遅延) の緩和を図りました。 当然ながら, 処理に 1 秒と掛からないような場合には効果が現れません。

    • メモリマップトファイル使用時の FlushViewOfFile() の実行間隔を 64MB 毎とすることで, (一括) 書き込み時における負荷の低下を図りました。

  • 2008/2/2 Ver 2.63β版公開。

    • WinSFX32M を Unicode/ANSI 両対応版 (WinSFX32U と表記) へ更新しました。 !, $ ファイルについては BOM を付加することで UTF-16LE による記述も可能です。 互換性の関係上 SFX 設定ダイアログによるタイトル指定等については ANSI で記録されますので, Unicode が必要な場合は UTF-16 の $ ファイルを使用してください。
      WinSFX32U では, Windows XP/2000 であれば All Users 配下へのメニュー登録も行えますが, 行うには『管理者権限で実行』ではなく管理者アカウントでの実行を必要とする点に注意が必要となります。

    • ↑に伴い DELREG.EXE Ver 0.20 を同梱しました。

    • 古いアプリケーションで不具合が多々発生していたことから, "-o0" と "-o3" の意味を交代しました。

    • 拡張ヘッダのサイズ情報が最小値未満となっているにもかかわらずエラーとしていなかったバグを修正しました。

    • ANSI 版 API を使用している場合に, ログの桁揃えがずれてしまうことのあったバグを修正しました。 Unicode 版 API を使用しているアプリが (過去に行われていたように) ログから直接情報を取得することは皆無と考えられることから, Unicode 版 API の場合でも あえて GetStringTypeEx() API を使用して桁合わせを行っています。 これに伴い, 固定位置と長さによるログからの文字列取得が行えなくなっています。
      GetStringTypeEx() API 等で返される値と, アプリ側で行われる描画の (桁単位での) 結果が一致しない場合が多々あることから, 『桁が揃う』という前提が利きませんので注意が必要となります。

    • Ver 2.60 以降について, 不必要な Unicode パスヘッダを付加してしまうことのあったバグを修正しました。

    • コードページヘッダに従ってコメントを書き込むように改善し, 読み込みについても API のモードに従うようにしました。

    • Windows 95 であるにもかかわらず Win 98 以降と同列に扱われる可能性のあった箇所を修正しました。

    • 必要なヘッダ CRC や名前項目の存在しないヘッダについて警告ログを出力するようにしました。 そのような書庫を作成するツールが存在し, 多々配布も行われていることから, "-jsn" スイッチが指定された場合のみエラー扱いとなります。 これに伴いエラーコードを 2 つ追加しました。

    • 却ってパフォーマンス低下の嫌いがあったことから, Windows Vista 世代や x64 環境では, 明示的な FlushViewOfVile() API の実行を行わないようにしました。 MFNoFlush による強制設定は引き続き可能です。

    • ヘッダ読み込みが HDR_EXPLOIT_SIZE で失敗した際には, 以降の有効ヘッダを検索せず即座に処理を中止するようにしました。

    • EXPLOIT チェックを無効としている場合には h1 形式ヘッダでの全体サイズチェックを行わないようにしました。

    • ヘッダの冒頭が 4 (sizeof(DWORD)) 以外となっている h3 形式ヘッダを扱わないようにしました。

    • 'A', 'U', 'M' 命令の場合に "-gn1" スイッチが機能するように改善しました。

    • CommandLineToArgvW() からエスケープシーケンス処理を除いたサブセット的ルーチンを作成することにより, Unlha() 等のコマンドラインパラメータ数制限の緩和を行いました。

    • ルーチンとしては, ヘッダ読み込み時のサイズ制限が存在しないように改善しました。 既定のサイズを超えたものを不正扱いとする点に変更はありません。

    • 無駄なグローバル変数の整理を行いました。

    • 設定ダイアログのボタンコントロールをオートボタン系に変更することで処理の簡素化を行いました。

    • regpat() を使用するように処理変更を行うことで, regfpat() 系のルーチンを削除しました。

    • extheader() と extheader2() を統合し処理を一本化しました。

    • 文字列処理関数のパラメータチェックを強化 (当該箇所ではなく関数の入り口でチェックするように変更) しました。

    • Windows Vista 以降でのプログレスバー描画頻度を下げました。

    • "-jp0" での進捗グラフを, 基本的に LHMelt と同様のサブセット版プログレスバーへ変更することで, 本体側コードの一本化を行いました。

  • 2007/11/12 Ver 2.62b 正式版公開。

    • WinSFXM, WinSFX32(M) について, コマンド文字列関連ヒープオーバーフローの脆弱性に対応しました。

    • 一部のリソースが 2.62.0.25 となってしまっていたものを修正しました。

  • 2007/11/10 Ver 2.62a 正式版公開。

    • UnlhaOpenArchive() 等において, 省略値スイッチ指定等が重複して処理されてしまっていたバグを修正しました。

    • 動作妨害や脆弱性利用等を目的とした用途として使用が可能だったことから, レジストリを利用した省略値スイッチ指定等の機能を削除しました。 これに伴い, 一部の海外ソフトの矯正等は行えなくなります。

  • 2007/11/4 Ver 2.62β版公開。

    • Unlha() 等の API へ規定数を超えたパラメータを含むコマンド文字列が渡されるとヒープオーバーフローを起こしてしまっていた脆弱性を修正しました。(UNLHA32.DLL におけるヒープオーバーフローの脆弱性について

    • 試験的に UnlhaSetUnicodeMode() API を追加しました。 CPU_UTF8 に未対応か又は制限の存在する Windows 95 等の環境については ERROR_NOT_SUPPORT エラーが返されます。
      レスポンスファイルについては, BOM が付加されていない場合は UTF-8 と見なされます。 ANSI での記述は行えませんので注意してください。 これに伴い, バージョンが 2.62 へ更新となっています。

    • UNLHA32.H でのプロトタイプ宣言について, const 修飾子の有無を見直しました。 また, 付加し忘れていた箇所についても修正を行っています。

    • "-p0" スイッチの指定が無効となってしまうことのあったバグを修正しました。

    • "-jse2" スイッチの指定が無効となってしまっていたバグを修正しました。

    • "-jts" と指定した場合に, 既定の 8 文字ではなくチェック無しとなってしまっていたバグを修正しました。

    • CP_UTF8 を使用できない環境にもかかわらず, "-jtl65001" 等の指定を行えてしまっていたバグを修正しました。

    • Unicode ヘッダの代わりに CP_UTF8 でヘッダを記録する "-jtu3", "-jtu4" のスイッチを追加しました。 このスイッチを使用して作成された書庫を扱うには, コードページヘッダへの対応が必要となりますので, 注意してください。

    • ANSI 版 API を使用している場合でも, BOM 付きであれば Unicode 文字のレスポンスファイルを受け付けるように改善しました。

    • DLL をロードしたモジュールのバージョン情報をデバッグ出力するようにしました。

  • 2007/10/21 Ver 2.61β版公開。

    • WinSFX32(M) について, エラーが発生した際に, 解放済み領域を使用しようとして一般保護エラーとなってしまうことのあったバグを修正しました。

    • Unicode 版プログラムとしてコンパイルし直しました。 これに伴う対応プラットフォームの変更はありません。

    • MyFree() について, ヌルポインタ警告メッセージをβ版のみで出力するように改善しました。

    • Win2K 以降の NT 系 OS の場合には, 既定コードページとして CP_THREAD_ACP を使用するように改善しました。

    • コードページヘッダに CP_UTF8 (65001) が記録されている場合には, Unicode ファイル名ヘッダ等を記録しないように改善しました。

    • MultiByteCharToWideChar() 等について, 文字コードによって指定できないフラグへの対応を改善しました。

    • β版について, デバッグ出力関係を整理しました。

  • 2007/9/30 Ver 2.60e 正式版公開。

    • Ver 2.60b 以降において, WinSFX32M を作成した場合に不正な書庫が作成されてしまうことのあったバグを修正しました。

  • 2007/9/29 Ver 2.60d 正式版公開。

    • UnlhaQueryFunctionList() について, Ver 2.60 で追加された API への対応をし忘れていたバグを修正しました。

    • Win9X/Win32s 上でデバッグ出力を行った際に, 一般保護エラーとなってしまうことのあったバグを修正しました (β版のみで発生)。

    • UTF-16 のレスポンスファイル読込時の使用関数を変更しました。

    • API のパラメータチェックを少々強化しました。

    • UNLHA32.DLL 破損チェックの CRC 計算方法を変更しました。

  • 2007/9/16 Ver 2.60cβ版公開。

    • Ver 2.60 において, WinSFX32 の h0 用展開ルーチンを 4GB 対応版とし忘れていたバグを修正しました。

    • WinSFX32(M) について, FILETIME ヘッダの情報が time_t 等へ丸められないように改善を行いました (コード整理の副産物 ^^;)。

    • UNLHA32.DLL 及び WinSFX32(M) が使用する既定フォントの取得方法を変更しました。

    • ファイル破損による誤動作防止のため, DLL ロード時にコード部分の簡易破損チェックを行うようにしました。 正式版のみで機能します。

  • 2007/9/1 Ver 2.60bβ版公開。

    • "-i" スイッチに, UNLHA32.DLL 既定の変換を行わせるための "-i4" を追加しました。

    • WinSFX32(M) について, コードの整理を行いました。

  • 2007/8/25 Ver 2.60aβ版公開。

    • Ver 2.60 において, h0/h1 形式書庫の基本ヘッダ書込の際に, UTC のままタイムスタンプを書き込んでしまっていたバグを修正しました。

    • WinSFX32(M) にマニフェストを付加しました。 これに伴い, Windows Vista 等では, UAC の影響を受けるようになりますので, 注意が必要となります。

  • 2007/8/4 Ver 2.60β版公開。

    • 64 ビット time_t 値でタイムスタンプ情報を得る UnlhaGetWriteTime64() 等の API を追加しました。

    • 整合性を考慮して, time_t 値でタイムスタンプ情報を得る UnlhaGetArcWriteTime() 等の API を追加しました (メンバ用の UnlhaGetWriteTime() 等の API は存在したものの, 書庫用の API が存在していなかったため)。

    • API を実行した結果エラーが返ってきたにも拘わらず, 直後の UnlhaGetLastError() が ERROR_SUCCESS を返してしまうことのあったバグを修正しました。

    • 格納対象ファイルの排他処理チェックが失敗した場合に, 原因に拘わらず ERROR_SHARING を返してしまっていた点を改善しました。

    • 新属性ヘッダ (ID 0xFF) を出力する場合の出力位置を改善しました (ヘッダ読み込み時に FILETIME ヘッダの情報が無効 (上書き) となってしまっていたため)。 time_t との相互変換について, 内部的には全て 64 ビットの time_t 値を扱うように改善しました。

    • 64 ビット time_t の採用に伴い, FILETIME 値の補正を 1752/09/14 00:00:00〜2399/12/31 23:59:59 の範囲で行うように変更しました。 NT 4.0 等, Win2K より前の NT 系 OS や Win9X 系の環境については, 従来どおり 2099/12/31 23:59:59 を上限とします。

    • dir コマンド等, コマンド結果の表示等のみで問題が発生しているようであることから, time_t, ftime への変換について, Win2K 以降の NT 系 OS の場合には, 2099 年での丸めを行わないようにしました。

    • 一部自動的に行っていたタイムスタンプ補正についても, スイッチ指定に従って補正を行うように仕様変更しました。 タイムスタンプ補正をエラーとする設定を行っている場合に, 影響の出る可能性があります。

    • ヘッダのタイムスタンプ情報を複数の形式で (内部的に) 保持していたものを, FILETIME 形式一本で保持するように整理・改善しました。 これに伴い, LHA for UNIX で作成された書庫を扱った場合等に, 得られるタイムスタンプ情報が作成時間等で従来と異なる可能性があります。

    • LHA for UNIX で作成された書庫に含まれることのある, シンボリックリンクのメンバを無視するように改善しました。 ショートカットを作成するなどの代替措置は行われませんので注意してください。 (^^;)

  • 2007/7/21 Ver 2.57a 正式版公開。

    • 正式版としてコンパイルを行っただけで, 特に変更点はありません。

  • 2007/7/7 Ver 2.57β版公開。

    • 脆弱性利用を意図した長大な名前をもつ h0 形式ヘッダについて, バッファオーバフロー対策は行っていたものの, 破損ヘッダ扱いとしていなかったため, ファイル改竄 (中身すり替え) が可能となってしまっていた脆弱性に対応しました。

    • WinSFX(M) について, メンバ名取得時にバッファオーバフローの発生する可能性があった脆弱性に対応しました。

    • DosSFX について, メンバ名取得時にバッファオーバフローの発生する可能性があった脆弱性に対応しました。 CVE-2006-4335 方面(昨年の gzip 関連の脆弱性) については, ルーチン構成が異なることから, 引き続き様子見とします (少なくとも手元のサンプル数点では問題が発生していません)。

  • 2007/5/27 Ver 2.56a 正式版公開。

    • 正式版としてコンパイルを行っただけで, 特に変更点はありません。

  • 2007/5/12 Ver 2.56β版公開。

    • Ver 1.95 以降において, UnlhaCompressMem() API を使用して作成されたメンバに, 正しいパスが記録されていなかったバグを修正しました。

  • 2007/3/22 Ver 2.55b 正式版公開。

    • 状況表示ダイアログの『中止』ボタンで処理を中止した際に, プログラムの抜けてしまうことがあったバグを修正しました。

  • 2007/3/10 Ver 2.55a 正式版公開。

    • 正式版としてコンパイルを行っただけで, 特に変更点はありません。

  • 2007/2/23 Ver 2.55β版公開。

    • メモリマップトファイルを使用している場合に, まれに一般保護エラーの発生してしまうことがあったバグを修正しました。

  • 2006/12/22 Ver 2.54a 正式版公開。

    • WinSFX32M において, 関連付け設定時にアイコン ID を指定できるようにしました。 指定したプログラムのリソースが使われる点には変わりがありませんので, 注意してください。

    • WinSFX32M での関連付け設定について, $AskRegist が指定されている場合には, 一括して設定を行うかどうか問い合わせるようにしました。

  • 2006/12/1 Ver 2.54β版公開。

    • Ver 1.99c 以降において, "-z" スイッチ及び "-jtz" スイッチでの拡張子指定が正常に機能していなかったバグを修正しました。

  • 2006/10/30 Ver 2.53b 正式版公開。

    • Ver 2.53a において, "--" スイッチによるスイッチ文字等の変更が利かなくなってしまうことのあったバグを修正しました。

  • 2006/10/28 Ver 2.53a 正式版公開。

    • 正式版としてコンパイルを行っただけで, 特に変更点はありません。

  • 2006/10/19 Ver 2.53 β版公開。

    • バッファオーバーフローやメンバの隠蔽を意図したものと疑われるヘッダについては, 常に破損ヘッダとして扱うようにし, ヘッダの状態に拘わらず特定のエラーコードを返すようにしました。

    • 4KB を超えるヘッダを扱えないウィルス対策ソフト等の存在が確認されたため, そのようなヘッダについては, 全て破損ヘッダとして扱うようにしました。

    • "-jc1" が指定された場合等の破損ヘッダ読み飛ばしについて, 最後のメンバが破損していた場合にエラーを返してしまうことのあったバグを修正しました。

    • h0 形式ヘッダでのファイル名書き込み時については, 仕様を超える長さの名前であってもエラーとせず, 最大文字数への切り詰めを行った上で書き込むように改善しました。

    • 強制指定スイッチについては, それまでの指定に拘わらず, 常に既定値のスイッチ文字を認識するように改善しました。

    • ヘッダ読込用のバッファを 128KB に拡張しました。

  • 2006/10/14 Ver 2.52b 正式版公開。

    • 正式版としてコンパイルを行っただけで, 特に変更点はありません。

  • 2006/10/7 Ver 2.52a β版公開。

    • Win32s 環境の場合にローカル時間との変換が正常に行われないことのあったバグを修正しました。

  • 2006/9/30 Ver 2.52 β版公開。

    • 『gzip における脆弱性』の Lzh 関連部分 (CVE-2006-4335,CVE-2006-4337, CVE-2006-4338) に対応しました。

    • 'T' 命令の際に CRC エラーのメッセージボックスを表示しないように改善しました。

  • 2006/8/11 Ver 2.51b 正式版公開。

    • Ver 2.39 以降において, h1 形式書庫を作成すると, パス情報にファイル名の含まれてしまうことがあったバグを修正しました。

    • Ver 2.39 以降において, NT 系以外の環境で WCharToCharN() が一般保護エラーを起こしてしまう可能性のあったバグを修正しました。

    • Ver 2.39 以降において, "-gy" スイッチが正常に機能していなかったバグを修正しました。

    • MySetFilePointer() において, lpToMoveHigh の返却値がおかしかったバグを修正しました。返却値を使用していないことから表面化はしていません。

  • 2006/8/3 Ver 2.51a 正式版公開。

    • "-jo", "-job" スイッチについて, (2 秒単位ではなく) 秒単位で指定を行えるように改善しました。 SystemTimeToFileTime() API に問題を抱えている一部の環境 (当該 API がエラーを返してきた場合) では, 従来どおり DosDateTimeToFileTime() API を使用することから, 2 秒単位となります。

    • UnlhaGetOriginalSize() 等の API において, サイズが 4GB 以上であった場合には UnlhaGetLastError() が ERROR_TOO_BIG を返すように改善しました。

  • 2006/7/29 Ver 2.51β版公開。

    • Unlha() 等において, バッファとサイズ指定の整合性がとれていないなどの理由でバッファ溢れを起こした場合に, ソフトによっては処理が抜けてしまうことのあったバグを修正しました。

    • "--" スイッチを拡張し, LHA と同様 "--[0|1|2]" の指定を行えるように改善, また, "--3" でスイッチ文字の無効化を行えるようにしました。

  • 2006/7/15 Ver 2.50 正式版公開。

    • Unicode 版 API でのレスポンスファイル読み込みについて, BOMを認識するようにしました。 BOM が存在しない場合は UTF-16LEで扱われます。 これに伴って, "-gl" スイッチによるログ出力の際に BOM が出力されます。

  • 2006/7/8 Ver 2.40k β版公開。

    • Ver 2.02a 以降において, 'L' 命令等によるリスト出力で書庫のタイムスタンプが 0 表示 (1601-01-01 00:00:00 UTC をローカル時間へ変換したもの) されてしまっていたバグを修正しました。

    • 入れ子チェックの改善を行い, (他形式書庫の) ヘッダ検索と先頭ヘッダの読み込みを行った上で判断するようにしました。

  • 2006/6/27 Ver 2.40j β版公開。

    • wsprintfW() API を使用していた箇所が残っていたため, Win 9X 等で UnlhaCheckArchiveW() が動作しなかったバグを修正しました。

  • 2006/6/25 Ver 2.40i β版公開。

    • 圧縮時のフルパス名取得時に不正パスと判断されたにも拘わらず,そのまま共有チェックに回ってしまっていたバグを修正しました。

    • 圧縮時のスキップログ出力について, 簡易出力の場合に常に共有エラーとして出力されてしまっていたバグを修正しました。

    • NT 環境以外の場合に lpCharPrevW() の初期化が行われていなかったバグを修正しました。

    • 表面化していなかった (そのような条件で呼び出されることがない)ものの, Mylstrcpyn2() がバッファ溢れを起こす可能性のあったバグを修正しました。

  • 2006/6/17 Ver 2.40h β版公開。

    • ログ出力の際にはファイル名の制御文字を取り除くように改善しました。

  • 2006/6/10 Ver 2.40g β版公開。

    • Unicode 版 API を使用した場合に, レスポンスファイルの読み込めないことがあったバグを修正しました。

  • 2006/6/6 Ver 2.40f β版公開。

    • "-jsp" スイッチを拡張し, Unicode 制御文字を不正として扱えるようにしました。

    • Win XP/2000 等での WIN32 Unicode 版 API ロード時にエラーが発生した際のデバッグ用メッセージボックス表示処理を削除しました。

  • 2006/6/4 Ver 2.40e β版公開。

    • lh1 形式圧縮について, LHarc オリジナルのルーチンを継承していたために, まれに圧縮を失敗してしまっていたバグを修正しました。

    • lh3 形式圧縮時について, 一致位置の符号長が 4 を超えた場合の処理を追加し忘れていたバグを修正しました (符号表が 4 ビット固定で出力される仕様のため, 不正な符号表となってしまい,展開時にハフマンエラーとなる)。

    • LHA OS/2 の新属性ヘッダ (ID 0x7F) が正常に読み込めていなかったバグを修正しました。

    • 基本ヘッダへのファイル名書き込み時の長さチェックを改善し,"-o" スイッチで指定された互換モードに従い, 必要であれば拡張ヘッダへ書き込むようにしました。 これに伴い, "-o" スイッチの仕様が変更され, "-o[0|1|2]" が指定された場合には, DOS 名 (8+3 の大文字) で格納が行われます。

    • h0/h1 形式書庫の場合に, ファイル名の長さが制限を超えていた場合にエラーを返すようにしました (基本ヘッダ書き込み時の長さチェックに関する修正と異なり, こちらは, 例えば "-o" スイッチが指定されていれば, LHa/LHarc がバッファ溢れを起こす可能性のある場合など)。

    • 修正数が (2.02e 以降) 100 を超えたので, 2.40e に変更となっています。

  • 2006/5/15 Ver 2.40c β版公開。

    • lh1/lh2 形式での圧縮中にルーチンを抜けてしまう (最悪アプリケーションが突然終了する) ことのあったバグを修正しました。 lh1 形式については, 頻度は少ないものの, おそらく最初期の Ver 0.19から発生していたと思われます。

    • 効果が薄かったことから,LZSS 法での最大一致文字数検索をオリジナルのものに戻しました。

  • 2006/5/8 Ver 2.40b β版公開。

    • Ver 1.99f 以降において lhx 形式 (実験用) の展開が行えなくなっていたバグを修正しました。

    • lh2, lh3, lzs, lz5 形式の圧縮に (試験的に) 対応しました。

    • lhx 形式作成用の "-jmm" スイッチについて, 16 以下が指定された場合には既存の lh4〜lh7 形式の書庫を作成するようにしました。

    • "-o2" スイッチが指定されている場合には, lh4 形式が採用された際に LHa Ver 2.13 の仕様どおり "lh4" のメソッド ID を記録するようにしました。

    • 拡張ヘッダの書込順を改善し, また, "-o" スイッチにより互換モードが指定されている場合には, ファイルサイズヘッダ以外の独自ヘッダを作成しないようにしました。 ファイルサイズヘッダについては,4GB を超えるファイルが扱えなくなってしまうことから, 必要な場合には無条件に作成されます。

    • スライド辞書サイズ実験用 lhx 形式の圧縮ルーチンと既存のルーチンを統合しました。

    • ハフマン用中間バッファへの格納について, 『文字・一致長』と『一致位置』について別のバッファを使用することにより格納時の無駄を省きました。

    • LZSS 法について, 擬似的な最大一致文字数で検索を行うようにしました。

  • 2006/4/2 Ver 2.40a β版公開。

    • Ver 2.39b 以降において, コールバック関数 ARCHIVERPROC() を使用している場合に, UNLHA32.DLL が勝手にエラー報告を行って処理を中止してしまっていたバグを修正しました。 かなり影響の大きなバグなので, 日替わりアップを行っています。

    • Ver 2.39b 以降において, EXTRACTINGINFOEXW 等, Unicode 系構造体を使用した場合に, 正常に値が格納されないことのあったバグを修正しました。

  • 2006/3/28 Ver 2.40 β版公開。

    • Unicode 版 API を実装しました。

  • 2006/3/26 Ver 2.39b α版公開。

    • 直前の API 実行において内部的に返された UNLHA32.DLL のエラー値を得る UnlhaGetLastError() API を追加しました。

    • これまで, Unlha() 等で szCmdLine に NULL が渡された場合に ERROR_COMMAND_NAME を返していたものを, ERROR_INVALID_VALUE を返すように変更しました。

    • "-jyn" によるファイル名変更時について, NT 系の場合には GetSaveFileNameW() を呼ぶように改善しました。

    • 状況表示ダイアログでのパス名等の表示を Unicode で行うようにしました。

    • コマンド文字列取得ルーチン (ANSI/Unicode) の共通化を進め, より初期段階から Unicode ベースで扱うように内部処理を変更しました。

    • ワイルドカードによる書庫指定が行われた場合に, 対象書庫が確定される前に FDD チェックを行ってしまっていたため, 正しく判定されないことのあったバグを修正しました。

    • Ver 2.39a において, Win9X 系で実行した場合に一部のログが正常に出力されなかったバグを修正しました。

    • (格納ファイルの) 変名ダイアログについて, 取得を Unicode で行っていたものの, 初期化が ANSI のままだったバグを修正しました。

    • "-jsc" スイッチを指定した際に, 処理したファイル数が 0x8000(32768) 以上になるとエラーとして扱われてしまうことのあったバグを修正しました。

  • 2006/3/21 Ver 2.39a α版公開。

    • Unicode 版 API の実装準備として, UNLHA32.H を ANSI/Unicode 両用の形式へ変更しました。 これに伴い UnlhaA() 等の ANSI 版 API と UnlhaW() 等の Unicode 版ダミー API が追加されています(Unicode 版 API は 2.40 から扱えます)。

    • UNLHA32.H の変更によって, マクロ UNICODE の定義有無に従い対象API が変更されますので, 注意してください。

    • SetLangueSpecified() API 等の仕様を変更し, 他の設定用 API と同様に処理結果を返すように改善しました。 元々が値を返さない関数であったため, 今回の変更が既存のアプリに影響を及ぼすことは殆どありません。

    • 書庫ヘッダ読み込み時のコードページを指定する UnlhaSetCP() APIの追加を行いました。 UnlhaOpenArchive2() を使用しない場合で, OpenArchive 系 API においても正常な情報を得る必要のある場合に使用できます。 取得は UnlhaGetCP() API で行います。

    • Unicode ヘッダの読み書き有無を指定する "-jtu" スイッチを追加しました。

    • 2.02c で FlushViewOfFile() API の実行間隔を 256MB 毎に縮小したことで, メモリ圧迫の問題が改善した (との報告あり) ことから,ファイル・クローズ時の端数分マップについての解放をシステムに任せる仕様へ戻しました。

    • DLL ロード時の米語用言語設定が正しく行われていなかったバグを修正しました。 このため, 明示的に米語を指定した場合に, 本来必要のない再設定処理が行われてしまっていました。

    • HARC ハンドル内のメンバ名記録を WCHAR にし忘れていたバグを修正しました。

    • UnlhaGetOSType() 等での検索状況チェックが正しく行われず, 検索前でもエラーとならずに不正な値を返してしまっていたバグを修正しました。

    • コードページの設定時に,サポートされているページかどうかチェックするように改善しました。

    • MyGetFileSize() を使用していた箇所について MyGetFileSize2() を使用するように変更しました。

    • FileSearchSubSub() での全指定チェックの無駄を省きました。

    • Unicode 版 API の実装準備として, 一部の既存アプリの動作に影響してしまうダイアログ関係を除いて, 内部処理を Unicode 化しました。

    • 各 API に渡されたバッファの確保状況をチェックするように改善しました。 API に渡されたサイズの確保が行われていない (とシステムが判断した) 場合には, ERROR_INVALID_VALUE を返します。

  • 2006/3/11 Ver 2.39 α版公開。

    • 内部動作を Unicode ベースに変更し, 書庫についても Unicode を扱えるよう拡張ヘッダの追加を行いました。 これに伴い当該コードページで表現できない文字を含む名前のファイルについても扱えますが,それらのファイルについては既存のアプリでは正しく扱えま せんので注意してください。

    • "-jb" スイッチ用のポインタが初期化されていなかったため, スイッチを使用しない場合に一般保護エラーとなることのあったバグを修正しました。

    • UNC パス名で書庫が指定された場合に, ロングファイル名使用可否判定に失敗してしまっていたバグを修正しました。

    • ファイルオープン再試行時について, ファイルが見つからなかったにもかかわらず共有指定変更による再試行を行ってしまっていたバグを修正しました。

    • 書庫更新時の作業書庫に対する NTFS チェックが正常に行われないことのあったバグを修正しました。

    • 展開時の空き容量チェック警告表示を改善しました。

  • 2006/1/31 Ver 2.02e 正式版公開。

    • Ver 2.02 以降, UnlhaCheckArchive() に空文字列が渡された場合等に TRUE を返してしまっていたバグを修正。

  • 2006/1/22 Ver 2.02d 正式版公開。

    • 正式版としてコンパイル

  • ....(中略)

  • 1995/3/13 Ver 0.01 最初のプロトタイプ完成。

 

to top 
ソフト内容に関わる事や転載依頼等は同梱ドキュメントを参照の上、作者の指定方法でお願いします。

^ 統合アーカイバ・プロジェクトのホームページ
このページに付いてのお問い合せは: webmasterあっとまーくmail.csdinc.co.jp
(Dec. 14,2008 更新)