7月 072013
 

こん**は。

個人的に MS-DOS / Windows 3.1 をいぢくる課程で、lzh + DOS8.3 方面の問題があることがわかったため、Frostice.mxd を Ver.2.23.1 として臨時アップデートしました。ただし、Windows 98/Me or Windows 2000/Xp 系(7/8.xを含む)においては12年以上問題が今まで顕在化しなかった(笑)という事情もあり、差分公開としています。

– 具体的には、DOS の MIEL というページャーが lzh 直視機能でヘッダLv1 しか
 サポートしないので、UNLHA32.DLL 規定のヘッダLv2圧縮だとファイル名が
 「、Ex」という2バイトの文字化け状態になる現象で、
 LHa 2.55b による解凍は問題ないのですが、他で問題が起こりうるだろうな、
 と想定されました。
– UNLHA32.DLL の Micco さんからの助言?系ツイート(1 / 2 / 3)もあり、調査結果、
 Frostice を手直しするのが手っ取り早いだろうな、と考えました。
– DOS8.3 lzh 時に -h1 -i0 オプションを追加で渡すようにしただけで、
 他の処理部分の変更はしていません。
差分ファイル (自己適用可exe) は WDiff を用いて生成しました。
 作者の中川哲裕氏に感謝しています。

ダウンロードは sourceforge.jp の Meltice Family プロジェクトページ、ないし Meltice Family 公式の掲示板経由で行って下さい。

以下、ソースコード差分について。
一応、7zで固めてありますが、バージョンナンバーに関するリソースrcファイル(これもWinVista以降では無意味みたいですねー)と、FD_ARDLL.CPP の一部分だけです。わかりやすく抜粋すると、こんな感じ。

///////////////////////////////////////////////////////////////////////////////
//
// Frostice Core for Common Archiver Library v2.x source code.
//
///////////////////////////////////////////////////////////////////////////////
// FD_ARDLL.CPP = Frostice Doit group / for common ARchiver Library DLL func.
///////////////////////////////////////////////////////////////////////////////

//途中中略

//64行目近辺
//command for Compress to DOS8.3 name 
static char arcrun_dosname_cmd[SUPPORT_DLL_NUM+1][16] = { 
//Ver.2.23.0 -> 2.23.1 末端の[8]->[16]に拡張 (lzhのオプション数肥大化による)
	"",
	" -ji1 -h1 -i0 ",	
//UNLHA32	: -ji0 = LFN, -ji1 = DOS name. 
//        : 追加分 -h1 = HeaderLv1 + -i0 = FileName.ext=>FILENAME.EXT (v2.23.1+)
//      " -ji1 ", //v2.23.0 UNLHA32.DLL規定値では -h2 -i4
	" -k ",		//ZIP32J	: (no opt) = LFN, -k = DOS name.
	"",			//7-ZIP32
	" -q ",		//CAB32	: (no opt) = LFN, -q = DOS name.
	"",			//tar.gz  not supported.
	"", 		//tar.bz2 not supported.
	"", 		//tar.xz not supported.
	"",			//BGA32 not supported.
	"",			//BGA32 not supported.
	""			//YZ1 not supported.
};

Sorry, the comment form is closed at this time.