Hello community, here is the log from the commit of package unrar for openSUSE:Factory:NonFree checked in at 2013-11-12 16:37:02 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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 2013-10-21 15:15:45.000000000 +0200 +++ /work/SRC/openSUSE:Factory:NonFree/.unrar.new/unrar.changes 2013-11-12 16:37:03.000000000 +0100 @@ -1,0 +2,6 @@ +Tue Nov 12 12:53:14 UTC 2013 - [email protected] + +- Update to 5.0.13 + * No changelog + +------------------------------------------------------------------- Old: ---- unrarsrc-5.0.12.tar.gz New: ---- unrarsrc-5.0.13.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ unrar.spec ++++++ --- /var/tmp/diff_new_pack.ZGdagg/_old 2013-11-12 16:37:04.000000000 +0100 +++ /var/tmp/diff_new_pack.ZGdagg/_new 2013-11-12 16:37:04.000000000 +0100 @@ -18,10 +18,10 @@ # majorversion should match the major version number. %define majorversion 5 -%define libsuffix 5_0_12 +%define libsuffix 5_0_13 Name: unrar -Version: 5.0.12 +Version: 5.0.13 Release: 0 License: SUSE-NonFree Summary: A program to extract, test, and view RAR archives ++++++ unrarsrc-5.0.12.tar.gz -> unrarsrc-5.0.13.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/archive.cpp new/unrar/archive.cpp --- old/unrar/archive.cpp 2013-09-24 20:08:23.000000000 +0200 +++ new/unrar/archive.cpp 2013-11-12 09:00:45.000000000 +0100 @@ -49,6 +49,7 @@ NewArchive=false; SilentOpen=false; + } @@ -201,6 +202,15 @@ else MarkHead.HeadSize=SIZEOF_MARKHEAD3; +#ifdef RARDLL + // If callback function is not set, we cannot get the password, + // so we skip the initial header processing for encrypted header archive. + // It leads to skipped archive comment, but the rest of archive data + // is processed correctly. + if (Cmd->Callback==NULL) + SilentOpen=true; +#endif + // Skip the archive encryption header if any and read the main header. while (ReadHeader()!=0) { @@ -244,15 +254,6 @@ } */ -#ifdef RARDLL - // If callback function is not set, we cannot get the password, - // so we skip the initial header processing for encrypted header archive. - // It leads to skipped archive comment, but the rest of archive data - // is processed correctly. - if (Cmd->Callback==NULL) - SilentOpen=true; -#endif - MainComment=MainHead.CommentInHeader; // If we process non-encrypted archive or can request a password, @@ -271,10 +272,10 @@ { HEADER_TYPE HeaderType=GetHeaderType(); if (HeaderType==HEAD_SERVICE) - FirstVolume=!SubHead.SplitBefore; + FirstVolume=Volume && !SubHead.SplitBefore; else { - FirstVolume=HeaderType==HEAD_FILE && !FileHead.SplitBefore; + FirstVolume=Volume && HeaderType==HEAD_FILE && !FileHead.SplitBefore; break; } SeekToNext(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/dll.cpp new/unrar/dll.cpp --- old/unrar/dll.cpp 2013-09-24 20:08:23.000000000 +0200 +++ new/unrar/dll.cpp 2013-11-12 09:00:45.000000000 +0100 @@ -73,7 +73,16 @@ } if (!Data->Arc.IsArchive(false)) { - r->OpenResult=Data->Cmd.DllError!=0 ? Data->Cmd.DllError:ERAR_BAD_ARCHIVE; + if (Data->Cmd.DllError!=0) + r->OpenResult=Data->Cmd.DllError; + else + { + RAR_EXIT ErrCode=ErrHandler.GetErrorCode(); + if (ErrCode!=RARX_SUCCESS && ErrCode!=RARX_WARNING) + r->OpenResult=RarErrorToDll(ErrCode); + else + r->OpenResult=ERAR_BAD_ARCHIVE; + } delete Data; return NULL; } @@ -197,7 +206,7 @@ else return Code; } - wcsncpy(D->ArcNameW,hd->FileName,ASIZE(D->ArcNameW)); + wcsncpy(D->ArcNameW,Data->Arc.FileName,ASIZE(D->ArcNameW)); WideToChar(D->ArcNameW,D->ArcName,ASIZE(D->ArcName)); wcsncpy(D->FileNameW,hd->FileName,ASIZE(D->FileNameW)); @@ -419,6 +428,8 @@ return ERAR_ECREATE; case RARX_MEMORY: return ERAR_NO_MEMORY; + case RARX_BADPWD: + return ERAR_BAD_PASSWORD; case RARX_SUCCESS: return ERAR_SUCCESS; // 0. default: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/dll.hpp new/unrar/dll.hpp --- old/unrar/dll.hpp 2013-09-24 20:08:23.000000000 +0200 +++ new/unrar/dll.hpp 2013-11-12 09:00:45.000000000 +0100 @@ -17,6 +17,8 @@ #define ERAR_SMALL_BUF 20 #define ERAR_UNKNOWN 21 #define ERAR_MISSING_PASSWORD 22 +#define ERAR_EREFERENCE 23 +#define ERAR_BAD_PASSWORD 24 #define RAR_OM_LIST 0 #define RAR_OM_EXTRACT 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/dll.rc new/unrar/dll.rc --- old/unrar/dll.rc 2013-08-22 15:00:02.000000000 +0200 +++ new/unrar/dll.rc 2013-11-12 08:56:32.000000000 +0100 @@ -2,8 +2,8 @@ #include <commctrl.h> VS_VERSION_INFO VERSIONINFO -FILEVERSION 5, 0, 100, 965 -PRODUCTVERSION 5, 0, 100, 965 +FILEVERSION 5, 1, 1, 1047 +PRODUCTVERSION 5, 1, 1, 1047 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.0.0\0" - VALUE "ProductVersion", "5.0.0\0" + VALUE "FileVersion", "5.1.1\0" + VALUE "ProductVersion", "5.1.1\0" VALUE "LegalCopyright", "Copyright � Alexander Roshal 1993-2013\0" VALUE "OriginalFilename", "Unrar.dll\0" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/errhnd.cpp new/unrar/errhnd.cpp --- old/unrar/errhnd.cpp 2013-09-24 20:08:23.000000000 +0200 +++ new/unrar/errhnd.cpp 2013-11-12 09:00:46.000000000 +0100 @@ -254,6 +254,10 @@ if (ExitCode==RARX_SUCCESS) ExitCode=Code; break; + case RARX_CRC: + if (ExitCode!=RARX_BADPWD) + ExitCode=Code; + break; case RARX_FATAL: if (ExitCode==RARX_SUCCESS || ExitCode==RARX_WARNING) ExitCode=RARX_FATAL; @@ -338,7 +342,7 @@ if (Code!=RARX_SUCCESS && Code!=RARX_USERERROR) mprintf(L"\n%s\n",St(MProgAborted)); #endif - ErrHandler.SetErrorCode(Code); + SetErrorCode(Code); throw Code; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/extract.cpp new/unrar/extract.cpp --- old/unrar/extract.cpp 2013-09-24 20:08:23.000000000 +0200 +++ new/unrar/extract.cpp 2013-11-12 09:00:46.000000000 +0100 @@ -555,7 +555,7 @@ if (Type==FSREDIR_HARDLINK) LinkSuccess=ExtractHardlink(DestFileName,NameExisting,ASIZE(NameExisting)); else - LinkSuccess=ExtractFileCopy(CurFile,Arc.FileName,DestFileName,NameExisting,ASIZE(NameExisting)); + LinkSuccess=ExtractFileCopy(Cmd,CurFile,Arc.FileName,DestFileName,NameExisting,ASIZE(NameExisting)); } else if (Type==FSREDIR_UNIXSYMLINK || Type==FSREDIR_WINSYMLINK || Type==FSREDIR_JUNCTION) @@ -615,12 +615,12 @@ bool BrokenFile=false; // Checksum is not calculated in skip solid mode for performance reason. - if (!SkipSolid) + if (!SkipSolid && ShowChecksum) { if (!WrongPassword && ValidCRC) { #ifndef GUI - if (Command!='P' && Command!='I' && ShowChecksum) + if (Command!='P' && Command!='I') mprintf(L"%s%s ",Cmd->DisablePercentage ? L" ":L"\b\b\b\b\b ", Arc.FileHead.FileHash.Type==HASH_NONE ? L" ?":St(MOk)); #endif @@ -706,7 +706,7 @@ void CmdExtract::UnstoreFile(ComprDataIO &DataIO,int64 DestUnpSize) { - Array<byte> Buffer(0x100000); + Array<byte> Buffer(0x40000); while (1) { uint Code=DataIO.UnpRead(&Buffer[0],Buffer.Size()); @@ -720,7 +720,7 @@ } -bool CmdExtract::ExtractFileCopy(File &New,wchar *ArcName,wchar *NameNew,wchar *NameExisting,size_t NameExistingSize) +bool CmdExtract::ExtractFileCopy(CommandData *Cmd,File &New,wchar *ArcName,wchar *NameNew,wchar *NameExisting,size_t NameExistingSize) { #ifdef _WIN_ALL UnixSlashToDos(NameExisting,NameExisting,NameExistingSize); @@ -733,6 +733,9 @@ ErrHandler.OpenErrorMsg(ArcName,NameExisting); Log(ArcName,St(MCopyError),NameExisting,NameNew); Log(ArcName,St(MCopyErrorHint)); +#ifdef RARDLL + Cmd->DllError=ERAR_EREFERENCE; +#endif return false; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/extract.hpp new/unrar/extract.hpp --- old/unrar/extract.hpp 2013-09-24 20:08:24.000000000 +0200 +++ new/unrar/extract.hpp 2013-11-12 09:00:46.000000000 +0100 @@ -7,7 +7,7 @@ { private: EXTRACT_ARC_CODE ExtractArchive(CommandData *Cmd); - bool ExtractFileCopy(File &New,wchar *ArcName,wchar *NameNew,wchar *NameExisting,size_t NameExistingSize); + bool ExtractFileCopy(CommandData *Cmd,File &New,wchar *ArcName,wchar *NameNew,wchar *NameExisting,size_t NameExistingSize); void ExtrPrepareName(CommandData *Cmd,Archive &Arc,const wchar *ArcFileName,wchar *DestName,size_t DestSize); #ifdef RARDLL bool ExtrDllGetPassword(CommandData *Cmd); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/file.cpp new/unrar/file.cpp --- old/unrar/file.cpp 2013-09-24 20:08:24.000000000 +0200 +++ new/unrar/file.cpp 2013-11-12 09:00:46.000000000 +0100 @@ -68,7 +68,10 @@ wchar LongName[NM]; if (GetWinLongPath(Name,LongName,ASIZE(LongName))) + { hNewFile=CreateFile(LongName,Access,ShareMode,NULL,OPEN_EXISTING,Flags,NULL); + LastError=GetLastError(); + } } if (hNewFile==BAD_HANDLE && LastError==ERROR_FILE_NOT_FOUND) @@ -188,23 +191,25 @@ bool File::Close() { bool Success=true; - if (HandleType!=FILE_HANDLENORMAL) - HandleType=FILE_HANDLENORMAL; - else - if (hFile!=BAD_HANDLE) + + if (hFile!=BAD_HANDLE) + { + if (!SkipClose) { - if (!SkipClose) - { #ifdef _WIN_ALL + // We use the standard system handle for stdout in Windows + // and it must not be closed here. + if (HandleType==FILE_HANDLENORMAL) Success=CloseHandle(hFile)==TRUE; #else - Success=fclose(hFile)!=EOF; + Success=fclose(hFile)!=EOF; #endif - } - hFile=BAD_HANDLE; - if (!Success && AllowExceptions) - ErrHandler.CloseError(FileName); } + hFile=BAD_HANDLE; + } + HandleType=FILE_HANDLENORMAL; + if (!Success && AllowExceptions) + ErrHandler.CloseError(FileName); return Success; } @@ -250,24 +255,16 @@ { if (Size==0) return; - if (HandleType!=FILE_HANDLENORMAL) - switch(HandleType) - { - case FILE_HANDLESTD: -#ifdef _WIN_ALL - hFile=GetStdHandle(STD_OUTPUT_HANDLE); -#else - hFile=stdout; -#endif - break; - case FILE_HANDLEERR: + if (HandleType==FILE_HANDLESTD) + { #ifdef _WIN_ALL - hFile=GetStdHandle(STD_ERROR_HANDLE); + hFile=GetStdHandle(STD_OUTPUT_HANDLE); #else - hFile=stderr; + // Cannot use the standard stdout here, because it already has wide orientation. + if (hFile==BAD_HANDLE) + hFile=fdopen(dup(1),"w"); // Open new stdout stream. #endif - break; - } + } while (1) { bool Success=false; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/pathfn.cpp new/unrar/pathfn.cpp --- old/unrar/pathfn.cpp 2013-09-24 20:08:24.000000000 +0200 +++ new/unrar/pathfn.cpp 2013-11-12 09:00:46.000000000 +0100 @@ -424,7 +424,7 @@ #ifndef _UNIX if (s-Name>1 && *s==':') *s='_'; - if ((*s==' ' || *s=='.') && IsPathDiv(s[1])) + if ((*s==' ' || *s=='.' && s>Name && !IsPathDiv(s[-1]) && s[-1]!='.') && IsPathDiv(s[1])) *s='_'; #endif } @@ -440,7 +440,7 @@ #ifndef _UNIX if (s-Name>1 && *s==':') *s='_'; - if ((*s==' ' || *s=='.') && IsPathDiv(s[1])) + if ((*s==' ' || *s=='.' && s>Name && !IsPathDiv(s[-1]) && s[-1]!='.') && IsPathDiv(s[1])) *s='_'; #endif } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/version.hpp new/unrar/version.hpp --- old/unrar/version.hpp 2013-09-24 20:08:24.000000000 +0200 +++ new/unrar/version.hpp 2013-11-12 09:00:46.000000000 +0100 @@ -1,6 +1,6 @@ #define RARVER_MAJOR 5 -#define RARVER_MINOR 0 -#define RARVER_BETA 0 -#define RARVER_DAY 22 -#define RARVER_MONTH 8 +#define RARVER_MINOR 1 +#define RARVER_BETA 1 +#define RARVER_DAY 12 +#define RARVER_MONTH 11 #define RARVER_YEAR 2013 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/win32lnk.cpp new/unrar/win32lnk.cpp --- old/unrar/win32lnk.cpp 2013-09-24 20:08:24.000000000 +0200 +++ new/unrar/win32lnk.cpp 2013-11-12 09:00:46.000000000 +0100 @@ -53,7 +53,6 @@ if (hFile==INVALID_HANDLE_VALUE) { ErrHandler.OpenErrorMsg(NULL,Name); - ErrHandler.SysErrMsg(); ErrHandler.SetErrorCode(RARX_OPEN); return; } -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
