openSUSE Commits
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
August 2017
- 1 participants
- 2097 discussions
Hello community,
here is the log from the commit of package unrar for openSUSE:Factory:NonFree checked in at 2017-08-01 09:25:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory:NonFree/unrar (Old)
and /work/SRC/openSUSE:Factory:NonFree/.unrar.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "unrar"
Tue Aug 1 09:25:47 2017 rev:67 rq:513151 version:5.5.7
Changes:
--------
--- /work/SRC/openSUSE:Factory:NonFree/unrar/unrar.changes 2017-07-04 09:12:36.879874950 +0200
+++ /work/SRC/openSUSE:Factory:NonFree/.unrar.new/unrar.changes 2017-08-01 09:26:13.872493598 +0200
@@ -1,0 +2,7 @@
+Mon Jul 31 09:08:09 UTC 2017 - idonmez(a)suse.com
+
+- Update to version 5.5.7
+ * "Checksum error" could be mistakenly reported for some valid
+ GZIP archives.
+
+-------------------------------------------------------------------
Old:
----
unrarsrc-5.5.6.tar.gz
New:
----
unrarsrc-5.5.7.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ unrar.spec ++++++
--- /var/tmp/diff_new_pack.bWIRWW/_old 2017-08-01 09:26:14.608389884 +0200
+++ /var/tmp/diff_new_pack.bWIRWW/_new 2017-08-01 09:26:14.612389321 +0200
@@ -18,10 +18,10 @@
# majorversion should match the major version number.
%define majorversion 5
-%define libsuffix 5_5_6
+%define libsuffix 5_5_7
Name: unrar
-Version: 5.5.6
+Version: 5.5.7
Release: 0
Summary: A program to extract, test, and view RAR archives
License: SUSE-NonFree
++++++ unrarsrc-5.5.6.tar.gz -> unrarsrc-5.5.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/arccmt.cpp new/unrar/arccmt.cpp
--- old/unrar/arccmt.cpp 2017-07-02 09:52:34.000000000 +0200
+++ new/unrar/arccmt.cpp 2017-07-25 11:04:29.000000000 +0200
@@ -7,7 +7,7 @@
SaveFilePos SavePos(*this);
#ifndef SFX_MODULE
- ushort CmtLength;
+ uint CmtLength;
if (Format==RARFMT14)
{
Seek(SFXSize+SIZEOF_MAINHEAD14,SEEK_SET);
@@ -52,7 +52,7 @@
if (Format==RARFMT14)
{
#ifdef RAR_NOCRYPT
- return(false);
+ return false;
#else
UnpCmtLength=GetByte();
UnpCmtLength+=(GetByte()<<8);
@@ -96,6 +96,8 @@
}
else
{
+ if (CmtLength==0)
+ return false;
Array<byte> CmtRaw(CmtLength);
Read(&CmtRaw[0],CmtLength);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/arcread.cpp new/unrar/arcread.cpp
--- old/unrar/arcread.cpp 2017-07-02 09:52:34.000000000 +0200
+++ new/unrar/arcread.cpp 2017-07-25 11:04:29.000000000 +0200
@@ -308,17 +308,17 @@
if (FileBlock)
{
+ *hd->FileName=0;
if ((hd->Flags & LHD_UNICODE)!=0)
{
EncodeFileName NameCoder;
size_t Length=strlen(FileName);
Length++;
- NameCoder.Decode(FileName,(byte *)FileName+Length,
- NameSize-Length,hd->FileName,
- ASIZE(hd->FileName));
+ if (ReadNameSize>Length)
+ NameCoder.Decode(FileName,(byte *)FileName+Length,
+ ReadNameSize-Length,hd->FileName,
+ ASIZE(hd->FileName));
}
- else
- *hd->FileName=0;
if (*hd->FileName==0)
ArcCharToWide(FileName,hd->FileName,ASIZE(hd->FileName),ACTW_OEM);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/dll.rc new/unrar/dll.rc
--- old/unrar/dll.rc 2017-07-02 09:48:59.000000000 +0200
+++ new/unrar/dll.rc 2017-07-25 10:58:41.000000000 +0200
@@ -2,8 +2,8 @@
#include <commctrl.h>
VS_VERSION_INFO VERSIONINFO
-FILEVERSION 5, 50, 5, 2378
-PRODUCTVERSION 5, 50, 5, 2378
+FILEVERSION 5, 50, 6, 2401
+PRODUCTVERSION 5, 50, 6, 2401
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.50.5\0"
- VALUE "ProductVersion", "5.50.5\0"
+ VALUE "FileVersion", "5.50.6\0"
+ VALUE "ProductVersion", "5.50.6\0"
VALUE "LegalCopyright", "Copyright � Alexander Roshal 1993-2017\0"
VALUE "OriginalFilename", "Unrar.dll\0"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/encname.cpp new/unrar/encname.cpp
--- old/unrar/encname.cpp 2017-07-02 09:52:35.000000000 +0200
+++ new/unrar/encname.cpp 2017-07-25 11:04:30.000000000 +0200
@@ -15,31 +15,43 @@
size_t MaxDecSize)
{
size_t EncPos=0,DecPos=0;
- byte HighByte=EncName[EncPos++];
+ byte HighByte=EncPos<EncSize ? EncName[EncPos++] : 0;
while (EncPos<EncSize && DecPos<MaxDecSize)
{
if (FlagBits==0)
{
+ if (EncPos>=EncSize)
+ break;
Flags=EncName[EncPos++];
FlagBits=8;
}
switch(Flags>>6)
{
case 0:
+ if (EncPos>=EncSize)
+ break;
NameW[DecPos++]=EncName[EncPos++];
break;
case 1:
+ if (EncPos>=EncSize)
+ break;
NameW[DecPos++]=EncName[EncPos++]+(HighByte<<8);
break;
case 2:
+ if (EncPos+1>=EncSize)
+ break;
NameW[DecPos++]=EncName[EncPos]+(EncName[EncPos+1]<<8);
EncPos+=2;
break;
case 3:
{
+ if (EncPos>=EncSize)
+ break;
int Length=EncName[EncPos++];
- if (Length & 0x80)
+ if ((Length & 0x80)!=0)
{
+ if (EncPos>=EncSize)
+ break;
byte Correction=EncName[EncPos++];
for (Length=(Length&0x7f)+2;Length>0 && DecPos<MaxDecSize;Length--,DecPos++)
NameW[DecPos]=((Name[DecPos]+Correction)&0xff)+(HighByte<<8);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/extinfo.cpp new/unrar/extinfo.cpp
--- old/unrar/extinfo.cpp 2017-07-02 09:52:35.000000000 +0200
+++ new/unrar/extinfo.cpp 2017-07-25 11:04:30.000000000 +0200
@@ -93,6 +93,25 @@
}
+// Check if all existing path components are directories and not links.
+static bool LinkInPath(const wchar *Name)
+{
+ wchar Path[NM];
+ if (wcslen(Name)>=ASIZE(Path))
+ return true; // It should not be that long, skip.
+ wcsncpyz(Path,Name,ASIZE(Path));
+ for (wchar *s=Path+wcslen(Path)-1;s>Path;s--)
+ if (IsPathDiv(*s))
+ {
+ *s=0;
+ FindData FD;
+ if (FindFile::FastFind(Path,&FD,true) && (FD.IsLink || !FD.IsDir))
+ return true;
+ }
+ return false;
+}
+
+
bool IsRelativeSymlinkSafe(CommandData *Cmd,const wchar *SrcName,const wchar *PrepSrcName,const wchar *TargetName)
{
// Catch root dir based /path/file paths also as stuff like \\?\.
@@ -100,7 +119,25 @@
// is a root based.
if (IsFullRootPath(SrcName) || IsFullRootPath(TargetName))
return false;
-
+
+ // Number of ".." in link target.
+ int UpLevels=0;
+ for (int Pos=0;*TargetName!=0;Pos++)
+ {
+ bool Dot2=TargetName[0]=='.' && TargetName[1]=='.' &&
+ (IsPathDiv(TargetName[2]) || TargetName[2]==0) &&
+ (Pos==0 || IsPathDiv(*(TargetName-1)));
+ if (Dot2)
+ UpLevels++;
+ TargetName++;
+ }
+ // If link target includes "..", it must not have another links
+ // in the path, because they can bypass our safety check. For example,
+ // suppose we extracted "lnk1" -> "." first and "lnk1/lnk2" -> ".." next
+ // or "dir/lnk1" -> ".." first and "dir/lnk1/lnk2" -> ".." next.
+ if (UpLevels>0 && LinkInPath(PrepSrcName))
+ return false;
+
// We could check just prepared src name, but for extra safety
// we check both original (as from archive header) and prepared
// (after applying the destination path and -ep switches) names.
@@ -119,17 +156,6 @@
}
int PrepAllowedDepth=CalcAllowedDepth(PrepSrcName);
- // Number of ".." in link target.
- int UpLevels=0;
- for (int Pos=0;*TargetName!=0;Pos++)
- {
- bool Dot2=TargetName[0]=='.' && TargetName[1]=='.' &&
- (IsPathDiv(TargetName[2]) || TargetName[2]==0) &&
- (Pos==0 || IsPathDiv(*(TargetName-1)));
- if (Dot2)
- UpLevels++;
- TargetName++;
- }
return AllowedDepth>=UpLevels && PrepAllowedDepth>=UpLevels;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/file.cpp new/unrar/file.cpp
--- old/unrar/file.cpp 2017-07-02 09:52:35.000000000 +0200
+++ new/unrar/file.cpp 2017-07-25 11:04:30.000000000 +0200
@@ -173,7 +173,7 @@
wchar *LastChar=PointToLastChar(Name);
bool Special=*LastChar=='.' || *LastChar==' ';
- if (Special)
+ if (Special && (Mode & FMF_STANDARDNAMES)==0)
hFile=FILE_BAD_HANDLE;
else
hFile=CreateFile(Name,Access,ShareMode,NULL,CREATE_ALWAYS,0,NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/file.hpp new/unrar/file.hpp
--- old/unrar/file.hpp 2017-07-02 09:52:35.000000000 +0200
+++ new/unrar/file.hpp 2017-07-25 11:04:30.000000000 +0200
@@ -39,6 +39,9 @@
// Provide read access to created file for other programs.
FMF_SHAREREAD=16,
+ // Use standard NTFS names without trailing dots and spaces.
+ FMF_STANDARDNAMES=32,
+
// Mode flags are not defined yet.
FMF_UNDEFINED=256
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/rarvm.cpp new/unrar/rarvm.cpp
--- old/unrar/rarvm.cpp 2017-07-02 09:52:36.000000000 +0200
+++ new/unrar/rarvm.cpp 2017-07-25 11:04:32.000000000 +0200
@@ -22,6 +22,7 @@
void RarVM::Execute(VM_PreparedProgram *Prg)
{
memcpy(R,Prg->InitR,sizeof(Prg->InitR));
+ Prg->FilteredData=NULL;
if (Prg->Type!=VMSF_NONE)
{
bool Success=ExecuteStandardFilter(Prg->Type);
@@ -107,7 +108,14 @@
void RarVM::SetMemory(size_t Pos,byte *Data,size_t DataSize)
{
if (Pos<VM_MEMSIZE && Data!=Mem+Pos)
- memmove(Mem+Pos,Data,Min(DataSize,VM_MEMSIZE-Pos));
+ {
+ // We can have NULL Data for invalid filters with DataSize==0. While most
+ // sensible memmove implementations do not care about data if size is 0,
+ // let's follow the standard and check the size first.
+ size_t CopySize=Min(DataSize,VM_MEMSIZE-Pos);
+ if (CopySize!=0)
+ memmove(Mem+Pos,Data,CopySize);
+ }
}
@@ -279,7 +287,10 @@
PrevDelta=(signed char)(Predicted-PrevByte);
PrevByte=Predicted;
- int D=((signed char)CurByte)<<3;
+ int D=(signed char)CurByte;
+ // Left shift of negative value is undefined behavior in C++,
+ // so we cast it to unsigned to follow the standard.
+ D=(uint)D<<3;
Dif[0]+=abs(D);
Dif[1]+=abs(D-D1);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/rawread.cpp new/unrar/rawread.cpp
--- old/unrar/rawread.cpp 2017-07-02 09:52:36.000000000 +0200
+++ new/unrar/rawread.cpp 2017-07-25 11:04:32.000000000 +0200
@@ -115,7 +115,9 @@
uint64 RawRead::GetV()
{
uint64 Result=0;
- for (uint Shift=0;ReadPos<DataSize;Shift+=7)
+ // Need to check Shift<64, because for shift greater than or equal to
+ // the width of the promoted left operand, the behavior is undefined.
+ for (uint Shift=0;ReadPos<DataSize && Shift<64;Shift+=7)
{
byte CurByte=Data[ReadPos++];
Result+=uint64(CurByte & 0x7f)<<Shift;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/unicode.cpp new/unrar/unicode.cpp
--- old/unrar/unicode.cpp 2017-07-02 09:52:37.000000000 +0200
+++ new/unrar/unicode.cpp 2017-07-25 11:04:34.000000000 +0200
@@ -510,19 +510,23 @@
int64 atoilw(const wchar *s)
{
- int sign=1;
+ bool sign=false;
if (*s=='-')
{
s++;
- sign=-1;
+ sign=true;
}
- int64 n=0;
+ // Use unsigned type here, since long string can overflow the variable
+ // and signed integer overflow is undefined behavior in C++.
+ uint64 n=0;
while (*s>='0' && *s<='9')
{
n=n*10+(*s-'0');
s++;
}
- return sign*n;
+ // Check int64(n)>=0 to avoid the signed overflow with undefined behavior
+ // when negating 0x8000000000000000.
+ return sign && int64(n)>=0 ? -int64(n) : int64(n);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/unpack.cpp new/unrar/unpack.cpp
--- old/unrar/unpack.cpp 2017-07-02 09:52:37.000000000 +0200
+++ new/unrar/unpack.cpp 2017-07-25 11:04:34.000000000 +0200
@@ -135,7 +135,7 @@
}
-void Unpack::DoUnpack(int Method,bool Solid)
+void Unpack::DoUnpack(uint Method,bool Solid)
{
// Methods <50 will crash in Fragmented mode when accessing NULL Window.
// They cannot be called in such mode now, but we check it below anyway
@@ -206,6 +206,7 @@
UnpInitData20(Solid);
#endif
UnpInitData30(Solid);
+ UnpInitData50(Solid);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/unpack.hpp new/unrar/unpack.hpp
--- old/unrar/unpack.hpp 2017-07-02 09:52:37.000000000 +0200
+++ new/unrar/unpack.hpp 2017-07-25 11:04:34.000000000 +0200
@@ -211,6 +211,7 @@
void UnpWriteArea(size_t StartPtr,size_t EndPtr);
void UnpWriteData(byte *Data,size_t Size);
_forceinline uint SlotToLength(BitInput &Inp,uint Slot);
+ void UnpInitData50(bool Solid);
bool ReadBlockHeader(BitInput &Inp,UnpackBlockHeader &Header);
bool ReadTables(BitInput &Inp,UnpackBlockHeader &Header,UnpackBlockTables &Tables);
void MakeDecodeTables(byte *LengthTable,DecodeTable *Dec,uint Size);
@@ -307,7 +308,9 @@
DecodeTable MD[4]; // Decode multimedia data, up to 4 channels.
unsigned char UnpOldTable20[MC20*4];
- int UnpAudioBlock,UnpChannels,UnpCurChannel,UnpChannelDelta;
+ bool UnpAudioBlock;
+ uint UnpChannels,UnpCurChannel;
+ int UnpChannelDelta;
void CopyString20(uint Length,uint Distance);
bool ReadTables20();
void UnpWriteBuf20();
@@ -341,7 +344,12 @@
byte UnpOldTable[HUFF_TABLE_SIZE30];
int UnpBlockType;
- bool TablesRead;
+ // If we already read decoding tables for Unpack v2,v3,v5.
+ // We should not use a single variable for all algorithm versions,
+ // because we can have a corrupt archive with one algorithm file
+ // followed by another algorithm file with "solid" flag and we do not
+ // want to reuse tables from one algorithm in another.
+ bool TablesRead2,TablesRead3,TablesRead5;
// Virtual machine to execute filters code.
RarVM VM;
@@ -368,7 +376,7 @@
Unpack(ComprDataIO *DataIO);
~Unpack();
void Init(size_t WinSize,bool Solid);
- void DoUnpack(int Method,bool Solid);
+ void DoUnpack(uint Method,bool Solid);
bool IsFileExtracted() {return(FileExtracted);}
void SetDestSize(int64 DestSize) {DestUnpSize=DestSize;FileExtracted=false;}
void SetSuspended(bool Suspended) {Unpack::Suspended=Suspended;}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/unpack15.cpp new/unrar/unpack15.cpp
--- old/unrar/unpack15.cpp 2017-07-02 09:52:37.000000000 +0200
+++ new/unrar/unpack15.cpp 2017-07-25 11:04:34.000000000 +0200
@@ -285,7 +285,7 @@
break;
}
- ChSetB[DistancePlace]=ChSetB[NewDistancePlace];
+ ChSetB[DistancePlace & 0xff]=ChSetB[NewDistancePlace];
ChSetB[NewDistancePlace]=Distance;
Distance=((Distance & 0xff00) | (Inp.fgetbits() >> 8)) >> 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/unpack20.cpp new/unrar/unpack20.cpp
--- old/unrar/unpack20.cpp 2017-07-02 09:52:37.000000000 +0200
+++ new/unrar/unpack20.cpp 2017-07-25 11:04:34.000000000 +0200
@@ -13,11 +13,11 @@
{
static unsigned char LDecode[]={0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224};
static unsigned char LBits[]= {0,0,0,0,0,0,0,0,1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5};
- static int DDecode[]={0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576,32768U,49152U,65536,98304,131072,196608,262144,327680,393216,458752,524288,589824,655360,720896,786432,851968,917504,983040};
+ static uint DDecode[]={0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576,32768U,49152U,65536,98304,131072,196608,262144,327680,393216,458752,524288,589824,655360,720896,786432,851968,917504,983040};
static unsigned char DBits[]= {0,0,0,0,1,1,2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16};
static unsigned char SDDecode[]={0,4,8,16,32,64,128,192};
static unsigned char SDBits[]= {2,2,3, 4, 5, 6, 6, 6};
- unsigned int Bits;
+ uint Bits;
if (Suspended)
UnpPtr=WrPtr;
@@ -26,9 +26,8 @@
UnpInitData(Solid);
if (!UnpReadBuf())
return;
- if (!Solid)
- if (!ReadTables20())
- return;
+ if ((!Solid || !TablesRead2) && !ReadTables20())
+ return;
--DestUnpSize;
}
@@ -47,7 +46,7 @@
}
if (UnpAudioBlock)
{
- int AudioNumber=DecodeNumber(Inp,&MD[UnpCurChannel]);
+ uint AudioNumber=DecodeNumber(Inp,&MD[UnpCurChannel]);
if (AudioNumber==256)
{
@@ -55,14 +54,14 @@
break;
continue;
}
- Window[UnpPtr++]=DecodeAudio(AudioNumber);
+ Window[UnpPtr++]=DecodeAudio((int)AudioNumber);
if (++UnpCurChannel==UnpChannels)
UnpCurChannel=0;
--DestUnpSize;
continue;
}
- int Number=DecodeNumber(Inp,&BlockTables.LD);
+ uint Number=DecodeNumber(Inp,&BlockTables.LD);
if (Number<256)
{
Window[UnpPtr++]=(byte)Number;
@@ -71,15 +70,15 @@
}
if (Number>269)
{
- int Length=LDecode[Number-=270]+3;
+ uint Length=LDecode[Number-=270]+3;
if ((Bits=LBits[Number])>0)
{
Length+=Inp.getbits()>>(16-Bits);
Inp.addbits(Bits);
}
- int DistNumber=DecodeNumber(Inp,&BlockTables.DD);
- unsigned int Distance=DDecode[DistNumber]+1;
+ uint DistNumber=DecodeNumber(Inp,&BlockTables.DD);
+ uint Distance=DDecode[DistNumber]+1;
if ((Bits=DBits[DistNumber])>0)
{
Distance+=Inp.getbits()>>(16-Bits);
@@ -109,9 +108,9 @@
}
if (Number<261)
{
- unsigned int Distance=OldDist[(OldDistPtr-(Number-256)) & 3];
- int LengthNumber=DecodeNumber(Inp,&BlockTables.RD);
- int Length=LDecode[LengthNumber]+2;
+ uint Distance=OldDist[(OldDistPtr-(Number-256)) & 3];
+ uint LengthNumber=DecodeNumber(Inp,&BlockTables.RD);
+ uint Length=LDecode[LengthNumber]+2;
if ((Bits=LBits[LengthNumber])>0)
{
Length+=Inp.getbits()>>(16-Bits);
@@ -132,7 +131,7 @@
}
if (Number<270)
{
- unsigned int Distance=SDDecode[Number-=261]+1;
+ uint Distance=SDDecode[Number-=261]+1;
if ((Bits=SDBits[Number])>0)
{
Distance+=Inp.getbits()>>(16-Bits);
@@ -167,17 +166,17 @@
{
byte BitLength[BC20];
byte Table[MC20*4];
- int TableSize,N,I;
if (Inp.InAddr>ReadTop-25)
if (!UnpReadBuf())
- return(false);
+ return false;
uint BitField=Inp.getbits();
- UnpAudioBlock=(BitField & 0x8000);
+ UnpAudioBlock=(BitField & 0x8000)!=0;
if (!(BitField & 0x4000))
memset(UnpOldTable20,0,sizeof(UnpOldTable20));
Inp.addbits(2);
+ uint TableSize;
if (UnpAudioBlock)
{
UnpChannels=((BitField>>12) & 3)+1;
@@ -189,19 +188,18 @@
else
TableSize=NC20+DC20+RC20;
- for (I=0;I<BC20;I++)
+ for (uint I=0;I<BC20;I++)
{
BitLength[I]=(byte)(Inp.getbits() >> 12);
Inp.addbits(4);
}
MakeDecodeTables(BitLength,&BlockTables.BD,BC20);
- I=0;
- while (I<TableSize)
+ for (uint I=0;I<TableSize;)
{
if (Inp.InAddr>ReadTop-5)
if (!UnpReadBuf())
return false;
- int Number=DecodeNumber(Inp,&BlockTables.BD);
+ uint Number=DecodeNumber(Inp,&BlockTables.BD);
if (Number<16)
{
Table[I]=(Number+UnpOldTable20[I]) & 0xf;
@@ -210,9 +208,11 @@
else
if (Number==16)
{
- N=(Inp.getbits() >> 14)+3;
+ uint N=(Inp.getbits() >> 14)+3;
Inp.addbits(2);
- if (I>0)
+ if (I==0)
+ return false; // We cannot have "repeat previous" code at the first position.
+ else
while (N-- > 0 && I<TableSize)
{
Table[I]=Table[I-1];
@@ -221,6 +221,7 @@
}
else
{
+ uint N;
if (Number==17)
{
N=(Inp.getbits() >> 13)+3;
@@ -235,10 +236,11 @@
Table[I++]=0;
}
}
+ TablesRead2=true;
if (Inp.InAddr>ReadTop)
- return(true);
+ return true;
if (UnpAudioBlock)
- for (I=0;I<UnpChannels;I++)
+ for (uint I=0;I<UnpChannels;I++)
MakeDecodeTables(&Table[I*MC20],&MD[I],MC20);
else
{
@@ -247,7 +249,7 @@
MakeDecodeTables(&Table[NC20+DC20],&BlockTables.RD,RC20);
}
memcpy(UnpOldTable20,Table,sizeof(UnpOldTable20));
- return(true);
+ return true;
}
@@ -269,7 +271,10 @@
{
if (!Solid)
{
- UnpAudioBlock=UnpChannelDelta=UnpCurChannel=0;
+ TablesRead2=false;
+ UnpAudioBlock=false;
+ UnpChannelDelta=0;
+ UnpCurChannel=0;
UnpChannels=1;
memset(AudV,0,sizeof(AudV));
@@ -290,9 +295,12 @@
int PCh=8*V->LastChar+V->K1*V->D1+V->K2*V->D2+V->K3*V->D3+V->K4*V->D4+V->K5*UnpChannelDelta;
PCh=(PCh>>3) & 0xFF;
- unsigned int Ch=PCh-Delta;
+ uint Ch=PCh-Delta;
- int D=((signed char)Delta)<<3;
+ int D=(signed char)Delta;
+ // Left shift of negative value is undefined behavior in C++,
+ // so we cast it to unsigned to follow the standard.
+ D=(uint)D<<3;
V->Dif[0]+=abs(D);
V->Dif[1]+=abs(D-V->D1);
@@ -311,9 +319,9 @@
if ((V->ByteCount & 0x1F)==0)
{
- unsigned int MinDif=V->Dif[0],NumMinDif=0;
+ uint MinDif=V->Dif[0],NumMinDif=0;
V->Dif[0]=0;
- for (int I=1;I<sizeof(V->Dif)/sizeof(V->Dif[0]);I++)
+ for (uint I=1;I<ASIZE(V->Dif);I++)
{
if (V->Dif[I]<MinDif)
{
@@ -366,5 +374,5 @@
break;
}
}
- return((byte)Ch);
+ return (byte)Ch;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/unpack30.cpp new/unrar/unpack30.cpp
--- old/unrar/unpack30.cpp 2017-07-02 09:52:37.000000000 +0200
+++ new/unrar/unpack30.cpp 2017-07-25 11:04:34.000000000 +0200
@@ -42,7 +42,7 @@
UnpInitData(Solid);
if (!UnpReadBuf30())
return;
- if ((!Solid || !TablesRead) && !ReadTables30())
+ if ((!Solid || !TablesRead3) && !ReadTables30())
return;
}
@@ -133,7 +133,7 @@
continue;
}
- int Number=DecodeNumber(Inp,&BlockTables.LD);
+ uint Number=DecodeNumber(Inp,&BlockTables.LD);
if (Number<256)
{
Window[UnpPtr++]=(byte)Number;
@@ -141,15 +141,15 @@
}
if (Number>=271)
{
- int Length=LDecode[Number-=271]+3;
+ uint Length=LDecode[Number-=271]+3;
if ((Bits=LBits[Number])>0)
{
Length+=Inp.getbits()>>(16-Bits);
Inp.addbits(Bits);
}
- int DistNumber=DecodeNumber(Inp,&BlockTables.DD);
- unsigned int Distance=DDecode[DistNumber]+1;
+ uint DistNumber=DecodeNumber(Inp,&BlockTables.DD);
+ uint Distance=DDecode[DistNumber]+1;
if ((Bits=DBits[DistNumber])>0)
{
if (DistNumber>9)
@@ -166,7 +166,7 @@
}
else
{
- int LowDist=DecodeNumber(Inp,&BlockTables.LDD);
+ uint LowDist=DecodeNumber(Inp,&BlockTables.LDD);
if (LowDist==16)
{
LowDistRepCount=LOW_DIST_REP_COUNT-1;
@@ -189,7 +189,7 @@
if (Distance>=0x2000)
{
Length++;
- if (Distance>=0x40000L)
+ if (Distance>=0x40000)
Length++;
}
@@ -218,13 +218,13 @@
}
if (Number<263)
{
- int DistNum=Number-259;
- unsigned int Distance=OldDist[DistNum];
- for (int I=DistNum;I>0;I--)
+ uint DistNum=Number-259;
+ uint Distance=OldDist[DistNum];
+ for (uint I=DistNum;I>0;I--)
OldDist[I]=OldDist[I-1];
OldDist[0]=Distance;
- int LengthNumber=DecodeNumber(Inp,&BlockTables.RD);
+ uint LengthNumber=DecodeNumber(Inp,&BlockTables.RD);
int Length=LDecode[LengthNumber]+2;
if ((Bits=LBits[LengthNumber])>0)
{
@@ -237,7 +237,7 @@
}
if (Number<272)
{
- unsigned int Distance=SDDecode[Number-=263]+1;
+ uint Distance=SDDecode[Number-=263]+1;
if ((Bits=SDBits[Number])>0)
{
Distance+=Inp.getbits()>>(16-Bits);
@@ -274,11 +274,11 @@
NewTable=(BitField & 0x4000)!=0;
Inp.addbits(2);
}
- TablesRead=!NewTable;
+ TablesRead3=!NewTable;
// Quit immediately if "new file" flag is set. If "new table" flag
// is present, we'll read the table in beginning of next file
- // based on 'TablesRead' 'false' value.
+ // based on 'TablesRead3' 'false' value.
if (NewFile)
return false;
return ReadTables30(); // Quit only if we failed to read tables.
@@ -290,9 +290,9 @@
// Entire VM code is guaranteed to fully present in block defined
// by current Huffman table. Compressor checks that VM code does not cross
// Huffman block boundaries.
- unsigned int FirstByte=Inp.getbits()>>8;
+ uint FirstByte=Inp.getbits()>>8;
Inp.addbits(8);
- int Length=(FirstByte & 7)+1;
+ uint Length=(FirstByte & 7)+1;
if (Length==7)
{
Length=(Inp.getbits()>>8)+7;
@@ -304,8 +304,10 @@
Length=Inp.getbits();
Inp.addbits(16);
}
+ if (Length==0)
+ return false;
Array<byte> VMCode(Length);
- for (int I=0;I<Length;I++)
+ for (uint I=0;I<Length;I++)
{
// Try to read the new buffer if only one byte is left.
// But if we read all bytes except the last, one byte is enough.
@@ -320,15 +322,15 @@
bool Unpack::ReadVMCodePPM()
{
- unsigned int FirstByte=SafePPMDecodeChar();
+ uint FirstByte=SafePPMDecodeChar();
if ((int)FirstByte==-1)
return false;
- int Length=(FirstByte & 7)+1;
+ uint Length=(FirstByte & 7)+1;
if (Length==7)
{
int B1=SafePPMDecodeChar();
if (B1==-1)
- return(false);
+ return false;
Length=B1+7;
}
else
@@ -342,12 +344,14 @@
return false;
Length=B1*256+B2;
}
+ if (Length==0)
+ return false;
Array<byte> VMCode(Length);
- for (int I=0;I<Length;I++)
+ for (uint I=0;I<Length;I++)
{
int Ch=SafePPMDecodeChar();
if (Ch==-1)
- return(false);
+ return false;
VMCode[I]=Ch;
}
return AddVMCode(FirstByte,&VMCode[0],Length);
@@ -405,7 +409,7 @@
StackFilter->ParentFilter=FiltPos;
}
- int EmptyCount=0;
+ uint EmptyCount=0;
for (uint I=0;I<PrgStack.Size();I++)
{
PrgStack[I-EmptyCount]=PrgStack[I];
@@ -424,7 +428,7 @@
PrgStack.Add(1);
EmptyCount=1;
}
- int StackPos=(int)(PrgStack.Size()-EmptyCount);
+ size_t StackPos=PrgStack.Size()-EmptyCount;
PrgStack[StackPos]=StackFilter;
uint BlockStart=RarVM::ReadData(VMCodeInp);
@@ -458,7 +462,7 @@
{
uint InitMask=VMCodeInp.fgetbits()>>9;
VMCodeInp.faddbits(7);
- for (int I=0;I<7;I++)
+ for (uint I=0;I<7;I++)
if (InitMask & (1<<I))
StackFilter->Prg.InitR[I]=RarVM::ReadData(VMCodeInp);
}
@@ -644,13 +648,13 @@
memset(UnpOldTable,0,sizeof(UnpOldTable));
Inp.faddbits(2);
- for (int I=0;I<BC;I++)
+ for (uint I=0;I<BC;I++)
{
- int Length=(byte)(Inp.fgetbits() >> 12);
+ uint Length=(byte)(Inp.fgetbits() >> 12);
Inp.faddbits(4);
if (Length==15)
{
- int ZeroCount=(byte)(Inp.fgetbits() >> 12);
+ uint ZeroCount=(byte)(Inp.fgetbits() >> 12);
Inp.faddbits(4);
if (ZeroCount==0)
BitLength[I]=15;
@@ -667,13 +671,13 @@
}
MakeDecodeTables(BitLength,&BlockTables.BD,BC30);
- const int TableSize=HUFF_TABLE_SIZE30;
- for (int I=0;I<TableSize;)
+ const uint TableSize=HUFF_TABLE_SIZE30;
+ for (uint I=0;I<TableSize;)
{
if (Inp.InAddr>ReadTop-5)
if (!UnpReadBuf30())
return(false);
- int Number=DecodeNumber(Inp,&BlockTables.BD);
+ uint Number=DecodeNumber(Inp,&BlockTables.BD);
if (Number<16)
{
Table[I]=(Number+UnpOldTable[I]) & 0xf;
@@ -682,7 +686,7 @@
else
if (Number<18)
{
- int N;
+ uint N;
if (Number==16)
{
N=(Inp.fgetbits() >> 13)+3;
@@ -693,7 +697,9 @@
N=(Inp.fgetbits() >> 9)+11;
Inp.faddbits(7);
}
- if (I>0)
+ if (I==0)
+ return false; // We cannot have "repeat previous" code at the first position.
+ else
while (N-- > 0 && I<TableSize)
{
Table[I]=Table[I-1];
@@ -702,7 +708,7 @@
}
else
{
- int N;
+ uint N;
if (Number==18)
{
N=(Inp.fgetbits() >> 13)+3;
@@ -717,7 +723,7 @@
Table[I++]=0;
}
}
- TablesRead=true;
+ TablesRead3=true;
if (Inp.InAddr>ReadTop)
return false;
MakeDecodeTables(&Table[0],&BlockTables.LD,NC30);
@@ -733,7 +739,7 @@
{
if (!Solid)
{
- TablesRead=false;
+ TablesRead3=false;
memset(UnpOldTable,0,sizeof(UnpOldTable));
PPMEscChar=2;
UnpBlockType=BLOCK_LZ;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/unpack50.cpp new/unrar/unpack50.cpp
--- old/unrar/unpack50.cpp 2017-07-02 09:52:37.000000000 +0200
+++ new/unrar/unpack50.cpp 2017-07-25 11:04:34.000000000 +0200
@@ -7,7 +7,12 @@
UnpInitData(Solid);
if (!UnpReadBuf())
return;
- if (!ReadBlockHeader(Inp,BlockHeader) || !ReadTables(Inp,BlockHeader,BlockTables))
+
+ // Check TablesRead5 to be sure that we read tables at least once
+ // regardless of current block header TablePresent flag.
+ // So we can safefly use these tables below.
+ if (!ReadBlockHeader(Inp,BlockHeader) ||
+ !ReadTables(Inp,BlockHeader,BlockTables) || !TablesRead5)
return;
}
@@ -516,6 +521,13 @@
}
+void Unpack::UnpInitData50(bool Solid)
+{
+ if (!Solid)
+ TablesRead5=false;
+}
+
+
bool Unpack::ReadBlockHeader(BitInput &Inp,UnpackBlockHeader &Header)
{
Header.HeaderSize=0;
@@ -570,13 +582,13 @@
return false;
byte BitLength[BC];
- for (int I=0;I<BC;I++)
+ for (uint I=0;I<BC;I++)
{
- int Length=(byte)(Inp.fgetbits() >> 12);
+ uint Length=(byte)(Inp.fgetbits() >> 12);
Inp.faddbits(4);
if (Length==15)
{
- int ZeroCount=(byte)(Inp.fgetbits() >> 12);
+ uint ZeroCount=(byte)(Inp.fgetbits() >> 12);
Inp.faddbits(4);
if (ZeroCount==0)
BitLength[I]=15;
@@ -595,13 +607,13 @@
MakeDecodeTables(BitLength,&Tables.BD,BC);
byte Table[HUFF_TABLE_SIZE];
- const int TableSize=HUFF_TABLE_SIZE;
- for (int I=0;I<TableSize;)
+ const uint TableSize=HUFF_TABLE_SIZE;
+ for (uint I=0;I<TableSize;)
{
if (!Inp.ExternalBuffer && Inp.InAddr>ReadTop-5)
if (!UnpReadBuf())
return false;
- int Number=DecodeNumber(Inp,&Tables.BD);
+ uint Number=DecodeNumber(Inp,&Tables.BD);
if (Number<16)
{
Table[I]=Number;
@@ -610,7 +622,7 @@
else
if (Number<18)
{
- int N;
+ uint N;
if (Number==16)
{
N=(Inp.fgetbits() >> 13)+3;
@@ -621,7 +633,16 @@
N=(Inp.fgetbits() >> 9)+11;
Inp.faddbits(7);
}
- if (I>0)
+ if (I==0)
+ {
+ // We cannot have "repeat previous" code at the first position.
+ // Multiple such codes would shift Inp position without changing I,
+ // which can lead to reading beyond of Inp boundary in mutithreading
+ // mode, where Inp.ExternalBuffer disables bounds check and we just
+ // reserve a lot of buffer space to not need such check normally.
+ return false;
+ }
+ else
while (N-- > 0 && I<TableSize)
{
Table[I]=Table[I-1];
@@ -630,7 +651,7 @@
}
else
{
- int N;
+ uint N;
if (Number==18)
{
N=(Inp.fgetbits() >> 13)+3;
@@ -645,6 +666,7 @@
Table[I++]=0;
}
}
+ TablesRead5=true;
if (!Inp.ExternalBuffer && Inp.InAddr>ReadTop)
return false;
MakeDecodeTables(&Table[0],&Tables.LD,NC);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/unpack50mt.cpp new/unrar/unpack50mt.cpp
--- old/unrar/unpack50mt.cpp 2017-07-02 09:52:37.000000000 +0200
+++ new/unrar/unpack50mt.cpp 2017-07-25 11:04:34.000000000 +0200
@@ -133,11 +133,13 @@
if (!CurData->HeaderRead)
{
CurData->HeaderRead=true;
- if (!ReadBlockHeader(CurData->Inp,CurData->BlockHeader))
+ if (!ReadBlockHeader(CurData->Inp,CurData->BlockHeader) ||
+ !CurData->BlockHeader.TablePresent && !TablesRead5)
{
Done=true;
break;
}
+ TablesRead5=true;
}
// To prevent too high memory use we switch to single threaded mode
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/unpackinline.cpp new/unrar/unpackinline.cpp
--- old/unrar/unpackinline.cpp 2017-07-02 09:52:37.000000000 +0200
+++ new/unrar/unpackinline.cpp 2017-07-25 11:04:34.000000000 +0200
@@ -120,7 +120,7 @@
// Convert the position in the code list to position in alphabet
// and return it.
- return(Dec->DecodeNum[Pos]);
+ return Dec->DecodeNum[Pos];
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/version.hpp new/unrar/version.hpp
--- old/unrar/version.hpp 2017-07-02 09:52:37.000000000 +0200
+++ new/unrar/version.hpp 2017-07-25 11:04:34.000000000 +0200
@@ -1,6 +1,6 @@
#define RARVER_MAJOR 5
#define RARVER_MINOR 50
-#define RARVER_BETA 5
-#define RARVER_DAY 2
+#define RARVER_BETA 6
+#define RARVER_DAY 25
#define RARVER_MONTH 7
#define RARVER_YEAR 2017
1
0
Hello community,
here is the log from the commit of package freshplayerplugin for openSUSE:Factory checked in at 2017-08-01 09:25:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/freshplayerplugin (Old)
and /work/SRC/openSUSE:Factory/.freshplayerplugin.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "freshplayerplugin"
Tue Aug 1 09:25:46 2017 rev:12 rq:513633 version:0.3.7
Changes:
--------
--- /work/SRC/openSUSE:Factory/freshplayerplugin/freshplayerplugin.changes 2016-11-18 22:03:42.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.freshplayerplugin.new/freshplayerplugin.changes 2017-08-01 09:26:12.624669461 +0200
@@ -1,0 +2,16 @@
+Tue Aug 1 01:34:26 UTC 2017 - i(a)marguerite.su
+
+- Due to redhat#1402582, ragel's colm can't build and core dumps
+ on non-x86_64 arch. As ragel is just a code generator, we
+ can downgrade the buildrequires to ragel-6 (6.10) with no harm.
+
+-------------------------------------------------------------------
+Sun Jun 4 22:14:00 UTC 2017 - sor.alexei(a)meowr.ru
+
+- Update to version 0.3.7:
+ * graphics: Add more fullscreen _NET_WM controls.
+ * misc: drop libpdf and NaCl wrappers.
+ * misc: Search for PepperFlash in Chrome component update
+ directories.
+
+-------------------------------------------------------------------
Old:
----
freshplayerplugin-0.3.6.tar.gz
New:
----
freshplayerplugin-0.3.7.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ freshplayerplugin.spec ++++++
--- /var/tmp/diff_new_pack.nwGL8k/_old 2017-08-01 09:26:13.296574766 +0200
+++ /var/tmp/diff_new_pack.nwGL8k/_new 2017-08-01 09:26:13.308573075 +0200
@@ -1,7 +1,7 @@
#
# spec file for package freshplayerplugin
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%bcond_with restricted
Name: freshplayerplugin
-Version: 0.3.6
+Version: 0.3.7
Release: 0
Summary: PPAPI2NPAPI compatibility layer
License: MIT
@@ -30,7 +30,7 @@
BuildRequires: cmake
BuildRequires: gcc-c++
BuildRequires: pkgconfig
-BuildRequires: ragel
+BuildRequires: ragel-6
BuildRequires: pkgconfig(alsa)
BuildRequires: pkgconfig(cairo)
BuildRequires: pkgconfig(freetype2)
++++++ freshplayerplugin-0.3.6.tar.gz -> freshplayerplugin-0.3.7.tar.gz ++++++
++++ 2289 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package sysdig for openSUSE:Factory checked in at 2017-08-01 09:25:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/sysdig (Old)
and /work/SRC/openSUSE:Factory/.sysdig.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "sysdig"
Tue Aug 1 09:25:44 2017 rev:15 rq:513621 version:0.17.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/sysdig/sysdig.changes 2017-05-08 19:05:04.618658764 +0200
+++ /work/SRC/openSUSE:Factory/.sysdig.new/sysdig.changes 2017-08-01 09:26:11.544821649 +0200
@@ -1,0 +2,12 @@
+Mon Jul 31 20:55:47 UTC 2017 - mpluskal(a)suse.com
+
+- Update to version 0.17.0 (boo#1051562):
+ * New features:
+ + Support netlink sockets [#809]
+ * Bug fixes:
+ + Fix a bug on cgroups parsing that prevented sysdig to start [#835]
+ + Allow sysdig to read k8s state from very large k8s environments [#856]
+ + Improve compatibility with older linux kernels [#889]
+ + Improve rkt detection by checking the existence of files into /var/lib/rkt [#893]
+
+-------------------------------------------------------------------
Old:
----
sysdig-0.16.0.tar.gz
New:
----
sysdig-0.17.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ sysdig.spec ++++++
--- /var/tmp/diff_new_pack.VMbGlP/_old 2017-08-01 09:26:12.132738791 +0200
+++ /var/tmp/diff_new_pack.VMbGlP/_new 2017-08-01 09:26:12.132738791 +0200
@@ -17,7 +17,7 @@
Name: sysdig
-Version: 0.16.0
+Version: 0.17.0
Release: 0
Summary: System-level exploration
License: GPL-2.0
++++++ sysdig-0.16.0.tar.gz -> sysdig-0.17.0.tar.gz ++++++
++++ 3963 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package perl-pcsc for openSUSE:Factory checked in at 2017-08-01 09:25:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-pcsc (Old)
and /work/SRC/openSUSE:Factory/.perl-pcsc.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-pcsc"
Tue Aug 1 09:25:37 2017 rev:11 rq:513606 version:1.4.14
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-pcsc/perl-pcsc.changes 2014-12-05 21:04:23.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.perl-pcsc.new/perl-pcsc.changes 2017-08-01 09:26:08.957186338 +0200
@@ -1,0 +2,7 @@
+Mon Jul 31 16:53:57 CEST 2017 - sbrabec(a)suse.com
+
+- Update to version 1.4.14:
+ * Error processing fixes.
+- Add gpg.keyring and pcsc-perl-1.4.14.tar.bz2.asc.
+
+-------------------------------------------------------------------
Old:
----
pcsc-perl-1.4.13.tar.bz2
New:
----
pcsc-perl-1.4.14.tar.bz2
pcsc-perl-1.4.14.tar.bz2.asc
perl-pcsc.keyring
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-pcsc.spec ++++++
--- /var/tmp/diff_new_pack.7IhvRM/_old 2017-08-01 09:26:09.537104607 +0200
+++ /var/tmp/diff_new_pack.7IhvRM/_new 2017-08-01 09:26:09.541104043 +0200
@@ -1,7 +1,7 @@
#
# spec file for package perl-pcsc
#
-# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,19 +18,22 @@
%define cpan_name pcsc-perl
Name: perl-pcsc
-Version: 1.4.13
+Version: 1.4.14
Release: 0
Summary: Perl interface to Smart Card Reader
License: GPL-2.0+
Group: Development/Libraries/Perl
Url: http://ludovic.rousseau.free.fr/softwares/pcsc-perl/
Source: http://ludovic.rousseau.free.fr/softwares/pcsc-perl/%{cpan_name}-%{version}…
+Source1: http://ludovic.rousseau.free.fr/softwares/pcsc-perl/%{cpan_name}-%{version}…
+Source2: %{name}.keyring
BuildRequires: perl
BuildRequires: pkg-config
BuildRequires: pkgconfig(libpcsclite)
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if 0%{?suse_version} > 1130
BuildRequires: perl-macros
+Requires: perl-base = %{perl_version}
%{perl_requires}
%else
Requires: perl = %{perl_version}
++++++ pcsc-perl-1.4.13.tar.bz2 -> pcsc-perl-1.4.14.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pcsc-perl-1.4.13/Changelog new/pcsc-perl-1.4.14/Changelog
--- old/pcsc-perl-1.4.13/Changelog 2013-04-01 12:31:44.000000000 +0200
+++ new/pcsc-perl-1.4.14/Changelog 2015-11-19 17:23:08.000000000 +0100
@@ -1,3 +1,27 @@
+2015-11-19 author <author@debian>
+
+ * README: Release 1.4.14
+
+ * PCSC.xs: Update copyright date
+
+ * PCSC.xs: _StringifyError(): cast Error in a (DWORD)
+
+ On Mac OS X El Capitan (at least) the value is extended to 64 bits and
+ is then wrong.
+
+ We get 0xFFFFFFFF80100068 instead of 0x80100068 and all the error codes
+ are all converted to the default error: "Unknown (reader specific ?) error..."
+
+2014-12-05 author <author@debian>
+
+ * LICENCE: Update GNU GPL v2 license text
+
+ The FSF postal adress has changed.
+
+ Thanks to Martin Hauke for the bug report.
+
+ * README: Release 1.4.13
+
2013-04-01 author <author@debian>
* create_distrib.sh:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pcsc-perl-1.4.13/LICENCE new/pcsc-perl-1.4.14/LICENCE
--- old/pcsc-perl-1.4.13/LICENCE 2006-06-18 18:41:19.000000000 +0200
+++ new/pcsc-perl-1.4.14/LICENCE 2014-12-05 09:32:12.000000000 +0100
@@ -1,12 +1,12 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
- Preamble
+ Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
@@ -15,7 +15,7 @@
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
+the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
@@ -55,8 +55,8 @@
The precise terms and conditions for copying, distribution and
modification follow.
-
- GNU GENERAL PUBLIC LICENSE
+
+ GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
@@ -110,7 +110,7 @@
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
-
+
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
@@ -168,7 +168,7 @@
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
-
+
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
@@ -225,7 +225,7 @@
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
-
+
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
@@ -255,7 +255,7 @@
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
- NO WARRANTY
+ NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
@@ -277,9 +277,9 @@
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
@@ -303,17 +303,16 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
- Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
@@ -336,5 +335,5 @@
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
+library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pcsc-perl-1.4.13/PCSC.xs new/pcsc-perl-1.4.14/PCSC.xs
--- old/pcsc-perl-1.4.13/PCSC.xs 2011-03-06 18:17:04.000000000 +0100
+++ new/pcsc-perl-1.4.14/PCSC.xs 2015-11-19 17:05:17.000000000 +0100
@@ -8,7 +8,7 @@
* Description : Perl wrapper to the PCSC API
*
* Copyright (C) 2001 - Lionel VICTOR
- * Copyright (c) 2003-2010 Ludovic ROUSSEAU
+ * Copyright (c) 2003-2015 Ludovic ROUSSEAU
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -27,7 +27,7 @@
*
**************************************************************************/
- /* $Id: PCSC.xs,v 1.28 2011-03-06 17:17:04 rousseau Exp $ */
+ /* $Id: PCSC.xs,v 1.30 2015/11/19 16:05:17 rousseau Exp $ */
#ifdef __cplusplus
extern "C" {
@@ -235,7 +235,7 @@
* informations
*/
const char * _StringifyError (unsigned long Error) {
- switch ( Error ) {
+ switch ( (DWORD)Error ) {
case SCARD_S_SUCCESS: return "Command successful.";
case SCARD_E_CANCELLED: return "Command cancelled.";
case SCARD_E_CANT_DISPOSE: return "Cannot dispose handle.";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pcsc-perl-1.4.13/README new/pcsc-perl-1.4.14/README
--- old/pcsc-perl-1.4.13/README 2013-04-01 12:27:20.000000000 +0200
+++ new/pcsc-perl-1.4.14/README 2015-11-19 17:21:23.000000000 +0100
@@ -68,6 +68,10 @@
History:
========
+1.4.14 - 19 November 2015, Ludovic ROUSSEAU
+ - Fix _StringifyError() on Mac OS X. The string version of
+ PCSC::errno now works.
+
1.4.13 - 1 April 2013, Ludovic ROUSSEAU
- Fix a warning with Perl 5.16
@@ -185,5 +189,5 @@
1.0.8 - 18 Oct 2001, Ludovic ROUSSEAU
-$Id: README,v 1.25 2011/03/06 19:17:42 rousseau Exp $
+$Id: README,v 1.27 2015/11/19 16:21:23 rousseau Exp $
++++++ perl-pcsc.keyring ++++++
pub 4096R/E8F9C57E 2010-09-19
uid Ludovic Rousseau <ludovic.rousseau(a)free.fr>
uid Ludovic Rousseau <rousseau(a)debian.org>
sub 4096R/2F1BEFF0 2010-09-19
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.22 (GNU/Linux)
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
pRP4yT/Kvsj1Rz0cYYI=
=a5wl
-----END PGP PUBLIC KEY BLOCK-----
1
0
Hello community,
here is the log from the commit of package poedit for openSUSE:Factory checked in at 2017-08-01 09:25:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/poedit (Old)
and /work/SRC/openSUSE:Factory/.poedit.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "poedit"
Tue Aug 1 09:25:33 2017 rev:39 rq:513601 version:2.0.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/poedit/poedit.changes 2017-04-18 13:50:39.832215219 +0200
+++ /work/SRC/openSUSE:Factory/.poedit.new/poedit.changes 2017-08-01 09:26:07.473395456 +0200
@@ -1,0 +2,25 @@
+Mon Jul 31 15:46:53 UTC 2017 - astieger(a)suse.com
+
+- PoEdit 2.0.3:
+ * Much faster loading and saving of large PO files.
+ * Fixed frequent false positives in QA warnings for German,
+ Japanese, Arabic and translations with reordered brackets.
+ * Fixed issues with suggestions not showing up in the sidebar if
+ the user had an unusually tall editing area set up.
+ * Fixed assert when opening a PO file on Linux.
+- build build with GCC7, ICU 59.1 on Factory bsc#1041277
+ add poedit-2.0.3-fix-icu.patch
+
+-------------------------------------------------------------------
+Mon Jun 12 10:08:42 UTC 2017 - astieger(a)suse.com
+
+- PoEdit 2.0.2:
+ * Unusual whitespace (2+ spaces) in the middle of strings is now
+ highlighted
+ * Strings with warnings are now put at the top together with
+ errors
+ * Fixed crash when clicking on an item with plurals in a POT file
+ * Added --line command line argument to open a file at specified
+ item
+
+-------------------------------------------------------------------
Old:
----
poedit-2.0.1.tar.gz
New:
----
poedit-2.0.3-fix-icu.patch
poedit-2.0.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ poedit.spec ++++++
--- /var/tmp/diff_new_pack.pIZKN2/_old 2017-08-01 09:26:08.193293997 +0200
+++ /var/tmp/diff_new_pack.pIZKN2/_new 2017-08-01 09:26:08.201292870 +0200
@@ -19,20 +19,20 @@
%bcond_without language_detection
%bcond_without crowdin_integration
Name: poedit
-Version: 2.0.1
+Version: 2.0.3
Release: 0
Summary: Cross-platform Gettext Catalogs Editing Tool
License: MIT
Group: Development/Tools/Other
Url: http://www.poedit.net/
Source: https://github.com/vslavik/poedit/releases/download/v%{version}-oss/%{name}…
-BuildRequires: autoconf
-BuildRequires: automake
+Patch0: poedit-2.0.3-fix-icu.patch
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: pkgconfig
BuildRequires: update-desktop-files
-BuildRequires: wxWidgets-devel >= 3.0.2
+BuildRequires: wxWidgets-3_0-devel
+BuildRequires: wxWidgets-devel >= 3.0.3
BuildRequires: pkgconfig(gtkspell-2.0)
BuildRequires: pkgconfig(icu-i18n)
BuildRequires: pkgconfig(icu-uc)
@@ -66,11 +66,9 @@
%prep
%setup -q
+%patch0 -p1
%build
-autoreconf -fi
-export CFLAGS="%{optflags} -fno-strict-aliasing"
-export CXXFLAGS="%{optflags} -fno-strict-aliasing"
%configure \
%if !%{with language_detection}
--without-cld2 \
++++++ poedit-2.0.3-fix-icu.patch ++++++
From: Andreas Stieger <astieger(a)suse.com>
Date: Mon, 31 Jul 2017 15:36:22 +0000
Subject: Fix build with ICU 59.1
References: https://github.com/vslavik/poedit/issues/406 https://bugzilla.opensuse.org/show_bug.cgi?id=1041277
Upstream: submitted
[ 112s] str_helpers.h:176:37: required from here
[ 112s] /usr/include/wx-3.0/wx/buffer.h:99:27: error: invalid conversion from 'wxScopedCharTypeBuffer<char16_t>::CharType* {aka char16_t*}' to 'const wxChar16* {aka const short unsigned int*}' [-fpermissive]
[ 112s] len = wxStrlen(str);
[ 112s] ~~~~~~~~^~~~~
Index: poedit-2.0.3/src/str_helpers.h
===================================================================
--- poedit-2.0.3.orig/src/str_helpers.h 2017-07-23 19:08:39.000000000 +0200
+++ poedit-2.0.3/src/str_helpers.h 2017-07-31 17:32:05.295617677 +0200
@@ -185,7 +185,7 @@ inline std::wstring to_wstring(const icu
Notice that the resulting string is only valid for the input's lifetime.
*/
-inline wxScopedCharTypeBuffer<UChar> to_icu_raw(const wxString& str)
+inline wxScopedCharTypeBuffer<wxChar16> to_icu_raw(const wxString& str)
{
static_assert(U_SIZEOF_UCHAR == 2, "unexpected UChar size");
#if SIZEOF_WCHAR_T == 2
@@ -194,7 +194,7 @@ inline wxScopedCharTypeBuffer<UChar> to_
#else
auto buf = wxMBConvUTF16().cWC2MB(str.wc_str());
auto len = buf.length();
- return wxCharTypeBuffer<UChar>::CreateOwned((UChar*)buf.release(), len);
+ return wxCharTypeBuffer<wxChar16>::CreateOwned((wxChar16*)buf.release(), len);
#endif
}
Index: poedit-2.0.3/src/unicode_helpers.cpp
===================================================================
--- poedit-2.0.3.orig/src/unicode_helpers.cpp 2017-07-23 19:08:39.000000000 +0200
+++ poedit-2.0.3/src/unicode_helpers.cpp 2017-07-31 17:32:05.295617677 +0200
@@ -38,7 +38,7 @@ TextDirection get_base_direction(const w
return TextDirection::LTR;
auto s = str::to_icu_raw(text);
- switch (ubidi_getBaseDirection(s.data(), (int)s.length()))
+ switch (ubidi_getBaseDirection((const UChar*)s.data(), (int)s.length()))
{
case UBIDI_RTL:
return TextDirection::RTL;
++++++ poedit-2.0.1.tar.gz -> poedit-2.0.3.tar.gz ++++++
++++ 16293 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package youtube-dl for openSUSE:Factory checked in at 2017-08-01 09:25:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/youtube-dl (Old)
and /work/SRC/openSUSE:Factory/.youtube-dl.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "youtube-dl"
Tue Aug 1 09:25:28 2017 rev:65 rq:513171 version:2017.07.23
Changes:
--------
--- /work/SRC/openSUSE:Factory/youtube-dl/python-youtube-dl.changes 2017-07-07 10:17:17.823780218 +0200
+++ /work/SRC/openSUSE:Factory/.youtube-dl.new/python-youtube-dl.changes 2017-08-01 09:26:04.229852584 +0200
@@ -1,0 +2,7 @@
+Mon Jul 24 10:58:34 UTC 2017 - jengelh(a)inai.de
+
+- Update to new upstream release 2017.07.23
+ * Remove extractor for yam
+ * spiegel:article: Add support for nexx iframe embeds
+
+-------------------------------------------------------------------
youtube-dl.changes: same change
Old:
----
youtube-dl-2017.07.02.tar.gz
youtube-dl-2017.07.02.tar.gz.sig
New:
----
youtube-dl-2017.07.23.tar.gz
youtube-dl-2017.07.23.tar.gz.sig
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-youtube-dl.spec ++++++
--- /var/tmp/diff_new_pack.8EzwZv/_old 2017-08-01 09:26:06.321557790 +0200
+++ /var/tmp/diff_new_pack.8EzwZv/_new 2017-08-01 09:26:06.325557227 +0200
@@ -19,7 +19,7 @@
%define modname youtube-dl
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-youtube-dl
-Version: 2017.07.02
+Version: 2017.07.23
Release: 0
Summary: A python module for downloading from video sites for offline watching
License: SUSE-Public-Domain and CC-BY-SA-3.0
++++++ youtube-dl.spec ++++++
--- /var/tmp/diff_new_pack.8EzwZv/_old 2017-08-01 09:26:06.373550463 +0200
+++ /var/tmp/diff_new_pack.8EzwZv/_new 2017-08-01 09:26:06.381549335 +0200
@@ -17,7 +17,7 @@
Name: youtube-dl
-Version: 2017.07.02
+Version: 2017.07.23
Release: 0
Summary: A tool for downloading from video sites for offline watching
License: SUSE-Public-Domain and CC-BY-SA-3.0
++++++ youtube-dl-2017.07.02.tar.gz -> youtube-dl-2017.07.23.tar.gz ++++++
++++ 3813 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package fate for openSUSE:Factory checked in at 2017-08-01 09:25:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/fate (Old)
and /work/SRC/openSUSE:Factory/.fate.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "fate"
Tue Aug 1 09:25:26 2017 rev:9 rq:513159 version:1.6.0.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/fate/fate.changes 2017-06-28 10:37:28.001358357 +0200
+++ /work/SRC/openSUSE:Factory/.fate.new/fate.changes 2017-08-01 09:26:02.838048737 +0200
@@ -1,0 +2,23 @@
+Mon Jul 31 08:36:05 UTC 2017 - jplack(a)suse.com
+
+- bugfix release 1.6.0.2
+ * fix bsc#1050997 in query by ids, thanks to reporter afaerber@
+ and aschwab@
+ * fix freeze/unfreeze in FeatureTableView
+ * do not copy xml representation in Feature::operator=
+ * eliminate public method FeatureMap::recordChange that nobody needs
+ * FeatureMapListView: derive directly from FeatureTableView
+ * fix reloading of single features, eliminate signal
+ FeatureMap::featureReloaded()
+ * let FeatureView handle its stuff alone in MainView
+ * handle signals from FeatureMap properly in FeatureView if they apply
+ * add a new public method FeatureMap::addNewFeature, making
+ addFeature/addFeatures protected
+ * hide progress bar after Feature import or cloning
+ * make Feature::operator= an internal operation for friend classes only
+ * do not bail out on new Features in FeatureDiffView::showFeatureChanges
+ * remove non-emitted signal FeatureDisplay::featureSelected(Feature*)
+ * remove FeatureMap* from FeatureView constructor
+ * fix bug in Feature::operator=
+
+-------------------------------------------------------------------
Old:
----
fate-20170627-b434f6b5.tar.bz2
New:
----
fate-20170731-4baa429b.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ fate.spec ++++++
--- /var/tmp/diff_new_pack.gVMWFc/_old 2017-08-01 09:26:03.373973207 +0200
+++ /var/tmp/diff_new_pack.gVMWFc/_new 2017-08-01 09:26:03.377972644 +0200
@@ -17,8 +17,8 @@
%define baseversion 1.6
-%define patchlevel .0.1
-%define snapshot 20170627-b434f6b5
+%define patchlevel .0.2
+%define snapshot 20170731-4baa429b
Name: fate
Version: %{baseversion}%{patchlevel}
Release: 0
++++++ fate-20170627-b434f6b5.tar.bz2 -> fate-20170731-4baa429b.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fate-20170627-b434f6b5/src/fate/editor/featurediffview.cpp new/fate-20170731-4baa429b/src/fate/editor/featurediffview.cpp
--- old/fate-20170627-b434f6b5/src/fate/editor/featurediffview.cpp 2017-06-27 16:44:59.458786761 +0200
+++ new/fate-20170731-4baa429b/src/fate/editor/featurediffview.cpp 2017-07-31 10:53:53.773448590 +0200
@@ -149,24 +149,29 @@
{
if (!isVisible() || !mFeature)
return;
+ Feature *oldRev;
- FeatureMap *fmap = mFeature->featureMap();
- if (!fmap)
- return;
-
- Feature *oldRev = fmap->origFeature( mFeature );
-
- if ( !oldRev ) {
- setPlainText( i18n("Caching has to be enabled to create diffs.\n\n"
- "Please enable cached queries first.") );
- return;
+ if (mFeature->isNew()) {
+ oldRev = new Feature;
+ oldRev->createDomTree( false );
+ }
+ else {
+ FeatureMap *fmap = mFeature->featureMap();
+ if (!fmap)
+ return;
+ oldRev = fmap->origFeature( mFeature );
+
+ if (!oldRev) {
+ setPlainText( i18n("Caching has to be enabled to create diffs.\n\n"
+ "Please enable cached queries first.") );
+ return;
+ }
}
if (mOldFile) { // still another diff process running
qWarning() << "still another diff process running";
return;
}
- qWarning() << Q_FUNC_INFO << "Feature #" << mFeature->id();
// update XML representation
mFeature->createDomTree( false );
@@ -249,7 +254,6 @@
{
QString output;
- qWarning() << Q_FUNC_INFO << proc << success;
if (!success)
output = i18n("diff process failed");
else if (!proc->getStandardOutput(output))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fate-20170627-b434f6b5/src/fate/editor/featuredisplay.h new/fate-20170731-4baa429b/src/fate/editor/featuredisplay.h
--- old/fate-20170627-b434f6b5/src/fate/editor/featuredisplay.h 2017-06-27 16:44:59.458786761 +0200
+++ new/fate-20170731-4baa429b/src/fate/editor/featuredisplay.h 2017-07-31 10:53:53.773448590 +0200
@@ -56,7 +56,6 @@
virtual void showEvent(QShowEvent * event);
signals:
- void featureSelected( Feature * );
void commentRequest( int );
void commentEditRequest( int );
void commentToPublicRequest( int );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fate-20170627-b434f6b5/src/fate/editor/featureview.cpp new/fate-20170731-4baa429b/src/fate/editor/featureview.cpp
--- old/fate-20170627-b434f6b5/src/fate/editor/featureview.cpp 2017-06-27 16:44:59.458786761 +0200
+++ new/fate-20170731-4baa429b/src/fate/editor/featureview.cpp 2017-07-31 10:53:53.777448609 +0200
@@ -56,8 +56,8 @@
{ NULL, QString::null, 0, 0 }
};
-FeatureView::FeatureView(FeatureMap *features, QWidget *parent)
-: QTabWidget(parent), mFeatureMap(features),
+FeatureView::FeatureView(QWidget *parent)
+: QTabWidget(parent), mFeatureMap(0),
mFeatureDisplay(0), mSimpleEditor(0), mEcoEditor(0), mCommentsView(0),
mChangesView(0), mHistoryView(0), mRawXMLView(0), mMultiOpView(0),
mCommentDialog(0), mReadOnly(false)
@@ -128,7 +128,6 @@
void FeatureView::menuTriggered(QAction *action)
{
- qWarning() << Q_FUNC_INFO << action->text() << action->data() << action->objectName();
int number = action->data().toInt();
switch(number) {
@@ -178,7 +177,9 @@
action->setEnabled(featureModified);
action = mMenu->findChild<QAction *>("saveAll");
if (action)
- action->setEnabled(mFeatureMap->modifiedFeatures().size() > featureModified);
+ action->setEnabled(mFeatureMap ?
+ mFeatureMap->modifiedFeatures().size() > featureModified
+ : false);
action = mMenu->findChild<QAction *>("configure");
if (action) {
FeatureViewBase *viewer = dynamic_cast<FeatureViewBase *>(currentWidget());
@@ -205,8 +206,6 @@
SLOT( slotFeatureSelected( const QString & ) ));
connect( mFeatureDisplay, SIGNAL( showTreeRequest(const QString &) ),
SIGNAL( showTreeRequest(const QString &) ) );
- connect( mFeatureDisplay, SIGNAL( featureSelected( Feature * ) ),
- SIGNAL( featureSelected( Feature * ) ) );
}
return mFeatureDisplay;
}
@@ -317,10 +316,15 @@
FeatureViewBase_setFeature(feature);
+ if ( mFeatureMap ) {
+ mFeatureMap->disconnect(this);
+ mFeatureMap = 0;
+ }
+
if (!mFeature) {
mFeatureDisplay->clear();
if (mChangesView)
- mChangesView->setFeature(0);
+ mChangesView->clear();
if (mSimpleEditor)
mSimpleEditor->clear();
if (mEcoEditor)
@@ -328,6 +332,12 @@
return;
}
+ mFeatureMap = mFeature->featureMap();
+ if ( mFeatureMap && mFeatureMap->view() == this) {
+ connect( mFeatureMap, SIGNAL( currentFeatureChanged( Feature * ) ),
+ SLOT( setFeature( Feature * ) ) );
+ }
+
if (mFeature->eco()) {
// show ECO tab
QAction *action = mMenu->actions().at(1); // entry for ecoEditor
@@ -433,6 +443,8 @@
void FeatureView::saveCurrentFeature()
{
+ if (!mFeature || !mFeatureMap)
+ return;
if (!mFeature->isModified())
return;
if (!mFeatureMap->saveKeeper(mFeature)) {
@@ -442,6 +454,8 @@
void FeatureView::saveAllFeatures()
{
+ if (!mFeature || !mFeatureMap)
+ return;
if (!mFeatureMap->isModified())
return;
if (!mFeatureMap->saveModifiedFeatures()) {
@@ -502,9 +516,6 @@
void FeatureView::slotTabChanged( QWidget *w )
{
- if (w == mFeatureDisplay) {
- mFeatureDisplay->setFeature( mFeature );
- }
if (mMultiOpView && w != mMultiOpView) {
// hide multiOp tab
QAction *action = mMenu->actions().at(5); // keep in sync with featureViewTab[]
@@ -552,8 +563,6 @@
{
if ( mFeature != f ) {
setFeature( f );
- // showFeature does already do a 'select´ and emits this signal
- // emit featureSelected( f );
}
if ( mFeatureDisplay->isVisible() ) {
saveComments();
@@ -637,13 +646,16 @@
void FeatureView::slotFeatureSelected( const QString &id )
{
+ if (!mFeatureMap)
+ return;
+
Feature *f = mFeatureMap->feature( id );
// moved that code from FeatureDisplay !!
// !! and _add_ the feature to the current feature set __and__ to
// !! the querystring ... !!
// currentQuery.unite( Query( id.toNum() ) ); ??
- if( !f || !mFeatureMap->features().contains( f ) ) {
+ if ( !f ) {
int res = KMessageBox::questionYesNo( this, i18n(
"The requested feature is not part of the current feature set. "
"Fate can load it, but the feature set will then no longer match "
@@ -656,15 +668,14 @@
}
mFeatureMap->doRestock( id );
+ if (f)
+ mFeatureMap->setCurrentFeature(f);
}
void FeatureView::saveComments()
{
mFeature->createDomTree( true );
mFeatureDisplay->setFeature( mFeature );
- /* the call to showFeature sets the feature unmodified
- * again. But it is modified because of the new comment
- */
}
Feature* FeatureView::currentFeature()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fate-20170627-b434f6b5/src/fate/editor/featureview.h new/fate-20170731-4baa429b/src/fate/editor/featureview.h
--- old/fate-20170627-b434f6b5/src/fate/editor/featureview.h 2017-06-27 16:44:59.458786761 +0200
+++ new/fate-20170731-4baa429b/src/fate/editor/featureview.h 2017-07-31 10:53:53.777448609 +0200
@@ -28,7 +28,6 @@
#include "featureviewbase.h"
#include <QTabWidget>
-#include <QWidget>
class CommentDialog;
class EcoEditor;
@@ -42,6 +41,7 @@
class KActionCollection;
class QComboBox;
class QMenu;
+class QWidget;
class SimpleEditor;
struct FateTabEntry {
@@ -56,7 +56,7 @@
{
Q_OBJECT
public:
- FeatureView( FeatureMap *, QWidget *parent );
+ FeatureView( QWidget *parent );
virtual ~FeatureView();
void setupActions( KActionCollection * );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fate-20170627-b434f6b5/src/fate/editor/htmlview.cpp new/fate-20170731-4baa429b/src/fate/editor/htmlview.cpp
--- old/fate-20170627-b434f6b5/src/fate/editor/htmlview.cpp 2017-06-27 16:44:59.458786761 +0200
+++ new/fate-20170731-4baa429b/src/fate/editor/htmlview.cpp 2017-07-31 10:53:53.777448609 +0200
@@ -92,7 +92,7 @@
void HtmlView::clearView()
{
begin();
- write( QString::null );
+ write("<html><body></body></html>");
end();
setTitle( QString::null );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fate-20170627-b434f6b5/src/fate/mainview.cpp new/fate-20170731-4baa429b/src/fate/mainview.cpp
--- old/fate-20170627-b434f6b5/src/fate/mainview.cpp 2017-06-27 16:44:59.462786781 +0200
+++ new/fate-20170731-4baa429b/src/fate/mainview.cpp 2017-07-31 10:53:53.777448609 +0200
@@ -2,8 +2,10 @@
This file is part of Fate.
Copyright (c) 2005 SUSE LINUX Products GmbH
+ 2017 SUSE Linux GmbH
- Author: Cornelius Schumacher <cschum(a)suse.de>
+ Author: Cornelius Schumacher <cschum(a)suse.de>,
+ Joachim Plack <jplack(a)suse.de>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -24,9 +26,6 @@
#include "prefs.h"
#include "querylog.h"
-#include <QBoxLayout>
-#include <QHBoxLayout>
-#include <QVBoxLayout>
#include "feature.h"
#include "featureview.h"
#include "featurelistview.h"
@@ -75,29 +74,25 @@
#include <kdialog.h>
#include <kio/job.h>
#include <kstandarddirs.h>
-#include <kuser.h>
#include <kaction.h>
#include <kshortcut.h>
-#include <ksavefile.h>
#include <ksqueezedtextlabel.h>
-#include <kdeversion.h>
-#include <qlineedit.h>
-#include <qlayout.h>
-#include <qpushbutton.h>
-#include <qtextedit.h>
-#include <qlabel.h>
-#include <qsplitter.h>
-#include <qregexp.h>
-#include <qcombobox.h>
-#include <qtimer.h>
-#include <qcursor.h>
-#include <qapplication.h>
-#include <qsignalmapper.h>
+#include <QApplication>
+#include <QBoxLayout>
+#include <QComboBox>
+#include <QCursor>
#include <QDBusConnection>
+#include <QHBoxLayout>
+#include <QLabel>
+#include <QLineEdit>
+#include <QRegExp>
+#include <QSignalMapper>
+#include <QSplitter>
#include <QTabWidget>
-
-#define BULK_FEATURE_UPDATES
+#include <QTextStream>
+#include <QTimer>
+#include <QVBoxLayout>
MainView::MainView( QWidget *parent, bool quietStartup )
: QWidget( parent ), mQuietStartup( quietStartup ),
@@ -166,63 +161,32 @@
connect( mRelationTreeView, SIGNAL( newButtonClicked() ),
SLOT( newRelationTree() ) );
connect( mRelationTreeView, SIGNAL( featureSelected(Feature *) ),
- SLOT( showFeature(Feature *)) );
+ &mFeatureMap, SLOT( setCurrentFeature(Feature *)) );
vbl->addWidget( mRelationTreeView );
mNavigatorTab->addTab( w, i18n("Relation &Trees") );
- mFeatureListView = new FeatureTableView( mNavigatorSplitter );
+ mFeatureMapListView = new FeatureMapListView( mNavigatorSplitter, &mFeatureMap);
- mFeatureView = new FeatureView( &mFeatureMap, rightSplitter );
+ // TODO: remove parameter mFeatureMap, this can be read from the feature in setFeature
+ mFeatureView = new FeatureView( rightSplitter );
mFeatureMap.setView( mFeatureView );
connect( &mFeatureMap, SIGNAL( statusMessage( const QString & ) ),
SIGNAL( statusMessage( const QString & ) ) );
connect( &mFeatureMap, SIGNAL( queryDone( bool ) ),
SLOT( slotQueryDone() ) );
- connect( &mFeatureMap, SIGNAL( queryDone( bool ) ),
- mFeatureListView, SLOT( unfreeze() ) );
- connect( &mFeatureMap, SIGNAL( dataAboutToBeReset() ),
- SLOT( clearFeatureViews() ) );
- connect( &mFeatureMap, SIGNAL( dataAboutToBeReset() ),
- mFeatureListView, SLOT( freeze() ) );
- connect( mFeatureListView, SIGNAL( requestFeatureView( Feature * ) ),
- SLOT( showNewFeatureView( Feature * ) ) );
-
- // This signal/slot connection causes features to be added to the
- // table/list view one by one. Which is fine for a small number of
- // features, but tends to get slow with larger numbers. This is
- // mostly due to table sorting, it appears.
-#ifndef BULK_FEATURE_UPDATES
- connect( &mFeatureMap, SIGNAL( featureAdded( Feature * ) ),
- mFeatureListView, SLOT( insertFeature( Feature * ) ) );
-#endif
-
- connect( &mFeatureMap, SIGNAL( featureChanged( Feature * ) ),
- mFeatureListView, SLOT( updateFeature( Feature * ) ) );
- connect( &mFeatureMap, SIGNAL( featureReloaded( Feature * ) ),
- mFeatureListView, SLOT( updateFeature( Feature * ) ) );
connect( &mFeatureMap, SIGNAL( dataChanged() ),
SLOT( slotFeatureDataChanged() ) );
- connect( &mFeatureMap, SIGNAL( featureReloaded( Feature * ) ),
+
+ // Thinks we do not need that in the end ...
+ connect( &mFeatureMap, SIGNAL( featureChanged( Feature * ) ),
SLOT( slotFeatureReloaded( Feature * ) ) );
connect( &mFeatureMap, SIGNAL( connectionEstablished( bool ) ),
SIGNAL( connectionEstablished( bool ) ) );
- // this gets connected only for the first FeatureView and is the only valid
- // way to change the displayed feature for it
- connect( &mFeatureMap, SIGNAL( currentFeatureChanged( Feature * ) ),
- mFeatureView, SLOT( setFeature( Feature * ) ) );
- connect( mFeatureListView, SIGNAL( featureSelected( Feature * ) ),
- SLOT( showFeature( Feature * ) ) );
- /*
- connect( mFeatureView, SIGNAL( featureSelected( Feature * ) ),
- mFeatureListView, SLOT( selectFeature( Feature * ) ) );
- */
- // TODO: looks like this can be removed both, the second should signal
- // FeatureMap instead
- connect( mFeatureView, SIGNAL( featureSelected( Feature * ) ),
- &mFeatureMap, SLOT( setCurrentFeature( Feature * ) ) );
- connect( mFeatureView, SIGNAL( featureSelected( Feature * ) ),
- SLOT( showFeature( Feature * ) ) );
+ // TODO: may be move this completely to FeatureMapListView
+ connect( mFeatureMapListView, SIGNAL( requestFeatureView( Feature * ) ),
+ SLOT( showNewFeatureView( Feature * ) ) );
+
connect( mFeatureView, SIGNAL(showTreeRequest( const QString & ) ),
SLOT( showTree( const QString & ) ) );
@@ -274,6 +238,10 @@
Prefs::self()->writeConfig();
delete mClientInfo;
+ delete mFeatureView;
+ delete mFeatureMapListView;
+ delete mStatisticsView;
+ delete mRelationTreeView;
}
void MainView::showNewFeatureView(Feature *feature)
@@ -282,7 +250,7 @@
if (!mFeatureMap.features().contains(feature))
return;
- FeatureView *view = new FeatureView(&mFeatureMap, NULL);
+ FeatureView *view = new FeatureView(NULL);
view->setFeature(feature);
KActionCollection c(view);
view->setupActions( &c );
@@ -291,10 +259,25 @@
connect( &mFeatureMap, SIGNAL(dataAboutToBeReset()),
view, SLOT(close()));
- view->resize(800, 600); // better load last geometry
+ disconnect( feature, SIGNAL(destroyed()),
+ view, 0);
+ connect( feature, SIGNAL(destroyed()),
+ view, SLOT(close()));
+ connect( view, SIGNAL(destroyed()),
+ SLOT(aboutToDestroyFeatureView()));
+ // TODO: load and store a default size
+ view->resize(800, 600);
view->show();
}
+void MainView::aboutToDestroyFeatureView()
+{
+ // FeatureView *view == sender();
+
+ emit statusMessage("FeatureView about to be destroyed");
+}
+
+
void MainView::editRelationTree()
{
if( Prefs::self()->offlineModeEnabled() ) {
@@ -334,7 +317,7 @@
dlg.setProductMap( ProductMap::self() );
dlg.showTree( mRelationTreeView->currentTree() );
connect( &dlg, SIGNAL( featureSelected(Feature *) ),
- SLOT( showFeature(Feature *)) );
+ &mFeatureMap, SLOT( setCurrentFeature(Feature *)) );
dlg.exec();
}
@@ -351,7 +334,7 @@
dlg.setProductMap( ProductMap::self() );
dlg.showTree( tree );
connect( &dlg, SIGNAL( featureSelected(Feature *) ),
- SLOT( showFeature(Feature *)) );
+ &mFeatureMap, SLOT( setCurrentFeature(Feature *)) );
dlg.exec();
}
@@ -659,7 +642,7 @@
connect( mLoadMissingFeaturesAction, SIGNAL( triggered() ),
mRelationTreeView, SLOT( stockTree() ) );
c->addAction( "stock_tree", mLoadMissingFeaturesAction );
-
+ /*
KAction* kaction = new KAction( this );
kaction->setText( i18n("Select next feature") );
kaction->setShortcut( Qt::CTRL+Qt::Key_Down );
@@ -671,9 +654,10 @@
kaction->setShortcut( Qt::CTRL+Qt::Key_Up );
connect( kaction, SIGNAL( triggered() ), SLOT(selectPreviousFeature()));
c->addAction( "select_previous_feature", action );
-
+ */
updateStoredQueriesView();
mFeatureView->setupActions( c );
+ mFeatureMapListView->setupActions( c );
}
void MainView::submitQuery( const Query &query )
@@ -1048,9 +1032,8 @@
Feature *f = dlg->feature();
f->setModified(true);
- mFeatureMap.addFeature(f);
+ mFeatureMap.addNewFeature(f);
mFeatureMap.setCurrentFeature(f);
- mFeatureView->setFeature(f);
mFeatureView->focusEditor();
}
}
@@ -1067,12 +1050,14 @@
FeatureParser parser;
connect( &parser, SIGNAL(featureParsed( Feature * )),
- &mFeatureMap, SLOT(addFeature( Feature * )) );
+ &mFeatureMap, SLOT(addNewFeature( Feature * )) );
clonedFeature = new Feature;
clonedFeature->setModified(true);
KResult result = parser.parseFeature(clonedFeature, xml);
+ emit queryDone(); // hide progress bar again
+
if (!result) {
KMessageBox::sorry(this, result.fullMessage());
// FIXME: do we need to delete clonedFeature?
@@ -1099,7 +1084,7 @@
if (!mFeatureMap.checkModified(true))
return;
- f = mFeatureView->currentFeature();
+ f = mFeatureMap.currentFeature();
if (f == 0) {
KMessageBox::sorry(this, i18n("No feature selected."));
return;
@@ -1107,7 +1092,7 @@
f = doClone(f, true);
if (f != 0)
- showFeature(f);
+ mFeatureMap.setCurrentFeature(f);
}
void MainView::cloneFeatureWithoutComments()
@@ -1117,7 +1102,7 @@
if (!mFeatureMap.checkModified(true))
return;
- f = mFeatureView->currentFeature();
+ f = mFeatureMap.currentFeature();
if (f == 0) {
KMessageBox::sorry(this, i18n("No feature selected."));
return;
@@ -1125,7 +1110,7 @@
f = doClone(f, false);
if (f != 0)
- showFeature(f);
+ mFeatureMap.setCurrentFeature(f);
}
void MainView::importFeature()
@@ -1145,9 +1130,11 @@
FeatureParser parser;
connect( &parser, SIGNAL(featureParsed( Feature * )),
- mFeatureView, SLOT(addFeature( Feature * )) );
+ &mFeatureMap, SLOT(addNewFeature( Feature * )) );
KResult result = parser.parse( xml );
+ emit queryDone(); // hide progress bar again
+
if ( !result ) KMessageBox::sorry( this, result.fullMessage() );
}
@@ -1156,27 +1143,16 @@
ImportBugzillaDialog dlg( ProductMap::self(), this );
connect( &dlg, SIGNAL( featureParsed( Feature * ) ),
- &mFeatureMap, SLOT( addFeature( Feature * ) ) );
+ &mFeatureMap, SLOT( addNewFeature( Feature * ) ) );
dlg.exec();
}
-void MainView::updateFeatureList( Feature *f )
-{
- kDebug() << k_funcinfo << f->id();
-
- mFeatureListView->insertFeature( f );
- mFeatureListView->updateView();
-// TODO: Add to tree view.
-// mTreeView->addFeature( f );
- // TODO: Update info in list view item
-}
-
void MainView::reloadFeature( Feature *f )
{
Feature *feature = f;
- if ( !feature ) feature = mFeatureView->currentFeature();
+ if ( !feature ) feature = mFeatureMap.currentFeature();
if ( !feature ) {
KMessageBox::sorry( this, i18n("No feature selected.") );
@@ -1192,12 +1168,10 @@
void MainView::slotFeatureReloaded( Feature * f )
{
- Feature *currentFeature = mFeatureView->currentFeature();
+ Feature *currentFeature = mFeatureMap.currentFeature();
if ( !currentFeature || currentFeature->id() == f->id() ) {
- showFeature( f );
+ mFeatureView->setFeature( f );
}
-
- updateFeatureList( f );
}
void MainView::doDelayedQuery()
@@ -1248,17 +1222,6 @@
void MainView::slotQueryDone()
{
-#ifdef BULK_FEATURE_UPDATES
- /* bsc#899494
- * The problem here is that mFeatureMap emits dataChanged() from
- * FeatureMap::slotQueryDone() and FeatureTableView::slotProductChosen
- * correctly processess the signal BUT at that time there are no features in
- * the table as FeatureTableView::insertFeatures() gets called only after the
- * signal is processed. This needs redesign.
- */
- mFeatureListView->insertFeatures(mFeatureMap.features());
-#endif
-
emit queryDone();
QApplication::restoreOverrideCursor();
}
@@ -1651,7 +1614,7 @@
void MainView::showHistory()
{
- Feature *f = mFeatureView->currentFeature();
+ Feature *f = mFeatureMap.currentFeature();
if ( f ) {
HistoryDialog *dlg = new HistoryDialog( f, this );
dlg->show();
@@ -1730,27 +1693,6 @@
mLoadMissingFeaturesAction->setEnabled( enabled );
}
-void MainView::showFeature( Feature *feature )
-{
- if( !feature ) {
- return;
- }
-
- if( feature != mFeatureView->currentFeature() &&
- !mFeatureMap.checkModified( true ) ) {
- QTimer::singleShot( 0, this, SLOT(reselectFeature()) );
- return;
- }
-
- mFeatureView->setFeature( feature );
-}
-
-void MainView::reselectFeature()
-{
- mFeatureListView->clearSelection();
- mFeatureListView->selectFeature( mFeatureView->currentFeature() );
-}
-
bool MainView::goOnline()
{
if( !mFeatureMap.checkSynch( true ) )
@@ -1817,7 +1759,7 @@
FeatureTableDialog dlg( ProductMap::self(), this );
connect( &dlg, SIGNAL( featureSelected( Feature *) ),
- SLOT( showFeature( Feature * ) ) );
+ &mFeatureMap, SLOT( setCurrentFeature( Feature * ) ) );
dlg.setFeatures( mFeatureMap.features() );
dlg.exec();
@@ -1852,19 +1794,9 @@
dlg.exec();
}
-void MainView::clearFeatureViews()
-{
- mFeatureListView->clear();
- mFeatureView->clear();
-}
-
void MainView::slotFeatureDataChanged()
{
- mFeatureListView->updateView();
- mFeatureListView->updateQueryTitle( mFeatureMap.currentQuery().title() );
- mFeatureListView->updateProductList( mFeatureMap.productList() );
-
StartupSequence::self()->setPrecondition( StartupSequence::StartupQueryDone,
true );
@@ -1883,14 +1815,14 @@
if ( f ) kDebug() << k_funcinfo << "Showing first feature: " << f->id();
else kDebug() << k_funcinfo << "Unable to find first feature.";
}
- mFeatureListView->selectFeature( f );
- showFeature( f );
+ mFeatureMap.setCurrentFeature(f);
+ mFeatureView->setFeature(f);
}
QString MainView::currentURL() const
{
- if( mFeatureView->currentFeature() ) {
- return QString( "fate://%1" ).arg( mFeatureView->currentFeature()->id() );
+ if( mFeatureMap.currentFeature() ) {
+ return QString( "fate://%1" ).arg( mFeatureMap.currentFeature()->id() );
}
return QString::null;
}
@@ -1898,7 +1830,7 @@
QString MainView::currentTitle() const
{
- Feature *f = mFeatureView->currentFeature();
+ Feature *f = mFeatureMap.currentFeature();
if( f )
return QString( "#%1: %2" ).arg( f->id(), f->title() );
return QString::null;
@@ -1923,14 +1855,4 @@
dlg.exec();
}
-void MainView::selectNextFeature()
-{
- mFeatureListView->selectNext();
-}
-
-void MainView::selectPreviousFeature()
-{
- mFeatureListView->selectPrevious();
-}
-
#include "mainview.moc"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fate-20170627-b434f6b5/src/fate/mainview.h new/fate-20170731-4baa429b/src/fate/mainview.h
--- old/fate-20170627-b434f6b5/src/fate/mainview.h 2017-06-27 16:44:59.462786781 +0200
+++ new/fate-20170731-4baa429b/src/fate/mainview.h 2017-07-31 10:53:53.777448609 +0200
@@ -2,8 +2,10 @@
This file is part of Fate.
Copyright (c) 2005 SUSE LINUX Products GmbH
+ 2017 SUSE Linux GmbH
- Author: Cornelius Schumacher <cschum(a)suse.de>
+ Author: Cornelius Schumacher <cschum(a)suse.de>,
+ Joachim Plack <jplack(a)suse.de>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -30,34 +32,26 @@
#include "dcopfateiface.h"
#include "startupsequence.h"
-#include <qwidget.h>
-#include <qdom.h>
-
-#include <sys/time.h>
-
-class QLineEdit;
-class FeatureTableView;
-class QueryLogDialog;
-class QComboBox;
-class QLabel;
-class QSplitter;
-class KActionCollection;
-class QTabWidget;
-class QPushButton;
-class QSignalMapper;
+#include <QWidget>
+class ClientInfo;
+class ExportJob;
class Feature;
+class FeatureMapListView;
class FeatureView;
class KAction;
+class KActionCollection;
class KActionMenu;
-class XQueryDialog;
-class ExportJob;
-class RelationTreeView;
+class QSignalMapper;
+class QSplitter;
+class QTabWidget;
+class QueryLogDialog;
class RelationList;
class RelationQueryEngine;
+class RelationTreeView;
class StatisticsView;
-class ClientInfo;
class TextTemplate;
+class XQueryDialog;
class MainView : public QWidget // FIXME: DBusObject
{
@@ -101,15 +95,12 @@
void exportFeatureXml();
void showHistory();
void syncDatabase();
- void showFeature( Feature * );
void cancelQuery();
void printFeature() const;
void slotProcessHelp();
void submitQuery( const Query & );
void submitLastQuery();
void sendMail();
- void selectNextFeature();
- void selectPreviousFeature();
signals:
void statusMessage( const QString & );
@@ -166,20 +157,15 @@
void showProducts();
void slotPreconditionChanged( StartupSequence::Precondition p, bool on );
void slotFeatureDataChanged();
- void clearFeatureViews();
void slotQueryDone();
void slotFeatureReloaded( Feature * );
void keeperChanged( const QString & );
void clientLocked( bool );
-
- // This is a hack to work around some signal/slot interaction weirdness
- // TODO: Do this properly eventually
- void reselectFeature();
-
void editRelationTree();
void newRelationTree();
void showTree( const QString & );
void showNewFeatureView(Feature *);
+ void aboutToDestroyFeatureView();
private:
KAction *mNewAction;
@@ -211,7 +197,7 @@
QSplitter *mNavigatorSplitter;
QTabWidget *mNavigatorTab;
- FeatureTableView *mFeatureListView;
+ FeatureMapListView *mFeatureMapListView;
FeatureView *mFeatureView;
RelationTreeView *mRelationTreeView;
StatisticsView *mStatisticsView;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fate-20170627-b434f6b5/src/libfate/feature.cpp new/fate-20170731-4baa429b/src/libfate/feature.cpp
--- old/fate-20170627-b434f6b5/src/libfate/feature.cpp 2017-06-27 16:44:59.466786801 +0200
+++ new/fate-20170731-4baa429b/src/libfate/feature.cpp 2017-07-31 10:53:53.785448648 +0200
@@ -869,7 +869,7 @@
Feature& Feature::operator=( const Feature& f )
{
- mDomElement = f.mDomElement;
+ mDomElement.clear();
mId = f.mId;
mKeeperXmlns = f.mKeeperXmlns;
mTitle = f.mTitle;
@@ -900,7 +900,7 @@
mReleaseNotesSolution = f.mReleaseNotesSolution;
mDoc = f.mDoc;
mModified = f.mModified;
- mFeatureMap = mFeatureMap;
+ mFeatureMap = f.mFeatureMap;
if (mECO)
delete mECO;
@@ -909,6 +909,6 @@
else
mECO = 0;
- emit featureChanged();
+ // emit featureChanged(); this is an internal operation for friend classes only
return *this;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fate-20170627-b434f6b5/src/libfate/feature.h new/fate-20170731-4baa429b/src/libfate/feature.h
--- old/fate-20170627-b434f6b5/src/libfate/feature.h 2017-06-27 16:44:59.466786801 +0200
+++ new/fate-20170731-4baa429b/src/libfate/feature.h 2017-07-31 10:53:53.785448648 +0200
@@ -39,6 +39,7 @@
class Feature : public QObject, public XCLObject
{
Q_OBJECT
+ protected:
// QObject does not have a default operator=
Feature& operator=( const Feature& f );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fate-20170627-b434f6b5/src/libfate/featuremap.cpp new/fate-20170731-4baa429b/src/libfate/featuremap.cpp
--- old/fate-20170627-b434f6b5/src/libfate/featuremap.cpp 2017-06-27 16:44:59.466786801 +0200
+++ new/fate-20170731-4baa429b/src/libfate/featuremap.cpp 2017-07-31 10:53:53.785448648 +0200
@@ -158,6 +158,11 @@
mSaveEngine->setView( view );
}
+QWidget *FeatureMap::view() const
+{
+ return mView;
+}
+
const QStringList FeatureMap::productList()
{
QSet<QString> prodSet; // Use QSet for faster insertion of unique strings
@@ -248,6 +253,13 @@
emit featureChanged( f );
}
+void FeatureMap::addNewFeature(Feature *f)
+{
+ f->mId.clear();
+ f->mModified = true;
+ addFeature(f);
+}
+
void FeatureMap::addFeature(Feature *f)
{
if (f == 0)
@@ -287,7 +299,12 @@
return;
if( mCurrentFeature == f ) {
- setCurrentFeature( 0 );
+ // move to "next" feature in the list in the order of filling
+ // the FeatureMap, else take the previous or none
+ int ix = mFeatures.indexOf(f)+1;
+ if (ix >= mFeatures.size())
+ ix = mFeatures.size()-2;
+ setCurrentFeature( mFeatures.value(ix, NULL) );
}
mRevisionMap.remove( f->id() );
@@ -699,17 +716,14 @@
void FeatureMap::finishReload( Feature *f )
{
+ QString msg = i18n("Reloaded feature #%1").arg( f->id() );
mQueryTiming.stop();
-
- QString s;
- if ( Prefs::self()->showQueryTime() ) {
- s += i18n(" (%1 s)").arg( mQueryTiming.getSecondsAsString() );
- }
-
- QString msg = i18n("Reloaded feature #%1%2").arg( f->id() ).arg( s );
+ if ( Prefs::self()->showQueryTime() )
+ msg += i18n(" (%1 s)").arg( mQueryTiming.getSecondsAsString() );
emit statusMessage( msg );
- emit featureReloaded( f );
-
+ f->setFeatureMap( this );
+ f->setModified(false); // emit a Feature::featureChanged() and thus
+ // a FeatureMap::featureChanged(f)
if( mCache ) {
mCache->removeModifiedItem( f->id() );
}
@@ -737,13 +751,6 @@
return mCurrentQuery;
}
-void FeatureMap::recordChange( Feature *f )
-{
- if ( mCache ) {
- mCache->saveModifiedItem( f->id(), f );
- }
-}
-
void FeatureMap::slotSaveDone( const QString &id )
{
Feature *f = feature( id );
@@ -851,7 +858,7 @@
if( f->isNew() ) {
mCache->saveNewItem( f );
} else {
- recordChange( f );
+ mCache->saveModifiedItem( f->id(), f );
}
SaveResult r;
r.feature = f;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fate-20170627-b434f6b5/src/libfate/featuremap.h new/fate-20170731-4baa429b/src/libfate/featuremap.h
--- old/fate-20170627-b434f6b5/src/libfate/featuremap.h 2017-06-27 16:44:59.466786801 +0200
+++ new/fate-20170731-4baa429b/src/libfate/featuremap.h 2017-07-31 10:53:53.785448648 +0200
@@ -51,6 +51,7 @@
Feature *feature( const QString &id ) const;
Feature *currentFeature() const;
+ QWidget *view() const;
const Feature::List &features() const;
Feature::List modifiedFeatures() const;
bool hasNoModifiedFeatures() const;
@@ -68,9 +69,7 @@
bool doSync( const QString &source, const QString &target );
Query currentQuery() const;
- void recordChange( Feature * );
void saveOfflineProfile( const QString & );
-
bool checkModified( bool askForSaving );
bool checkSynch( bool dataAboutToChange );
bool hasCachedModifiedFeatures() const;
@@ -82,9 +81,7 @@
public slots:
void cancelQuery();
-
- void addFeature( Feature * );
- void addFeatures(QList<Feature *>);
+ void addNewFeature( Feature * );
void removeFeature( Feature * );
void signalFeatureModification( Feature *f = 0 );
@@ -111,8 +108,8 @@
// a new feature has been added to the feature map
void featureAdded( Feature * );
+ // a feature in the map has been changed
void featureChanged( Feature * );
- void featureReloaded( Feature * );
// passthrough signal from QueryEngine
void connectionEstablished( bool );
@@ -131,6 +128,7 @@
void currentFeatureChanged( Feature * );
protected:
+ void addFeatures(QList<Feature *>);
void finishSave( Feature * );
void finishReload( Feature * );
@@ -141,6 +139,7 @@
void initCache();
protected slots:
+ void addFeature( Feature * );
void slotQueryRawResult( const QString &xml );
void slotQueryDone( bool );
void slotQueryIdResult( const QString &id, const QString &revision );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fate-20170627-b434f6b5/src/libfate/query.cpp new/fate-20170731-4baa429b/src/libfate/query.cpp
--- old/fate-20170627-b434f6b5/src/libfate/query.cpp 2017-06-27 16:44:59.470786820 +0200
+++ new/fate-20170731-4baa429b/src/libfate/query.cpp 2017-07-31 10:53:53.785448648 +0200
@@ -31,7 +31,7 @@
Query::Query( int id ) {
mTitle = QString("Feature #%1").arg(id);
- mXquery = QString( "/feature[@k:id=%1]" ).arg( id );
+ mXquery = QString( "/feature[@k:id='%1']" ).arg(id);
}
Query::Query( QList<int> &ids ) {
@@ -40,7 +40,7 @@
idstrs << QString::number(id);
mTitle = QString("Features #") + idstrs.join(",#");
- mXquery = QString("/feature[@k:id=%1]").arg(idstrs.join(" or @k:id="));
+ mXquery = QString("/feature[@k:id='%1']").arg(idstrs.join("' or @k:id='"));
}
QString Query::guessTitle() const
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fate-20170627-b434f6b5/src/libfate/ui/featurelistview.cpp new/fate-20170731-4baa429b/src/libfate/ui/featurelistview.cpp
--- old/fate-20170627-b434f6b5/src/libfate/ui/featurelistview.cpp 2017-06-27 16:44:59.470786820 +0200
+++ new/fate-20170731-4baa429b/src/libfate/ui/featurelistview.cpp 2017-07-31 10:53:53.789448668 +0200
@@ -29,6 +29,8 @@
#include <klocale.h>
#include <kdialog.h>
+#include <kaction.h>
+#include <kactioncollection.h>
#include <kapplication.h>
#include <kiconloader.h>
#include <ksqueezedtextlabel.h>
@@ -196,9 +198,18 @@
if ( item==0 )
return;
+ Feature *feature = item->feature();
action = menu.addAction(i18n("Open feature in an additional window"), this,
SLOT( createFeatureView() ), 0);
- action->setData(qVariantFromValue((void *)(item->feature())));
+ action->setData(qVariantFromValue((void *)(feature)));
+
+ if (!feature->isModified()) {
+ action = menu.addAction(i18n("Remove feature from this list"), this,
+ SLOT( removeFeatureFromList() ), 0);
+ action->setData(qVariantFromValue((void *)(feature)));
+
+ }
+
QPoint correction
( -mTableView->frameWidth(),
mTableView->horizontalHeader()->height()-mTableView->frameWidth());
@@ -206,11 +217,15 @@
}
void FeatureTableView::createFeatureView() {
-
QAction *action = dynamic_cast<QAction *>(sender());
emit requestFeatureView((Feature *)action->data().value<void *>());
}
+void FeatureTableView::removeFeatureFromList() {
+ QAction *action = dynamic_cast<QAction *>(sender());
+ emit requestRemoveFeature((Feature *)action->data().value<void *>());
+}
+
void FeatureTableView::updateProductList( const QStringList &prodList) {
QString selected = mProductCombo->currentText();
@@ -449,15 +464,16 @@
mTableView->setSortingEnabled(true);
mFilterHeader->updateView();
-
- // workaround for bsc#899494, see also comment in MainView::slotQueryDone()
- emit slotProductChosen(mProductCombo->currentText());
}
void FeatureTableView::selectFeature( Feature *feature )
{
- if (feature)
- selectItem(findItemCreate(feature));
+ if (!feature)
+ return;
+ NewFeatureItem *item = findItemCreate(feature);
+ if (!item || item->isSelected())
+ return;
+ selectItem(item);
}
void FeatureTableView::selectItem( NewFeatureItem *item )
@@ -472,11 +488,6 @@
}
}
-void FeatureTableView::clearSelection()
-{
- mTableView->clearSelection();
-}
-
void FeatureTableView::updateQueryTitle( const QString &title )
{
mQueryTitle->setText(title.simplified()); // limit to a single line
@@ -691,11 +702,13 @@
mFreezeWidget->setPixmap( QPixmap::grabWidget( mTableView ) );
mTableView->hide();
mFreezeWidget->show();
+ mTableView->setSortingEnabled(false);
}
void FeatureTableView::unfreeze()
{
mFreezeWidget->hide();
+ mTableView->setSortingEnabled(true);
mTableView->show();
}
@@ -778,4 +791,82 @@
mChecked = on;
}
+FeatureMapListView::FeatureMapListView(QWidget *parent, FeatureMap *featureMap)
+ : FeatureTableView(parent), mFeatureMap(featureMap)
+{
+ /*
+ * interesting signals from FeatureMap
+ *
+ // an asynchronous keeper query has been finished
+ void queryDone( bool );
+
+ void featureAdded( Feature * );
+ void featureChanged( Feature * );
+
+ // selected feature changed
+ void currentFeatureChanged( Feature * );
+ */
+
+ connect( mFeatureMap, SIGNAL( queryDone( bool ) ),
+ SLOT( queryDone() ) );
+ connect( mFeatureMap, SIGNAL( featureAdded( Feature * ) ),
+ SLOT( insertFeature( Feature * ) ) );
+ connect( mFeatureMap, SIGNAL( featureChanged( Feature * ) ),
+ SLOT( updateFeature( Feature * ) ) );
+ // feature removed or map cleared and sometimes on reload and save
+ connect( mFeatureMap, SIGNAL( featuresModified() ),
+ SLOT( reload() ) );
+ connect( mFeatureMap, SIGNAL( dataChanged() ),
+ SLOT( reload() ) );
+ connect( mFeatureMap, SIGNAL( currentFeatureChanged( Feature * ) ),
+ SLOT( selectFeature( Feature * ) ) );
+
+ // handle signals from FeatureTableView
+ connect( this, SIGNAL( featureSelected( Feature * ) ),
+ mFeatureMap, SLOT( setCurrentFeature( Feature * ) ) );
+ connect( this, SIGNAL( requestFeatureView( Feature * ) ),
+ SIGNAL( requestFeatureView( Feature * ) ) );
+ connect( this, SIGNAL( requestRemoveFeature( Feature * ) ),
+ mFeatureMap, SLOT( removeFeature( Feature * ) ) );
+}
+
+FeatureMapListView::~FeatureMapListView()
+{
+ ;
+}
+
+void FeatureMapListView::updateFeature(Feature *f) {
+ updateProductList(mFeatureMap->productList());
+ FeatureTableView::updateFeature(f);
+}
+
+void FeatureMapListView::queryDone() {
+ updateQueryTitle(mFeatureMap->currentQuery().title());
+ updateProductList(mFeatureMap->productList() );
+ selectFeature(mFeatureMap->currentFeature());
+ unfreeze();
+}
+
+void FeatureMapListView::reload()
+{
+ freeze();
+ clear();
+ foreach (Feature *f, mFeatureMap->features())
+ insertFeature(f);
+ queryDone();
+}
+
+void FeatureMapListView::setupActions( KActionCollection *c )
+{
+ KAction* a = new KAction( this );
+ a->setText( i18n("Remove Feature From List" ) );
+ a->setShortcut( Qt::Key_Delete );
+ connect(a, SIGNAL(triggered()), this, SLOT( removeCurrentFeature() ) );
+ c->addAction( "remove_feature_from_list", a );
+}
+
+void FeatureMapListView::removeCurrentFeature()
+{
+ mFeatureMap->removeFeature(mFeatureMap->currentFeature());
+}
#include "featurelistview.moc"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fate-20170627-b434f6b5/src/libfate/ui/featurelistview.h new/fate-20170731-4baa429b/src/libfate/ui/featurelistview.h
--- old/fate-20170627-b434f6b5/src/libfate/ui/featurelistview.h 2017-06-27 16:44:59.470786820 +0200
+++ new/fate-20170731-4baa429b/src/libfate/ui/featurelistview.h 2017-07-31 10:53:53.789448668 +0200
@@ -23,6 +23,7 @@
#define FEATURELISTVIEW_H
#include "feature.h"
+#include "featuremap.h"
#include <qwidget.h>
#include <qmap.h>
@@ -32,6 +33,7 @@
class TableFilterHeader;
class TableViewToolTip;
class NewFeatureItem;
+class KActionCollection;
class KSqueezedTextLabel;
// XXX: Move this to featureitem.h later
@@ -172,7 +174,6 @@
void insertFeature(Feature *);
void insertFeatures(const Feature::List &);
void selectFeature( Feature * );
- void clearSelection();
void updateFeature( Feature * );
void freeze();
void unfreeze();
@@ -180,6 +181,7 @@
signals:
void featureSelected( Feature * );
void requestFeatureView(Feature *);
+ void requestRemoveFeature(Feature *);
protected:
void addColumnInternal(NewFeatureItem::Property, const QString &, int resizeMode);
@@ -205,6 +207,7 @@
void slotProductChosen(const QString &);
void showContextMenu(const QPoint & pos);
void createFeatureView();
+ void removeFeatureFromList();
protected:
// FIXME: turn this into a QList<struct { type, label }>
@@ -226,4 +229,25 @@
QComboBox *mProductCombo;
};
+class FeatureMapListView : public FeatureTableView
+{
+ Q_OBJECT
+ public:
+ FeatureMapListView(QWidget *parent, FeatureMap *);
+ ~FeatureMapListView();
+ void setupActions(KActionCollection*);
+
+ signals:
+ void requestFeatureView(Feature *);
+
+ protected slots:
+ void updateFeature(Feature *f);
+ void queryDone();
+ void reload();
+ void removeCurrentFeature();
+
+ protected:
+ FeatureMap *mFeatureMap;
+};
+
#endif
1
0
Hello community,
here is the log from the commit of package java-9-openjdk for openSUSE:Factory checked in at 2017-08-01 09:25:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/java-9-openjdk (Old)
and /work/SRC/openSUSE:Factory/.java-9-openjdk.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "java-9-openjdk"
Tue Aug 1 09:25:22 2017 rev:7 rq:513141 version:9.0.0.0~179
Changes:
--------
--- /work/SRC/openSUSE:Factory/java-9-openjdk/java-9-openjdk.changes 2017-07-12 19:36:35.535379628 +0200
+++ /work/SRC/openSUSE:Factory/.java-9-openjdk.new/java-9-openjdk.changes 2017-08-01 09:25:28.534883212 +0200
@@ -1,0 +2,10 @@
+Mon Jul 24 07:16:16 UTC 2017 - fstrba(a)suse.com
+
+- Update to upstream tag jdk-9+179
+
+-------------------------------------------------------------------
+Tue Jul 18 07:03:00 UTC 2017 - fstrba(a)suse.com
+
+- Update to upstream tag jdk-9+178
+
+-------------------------------------------------------------------
Old:
----
0d0ac75b0f6c.tar.bz2
2ab74e5dbdc2.tar.bz2
38cf34e23280.tar.bz2
3c6fbdf6e785.tar.bz2
40fb9f229471.tar.bz2
84777531d994.tar.bz2
9f27d513658d.tar.bz2
ea819b6009d3.tar.bz2
New:
----
06df1ce4b9b8.tar.bz2
24390da83c5e.tar.bz2
252475ccfd84.tar.bz2
3adfb547e3e4.tar.bz2
56ac1831ac59.tar.bz2
87243a3131f7.tar.bz2
b653b1b2ea88.tar.bz2
d2661aa42bff.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ java-9-openjdk.spec ++++++
--- /var/tmp/diff_new_pack.vyloXL/_old 2017-08-01 09:25:30.890551221 +0200
+++ /var/tmp/diff_new_pack.vyloXL/_new 2017-08-01 09:25:30.894550657 +0200
@@ -32,17 +32,17 @@
%global minorver 0
%global securityver 0
%global patchver 0
-%global buildver 176
+%global buildver 179
%global root_project jdk9
%global root_repository jdk9
-%global root_revision 84777531d994
-%global corba_revision 40fb9f229471
-%global hotspot_revision 2ab74e5dbdc2
-%global jaxp_revision 38cf34e23280
-%global jaxws_revision ea819b6009d3
-%global jdk_revision 9f27d513658d
-%global langtools_revision 0d0ac75b0f6c
-%global nashorn_revision 3c6fbdf6e785
+%global root_revision 252475ccfd84
+%global corba_revision 24390da83c5e
+%global hotspot_revision d2661aa42bff
+%global jaxp_revision 87243a3131f7
+%global jaxws_revision 56ac1831ac59
+%global jdk_revision 06df1ce4b9b8
+%global langtools_revision b653b1b2ea88
+%global nashorn_revision 3adfb547e3e4
%global icedtea_sound_version 1.0.1
# priority must be 6 digits in total
%global priority 1905
++++++ 0d0ac75b0f6c.tar.bz2 -> 06df1ce4b9b8.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/java-9-openjdk/0d0ac75b0f6c.tar.bz2 /work/SRC/openSUSE:Factory/.java-9-openjdk.new/06df1ce4b9b8.tar.bz2 differ: char 11, line 1
++++++ 0d0ac75b0f6c.tar.bz2 -> 24390da83c5e.tar.bz2 ++++++
++++ 1270273 lines of diff (skipped)
++++++ 0d0ac75b0f6c.tar.bz2 -> 252475ccfd84.tar.bz2 ++++++
++++ 1267763 lines of diff (skipped)
++++++ 0d0ac75b0f6c.tar.bz2 -> 3adfb547e3e4.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/java-9-openjdk/0d0ac75b0f6c.tar.bz2 /work/SRC/openSUSE:Factory/.java-9-openjdk.new/3adfb547e3e4.tar.bz2 differ: char 11, line 1
++++++ 0d0ac75b0f6c.tar.bz2 -> 56ac1831ac59.tar.bz2 ++++++
++++ 1614609 lines of diff (skipped)
++++++ 0d0ac75b0f6c.tar.bz2 -> 87243a3131f7.tar.bz2 ++++++
++++ 1770498 lines of diff (skipped)
++++++ 0d0ac75b0f6c.tar.bz2 -> b653b1b2ea88.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/langtools-0d0ac75b0f6c/.hg_archival.txt new/langtools-b653b1b2ea88/.hg_archival.txt
--- old/langtools-0d0ac75b0f6c/.hg_archival.txt 2017-06-27 03:48:31.000000000 +0200
+++ new/langtools-b653b1b2ea88/.hg_archival.txt 2017-07-13 19:32:52.000000000 +0200
@@ -1,4 +1,4 @@
repo: 9a66ca7c79fab293c1bb0534e0d208c7e4f58b01
-node: 0d0ac75b0f6cbe218362e3fac4bb443496e7258f
+node: b653b1b2ea883593596bc18e9af73a9b369eeb0a
branch: default
-tag: jdk-9+176
+tag: jdk-9+179
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/langtools-0d0ac75b0f6c/.hgtags new/langtools-b653b1b2ea88/.hgtags
--- old/langtools-0d0ac75b0f6c/.hgtags 2017-06-27 03:48:31.000000000 +0200
+++ new/langtools-b653b1b2ea88/.hgtags 2017-07-13 19:32:52.000000000 +0200
@@ -418,3 +418,6 @@
123eb0956a459bca29d0812c62fca50da563ee40 jdk-9+173
50c077995aa249890ece698a2a2db4c4fba90e10 jdk-9+174
83f6eb009d8f6e94fd348c7d23e4b00754d745db jdk-9+175
+0d0ac75b0f6cbe218362e3fac4bb443496e7258f jdk-9+176
+2f01728210c1405ef459e69d9c7247b5df6abb78 jdk-9+177
+849e366ef175012e6dedc3ca151da416716e0ea9 jdk-9+178
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/langtools-0d0ac75b0f6c/src/java.compiler/share/classes/module-info.java new/langtools-b653b1b2ea88/src/java.compiler/share/classes/module-info.java
--- old/langtools-0d0ac75b0f6c/src/java.compiler/share/classes/module-info.java 2017-06-27 03:48:31.000000000 +0200
+++ new/langtools-b653b1b2ea88/src/java.compiler/share/classes/module-info.java 2017-07-13 19:32:52.000000000 +0200
@@ -30,7 +30,7 @@
* and define interfaces for tools such as compilers which can be invoked
* from a program.
* <p>
- * This module is upgradeble.
+ * This module is upgradeable.
*
* @moduleGraph
* @since 9
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/langtools-0d0ac75b0f6c/src/jdk.compiler/share/classes/module-info.java new/langtools-b653b1b2ea88/src/jdk.compiler/share/classes/module-info.java
--- old/langtools-0d0ac75b0f6c/src/jdk.compiler/share/classes/module-info.java 2017-06-27 03:48:31.000000000 +0200
+++ new/langtools-b653b1b2ea88/src/jdk.compiler/share/classes/module-info.java 2017-07-13 19:32:52.000000000 +0200
@@ -25,7 +25,7 @@
/**
* Defines the implementation of the
- * {@link javax.tools.ToolProvider#getSystemJavaCompiler system Java compiler}
+ * {@linkplain javax.tools.ToolProvider#getSystemJavaCompiler system Java compiler}
* and its command line equivalent, <em>{@index javac javac tool}</em>,
* as well as <em>{@index javah javah tool}</em>.
*
@@ -40,7 +40,7 @@
*
* <p> Instances of the tools can be obtained by calling
* {@link java.util.spi.ToolProvider#findFirst ToolProvider.findFirst}
- * or the {@link java.util.ServiceLoader service loader} with the name
+ * or the {@linkplain java.util.ServiceLoader service loader} with the name
* {@code "javac"}.
*
* <p>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/langtools-0d0ac75b0f6c/src/jdk.javadoc/share/classes/module-info.java new/langtools-b653b1b2ea88/src/jdk.javadoc/share/classes/module-info.java
--- old/langtools-0d0ac75b0f6c/src/jdk.javadoc/share/classes/module-info.java 2017-06-27 03:48:31.000000000 +0200
+++ new/langtools-b653b1b2ea88/src/jdk.javadoc/share/classes/module-info.java 2017-07-13 19:32:52.000000000 +0200
@@ -25,7 +25,7 @@
/**
* Defines the implementation of the
- * {@link javax.tools.ToolProvider#getSystemDocumentationTool system documentation tool}
+ * {@linkplain javax.tools.ToolProvider#getSystemDocumentationTool system documentation tool}
* and its command line equivalent, <em>{@index javadoc javadoc tool}</em>.
*
* <h2 style="font-family:'DejaVu Sans Mono', monospace; font-style:italic">javadoc</h2>
@@ -39,7 +39,7 @@
*
* <p> Instances of the tools can be obtained by calling
* {@link java.util.spi.ToolProvider#findFirst ToolProvider.findFirst}
- * or the {@link java.util.ServiceLoader service loader} with the name
+ * or the {@linkplain java.util.ServiceLoader service loader} with the name
* {@code "javadoc"}.
*
* <dl style="font-family:'DejaVu Sans', Arial, Helvetica, sans serif">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/langtools-0d0ac75b0f6c/src/jdk.jdeps/share/classes/module-info.java new/langtools-b653b1b2ea88/src/jdk.jdeps/share/classes/module-info.java
--- old/langtools-0d0ac75b0f6c/src/jdk.jdeps/share/classes/module-info.java 2017-06-27 03:48:31.000000000 +0200
+++ new/langtools-b653b1b2ea88/src/jdk.jdeps/share/classes/module-info.java 2017-07-13 19:32:52.000000000 +0200
@@ -26,7 +26,7 @@
/**
* Defines tools for analysing dependencies in Java libraries and programs,
* including the <em>{@index jdeps jdeps tool}</em>,
- * <em>{@index javap javap tool}</em> and
+ * <em>{@index javap javap tool}</em>, and
* <em>{@index jdeprscan jdeprscan tool}</em> tools.
*
* <p>
@@ -37,7 +37,7 @@
*
* <p> Instances of the tools can be obtained by calling
* {@link java.util.spi.ToolProvider#findFirst ToolProvider.findFirst}
- * or the {@link java.util.ServiceLoader service loader} with the name
+ * or the {@linkplain java.util.ServiceLoader service loader} with the name
* {@code "javap"} or {@code "jdeps"} as appropriate.
*
* <p>
++++++ 0d0ac75b0f6c.tar.bz2 -> d2661aa42bff.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/java-9-openjdk/0d0ac75b0f6c.tar.bz2 /work/SRC/openSUSE:Factory/.java-9-openjdk.new/d2661aa42bff.tar.bz2 differ: char 11, line 1
1
0
Hello community,
here is the log from the commit of package conky for openSUSE:Factory checked in at 2017-08-01 09:25:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/conky (Old)
and /work/SRC/openSUSE:Factory/.conky.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "conky"
Tue Aug 1 09:25:21 2017 rev:19 rq:513106 version:1.10.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/conky/conky.changes 2017-06-26 15:53:29.217308125 +0200
+++ /work/SRC/openSUSE:Factory/.conky.new/conky.changes 2017-08-01 09:25:21.983806473 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 19:49:23 UTC 2017 - joerg.lorenzen(a)ki.tng.de
+
+- BuildRequires libtolua++-5_1-devel on Leap.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ conky.spec ++++++
--- /var/tmp/diff_new_pack.J20vVl/_old 2017-08-01 09:25:22.695706143 +0200
+++ /var/tmp/diff_new_pack.J20vVl/_new 2017-08-01 09:25:22.707704452 +0200
@@ -56,7 +56,7 @@
BuildRequires: pkgconfig(libpulse)
BuildRequires: pkgconfig(librsvg-2.0)
BuildRequires: pkgconfig(libxml-2.0)
-%if 0%{?suse_version} > 1320 || 0%{?suse_version} == 1315 && 0%{?is_opensuse} != 1
+%if 0%{?suse_version} > 1320 || 0%{?suse_version} == 1315
BuildRequires: libtolua++-5_1-devel
%else
BuildRequires: tolua++
1
0
Hello community,
here is the log from the commit of package gnu_parallel for openSUSE:Factory checked in at 2017-08-01 09:25:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnu_parallel (Old)
and /work/SRC/openSUSE:Factory/.gnu_parallel.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnu_parallel"
Tue Aug 1 09:25:18 2017 rev:37 rq:513085 version:20170722
Changes:
--------
--- /work/SRC/openSUSE:Factory/gnu_parallel/gnu_parallel.changes 2017-07-08 12:35:53.953761255 +0200
+++ /work/SRC/openSUSE:Factory/.gnu_parallel.new/gnu_parallel.changes 2017-08-01 09:25:20.356035879 +0200
@@ -1,0 +2,6 @@
+Sun Jul 30 12:30:19 UTC 2017 - astieger(a)suse.com
+
+- update to 20170722:
+ * Bug fixes and man page updates
+
+-------------------------------------------------------------------
Old:
----
parallel-20170622.tar.bz2
parallel-20170622.tar.bz2.sig
New:
----
parallel-20170722.tar.bz2
parallel-20170722.tar.bz2.sig
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gnu_parallel.spec ++++++
--- /var/tmp/diff_new_pack.knqfZG/_old 2017-08-01 09:25:21.123927657 +0200
+++ /var/tmp/diff_new_pack.knqfZG/_new 2017-08-01 09:25:21.127927094 +0200
@@ -17,7 +17,7 @@
Name: gnu_parallel
-Version: 20170622
+Version: 20170722
Release: 0
Summary: Shell tool for executing jobs in parallel
License: GPL-3.0+
++++++ parallel-20170622.tar.bz2 -> parallel-20170722.tar.bz2 ++++++
++++ 5112 lines of diff (skipped)
++++++ parallel-20170622.tar.bz2.sig -> parallel-20170722.tar.bz2.sig ++++++
--- /work/SRC/openSUSE:Factory/gnu_parallel/parallel-20170622.tar.bz2.sig 2017-07-08 12:35:54.385700330 +0200
+++ /work/SRC/openSUSE:Factory/.gnu_parallel.new/parallel-20170722.tar.bz2.sig 2017-08-01 09:25:20.440024041 +0200
@@ -2,40 +2,41 @@
# To check the signature run:
# echo | gpg
-# gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve parallel-20170622.tar.bz2.sig
+# gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve parallel-20170722.tar.bz2.sig
echo | gpg 2>/dev/null
gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve $0
exit $?
-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1
-iQTwBAABCgAGBQJZS7KkAAoJENGrRRaIiIiIDsYmnii/P0mD8QDvz/ZnoC8xS7m0
-SMr5fExNoV3K1ZvDCEsBa92gjDICVZlYDG1GzwJVbDM69GX+4DHQf9lnug98m7HM
-YlE9hFCX6hO2RZ94sePYafg5GUKQcjOEwVxjcfb+fYiW4SUEPoh3MquEG7f6NKVi
-rStIzlLd2GmSGTgNxV8tFVgu5ZGpGf7Qt82Y9ciJtXY96pm9eFhhsg/OZexf9CSE
-S1DWmrirZGndtmWurRH+VVEaRBfvo5kt4MCgXqcDG5KGdrHeqOGyA0bP7uDlujQC
-/4skOzp3ZyeLaVg9RSd0GZDL70emQFihDcMQTnGxvzBCr30y/GtWD0W7VRRCYlUU
-NF+5nhJBoxBwNYcKraNG342j/ycOuh9NDaY2PvGJ0SJ+jCz4B0djwKUku+DpGaPr
-69EENXTYBTc+VCjKQAvo9nhm4ZIZE93I1sjNGLIInW/FYnOlHSJy9VNWOtS+l/et
-sWF7KfYzLaBTEBzIVfJmUPuvoXOF03qK0qSP8GKJTztWqF1cijV4swHwkCvJE6an
-X/Kar9qwmBi2Vc1vwE0ghyS+WEnPeBuz7Kr2a/CCJhKMy94HmhT3IC29ds9jdyVx
-3conNQaLhxGHmCXGl8pEas+2wy12VkWVBiEvFOsfOAxJwS8vTnamgYsPMjoVAM3J
-YEvXJl4qCX0GCsz1jsBxNtXpmwI0BqDSEGFdOzdJQzTKpXrFv89saiNwoGBFGVyK
-Cxn2pvQRU+AacQ996ziDHfaNzpcOi6ELTBYEM9A/RpFonDbpzI7h6T2NlmOW/rkt
-pG/IDBqDpd8zMh2bJuPQRqisdoZbqCPSlzFK6/jOHZHXdxLq6ajN4yTUywfmTXLS
-diniW51HGPEF4hri/fbEvsUqBdUehjYtSVBp9n/X2xe7UE+CXLZCMhQUZtnry1CX
-XmRbNFNsFbGWVrOmTTWBrLIXFiA4nITW/7uomt8HvdO7BeKShQu/z4kSnbwOQCDo
-GGFcavb4iNR4wzoGgmipW10C7K20UVZI6mkpNOJSH5xt8VrE65fXvA9C7xT+Y0+4
-KlH0MWlTq6pgX9U5A59oPWnrdfJKwpGqyF7KXBq212GX74Dwu9wvBKlfRgOZ8YK4
-D+j5TWy48M9guDqxJsvN9y2vwqDb8YXEga+lITiyUx8YsM+8rfe5fL4XwUt4wH+s
-MH051D6ETj+lEe5PwD+ZDc/lj6yx6FX2A3YDJt4jXmvsrSEGYoYb41rwQqFesnnW
-dPkYoLF7D/HH3jW2DEEsGA6k7DaPZUup62EeirHPys6plpyfTo8AXKOrx3qvKpeF
-z40BVgz+M4XspZmTyE6VpzF4K5BS5iRgbbx/s2lWemg6xokj6TUUDvSc7xUpUW/D
-RlqiuIHU36GCkSriwtfzjRy0GLR1nr+Hq9x/tH8wh74Rmx7+fuglTh2v/Pjrf/0/
-48RXyJEnknpEyrnUJBEJ5EIYSnRHzwXut7lYjBZASdo7LNFBB8FVQOtBWMYQaYSt
-3H+/O/oCBWo0KYmL9pBodkI97/a8+LEbIVFPLVILO55nnQmB4NcjZJMSlfFsAfWn
-AKc88gmXqv7A4CsdP2eLOy15K2UYmbnqSKVmuO8Z1DTZ3fRkI5vERCQqhT0v0NYK
-gk2FJIGR09GtbeagJY+9ha2s/A==
-=0ybn
+iQTwBAABCgAGBQJZcmQxAAoJENGrRRaIiIiIZTcmoNPNV1so06UU5go8zF7gcJ8T
+t6+NYbMz5GvogF3SyZugk82xjECot8q9L+VvsFbnl1r5VzYJAsm8J4N0TI16xxgr
+eeWNNZUlzw0wOg62DJpSKRPi1CnE78TYz2Spwe4KaRMjO/lC+2oIm4pxa0B8cCkt
+WQRZvLhgERlS9ybATv/3IFDffRUOluea+oCJV8Hn03UdGqnHQZW6fswcfQMrpMps
+Ww3dpwKdn5QoGLfNH9El6pDcA3G1e8MBgzPop/8B9Fo2koiibWQVdpAgyH58zW5y
+hruHopeAzBdzNGRkio8iY20TE2H2SM/pTubXer+7hL0jIyW+yexi5VOmqI6nBwzq
+tUkYEZdxJHzBzqL3EfK5G5BhWPrdr3uukSwjb+NniVALJh+jcBv+WSLktEFyTMUN
+p+2kIWFb3ijSuw3bED0B0948iuNfIelQ5gfx4tW6e+DHoOGE6/aWL8rdOF+YUl4S
+zt+Hes0m9Ujht2nGgN+eLH3apSdCGGCEXVX9ClPr4PKh1cX+LTb3RHO7VB83z2Ro
+KAPEHccyX2GhMhkOiyOFs1hZ6cy3EmMfpegoWGxrXF3krqsJrbqrFUJtn9c3sg2L
+sVKGBOswVmS10D7JyxLauLI5dhHy9e0y4gQjw1EYtB8EYg8vnWkb6igkdNYRrre0
+xjxNHpRTA0USFZKlPa0qTe8i6UCVjzvwCTRZHQNAoMYRE/gcG9JrQKvtMoXEmj13
+aKrHv6ru9Sw90wYrj/XCx9rAg37qTGdv2d5KDbe3H3a4mZX2O3QxNTxNgL9YnQ37
+T+nM90R6Wc7xFsBQnd1OsIONXXbuZL6FzxcxMZ6cGm17fVHacAh1P6mPC3DcytgH
+T+NCSi7fd8z8mEzsLYrBldWAZlLri9x/qtHosJxYlFyQmqW0PIb2CuPWgXPhu18/
+Adlai0Ghv0ccgXYnogy5GOrnIF6qIapZ1HhFceWhCi+n1nMjfkY2VvpfgCUM1D4S
+Ny0RlUL6UvbAz7PPavGrKGghPqK0eiYxSH6Zf2fDG8aFWwtmto9uoDN6zWDwtdn3
+3BstP96Pgkrqr10omA82BFgVKIcrVN4xtV4nYFc0psTBWT9c74g5CiDS/9fBG+/o
+GggiU5FJkAwWFzS/3VlFPU+cBvPxdQiLD9cAEHuVc7fjvmmprN53Ki5fEqJ9swlk
+7d8lbPbiuk4GixVcx6u80FU7+rw37ThVANfo7OON/i/5v7VGlfilu7U17yF/HXax
+gT//K8DE0hMUkFaYYQKruE/hb/BYBb6vdlQgqn03iL8uaC4jM+cv2Vz+nha+SLrs
+ECk0Iaj2+vrLmd2/XND/D6eRizuhs2pS552GUfctXordNqEtGIydihUTS0YA70Bi
+MKAys45iR9q9p+7CbFfOIrFacTt2x2gUgkJhhknkDyWXOfkD0PMwglPPjovpK1MO
+NxcBXKidMLH7u6oiV+Zo+X9q7XVi3OPvXQ+36dTj+C4JBVDE1Ch0dRqNuTiNVGpV
+JLX9S8GaMIzZjiOcrldTS+odMPLqJInxKBHWWM8fmYIqdP4RW4R5yTPxs7hLPEvb
+UM85OMwje4Dj8tCdgsbGvxEtqoSBHbpUtvkhMYsewsoKXKmii2T5Uk/lZsbqTQIB
+u2q3guJWB9RSwXgSizwPepTJ8Q==
+=3+6E
-----END PGP SIGNATURE-----
1
0