unrar 中文 patch
※ 本文轉錄自 [statue] 看板
作者: statue (statue) 看板: statue
標題: Re: [轉錄]unrar 中文 patch
時間: Thu Jul 1 16:33:41 2004
http://lists.debian.org/debian-chinese-big5/2002/10/msg00046.html
unrar 2.71-1,此版並不支援 Unicode,請改用 rar/unrar 3.0-2。
目前 /usr/ports/archivers/unrar 的版本是 3.30 不過解中文目錄還是有問題。
--- unicode.cpp.orig Thu Jul 1 16:25:11 2004
+++ unicode.cpp Thu Jul 1 16:26:12 2004
@@ -2,6 +2,7 @@
void WideToChar(const wchar *Src,char *Dest,int DestSize)
{
+#if 0 /* patch for chinese filename */
#ifdef _WIN_32
WideCharToMultiByte(CP_ACP,0,Src,-1,Dest,DestSize,NULL,NULL);
#else
@@ -18,6 +19,7 @@
if (Src[I]==0)
break;
}
+#endif
#endif
#endif
#endif
--- arcread.cpp.orig Thu Jan 22 21:45:34 2004
+++ arcread.cpp Thu Jul 1 16:30:16 2004
@@ -540,6 +540,7 @@
void Archive::ConvertUnknownHeader()
{
+ int s1=0;
if (NewLhd.UnpVer<20 && (NewLhd.FileAttr & 0x10))
NewLhd.Flags|=LHD_DIRECTORY;
if (NewLhd.HostOS>=HOST_MAX)
@@ -551,6 +552,14 @@
}
for (char *s=NewLhd.FileName;*s!=0;s=charnext(s))
{
+ if (s1==1) { /* skip Big5 second byte */
+ s1=0;
+ continue;
+ }
+ if((byte)*s>127) { /* Big5 first byte */
+ s1=1;
+ continue;
+ }
if (*s=='/' || *s=='\\')
*s=CPATHDIVIDER;
#if defined(_APPLE) && !defined(UNICODE_SUPPORTED)
感謝 visor 提供該問題與 patch。
--
※ Origin: SayYA 資訊站 <bbs.sayya.org>
◆ From: 140.138.150.54
FreeBSD 近期熱門文章
PTT數位生活區 即時熱門文章