Hello community,
here is the log from the commit of package unrar for openSUSE:Factory:NonFree checked in at 2014-08-25 11:11:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory:NonFree/unrar (Old)
and /work/SRC/openSUSE:Factory:NonFree/.unrar.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "unrar"
Changes:
--------
--- /work/SRC/openSUSE:Factory:NonFree/unrar/unrar.changes 2014-06-16 21:35:27.000000000 +0200
+++ /work/SRC/openSUSE:Factory:NonFree/.unrar.new/unrar.changes 2014-08-25 11:11:42.000000000 +0200
@@ -1,0 +2,7 @@
+Sun Aug 10 12:10:29 UTC 2014 - lazy.kent@opensuse.org
+
+- Update to 5.1.7.
+ * Based on rar 5.11 beta 1.
+ * No changelog available.
+
+-------------------------------------------------------------------
Old:
----
unrarsrc-5.1.6.tar.gz
New:
----
unrarsrc-5.1.7.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ unrar.spec ++++++
--- /var/tmp/diff_new_pack.mglRuc/_old 2014-08-25 11:11:43.000000000 +0200
+++ /var/tmp/diff_new_pack.mglRuc/_new 2014-08-25 11:11:43.000000000 +0200
@@ -18,10 +18,10 @@
# majorversion should match the major version number.
%define majorversion 5
-%define libsuffix 5_1_6
+%define libsuffix 5_1_7
Name: unrar
-Version: 5.1.6
+Version: 5.1.7
Release: 0
License: SUSE-NonFree
Summary: A program to extract, test, and view RAR archives
++++++ unrarsrc-5.1.6.tar.gz -> unrarsrc-5.1.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/dll.rc new/unrar/dll.rc
--- old/unrar/dll.rc 2014-06-10 19:10:30.000000000 +0200
+++ new/unrar/dll.rc 2014-08-06 15:52:53.000000000 +0200
@@ -2,8 +2,8 @@
#include
VS_VERSION_INFO VERSIONINFO
-FILEVERSION 5, 10, 100, 1258
-PRODUCTVERSION 5, 10, 100, 1258
+FILEVERSION 5, 11, 1, 1315
+PRODUCTVERSION 5, 11, 1, 1315
FILEOS VOS__WINDOWS32
FILETYPE VFT_APP
{
@@ -14,8 +14,8 @@
VALUE "CompanyName", "Alexander Roshal\0"
VALUE "ProductName", "RAR decompression library\0"
VALUE "FileDescription", "RAR decompression library\0"
- VALUE "FileVersion", "5.10.0\0"
- VALUE "ProductVersion", "5.10.0\0"
+ VALUE "FileVersion", "5.11.1\0"
+ VALUE "ProductVersion", "5.11.1\0"
VALUE "LegalCopyright", "Copyright � Alexander Roshal 1993-2014\0"
VALUE "OriginalFilename", "Unrar.dll\0"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/extract.cpp new/unrar/extract.cpp
--- old/unrar/extract.cpp 2014-06-10 19:14:06.000000000 +0200
+++ new/unrar/extract.cpp 2014-08-06 16:00:15.000000000 +0200
@@ -613,7 +613,13 @@
Arc.SeekToNext();
- bool ValidCRC=DataIO.UnpHash.Cmp(&Arc.FileHead.FileHash,Arc.FileHead.UseHashKey ? Arc.FileHead.HashKey:NULL);
+ // We check for "split after" flag to detect partially extracted files
+ // from incomplete volume sets. For them file header contains packed
+ // data hash, which must not be compared against unpacked data hash
+ // to prevent accidental match. Moreover, for -m0 volumes packed data
+ // hash would match truncated unpacked data hash and lead to fake "OK"
+ // in incomplete volume set.
+ bool ValidCRC=!Arc.FileHead.SplitAfter && DataIO.UnpHash.Cmp(&Arc.FileHead.FileHash,Arc.FileHead.UseHashKey ? Arc.FileHead.HashKey:NULL);
// We set AnySolidDataUnpackedWell to true if we found at least one
// valid non-zero solid file in preceding solid stream. If it is true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/file.cpp new/unrar/file.cpp
--- old/unrar/file.cpp 2014-06-10 19:14:06.000000000 +0200
+++ new/unrar/file.cpp 2014-08-06 16:00:15.000000000 +0200
@@ -658,10 +658,26 @@
{
Wait();
size_t SizeToRead=(!CopyAll && Length<(int64)Buffer.Size()) ? (size_t)Length:Buffer.Size();
- int ReadSize=Read(&Buffer[0],SizeToRead);
+ char *Buf=&Buffer[0];
+ int ReadSize=Read(Buf,SizeToRead);
if (ReadSize==0)
break;
- Dest.Write(&Buffer[0],ReadSize);
+ size_t WriteSize=ReadSize;
+#ifdef _WIN_ALL
+ // For FAT32 USB flash drives in Windows if first write is 4 KB or more,
+ // write caching is disabled and "write through" is enabled, resulting
+ // in bad performance, especially for many small files. It happens when
+ // we create SFX archive on USB drive, because SFX module is writetn first.
+ // So we split the first write to small 1 KB followed by rest of data.
+ if (CopySize==0 && WriteSize>=4096)
+ {
+ const size_t FirstWrite=1024;
+ Dest.Write(Buf,FirstWrite);
+ Buf+=FirstWrite;
+ WriteSize-=FirstWrite;
+ }
+#endif
+ Dest.Write(Buf,WriteSize);
CopySize+=ReadSize;
if (!CopyAll)
Length-=ReadSize;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/filestr.cpp new/unrar/filestr.cpp
--- old/unrar/filestr.cpp 2014-06-10 19:14:06.000000000 +0200
+++ new/unrar/filestr.cpp 2014-08-06 16:00:15.000000000 +0200
@@ -22,7 +22,7 @@
wcsncpyz(FileName,Name,ASIZE(FileName));
File SrcFile;
- if (FileName!=NULL && *FileName!=0)
+ if (*FileName!=0)
{
bool OpenCode=AbortOnError ? SrcFile.WOpen(FileName):SrcFile.Open(FileName,0);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/os.hpp new/unrar/os.hpp
--- old/unrar/os.hpp 2014-06-10 19:14:06.000000000 +0200
+++ new/unrar/os.hpp 2014-08-06 16:00:15.000000000 +0200
@@ -158,6 +158,11 @@
#define SAVE_LINKS
#endif
+#if defined(__linux) && !defined (_ANDROID) || defined(__FreeBSD__)
+#include
+#define USE_LUTIMES
+#endif
+
#define ENABLE_ACCESS
#define DefConfigName L".rarrc"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/pathfn.cpp new/unrar/pathfn.cpp
--- old/unrar/pathfn.cpp 2014-06-10 19:14:06.000000000 +0200
+++ new/unrar/pathfn.cpp 2014-08-06 16:00:15.000000000 +0200
@@ -643,7 +643,7 @@
#ifndef SFX_MODULE
-static void GenArcName(wchar *ArcName,wchar *GenerateMask,uint ArcNumber,bool &ArcNumPresent)
+static void GenArcName(wchar *ArcName,const wchar *GenerateMask,uint ArcNumber,bool &ArcNumPresent)
{
bool Prefix=false;
if (*GenerateMask=='+')
@@ -809,7 +809,7 @@
}
-void GenerateArchiveName(wchar *ArcName,size_t MaxSize,wchar *GenerateMask,bool Archiving)
+void GenerateArchiveName(wchar *ArcName,size_t MaxSize,const wchar *GenerateMask,bool Archiving)
{
// Must be enough space for archive name plus all stuff in mask plus
// extra overhead produced by mask 'N' (archive number) characters.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/pathfn.hpp new/unrar/pathfn.hpp
--- old/unrar/pathfn.hpp 2014-06-10 19:14:06.000000000 +0200
+++ new/unrar/pathfn.hpp 2014-08-06 16:00:15.000000000 +0200
@@ -58,7 +58,7 @@
wchar* GetWideName(const char *Name,const wchar *NameW,wchar *DestW,size_t DestSize);
#ifndef SFX_MODULE
-void GenerateArchiveName(wchar *ArcName,size_t MaxSize,wchar *GenerateMask,bool Archiving);
+void GenerateArchiveName(wchar *ArcName,size_t MaxSize,const wchar *GenerateMask,bool Archiving);
#endif
#ifdef _WIN_ALL
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/rarvm.cpp new/unrar/rarvm.cpp
--- old/unrar/rarvm.cpp 2014-06-10 19:14:06.000000000 +0200
+++ new/unrar/rarvm.cpp 2014-08-06 16:00:15.000000000 +0200
@@ -984,7 +984,7 @@
byte *SrcData=Mem,*DestData=SrcData+DataSize;
const int Channels=3;
SET_VALUE(false,&Mem[VM_GLOBALMEMADDR+0x20],DataSize);
- if ((uint)DataSize>=VM_GLOBALMEMADDR/2 || PosR<0)
+ if ((uint)DataSize>=VM_GLOBALMEMADDR/2 || Width<0 || PosR<0)
break;
for (int CurChannel=0;CurChannelName,FirstVolName,ASIZE(Item->Name));
uiMsg(UIMSG_CREATING,Item->Name);
+ uiMsg(UIEVENT_NEWARCHIVE,Item->Name);
File *NewVol=new File;
bool UserReject;
if (!FileCreate(Cmd,NewVol,Item->Name,ASIZE(Item->Name),&UserReject))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/threadmisc.cpp new/unrar/threadmisc.cpp
--- old/unrar/threadmisc.cpp 2014-06-10 19:14:06.000000000 +0200
+++ new/unrar/threadmisc.cpp 2014-08-06 16:00:15.000000000 +0200
@@ -77,12 +77,13 @@
static THREAD_HANDLE ThreadCreate(NATIVE_THREAD_PTR Proc,void *Data)
{
#ifdef _UNIX
+/*
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
-
+*/
pthread_t pt;
- int Code=pthread_create(&pt,&attr,Proc,Data);
+ int Code=pthread_create(&pt,NULL/*&attr*/,Proc,Data);
if (Code!=0)
{
wchar Msg[100];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/timefn.cpp new/unrar/timefn.cpp
--- old/unrar/timefn.cpp 2014-06-10 19:14:06.000000000 +0200
+++ new/unrar/timefn.cpp 2014-08-06 16:00:15.000000000 +0200
@@ -42,22 +42,30 @@
GetWin32(&ft);
FILETIME lft;
- // We use these functions instead of FileTimeToLocalFileTime according to
- // MSDN recommendation: "To account for daylight saving time
- // when converting a file time to a local time ..."
- SYSTEMTIME st1,st2;
- FileTimeToSystemTime(&ft,&st1);
- SystemTimeToTzSpecificLocalTime(NULL,&st1,&st2);
- SystemTimeToFileTime(&st2,&lft);
-
- // Correct precision loss (low 4 decimal digits) in FileTimeToSystemTime.
- FILETIME rft;
- SystemTimeToFileTime(&st1,&rft);
- int64 Corrected=INT32TO64(ft.dwHighDateTime,ft.dwLowDateTime)-
- INT32TO64(rft.dwHighDateTime,rft.dwLowDateTime)+
- INT32TO64(lft.dwHighDateTime,lft.dwLowDateTime);
- lft.dwLowDateTime=(DWORD)Corrected;
- lft.dwHighDateTime=(DWORD)(Corrected>>32);
+ if (WinNT() < WNT_VISTA)
+ {
+ // SystemTimeToTzSpecificLocalTime based code produces 1 hour error on XP.
+ FileTimeToLocalFileTime(&ft,&lft);
+ }
+ else
+ {
+ // We use these functions instead of FileTimeToLocalFileTime according to
+ // MSDN recommendation: "To account for daylight saving time
+ // when converting a file time to a local time ..."
+ SYSTEMTIME st1,st2;
+ FileTimeToSystemTime(&ft,&st1);
+ SystemTimeToTzSpecificLocalTime(NULL,&st1,&st2);
+ SystemTimeToFileTime(&st2,&lft);
+
+ // Correct precision loss (low 4 decimal digits) in FileTimeToSystemTime.
+ FILETIME rft;
+ SystemTimeToFileTime(&st1,&rft);
+ int64 Corrected=INT32TO64(ft.dwHighDateTime,ft.dwLowDateTime)-
+ INT32TO64(rft.dwHighDateTime,rft.dwLowDateTime)+
+ INT32TO64(lft.dwHighDateTime,lft.dwLowDateTime);
+ lft.dwLowDateTime=(DWORD)Corrected;
+ lft.dwHighDateTime=(DWORD)(Corrected>>32);
+ }
SYSTEMTIME st;
FileTimeToSystemTime(&lft,&st);
@@ -121,21 +129,30 @@
if (lft.dwLowDateTime<lt->Reminder)
lft.dwHighDateTime++;
- // Reverse procedure which we do in GetLocal.
- SYSTEMTIME st1,st2;
- FileTimeToSystemTime(&lft,&st2);
- TzSpecificLocalTimeToSystemTime(NULL,&st2,&st1);
FILETIME ft;
- SystemTimeToFileTime(&st1,&ft);
- // Correct precision loss (low 4 decimal digits) in FileTimeToSystemTime.
- FILETIME rft;
- SystemTimeToFileTime(&st2,&rft);
- int64 Corrected=INT32TO64(lft.dwHighDateTime,lft.dwLowDateTime)-
- INT32TO64(rft.dwHighDateTime,rft.dwLowDateTime)+
- INT32TO64(ft.dwHighDateTime,ft.dwLowDateTime);
- ft.dwLowDateTime=(DWORD)Corrected;
- ft.dwHighDateTime=(DWORD)(Corrected>>32);
+ if (WinNT() < WNT_VISTA)
+ {
+ // TzSpecificLocalTimeToSystemTime based code produces 1 hour error on XP.
+ LocalFileTimeToFileTime(&lft,&ft);
+ }
+ else
+ {
+ // Reverse procedure which we do in GetLocal.
+ SYSTEMTIME st1,st2;
+ FileTimeToSystemTime(&lft,&st2);
+ TzSpecificLocalTimeToSystemTime(NULL,&st2,&st1);
+ SystemTimeToFileTime(&st1,&ft);
+
+ // Correct precision loss (low 4 decimal digits) in FileTimeToSystemTime.
+ FILETIME rft;
+ SystemTimeToFileTime(&st2,&rft);
+ int64 Corrected=INT32TO64(lft.dwHighDateTime,lft.dwLowDateTime)-
+ INT32TO64(rft.dwHighDateTime,rft.dwLowDateTime)+
+ INT32TO64(ft.dwHighDateTime,ft.dwLowDateTime);
+ ft.dwLowDateTime=(DWORD)Corrected;
+ ft.dwHighDateTime=(DWORD)(Corrected>>32);
+ }
*this=ft;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/ui.hpp new/unrar/ui.hpp
--- old/unrar/ui.hpp 2014-06-10 19:14:06.000000000 +0200
+++ new/unrar/ui.hpp 2014-08-06 16:00:15.000000000 +0200
@@ -56,6 +56,7 @@
UIEVENT_ERASEDISK, UIEVENT_FILESUMSTART, UIEVENT_FILESUMPROGRESS,
UIEVENT_FILESUMEND, UIEVENT_PROTECTSTART, UIEVENT_PROTECTEND,
UIEVENT_TESTADDEDSTART, UIEVENT_TESTADDEDEND, UIEVENT_RRTESTING,
+ UIEVENT_NEWARCHIVE, UIEVENT_NEWREVFILE
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/ulinks.cpp new/unrar/ulinks.cpp
--- old/unrar/ulinks.cpp 2014-06-10 19:14:06.000000000 +0200
+++ new/unrar/ulinks.cpp 2014-08-06 16:00:15.000000000 +0200
@@ -1,6 +1,6 @@
-static bool UnixSymlink(const char *Target,const wchar *LinkName)
+static bool UnixSymlink(const char *Target,const wchar *LinkName,RarTime *ftm,RarTime *fta)
{
CreatePath(LinkName,true);
DelFile(LinkName);
@@ -17,9 +17,15 @@
}
return false;
}
- // We do not set time of created symlink, because utime changes
- // time of link target and lutimes is not available on all Linux
- // systems at the moment of writing this code.
+#ifdef USE_LUTIMES
+ struct timeval tv[2];
+ tv[0].tv_sec=fta->GetUnix();
+ tv[0].tv_usec=long(fta->GetRaw()%10000000/10);
+ tv[1].tv_sec=ftm->GetUnix();
+ tv[1].tv_usec=long(ftm->GetRaw()%10000000/10);
+ lutimes(LinkNameA,tv);
+#endif
+
return true;
}
@@ -42,7 +48,7 @@
if (!DataIO.UnpHash.Cmp(&Arc.FileHead.FileHash,Arc.FileHead.UseHashKey ? Arc.FileHead.HashKey:NULL))
return true;
- return UnixSymlink(Target,LinkName);
+ return UnixSymlink(Target,LinkName,&Arc.FileHead.mtime,&Arc.FileHead.atime);
}
return false;
}
@@ -62,5 +68,5 @@
return false;
DosSlashToUnix(Target,Target,ASIZE(Target));
}
- return UnixSymlink(Target,Name);
+ return UnixSymlink(Target,Name,&hd->mtime,&hd->atime);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/unpack.hpp new/unrar/unpack.hpp
--- old/unrar/unpack.hpp 2014-06-10 19:14:06.000000000 +0200
+++ new/unrar/unpack.hpp 2014-08-06 16:00:15.000000000 +0200
@@ -325,7 +325,7 @@
ModelPPM PPM;
int PPMEscChar;
- byte UnpOldTable[HUFF_TABLE_SIZE];
+ byte UnpOldTable[HUFF_TABLE_SIZE30];
int UnpBlockType;
bool TablesRead;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/unpack30.cpp new/unrar/unpack30.cpp
--- old/unrar/unpack30.cpp 2014-06-10 19:14:06.000000000 +0200
+++ new/unrar/unpack30.cpp 2014-08-06 16:00:15.000000000 +0200
@@ -798,13 +798,13 @@
}
TablesRead=true;
if (Inp.InAddr>ReadTop)
- return(false);
+ return false;
MakeDecodeTables(&Table[0],&BlockTables.LD,NC30);
MakeDecodeTables(&Table[NC30],&BlockTables.DD,DC30);
MakeDecodeTables(&Table[NC30+DC30],&BlockTables.LDD,LDC30);
MakeDecodeTables(&Table[NC30+DC30+LDC30],&BlockTables.RD,RC30);
memcpy(UnpOldTable,Table,sizeof(UnpOldTable));
- return(true);
+ return true;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/version.hpp new/unrar/version.hpp
--- old/unrar/version.hpp 2014-06-10 19:14:06.000000000 +0200
+++ new/unrar/version.hpp 2014-08-06 16:00:15.000000000 +0200
@@ -1,6 +1,6 @@
#define RARVER_MAJOR 5
-#define RARVER_MINOR 10
-#define RARVER_BETA 0
-#define RARVER_DAY 10
-#define RARVER_MONTH 6
+#define RARVER_MINOR 11
+#define RARVER_BETA 1
+#define RARVER_DAY 6
+#define RARVER_MONTH 8
#define RARVER_YEAR 2014
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/volume.cpp new/unrar/volume.cpp
--- old/unrar/volume.cpp 2014-06-10 19:14:06.000000000 +0200
+++ new/unrar/volume.cpp 2014-08-06 16:00:15.000000000 +0200
@@ -241,7 +241,7 @@
if (RetCode==0)
DllVolAborted=true;
else
- CharToWide(NextNameA,NextName,ASIZE(NextName));
+ CharToWide(NextNameA,NextName,NameSize);
}
// We quit only on 'abort' condition, but not on 'name not changed'.
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org