Hello community,

here is the log from the commit of package unrar for openSUSE:Factory:NonFree 
checked in at 2014-05-01 07:53:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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-04-08 
12:52:40.000000000 +0200
+++ /work/SRC/openSUSE:Factory:NonFree/.unrar.new/unrar.changes 2014-05-01 
07:53:22.000000000 +0200
@@ -1,0 +2,10 @@
+Sat Apr 26 08:40:53 UTC 2014 - lazy.k...@opensuse.org
+
+- Update to 5.1.3.
+  * Based on rar 5.10 beta 3.
+  * More efficient implementation of "Keep broken files" extraction
+    option (-kb switch in command line mode). Now it allows to
+    recover more data from file split between RAR volumes if next
+    volume is missing.
+
+-------------------------------------------------------------------

Old:
----
  unrarsrc-5.1.2.tar.gz

New:
----
  unrarsrc-5.1.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ unrar.spec ++++++
--- /var/tmp/diff_new_pack.6HnW2Z/_old  2014-05-01 07:53:22.000000000 +0200
+++ /var/tmp/diff_new_pack.6HnW2Z/_new  2014-05-01 07:53:22.000000000 +0200
@@ -18,10 +18,10 @@
 
 # majorversion should match the major version number.
 %define majorversion 5
-%define libsuffix 5_1_2
+%define libsuffix 5_1_3
 
 Name:           unrar
-Version:        5.1.2
+Version:        5.1.3
 Release:        0
 License:        SUSE-NonFree
 Summary:        A program to extract, test, and view RAR archives

++++++ unrarsrc-5.1.2.tar.gz -> unrarsrc-5.1.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/consio.cpp new/unrar/consio.cpp
--- old/unrar/consio.cpp        2014-04-05 12:21:49.000000000 +0200
+++ new/unrar/consio.cpp        2014-04-23 14:12:37.000000000 +0200
@@ -243,6 +243,10 @@
 
 
 #ifndef SILENT
+// We allow this function to return 0 in case of invalid input,
+// because it might be convenient to press Enter to some not dangerous
+// prompts like "insert disk with next volume". We should call this function
+// again in case of 0 in dangerous prompt such as overwriting file.
 int Ask(const wchar *AskStr)
 {
   uiAlarm(UIALARM_QUESTION);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/dll.rc new/unrar/dll.rc
--- old/unrar/dll.rc    2014-04-05 12:18:50.000000000 +0200
+++ new/unrar/dll.rc    2014-04-23 14:05:45.000000000 +0200
@@ -2,8 +2,8 @@
 #include <commctrl.h>
 
 VS_VERSION_INFO VERSIONINFO
-FILEVERSION 5, 10, 2, 1192
-PRODUCTVERSION 5, 10, 2, 1192
+FILEVERSION 5, 10, 3, 1210
+PRODUCTVERSION 5, 10, 3, 1210
 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.2\0"
-      VALUE "ProductVersion", "5.10.2\0"
+      VALUE "FileVersion", "5.10.3\0"
+      VALUE "ProductVersion", "5.10.3\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/pathfn.cpp new/unrar/pathfn.cpp
--- old/unrar/pathfn.cpp        2014-04-05 12:21:49.000000000 +0200
+++ new/unrar/pathfn.cpp        2014-04-23 14:12:37.000000000 +0200
@@ -766,7 +766,15 @@
     }
     const wchar *ChPtr=wcschr(MaskChars,toupperw(Mask[I]));
     if (ChPtr==NULL || QuoteMode)
+    {
       DateText[J]=Mask[I];
+#ifdef _WIN_ALL
+      // We do not allow ':' in Windows because of NTFS streams.
+      // Users had problems after specifying hh:mm mask.
+      if (DateText[J]==':')
+        DateText[J]='_';
+#endif
+    }
     else
     {
       size_t FieldPos=ChPtr-MaskChars;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/rdwrfn.cpp new/unrar/rdwrfn.cpp
--- old/unrar/rdwrfn.cpp        2014-04-05 12:21:49.000000000 +0200
+++ new/unrar/rdwrfn.cpp        2014-04-23 14:12:38.000000000 +0200
@@ -62,14 +62,18 @@
     else
     {
       size_t SizeToRead=((int64)Count>UnpPackedSize) ? 
(size_t)UnpPackedSize:Count;
-      if (SizeToRead==0)
-        return 0;
-      if (!SrcFile->IsOpened())
-        return(-1);
-      ReadSize=SrcFile->Read(ReadAddr,SizeToRead);
-      FileHeader *hd=SubHead!=NULL ? SubHead:&SrcArc->FileHead;
-      if (hd->SplitAfter)
-        PackedDataHash.Update(ReadAddr,ReadSize);
+      if (SizeToRead>0)
+      {
+        if (!SrcFile->IsOpened())
+          return -1;
+        ReadSize=SrcFile->Read(ReadAddr,SizeToRead);
+        FileHeader *hd=SubHead!=NULL ? SubHead:&SrcArc->FileHead;
+        if (hd->SplitAfter)
+          PackedDataHash.Update(ReadAddr,ReadSize);
+      }
+      else
+        if (!UnpVolume) // For volume we'll ask for next volume below.
+          return 0;
     }
     CurUnpRead+=ReadSize;
     TotalRead+=ReadSize;
@@ -80,14 +84,19 @@
     Count-=ReadSize;
 #endif
     UnpPackedSize-=ReadSize;
-    if (UnpPackedSize == 0 && UnpVolume)
+
+    // Do not ask for next volume if we read something from current volume.
+    // If next volume is missing, we need to process all data from current
+    // volume before aborting. It helps to recover all possible data
+    // in "Keep broken files" mode.
+    if (UnpPackedSize == 0 && UnpVolume && ReadSize==0)
     {
 #ifndef NOVOLUME
       if (!MergeArchive(*SrcArc,this,true,CurrentCommand))
 #endif
       {
         NextVolumeMissing=true;
-        return(-1);
+        return -1;
       }
     }
     else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/uiconsole.cpp new/unrar/uiconsole.cpp
--- old/unrar/uiconsole.cpp     2014-04-05 12:21:49.000000000 +0200
+++ new/unrar/uiconsole.cpp     2014-04-23 14:12:38.000000000 +0200
@@ -3,7 +3,11 @@
 {
   bool AllowRename=(Flags & UIASKREP_F_NORENAME)==0;
   eprintf(St(MFileExists),Name);
-  int Choice=Ask(St(AllowRename ? MYesNoAllRenQ : MYesNoAllQ));
+  int Choice=0;
+  do
+  {
+    Choice=Ask(St(AllowRename ? MYesNoAllRenQ : MYesNoAllQ));
+  } while (Choice==0); // 0 means invalid input.
   switch(Choice)
   {
     case 1:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/version.hpp new/unrar/version.hpp
--- old/unrar/version.hpp       2014-04-05 12:21:49.000000000 +0200
+++ new/unrar/version.hpp       2014-04-23 14:12:38.000000000 +0200
@@ -1,6 +1,6 @@
 #define RARVER_MAJOR     5
 #define RARVER_MINOR    10
-#define RARVER_BETA      2
-#define RARVER_DAY       5
+#define RARVER_BETA      3
+#define RARVER_DAY      23
 #define RARVER_MONTH     4
 #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-04-05 12:21:49.000000000 +0200
+++ new/unrar/volume.cpp        2014-04-23 14:12:38.000000000 +0200
@@ -188,25 +188,28 @@
 
   if (Cmd->Callback!=NULL)
   {
-    wchar CurName[NM];
-    wcscpy(CurName,NextName);
+    wchar OrgNextName[NM];
+    wcscpy(OrgNextName,NextName);
     if 
(Cmd->Callback(UCM_CHANGEVOLUMEW,Cmd->UserData,(LPARAM)NextName,RAR_VOL_ASK)==-1)
       DllVolAborted=true;
     else
-      if (wcscmp(CurName,NextName)!=0)
+      if (wcscmp(OrgNextName,NextName)!=0)
         DllVolChanged=true;
       else
       {
-        char NextNameA[NM];
+        char NextNameA[NM],OrgNextNameA[NM];
         WideToChar(NextName,NextNameA,ASIZE(NextNameA));
+        strcpy(OrgNextNameA,NextNameA);
         if 
(Cmd->Callback(UCM_CHANGEVOLUME,Cmd->UserData,(LPARAM)NextNameA,RAR_VOL_ASK)==-1)
           DllVolAborted=true;
         else
-        {
-          CharToWide(NextNameA,NextName,NameSize);
-          if (wcscmp(CurName,NextName)!=0)
+          if (strcmp(OrgNextNameA,NextNameA)!=0)
+          {
+            // We can damage some Unicode characters by U->A->U conversion,
+            // so set Unicode name only if we see that ANSI name is changed.
+            CharToWide(NextNameA,NextName,NameSize);
             DllVolChanged=true;
-        }
+          }
       }
   }
   if (!DllVolChanged && Cmd->ChangeVolProc!=NULL)

-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to