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 - [email protected]
+
+- 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 <commctrl.h>
 
 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 <sys/time.h>
+#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;CurChannel<Channels;CurChannel++)
         {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/recvol3.cpp new/unrar/recvol3.cpp
--- old/unrar/recvol3.cpp       2014-06-10 19:14:06.000000000 +0200
+++ new/unrar/recvol3.cpp       2014-08-06 16:00:15.000000000 +0200
@@ -309,6 +309,7 @@
         wcscpy(LastVolName,ArcName);
 
       uiMsg(UIMSG_MISSINGVOL,ArcName);
+      uiMsg(UIEVENT_NEWARCHIVE,ArcName);
     }
     SrcFile[CurArcNum]=(File*)NewFile;
     NextVolumeName(ArcName,ASIZE(ArcName),!NewNumbering);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/recvol5.cpp new/unrar/recvol5.cpp
--- old/unrar/recvol5.cpp       2014-06-10 19:14:06.000000000 +0200
+++ new/unrar/recvol5.cpp       2014-08-06 16:00:15.000000000 +0200
@@ -292,6 +292,7 @@
     {
       wcsncpyz(Item->Name,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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to