Compare commits

..

No commits in common. "rawhide" and "f16" have entirely different histories.

19 changed files with 129 additions and 1076 deletions

View file

@ -4,5 +4,6 @@ Comment=Add translations to Qt3 applications
Exec=assistant
Icon=assistant3
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;

View file

@ -6,5 +6,6 @@ Exec=designer
Icon=designer3
MimeType=application/x-designer;
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;

View file

@ -5,5 +5,6 @@ Exec=linguist
Icon=linguist3
MimeType=application/x-linguist;
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;

View file

@ -1,212 +0,0 @@
$NetBSD: patch-as,v 1.5 2011/03/25 15:28:26 wiz Exp $
--- src/kernel/qpngio.cpp.orig 2007-02-02 10:01:15.000000000 -0400
+++ src/kernel/qpngio.cpp
@@ -43,6 +43,7 @@
#include "qiodevice.h"
#include <png.h>
+#include <zlib.h>
#ifdef Q_OS_TEMP
@@ -123,9 +124,24 @@ void setup_qt( QImage& image, png_struct
png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type,
0, 0, 0);
+ png_colorp info_ptr_palette = NULL;
+ int info_ptr_num_palette = 0;
+ if (png_get_valid(png_ptr, info_ptr, PNG_INFO_PLTE)) {
+ png_get_PLTE(png_ptr, info_ptr, &info_ptr_palette, &info_ptr_num_palette);
+ }
+
+ png_bytep info_ptr_trans_alpha = NULL;
+ int info_ptr_num_trans = 0;
+ png_color_16p info_ptr_trans_color = NULL;
+
+ if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) {
+ png_get_tRNS(png_ptr, info_ptr, &info_ptr_trans_alpha, &info_ptr_num_trans, &info_ptr_trans_color);
+ }
+
+
if ( color_type == PNG_COLOR_TYPE_GRAY ) {
// Black & White or 8-bit grayscale
- if ( bit_depth == 1 && info_ptr->channels == 1 ) {
+ if ( bit_depth == 1 && png_get_channels(png_ptr, info_ptr) == 1 ) {
png_set_invert_mono( png_ptr );
png_read_update_info( png_ptr, info_ptr );
if (!image.create( width, height, 1, 2, QImage::BigEndian ))
@@ -159,7 +175,7 @@ void setup_qt( QImage& image, png_struct
image.setColor( i, qRgba(c,c,c,0xff) );
}
if ( png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS) ) {
- const int g = info_ptr->trans_values.gray;
+ const int g = info_ptr_trans_color->gray;
if (g < ncols) {
image.setAlphaBuffer(TRUE);
image.setColor(g, image.color(g) & RGB_MASK);
@@ -168,7 +184,7 @@ void setup_qt( QImage& image, png_struct
}
} else if ( color_type == PNG_COLOR_TYPE_PALETTE
&& png_get_valid(png_ptr, info_ptr, PNG_INFO_PLTE)
- && info_ptr->num_palette <= 256 )
+ && info_ptr_num_palette <= 256 )
{
// 1-bit and 8-bit color
if ( bit_depth != 1 )
@@ -176,28 +192,28 @@ void setup_qt( QImage& image, png_struct
png_read_update_info( png_ptr, info_ptr );
png_get_IHDR(png_ptr, info_ptr,
&width, &height, &bit_depth, &color_type, 0, 0, 0);
- if (!image.create(width, height, bit_depth, info_ptr->num_palette,
+ if (!image.create(width, height, bit_depth, info_ptr_num_palette,
QImage::BigEndian))
return;
int i = 0;
if ( png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS) ) {
image.setAlphaBuffer( TRUE );
- while ( i < info_ptr->num_trans ) {
+ while ( i < info_ptr_num_trans ) {
image.setColor(i, qRgba(
- info_ptr->palette[i].red,
- info_ptr->palette[i].green,
- info_ptr->palette[i].blue,
- info_ptr->trans[i]
+ info_ptr_palette[i].red,
+ info_ptr_palette[i].green,
+ info_ptr_palette[i].blue,
+ info_ptr_trans_alpha[i]
)
);
i++;
}
}
- while ( i < info_ptr->num_palette ) {
+ while ( i < info_ptr_num_palette ) {
image.setColor(i, qRgba(
- info_ptr->palette[i].red,
- info_ptr->palette[i].green,
- info_ptr->palette[i].blue,
+ info_ptr_palette[i].red,
+ info_ptr_palette[i].green,
+ info_ptr_palette[i].blue,
0xff
)
);
@@ -284,7 +300,7 @@ void read_png_image(QImageIO* iio)
return;
}
- if (setjmp(png_ptr->jmpbuf)) {
+ if (setjmp(png_jmpbuf(png_ptr))) {
png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
iio->setStatus(-4);
return;
@@ -469,7 +485,7 @@ bool QPNGImageWriter::writeImage(const Q
return FALSE;
}
- if (setjmp(png_ptr->jmpbuf)) {
+ if (setjmp(png_jmpbuf(png_ptr))) {
png_destroy_write_struct(&png_ptr, &info_ptr);
return FALSE;
}
@@ -491,10 +507,16 @@ bool QPNGImageWriter::writeImage(const Q
png_set_write_fn(png_ptr, (void*)this, qpiw_write_fn, qpiw_flush_fn);
+#warning XXXtnn not too sure about this
+/*
+according to png.h, channels is only used on read, not writes, so we
+should be able to comment this out.
+
info_ptr->channels =
(image.depth() == 32)
? (image.hasAlphaBuffer() ? 4 : 3)
: 1;
+*/
png_set_IHDR(png_ptr, info_ptr, image.width(), image.height(),
image.depth() == 1 ? 1 : 8 /* per channel */,
@@ -504,11 +526,12 @@ bool QPNGImageWriter::writeImage(const Q
: PNG_COLOR_TYPE_RGB
: PNG_COLOR_TYPE_PALETTE, 0, 0, 0);
+ png_color_8 sig_bit;
+ sig_bit.red = 8;
+ sig_bit.green = 8;
+ sig_bit.blue = 8;
+ png_set_sBIT(png_ptr, info_ptr, &sig_bit);
- //png_set_sBIT(png_ptr, info_ptr, 8);
- info_ptr->sig_bit.red = 8;
- info_ptr->sig_bit.green = 8;
- info_ptr->sig_bit.blue = 8;
if (image.depth() == 1 && image.bitOrder() == QImage::LittleEndian)
png_set_packswap(png_ptr);
@@ -522,11 +545,14 @@ bool QPNGImageWriter::writeImage(const Q
png_set_PLTE(png_ptr, info_ptr, palette, num_palette);
int* trans = new int[num_palette];
int num_trans = 0;
+ png_colorp info_ptr_palette = NULL;
+ int tmp;
+ png_get_PLTE(png_ptr, info_ptr, &info_ptr_palette, &tmp);
for (int i=0; i<num_palette; i++) {
QRgb rgb=image.color(i);
- info_ptr->palette[i].red = qRed(rgb);
- info_ptr->palette[i].green = qGreen(rgb);
- info_ptr->palette[i].blue = qBlue(rgb);
+ info_ptr_palette[i].red = qRed(rgb);
+ info_ptr_palette[i].green = qGreen(rgb);
+ info_ptr_palette[i].blue = qBlue(rgb);
if (image.hasAlphaBuffer()) {
trans[i] = rgb >> 24;
if (trans[i] < 255) {
@@ -534,6 +560,7 @@ bool QPNGImageWriter::writeImage(const Q
}
}
}
+ png_set_PLTE(png_ptr, info_ptr, info_ptr_palette, num_palette);
if (num_trans) {
copy_trans = new png_byte[num_trans];
for (int i=0; i<num_trans; i++)
@@ -544,7 +571,10 @@ bool QPNGImageWriter::writeImage(const Q
}
if ( image.hasAlphaBuffer() ) {
- info_ptr->sig_bit.alpha = 8;
+ png_color_8p sig_bit;
+ png_get_sBIT(png_ptr, info_ptr, &sig_bit);
+ sig_bit->alpha = 8;
+ png_set_sBIT(png_ptr, info_ptr, sig_bit);
}
// Swap ARGB to RGBA (normal PNG format) before saving on
@@ -1030,7 +1060,7 @@ int QPNGFormat::decode(QImage& img, QIma
return -1;
}
- if (setjmp((png_ptr)->jmpbuf)) {
+ if (setjmp(png_jmpbuf(png_ptr))) {
png_destroy_read_struct(&png_ptr, &info_ptr, 0);
image = 0;
return -1;
@@ -1057,7 +1087,7 @@ int QPNGFormat::decode(QImage& img, QIma
if ( !png_ptr ) return 0;
- if (setjmp(png_ptr->jmpbuf)) {
+ if (setjmp(png_jmpbuf(png_ptr))) {
png_destroy_read_struct(&png_ptr, &info_ptr, 0);
image = 0;
state = MovieStart;
@@ -1117,7 +1147,7 @@ void QPNGFormat::end(png_structp png, pn
consumer->frameDone(QPoint(offx,offy),r);
consumer->end();
state = FrameStart;
- unused_data = (int)png->buffer_size; // Since libpng doesn't tell us
+ unused_data = png_process_data_pause(png, 0);
}
#ifdef PNG_USER_CHUNKS_SUPPORTED

View file

@ -1,172 +0,0 @@
diff -ur qt-x11-free-3.3.8b/src/kernel/qjpegio.cpp qt-x11-free-3.3.8b-#1037297/src/kernel/qjpegio.cpp
--- qt-x11-free-3.3.8b/src/kernel/qjpegio.cpp 2008-01-15 20:09:13.000000000 +0100
+++ qt-x11-free-3.3.8b-#1037297/src/kernel/qjpegio.cpp 2014-01-14 03:59:20.000000000 +0100
@@ -80,7 +80,7 @@
my_error_mgr* myerr = (my_error_mgr*) cinfo->err;
char buffer[JMSG_LENGTH_MAX];
(*cinfo->err->format_message)(cinfo, buffer);
- qWarning(buffer);
+ qWarning("%s", buffer);
longjmp(myerr->setjmp_buffer, 1);
}
diff -ur qt-x11-free-3.3.8b/src/moc/moc.y qt-x11-free-3.3.8b-#1037297/src/moc/moc.y
--- qt-x11-free-3.3.8b/src/moc/moc.y 2008-01-15 20:09:13.000000000 +0100
+++ qt-x11-free-3.3.8b-#1037297/src/moc/moc.y 2014-01-14 03:39:28.000000000 +0100
@@ -2831,11 +2831,6 @@
void generateClass() // generate C++ source code for a class
{
- const char *hdr1 = "/****************************************************************************\n"
- "** %s meta object code from reading C++ file '%s'\n**\n";
- const char *hdr2 = "** Created: %s\n"
- const char *hdr3 = "** WARNING! All changes made in this file will be lost!\n";
- const char *hdr4 = "*****************************************************************************/\n\n";
int i;
if ( skipClass ) // don't generate for class
@@ -2871,10 +2866,10 @@
i--; // skip path
if ( i >= 0 )
fn = &g->fileName[i];
- fprintf( out, hdr1, (const char*)qualifiedClassName(),(const char*)fn);
- fprintf( out, hdr2, (const char*)dstr );
- fprintf( out, hdr3 );
- fprintf( out, hdr4 );
+ fprintf( out, "/****************************************************************************\n** %s meta object code from reading C++ file '%s'\n**\n", (const char*)qualifiedClassName(),(const char*)fn);
+ fprintf( out, "** Created: %s\n", (const char*)dstr );
+ fprintf( out, "** WARNING! All changes made in this file will be lost!\n" );
+ fprintf( out, "*****************************************************************************/\n\n" );
if ( !g->noInclude ) {
/*
diff -ur qt-x11-free-3.3.8b/src/moc/moc_yacc.cpp qt-x11-free-3.3.8b-#1037297/src/moc/moc_yacc.cpp
--- qt-x11-free-3.3.8b/src/moc/moc_yacc.cpp 2008-01-14 13:24:36.000000000 +0100
+++ qt-x11-free-3.3.8b-#1037297/src/moc/moc_yacc.cpp 2014-01-14 03:40:19.000000000 +0100
@@ -2870,12 +2870,6 @@
void generateClass() // generate C++ source code for a class
{
- const char *hdr1 = "/****************************************************************************\n"
- "** %s meta object code from reading C++ file '%s'\n**\n";
- const char *hdr2 = "** Created: %s\n"
- "** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)\n**\n";
- const char *hdr3 = "** WARNING! All changes made in this file will be lost!\n";
- const char *hdr4 = "*****************************************************************************/\n\n";
int i;
if ( skipClass ) // don't generate for class
@@ -2911,10 +2905,10 @@
i--; // skip path
if ( i >= 0 )
fn = &g->fileName[i];
- fprintf( out, hdr1, (const char*)qualifiedClassName(),(const char*)fn);
- fprintf( out, hdr2, (const char*)dstr );
- fprintf( out, hdr3 );
- fprintf( out, hdr4 );
+ fprintf( out, "/****************************************************************************\n** %s meta object code from reading C++ file '%s'\n**\n", (const char*)qualifiedClassName(),(const char*)fn);
+ fprintf( out, "** Created: %s\n** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.8 edited Feb 2 14:59 $)\n**\n", (const char*)dstr );
+ fprintf( out, "** WARNING! All changes made in this file will be lost!\n" );
+ fprintf( out, "*****************************************************************************/\n\n" );
if ( !g->noInclude ) {
/*
diff -ur qt-x11-free-3.3.8b/src/sql/drivers/odbc/qsql_odbc.cpp qt-x11-free-3.3.8b-#1037297/src/sql/drivers/odbc/qsql_odbc.cpp
--- qt-x11-free-3.3.8b/src/sql/drivers/odbc/qsql_odbc.cpp 2008-01-15 20:09:13.000000000 +0100
+++ qt-x11-free-3.3.8b-#1037297/src/sql/drivers/odbc/qsql_odbc.cpp 2014-01-14 04:24:04.000000000 +0100
@@ -540,7 +540,7 @@
} else if ( val == "SQL_MODE_READ_WRITE" ) {
v = SQL_MODE_READ_WRITE;
} else {
- qWarning( QString( "QODBCDriver::open: Unknown option value '%1'" ).arg( *it ) );
+ qWarning( "%s", QString( "QODBCDriver::open: Unknown option value '%1'" ).arg( *it ).ascii() );
break;
}
r = SQLSetConnectAttr( hDbc, SQL_ATTR_ACCESS_MODE, (SQLPOINTER) v, 0 );
@@ -565,7 +565,7 @@
} else if ( val == "SQL_FALSE" ) {
v = SQL_FALSE;
} else {
- qWarning( QString( "QODBCDriver::open: Unknown option value '%1'" ).arg( *it ) );
+ qWarning( "%s", QString( "QODBCDriver::open: Unknown option value '%1'" ).arg( *it ).ascii() );
break;
}
r = SQLSetConnectAttr( hDbc, SQL_ATTR_METADATA_ID, (SQLPOINTER) v, 0 );
@@ -587,14 +587,14 @@
} else if ( val == "SQL_OPT_TRACE_ON" ) {
v = SQL_OPT_TRACE_ON;
} else {
- qWarning( QString( "QODBCDriver::open: Unknown option value '%1'" ).arg( *it ) );
+ qWarning( "%s", QString( "QODBCDriver::open: Unknown option value '%1'" ).arg( *it ).ascii() );
break;
}
r = SQLSetConnectAttr( hDbc, SQL_ATTR_TRACE, (SQLPOINTER) v, 0 );
}
#ifdef QT_CHECK_RANGE
else {
- qWarning( QString("QODBCDriver::open: Unknown connection attribute '%1'").arg( opt ) );
+ qWarning( "%s", QString("QODBCDriver::open: Unknown connection attribute '%1'").arg( opt ).ascii() );
}
#endif
if ( r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO ) {
diff -ur qt-x11-free-3.3.8b/src/tools/qgcache.cpp qt-x11-free-3.3.8b-#1037297/src/tools/qgcache.cpp
--- qt-x11-free-3.3.8b/src/tools/qgcache.cpp 2008-01-15 20:09:13.000000000 +0100
+++ qt-x11-free-3.3.8b-#1037297/src/tools/qgcache.cpp 2014-01-14 03:10:08.000000000 +0100
@@ -639,9 +639,7 @@
void QGCache::statistics() const
{
#if defined(QT_DEBUG)
- QString line;
- line.fill( '*', 80 );
- qDebug( line.ascii() );
+ qDebug( "********************************************************************************" );
qDebug( "CACHE STATISTICS:" );
qDebug( "cache contains %d item%s, with a total cost of %d",
count(), count() != 1 ? "s" : "", tCost );
@@ -662,7 +660,7 @@
lruList->dumps != 1 ? "have" : "has", lruList->dumpCosts );
qDebug( "Statistics from internal dictionary class:" );
dict->statistics();
- qDebug( line.ascii() );
+ qDebug( "********************************************************************************" );
#endif
}
diff -ur qt-x11-free-3.3.8b/src/tools/qgdict.cpp qt-x11-free-3.3.8b-#1037297/src/tools/qgdict.cpp
--- qt-x11-free-3.3.8b/src/tools/qgdict.cpp 2008-01-15 20:09:13.000000000 +0100
+++ qt-x11-free-3.3.8b-#1037297/src/tools/qgdict.cpp 2014-01-14 02:46:07.000000000 +0100
@@ -843,14 +843,12 @@
void QGDict::statistics() const
{
#if defined(QT_DEBUG)
- QString line;
- line.fill( '-', 60 );
double real, ideal;
- qDebug( line.ascii() );
+ qDebug( "------------------------------------------------------------" );
qDebug( "DICTIONARY STATISTICS:" );
if ( count() == 0 ) {
qDebug( "Empty!" );
- qDebug( line.ascii() );
+ qDebug( "------------------------------------------------------------" );
return;
}
real = 0.0;
@@ -871,7 +869,7 @@
while ( b-- )
*pbuf++ = '*';
*pbuf = '\0';
- qDebug( buf );
+ qDebug( "%s", buf );
i++;
}
qDebug( "Array size = %d", size() );
@@ -879,7 +877,7 @@
qDebug( "Real dist = %g", real );
qDebug( "Rand dist = %g", ideal );
qDebug( "Real/Rand = %g", real/ideal );
- qDebug( line.ascii() );
+ qDebug( "------------------------------------------------------------" );
#endif // QT_DEBUG
}

View file

@ -1,111 +0,0 @@
diff -ur qt-x11-free-3.3.8b/src/xml/qxml.cpp qt-x11-free-3.3.8b-CVE-2013-4549/src/xml/qxml.cpp
--- qt-x11-free-3.3.8b/src/xml/qxml.cpp 2008-01-15 20:09:13.000000000 +0100
+++ qt-x11-free-3.3.8b-CVE-2013-4549/src/xml/qxml.cpp 2014-01-13 21:03:14.000000000 +0100
@@ -4529,6 +4529,11 @@
}
break;
case Mup:
+ if (dtdRecursionLimit > 0U && d->parameterEntities.size() > dtdRecursionLimit) {
+ reportParseError(QString::fromLatin1(
+ "DTD parsing exceeded recursion limit of %1.").arg(dtdRecursionLimit));
+ return FALSE;
+ }
if ( !parseMarkupdecl() ) {
parseFailed( &QXmlSimpleReader::parseDoctype, state );
return FALSE;
@@ -6128,6 +6133,58 @@
}
}
+bool QXmlSimpleReader::isExpandedEntityValueTooLarge(QString *errorMessage)
+{
+ QMap<QString, uint> literalEntitySizes;
+ // The entity at (QMap<QString,) referenced the entities at (QMap<QString,) (uint>) times.
+ QMap<QString, QMap<QString, uint> > referencesToOtherEntities;
+ QMap<QString, uint> expandedSizes;
+
+ // For every entity, check how many times all entity names were referenced in its value.
+ QMap<QString,QString>::ConstIterator toSearchIterator;
+ for (toSearchIterator = d->entities.begin(); toSearchIterator != d->entities.end(); ++toSearchIterator) {
+ QString toSearch = toSearchIterator.key();
+ // The amount of characters that weren't entity names, but literals, like 'X'.
+ QString leftOvers = toSearchIterator.data();
+ QMap<QString,QString>::ConstIterator entityNameIterator;
+ // How many times was entityName referenced by toSearch?
+ for (entityNameIterator = d->entities.begin(); entityNameIterator != d->entities.end(); ++entityNameIterator) {
+ QString entityName = entityNameIterator.key();
+ for (int i = 0; i >= 0 && (uint) i < leftOvers.length(); ) {
+ i = leftOvers.find(QString::fromLatin1("&%1;").arg(entityName), i);
+ if (i != -1) {
+ leftOvers.remove(i, entityName.length() + 2U);
+ // The entityName we're currently trying to find was matched in this string; increase our count.
+ ++referencesToOtherEntities[toSearch][entityName];
+ }
+ }
+ }
+ literalEntitySizes[toSearch] = leftOvers.length();
+ }
+
+ QMap<QString, QMap<QString, uint> >::ConstIterator entityIterator;
+ for (entityIterator = referencesToOtherEntities.begin(); entityIterator != referencesToOtherEntities.end(); ++entityIterator) {
+ QString entity = entityIterator.key();
+ expandedSizes[entity] = literalEntitySizes[entity];
+ QMap<QString, uint>::ConstIterator referenceToIterator;
+ for (referenceToIterator = entityIterator.data().begin(); referenceToIterator != entityIterator.data().end(); ++referenceToIterator) {
+ QString referenceTo = referenceToIterator.key();
+ const uint references = referenceToIterator.data();
+ // The total size of an entity's value is the expanded size of all of its referenced entities, plus its literal size.
+ expandedSizes[entity] += expandedSizes[referenceTo] * references + literalEntitySizes[referenceTo] * references;
+ }
+
+ if (expandedSizes[entity] > entityCharacterLimit) {
+ if (errorMessage) {
+ *errorMessage = QString::fromLatin1("The XML entity \"%1\" expands to a string that is too large to process (%2 characters > %3).");
+ *errorMessage = (*errorMessage).arg(entity).arg(expandedSizes[entity]).arg(entityCharacterLimit);
+ }
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
/*
Parse a EntityDecl [70].
@@ -6222,6 +6279,12 @@
switch ( state ) {
case EValue:
if ( !entityExist( name() ) ) {
+ QString errorMessage;
+ if (isExpandedEntityValueTooLarge(&errorMessage)) {
+ reportParseError(errorMessage);
+ return FALSE;
+ }
+
d->entities.insert( name(), string() );
if ( declHnd ) {
if ( !declHnd->internalEntityDecl( name(), string() ) ) {
diff -ur qt-x11-free-3.3.8b/src/xml/qxml.h qt-x11-free-3.3.8b-CVE-2013-4549/src/xml/qxml.h
--- qt-x11-free-3.3.8b/src/xml/qxml.h 2008-01-15 20:09:13.000000000 +0100
+++ qt-x11-free-3.3.8b-CVE-2013-4549/src/xml/qxml.h 2014-01-13 21:03:02.000000000 +0100
@@ -307,6 +307,12 @@
QXmlSimpleReaderPrivate* d;
+ // The limit to the amount of times the DTD parsing functions can be called
+ // for the DTD currently being parsed.
+ static const uint dtdRecursionLimit = 2U;
+ // The maximum amount of characters an entity value may contain, after expansion.
+ static const uint entityCharacterLimit = 4096U;
+
const QString &string();
void stringClear();
inline void stringAddC() { stringAddC(c); }
@@ -378,6 +384,7 @@
void unexpectedEof( ParseFunction where, int state );
void parseFailed( ParseFunction where, int state );
void pushParseState( ParseFunction function, int state );
+ bool isExpandedEntityValueTooLarge(QString *errorMessage);
void setUndefEntityInAttrHack(bool b);

View file

@ -1,17 +0,0 @@
diff -ur qt-x11-free-3.3.8b/src/kernel/qasyncimageio.cpp qt-x11-free-3.3.8b-CVE-2014-0190/src/kernel/qasyncimageio.cpp
--- qt-x11-free-3.3.8b/src/kernel/qasyncimageio.cpp 2008-01-15 20:09:13.000000000 +0100
+++ qt-x11-free-3.3.8b-CVE-2014-0190/src/kernel/qasyncimageio.cpp 2014-05-29 22:24:57.000000000 +0200
@@ -904,7 +904,12 @@
sheight = newtop + newheight;
if (img.isNull()) {
- img.create(swidth, sheight, 32);
+ if (!img.create(swidth, sheight, 32)) {
+ // Check if the attempt to create the image failed. If
+ // it did, the image is broken and we should give up.
+ state = Error;
+ return -1;
+ }
memset( img.bits(), 0, img.numBytes() );
if (consumer) consumer->setSize(swidth, sheight);
}

View file

@ -1,20 +0,0 @@
diff -ur qt-x11-free-3.3.8b/src/kernel/qimage.cpp qt-x11-free-3.3.8b-CVE-2015-0295/src/kernel/qimage.cpp
--- qt-x11-free-3.3.8b/src/kernel/qimage.cpp 2008-01-15 20:09:13.000000000 +0100
+++ qt-x11-free-3.3.8b-CVE-2015-0295/src/kernel/qimage.cpp 2015-02-28 04:59:11.000000000 +0100
@@ -4716,10 +4716,16 @@
if ( (Q_ULONG)d->readBlock( (char *)&blue_mask, sizeof(blue_mask) ) != sizeof(blue_mask) )
return FALSE;
red_shift = calc_shift(red_mask);
+ if (((red_mask >> red_shift) + 1) == 0)
+ return FALSE;
red_scale = 256 / ((red_mask >> red_shift) + 1);
green_shift = calc_shift(green_mask);
+ if (((green_mask >> green_shift) + 1) == 0)
+ return FALSE;
green_scale = 256 / ((green_mask >> green_shift) + 1);
blue_shift = calc_shift(blue_mask);
+ if (((blue_mask >> blue_shift) + 1) == 0)
+ return FALSE;
blue_scale = 256 / ((blue_mask >> blue_shift) + 1);
} else if (comp == BMP_RGB && (nbits == 24 || nbits == 32)) {
blue_mask = 0x000000ff;

View file

@ -1,12 +0,0 @@
diff -ur qt-x11-free-3.3.8b/src/kernel/qasyncimageio.cpp qt-x11-free-3.3.8b-CVE-2015-1860/src/kernel/qasyncimageio.cpp
--- qt-x11-free-3.3.8b/src/kernel/qasyncimageio.cpp 2008-01-15 20:09:13.000000000 +0100
+++ qt-x11-free-3.3.8b-CVE-2015-1860/src/kernel/qasyncimageio.cpp 2015-04-22 01:30:03.000000000 +0200
@@ -1221,6 +1221,8 @@
void QGIFFormat::nextY(QImage& img, QImageConsumer* consumer)
{
+ if (out_of_bounds)
+ return;
int my;
switch (interlace) {
case 0:

View file

@ -1,14 +0,0 @@
diff -up qt-x11-free-3.3.8b/src/sql/drivers/psql/qsql_psql.cpp.me qt-x11-free-3.3.8b/src/sql/drivers/psql/qsql_psql.cpp
--- qt-x11-free-3.3.8b/src/sql/drivers/psql/qsql_psql.cpp.me 2020-07-16 10:21:41.403226592 +0200
+++ qt-x11-free-3.3.8b/src/sql/drivers/psql/qsql_psql.cpp 2020-07-16 10:23:00.754291164 +0200
@@ -147,8 +147,10 @@ static QVariant::Type qDecodePSQLType( i
case FLOAT8OID :
type = QVariant::Double;
break;
+#ifdef ABSTIMEOID
case ABSTIMEOID :
case RELTIMEOID :
+#endif
case DATEOID :
type = QVariant::Date;
break;

View file

@ -1,45 +0,0 @@
diff -ur qt-x11-free-3.3.8b/config.tests/x11/xfreetype.test qt-x11-free-3.3.8b-freetype251/config.tests/x11/xfreetype.test
--- qt-x11-free-3.3.8b/config.tests/x11/xfreetype.test 2008-01-15 20:09:15.000000000 +0100
+++ qt-x11-free-3.3.8b-freetype251/config.tests/x11/xfreetype.test 2014-02-23 19:22:02.000000000 +0100
@@ -116,33 +116,14 @@
# check for freetype2 headers
FREETYPE2_INCDIR=
if [ "$XFT" = "yes" ]; then
- INC="freetype2/freetype/freetype.h"
- XDIRS=`sed -n -e '/^QMAKE_INCDIR_X11[ ]*=/ { s/[^=]*=[ ]*//; s/-I/ /g; p; }' $XCONFIG`
- LDIRS=`sed -n -e '/^QMAKE_INCDIR[ ]*=/ { s/[^=]*=[ ]*//; s/-I/ /g; p; }' $XCONFIG`
- INCDIRS="$IN_INCDIRS $XDIRS $LDIRS /usr/include /include"
- F=
- for INCDIR in $INCDIRS; do
- if [ -f $INCDIR/$INC ]; then
- # detect major version of freetype2
- FREETYPE_MAJOR=`grep "#define FREETYPE_MAJOR" $INCDIR/$INC | head -n 1 | awk '{ print \$3 }'`
- FREETYPE_MINOR=`grep "#define FREETYPE_MINOR" $INCDIR/$INC | head -n 1 | awk '{ print \$3 }'`
- FREETYPE_PATCH=`grep "#define FREETYPE_PATCH" $INCDIR/$INC | head -n 1 | awk '{ print \$3 }'`
- test -z "$FREETYPE_PATCH" && FREETYPE_PATCH="0"
- [ "$VERBOSE" = "yes" ] && \
- echo " Found Freetype version $FREETYPE_MAJOR.$FREETYPE_MINOR.$FREETYPE_PATCH"
- if [ "$FREETYPE_MAJOR" -eq "2" ] \
- && [ "$FREETYPE_MINOR" -ge "0" -a "$FREETYPE_PATCH" -ge "9" ] \
- || [ "$FREETYPE_MINOR" -ge "1" ]; then
- F=yes
- FREETYPE2_INCDIR=$INCDIR/freetype2
- [ "$VERBOSE" = "yes" ] && echo " Found $INC in $INCDIR"
- break
- fi
- fi
- done
- if [ -z "$F" ]; then
- XFT=no
- [ "$VERBOSE" = "yes" ] && echo " Could not find $INC anywhere in $INCDIRS"
+ # minimum is freetype 2.0.9, which had libtool version 6.3.0
+ if pkg-config --atleast-version=6.3.0 freetype2; then
+ [ "$VERBOSE" = "yes" ] && echo " Found Freetype >= 2.0.9 using pkg-config"
+ FREETYPE2_INCDIR=`pkg-config --cflags-only-I freetype2 | sed -e 's/^-I//g' -e 's/ -I/ /g'`
+ [ "$VERBOSE" = "yes" ] && echo " Freetype headers in $FREETYPE2_INCDIR"
+ else
+ XFT=no
+ [ "$VERBOSE" = "yes" ] && echo " Could not find Freetype >= 2.0.9 using pkg-config"
fi
fi

View file

@ -0,0 +1,25 @@
diff -ur qt-x11-free-3.3.8b/configure qt-x11-free-3.3.8b-gcc4-buildkey/configure
--- qt-x11-free-3.3.8b/configure 2008-01-15 20:09:15.000000000 +0100
+++ qt-x11-free-3.3.8b-gcc4-buildkey/configure 2008-02-18 02:41:01.000000000 +0100
@@ -3081,16 +3081,16 @@
g++*)
# GNU C++
QMAKE_CONF_COMPILER=`grep "QMAKE_CXX[^_A-Z0-9a-z]" $QMAKESPEC/qmake.conf | sed "s,.* *= *\(.*\)$,\1,"`
- COMPILER_VERSION=`${QMAKE_CONF_COMPILER} --version 2>/dev/null`
+ COMPILER_VERSION=`${QMAKE_CONF_COMPILER} --version 2>/dev/null | sed 's,^[^0-9]*,,g'`
case "$COMPILER_VERSION" in
- *2.95.*)
+ 2.95.*)
COMPILER_VERSION="2.95.*"
;;
- *3.*)
+ 3.*)
COMPILER_VERSION="3.*"
;;
- *4.*)
- COMPILER_VERSION="4"
+ 4.*)
+ COMPILER_VERSION="4.*"
;;
*)
;;

View file

@ -1,25 +0,0 @@
diff -ur qt-x11-free-3.3.8b/configure qt-x11-free-3.3.8b-hardcode-buildkey/configure
--- qt-x11-free-3.3.8b/configure 2008-01-15 20:09:15.000000000 +0100
+++ qt-x11-free-3.3.8b-hardcode-buildkey/configure 2019-01-05 04:57:37.066254942 +0100
@@ -3081,20 +3081,7 @@
g++*)
# GNU C++
QMAKE_CONF_COMPILER=`grep "QMAKE_CXX[^_A-Z0-9a-z]" $QMAKESPEC/qmake.conf | sed "s,.* *= *\(.*\)$,\1,"`
- COMPILER_VERSION=`${QMAKE_CONF_COMPILER} --version 2>/dev/null`
- case "$COMPILER_VERSION" in
- *2.95.*)
- COMPILER_VERSION="2.95.*"
- ;;
- *3.*)
- COMPILER_VERSION="3.*"
- ;;
- *4.*)
- COMPILER_VERSION="4"
- ;;
- *)
- ;;
- esac
+ COMPILER_VERSION="4.*"
[ ! -z "$COMPILER_VERSION" ] && COMPILER="g++-${COMPILER_VERSION}"
;;
*)

View file

@ -1,54 +0,0 @@
diff -up qt-x11-free-3.3.8b/src/sql/drivers/mysql/qsql_mysql.cpp.me qt-x11-free-3.3.8b/src/sql/drivers/mysql/qsql_mysql.cpp
--- qt-x11-free-3.3.8b/src/sql/drivers/mysql/qsql_mysql.cpp.me 2017-11-10 18:08:22.850898663 +0100
+++ qt-x11-free-3.3.8b/src/sql/drivers/mysql/qsql_mysql.cpp 2017-11-13 15:02:41.565493236 +0100
@@ -350,30 +350,38 @@ int QMYSQLResult::numRowsAffected()
static void qServerEnd()
{
#ifndef Q_NO_MYSQL_EMBEDDED
-# if MYSQL_VERSION_ID >= 40000
+#if !defined(MARIADB_BASE_VERSION) && !defined(MARIADB_VERSION_ID)
+# if MYSQL_VERSION_ID > 40000
+# if (MYSQL_VERSION_ID >= 40110 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID >= 50003
+ mysql_library_end();
+# else
mysql_server_end();
-# endif // MYSQL_VERSION_ID
-#endif // Q_NO_MYSQL_EMBEDDED
+# endif
+# endif
+#endif
+#endif
}
static void qServerInit()
{
#ifndef Q_NO_MYSQL_EMBEDDED
# if MYSQL_VERSION_ID >= 40000
- if ( qMySqlInitHandledByUser || qMySqlConnectionCount > 1 )
+ if (qMySqlInitHandledByUser || qMySqlConnectionCount > 1)
return;
- // this should only be called once
- // has no effect on client/server library
- // but is vital for the embedded lib
- if ( mysql_server_init( 0, 0, 0 ) ) {
-# ifdef QT_CHECK_RANGE
- qWarning( "QMYSQLDriver::qServerInit: unable to start server." );
-# endif
+# if (MYSQL_VERSION_ID >= 40110 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID >= 50003
+ if (mysql_library_init(0, 0, 0)) {
+# else
+ if (mysql_server_init(0, 0, 0)) {
+# endif
+ qWarning("QMYSQLDriver::qServerInit: unable to start server.");
}
-
# endif // MYSQL_VERSION_ID
#endif // Q_NO_MYSQL_EMBEDDED
+
+#if defined(MARIADB_BASE_VERSION) || defined(MARIADB_VERSION_ID)
+ qAddPostRoutine(mysql_server_end);
+#endif
}
QMYSQLDriver::QMYSQLDriver( QObject * parent, const char * name )

View file

@ -1,57 +0,0 @@
diff -ur qt-x11-free-3.3.8b/src/sql/qsqlextension_p.cpp qt-x11-free-3.3.8b-postgresql11/src/sql/qsqlextension_p.cpp
--- qt-x11-free-3.3.8b/src/sql/qsqlextension_p.cpp 2008-01-15 20:09:13.000000000 +0100
+++ qt-x11-free-3.3.8b-postgresql11/src/sql/qsqlextension_p.cpp 2019-01-05 05:21:29.839087511 +0100
@@ -68,7 +68,7 @@
if ( index.contains( (int)values.count() ) ) {
index[ (int)values.count() ] = placeholder;
}
- values[ placeholder ] = Param( val, tp );
+ values[ placeholder ] = Parame( val, tp );
}
void QSqlExtension::bindValue( int pos, const QVariant& val, QSql::ParameterType tp )
@@ -76,7 +76,7 @@
bindm = BindByPosition;
index[ pos ] = QString::number( pos );
QString nm = QString::number( pos );
- values[ nm ] = Param( val, tp );
+ values[ nm ] = Parame( val, tp );
}
void QSqlExtension::addBindValue( const QVariant& val, QSql::ParameterType tp )
@@ -130,7 +130,7 @@
QMap<QString, QVariant> QSqlExtension::boundValues() const
{
- QMap<QString, Param>::ConstIterator it;
+ QMap<QString, Parame>::ConstIterator it;
QMap<QString, QVariant> m;
if ( bindm == BindByName ) {
for ( it = values.begin(); it != values.end(); ++it )
diff -ur qt-x11-free-3.3.8b/src/sql/qsqlextension_p.h qt-x11-free-3.3.8b-postgresql11/src/sql/qsqlextension_p.h
--- qt-x11-free-3.3.8b/src/sql/qsqlextension_p.h 2008-01-15 20:09:13.000000000 +0100
+++ qt-x11-free-3.3.8b-postgresql11/src/sql/qsqlextension_p.h 2019-01-05 05:20:59.605555077 +0100
@@ -71,11 +71,11 @@
#define QM_TEMPLATE_EXTERN_SQL Q_TEMPLATE_EXTERN
#endif
-struct Param {
- Param( const QVariant& v = QVariant(), QSql::ParameterType t = QSql::In ): value( v ), typ( t ) {}
+struct Parame {
+ Parame( const QVariant& v = QVariant(), QSql::ParameterType t = QSql::In ): value( v ), typ( t ) {}
QVariant value;
QSql::ParameterType typ;
- Q_DUMMY_COMPARISON_OPERATOR(Param)
+ Q_DUMMY_COMPARISON_OPERATOR(Parame)
};
struct Holder {
@@ -114,7 +114,7 @@
int bindCount;
QMap<int, QString> index;
- typedef QMap<QString, Param> ValueMap;
+ typedef QMap<QString, Parame> ValueMap;
ValueMap values;
// convenience container for QSqlQuery

10
qt.csh
View file

@ -1,10 +1,10 @@
# Qt initialization script (csh)
# In multilib environments there is a preferred architecture, 64 bit over 32 bit in x86_64,
# ppc64. When a conflict is found between two packages corresponding with different arches,
# the installed file is the one from the preferred arch. This is very common for executables
# in /usr/bin, for example. If the file /usr/bin/foo is found in an x86_64 package and in
# an i386 package, the executable from x86_64 will be installe
# 32 bit over 64 bit in ppc64. When a conflict is found between two packages corresponding
# with different arches, the installed file is the one from the preferred arch. This is
# very common for executables in /usr/bin, for example. If the file /usr/bin/foo is found
# in an x86_64 package and in an i386 package, the executable from x86_64 will be installe
if ( $?QTDIR ) then
exit
@ -14,8 +14,6 @@ switch (`uname -m`)
case x86_64:
case ia64:
case s390x:
case ppc64:
case ppc64le:
set QTPREFIXES = "/usr/lib64/qt-3.3 /usr/lib/qt-3.3"
breaksw
case *:

9
qt.sh
View file

@ -9,7 +9,7 @@
if [ -z "${QTDIR}" ]; then
case `uname -m` in
x86_64 | ia64 | s390x | ppc64 | ppc64le)
x86_64 | ia64 | s390x | ppc64)
QT_PREFIXES="/usr/lib64/qt-3.3 /usr/lib/qt-3.3" ;;
* )
QT_PREFIXES="/usr/lib/qt-3.3 /usr/lib64/qt-3.3" ;;
@ -20,10 +20,9 @@ for QTDIR in ${QT_PREFIXES} ; do
done
unset QT_PREFIXES
case :$PATH: in
*:$QTDIR/bin:*) ;;
*) PATH=$QTDIR/bin:$PATH ;;
esac
if ! echo ${PATH} | /bin/grep -q $QTDIR/bin ; then
PATH=$QTDIR/bin:${PATH}
fi
QTINC="$QTDIR/include"
QTLIB="$QTDIR/lib"

418
qt3.spec
View file

@ -1,16 +1,14 @@
%define _default_patch_fuzz 2
# trim changelog included in binary rpms
%global _changelog_trimtime %(date +%s -d "1 year ago")
Name: qt3
Summary: The shared library for the Qt 3 GUI toolkit
Version: 3.3.8b
Release: 102%{?dist}
# Automatically converted from old format: QPL or GPLv2 or GPLv3 - review is highly recommended.
License: QPL-1.0 OR GPL-2.0-only OR GPL-3.0-only
Name: qt3
Release: 38%{?dist}
License: QPL or GPLv2 or GPLv3
Group: System Environment/Libraries
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Url: http://www.troll.no
Source0: ftp://ftp.trolltech.com/qt/source/qt-x11-free-%{version}.tar.gz
Source0: ftp://ftp.troll.no/qt/source/qt-x11-free-%{version}.tar.gz
Source2: qt.sh
Source3: qt.csh
Source4: designer3.desktop
@ -28,9 +26,8 @@ Patch8: qt-x11-free-3.3.3-qembed.patch
Patch12: qt-uic-nostdlib.patch
Patch13: qt-x11-free-3.3.6-qfontdatabase_x11.patch
Patch14: qt-x11-free-3.3.3-gl.patch
Patch19: qt-3.3.3-gtkstyle.patch
# hardcode the compiler version in the build key once and for all
Patch20: qt-x11-free-3.3.8b-hardcode-buildkey.patch
Patch19: qt-3.3.3-gtkstyle.patch
Patch20: qt-x11-free-3.3.8b-gcc4-buildkey.patch
Patch24: qt-x11-free-3.3.5-uic.patch
Patch25: qt-x11-free-3.3.8b-uic-multilib.patch
Patch27: qt-3.3.6-fontrendering-ml_IN-209097.patch
@ -59,14 +56,6 @@ Patch43: qt-x11-free-3.3.8b-system-sqlite2.patch
Patch44: qt-x11-free-3.3.8b-qimage-parentheses.patch
# fix the include path for zlib.h in qcstring.cpp to pick up the system version
Patch45: qt-x11-free-3.3.8b-system-zlib-header.patch
# fix FTBFS with libpng 1.5 (patch from NetBSD)
Patch46: qt-3.3.8-libpng15.patch
# work around -Werror=format-security false positives (#1037297)
Patch47: qt-x11-free-3.3.8b-#1037297.patch
# search for FreeType using pkg-config, fixes FTBFS with freetype >= 2.5.1
Patch48: qt-x11-free-3.3.8b-freetype251.patch
# rename the struct Param in qsqlextension_p.h that conflicts with PostgreSQL 11
Patch49: qt-x11-free-3.3.8b-postgresql11.patch
# immodule patches
Patch50: qt-x11-immodule-unified-qt3.3.8-20071116.diff.bz2
@ -74,12 +63,6 @@ Patch51: qt-x11-immodule-unified-qt3.3.5-20051012-quiet.patch
Patch52: qt-x11-free-3.3.8b-fix-key-release-event-with-imm.diff
Patch53: qt-x11-free-3.3.6-qt-x11-immodule-unified-qt3.3.5-20060318-resetinputcontext.patch
# mariadb support
Patch60: qt-x11-free-3.3.8b-mariadb.patch
# compile with PostgreSQL 12
Patch70: qt-x11-free-3.3.8b-PostgreSQL12.patch
# qt-copy patches
Patch100: 0038-dragobject-dont-prefer-unknown.patch
Patch101: 0047-fix-kmenu-width.diff
@ -94,16 +77,6 @@ Patch110: 0084-compositing-properties.patch
Patch200: qt-x11-free-3.3.4-fullscreen.patch
Patch201: qt-x11-free-3.3.8b-gcc43.patch
# security patches
# fix for CVE-2013-4549 backported from Qt 4
Patch300: qt-x11-free-3.3.8b-CVE-2013-4549.patch
# fix for CVE-2014-0190 (QTBUG-38367) backported from Qt 4
Patch301: qt-x11-free-3.3.8b-CVE-2014-0190.patch
# fix for CVE-2015-0295 backported from Qt 4
Patch302: qt-x11-free-3.3.8b-CVE-2015-0295.patch
# fix for CVE-2015-1860 backported from Qt 4
Patch303: qt-x11-free-3.3.8b-CVE-2015-1860.patch
%define qt_dirname qt-3.3
%define qtdir %{_libdir}/%{qt_dirname}
%define qt_docdir %{_docdir}/qt-devel-%{version}
@ -124,7 +97,7 @@ Patch303: qt-x11-free-3.3.8b-CVE-2015-1860.patch
%define plugin_odbc -plugin-sql-odbc
# sqlite plugins
%if 0%{?rhel} && 0%{?rhel} < 7
%if 0%{?rhel} < 7
%define plugin_sqlite -plugin-sql-sqlite
%else
%define plugin_sqlite %{nil}
@ -136,8 +109,6 @@ Patch303: qt-x11-free-3.3.8b-CVE-2015-1860.patch
# not sure what this is for anymore? -- rex
Requires: coreutils
BuildRequires: make
BuildRequires: gcc-c++
BuildRequires: desktop-file-utils
BuildRequires: libmng-devel
BuildRequires: glibc-devel
@ -145,7 +116,7 @@ BuildRequires: libjpeg-devel
BuildRequires: libpng-devel
BuildRequires: zlib-devel
BuildRequires: giflib-devel
BuildRequires: perl-interpreter
BuildRequires: perl
BuildRequires: sed
BuildRequires: findutils
BuildRequires: cups-devel
@ -168,25 +139,25 @@ BuildRequires: xorg-x11-proto-devel
BuildRequires: mesa-libGL-devel
BuildRequires: mesa-libGLU-devel
BuildRequires: desktop-file-utils
%if 0%{?fedora} > 27 || 0%{?rhel} > 7
BuildRequires: mariadb-connector-c-devel
%else
BuildRequires: mysql-devel
%endif
BuildRequires: postgresql-server-devel
BuildRequires: postgresql-devel
BuildRequires: unixODBC-devel
%if 0%{?rhel} && 0%{?rhel} < 7
%if 0%{?rhel} < 7
BuildRequires: sqlite2-devel
%endif
%package config
Summary: Graphical configuration tool for programs using Qt 3
Group: User Interface/Desktops
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
%package devel
Summary: Development files for the Qt 3 GUI toolkit
Group: Development/Libraries
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
Requires: freetype-devel
Requires: fontconfig-devel
Requires: libXrender-devel
Requires: libXrandr-devel
Requires: libXcursor-devel
@ -198,31 +169,40 @@ Requires: libSM-devel
Requires: libICE-devel
Requires: libXt-devel
Requires: xorg-x11-proto-devel
Requires: libpng-devel
Requires: libjpeg-devel
Requires: libmng-devel
Requires: mesa-libGL-devel
Requires: mesa-libGLU-devel
%package devel-docs
Summary: Documentation for the Qt 3 GUI toolkit
Group: Development/Libraries
Requires: %{name}-devel = %{?epoch:%{epoch}:}%{version}-%{release}
%package ODBC
Summary: ODBC drivers for Qt 3's SQL classes
Group: System Environment/Libraries
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
%package MySQL
Summary: MySQL drivers for Qt 3's SQL classes
Group: System Environment/Libraries
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
%package PostgreSQL
Summary: PostgreSQL drivers for Qt 3's SQL classes
Group: System Environment/Libraries
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
%package sqlite
Summary: sqlite drivers for Qt 3's SQL classes
Group: System Environment/Libraries
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
%package designer
Summary: Interface designer (IDE) for the Qt 3 toolkit
Group: Development/Tools
Requires: %{name}-devel = %{?epoch:%{epoch}:}%{version}-%{release}
%description
@ -283,86 +263,66 @@ for the Qt 3 toolkit.
%prep
%setup -q -n qt-x11-free-%{version}
%patch -P1 -p1 -b .cjk
%patch -P2 -p1 -b .ndebug
%patch -P3 -p1 -b .makefile
%patch -P4 -p1 -b .umask
%patch -P5 -p1 -b .strip
%patch1 -p1 -b .cjk
%patch2 -p1 -b .ndebug
%patch3 -p1 -b .makefile
%patch4 -p1 -b .umask
%patch5 -p1 -b .strip
# drop backup file(s), else they get installed too, http://bugzilla.redhat.com/639459
rm -fv mkspecs/linux-g++*/qmake.conf.strip
%patch -P7 -p1 -b .quiet
%patch -P8 -p1 -b .qembed
%patch -P12 -p1 -b .nostdlib
%patch -P13 -p1 -b .fonts
%patch -P14 -p1 -b .gl
%patch -P19 -p1 -b .gtk
gcc -dumpversion ||:
%patch -P20 -p1 -b .hardcode-buildkey
%patch -P24 -p1 -b .uic
%patch -P25 -p1 -b .uic-multilib
%patch -P27 -p1 -b .fontrendering-ml_IN-bz#209097
%patch -P29 -p1 -b .fontrendering-as_IN-bz#209972
%patch -P31 -p1 -b .fontrendering-te_IN-bz#211259
%patch -P32 -p1 -b .fontrendering-bz#214371
%patch -P33 -p1 -b .fontrendering-#214570
%patch -P34 -p1 -b .fontrendering-#209974
%patch -P35 -p1 -b .fontrendering-ml_IN-217657
%patch -P37 -p1 -b .fontrendering-gu-228452
%patch -P38 -p1 -b .odbc
%patch7 -p1 -b .quiet
%patch8 -p1 -b .qembed
%patch12 -p1 -b .nostdlib
%patch13 -p1 -b .fonts
%patch14 -p1 -b .gl
%patch19 -p1 -b .gtk
%patch20 -p1 -b .gcc4-buildkey
%patch24 -p1 -b .uic
%patch25 -p1 -b .uic-multilib
%patch27 -p1 -b .fontrendering-ml_IN-bz#209097
%patch29 -p1 -b .fontrendering-as_IN-bz#209972
%patch31 -p1 -b .fontrendering-te_IN-bz#211259
%patch32 -p1 -b .fontrendering-bz#214371
%patch33 -p1 -b .fontrendering-#214570
%patch34 -p1 -b .fontrendering-#209974
%patch35 -p1 -b .fontrendering-ml_IN-217657
%patch37 -p1 -b .fontrendering-gu-228452
%patch38 -p1 -b .odbc
# it's not 100% clear to me if this is safe for all archs -- Rex
%ifarch %{arm}
%patch -P39 -p1 -b .arm
%patch39 -p1 -b .arm
%endif
%patch -P40 -p1 -b .sane_defaults
%patch40 -p1 -b .sane_defaults
sed -i.KDE3_PLUGIN_PATH \
-e "s|@@KDE3_PLUGIN_PATH@@|%{_libdir}/kde3/plugins|" \
src/kernel/qapplication.cpp
%patch -P41 -p1 -b .cstddef
%patch -P42 -p1 -b .qlocale-aliasing
%patch -P43 -p1 -b .system-sqlite2
%patch -P44 -p1 -b .qimage-parentheses
%patch -P45 -p1 -b .system-zlib-header
%if 0%{?fedora} > 16 || 0%{?rhel} > 6
# This patch works ONLY with libpng >= 1.5.
%patch -P46 -p0 -b .libpng15
%endif
%patch -P47 -p1 -b .#1037297
%patch -P48 -p1 -b .freetype251
%patch -P49 -p1 -b .postgresql11
%patch41 -p1 -b .cstddef
%patch42 -p1 -b .qlocale-aliasing
%patch43 -p1 -b .system-sqlite2
%patch44 -p1 -b .qimage-parentheses
%patch45 -p1 -b .system-zlib-header
# immodule patches
%if %{immodule}
%patch -P50 -p1
%patch -P51 -p1 -b .quiet
%patch -P52 -p1 -b .fix-key-release-event-with-imm
%patch -P53 -p1 -b .resetinputcontext
%patch50 -p1
%patch51 -p1 -b .quiet
%patch52 -p1 -b .fix-key-release-event-with-imm
%patch53 -p1 -b .resetinputcontext
%endif
# mariadb
%patch -P60 -p1 -b .mariadb
# PostgreSQL 12
%patch -P70 -p1 -b .PostgreSQL12
# qt-copy patches
%patch -P100 -p0 -b .0038-dragobject-dont-prefer-unknown
%patch -P101 -p0 -b .0047-fix-kmenu-width
%patch -P102 -p0 -b .0048-qclipboard_hack_80072
%patch -P103 -p0 -b .0056-khotkeys_input_84434
%patch -P105 -p0 -b .0073-xinerama-aware-qpopup
%patch -P107 -p0 -b .0079-compositing-types
%patch -P108 -p0 -b .0080-net-wm-sync-request
%patch -P110 -p0 -b .0084-compositing-properties
%patch100 -p0 -b .0038-dragobject-dont-prefer-unknown
%patch101 -p0 -b .0047-fix-kmenu-width
%patch102 -p0 -b .0048-qclipboard_hack_80072
%patch103 -p0 -b .0056-khotkeys_input_84434
%patch105 -p0 -b .0073-xinerama-aware-qpopup
%patch107 -p0 -b .0079-compositing-types
%patch108 -p0 -b .0080-net-wm-sync-request
%patch110 -p0 -b .0084-compositing-properties
# upstream patches
%patch -P200 -p1 -b .fullscreen
%patch -P201 -p1 -b .gcc34
# security patches
%patch -P300 -p1 -b .CVE-2013-4549
%patch -P301 -p1 -b .CVE-2014-0190
%patch -P302 -p1 -b .CVE-2015-0295
%patch -P303 -p1 -b .CVE-2015-1860
%patch200 -p1 -b .fullscreen
%patch201 -p1 -b .gcc34
# convert to UTF-8
iconv -f iso-8859-1 -t utf-8 < doc/man/man3/qdial.3qt > doc/man/man3/qdial.3qt_
@ -394,7 +354,7 @@ perl -pi -e "s,QMAKE_LIBDIR_OPENGL.*,QMAKE_LIBDIR_OPENGL\t=," mkspecs/*/qmake.co
# don't use rpath
perl -pi -e "s|-Wl,-rpath,| |" mkspecs/*/qmake.conf
perl -pi -e "s|-O2|$INCLUDES %{optflags} -fno-strict-aliasing|g" mkspecs/*/qmake.conf
perl -pi -e "s|-O2|$INCLUDES %{optflags}|g" mkspecs/*/qmake.conf
# set correct lib path
if [ "%{_lib}" == "lib64" ] ; then
@ -406,7 +366,7 @@ fi
echo yes | ./configure \
-prefix $QTDEST \
-docdir %{qt_docdir} \
%if "%{_lib}" == "lib64"
%if %{_lib} == lib64
-platform linux-g++-64 \
%else
-platform linux-g++ \
@ -451,9 +411,9 @@ echo yes | ./configure \
-xft \
-tablet
%make_build src-qmake
make $SMP_MFLAGS src-qmake
%if 0%{?rhel} && 0%{?rhel} < 7
%if 0%{?rhel} < 7
# build sqlite plugin
pushd plugins/src/sqldrivers/sqlite
qmake -o Makefile sqlite.pro
@ -475,9 +435,9 @@ pushd plugins/src/sqldrivers/odbc
qmake -o Makefile "LIBS+=-lodbc" odbc.pro
popd
%make_build src-moc
%make_build sub-src
%make_build sub-tools UIC="$QTDIR/bin/uic -nostdlib -L $QTDIR/plugins"
make $SMP_MFLAGS src-moc
make $SMP_MFLAGS sub-src
make $SMP_MFLAGS sub-tools UIC="$QTDIR/bin/uic -nostdlib -L $QTDIR/plugins"
%install
rm -rf %{buildroot}
@ -499,11 +459,6 @@ for i in findtr qt20fix qtrename140 lrelease lupdate ; do
install bin/$i %{buildroot}%{qtdir}/bin/
done
# strip extraneous dirs/libraries, stop overlinking
sed -i -e 's|^Libs: -L${libdir} -lqt-mt.*|Libs: -L${libdir} -lqt-mt|g' %{buildroot}%{qtdir}/lib/pkgconfig/*.pc
sed -i -e "s|^QMAKE_PRL_LIBS =.*|QMAKE_PRL_LIBS = -L%{qtdir}/lib -lqt-mt|g" %{buildroot}%{qtdir}/lib/*.prl
# pkgconfig love
mkdir -p %{buildroot}%{_libdir}/pkgconfig/
mv %{buildroot}%{qtdir}/lib/pkgconfig/*.pc %{buildroot}%{_libdir}/pkgconfig/
@ -561,11 +516,15 @@ install -m 644 tools/assistant/images/linguist.png %{buildroot}%{_datadir}/pixma
mkdir -p %{buildroot}%{qtdir}/plugins/styles
%clean
rm -rf %{buildroot}
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%files
%defattr(-,root,root,-)
%doc FAQ LICENSE* README* changes*
%dir %{qtdir}
%dir %{qtdir}/bin
@ -587,11 +546,13 @@ mkdir -p %{buildroot}%{qtdir}/plugins/styles
%{qtdir}/lib/libqt*.so.*
%files config
%defattr(-,root,root,-)
%{qtdir}/bin/qtconfig
%{_datadir}/applications/*qtconfig*.desktop
%{_datadir}/pixmaps/qtconfig3.png
%files devel
%defattr(-,root,root,-)
%{qt_docdir}/
%{qtdir}/bin/moc
%{qtdir}/bin/uic
@ -621,25 +582,31 @@ mkdir -p %{buildroot}%{qtdir}/plugins/styles
%{_datadir}/pixmaps/assistant3.png
%files devel-docs
%defattr(-,root,root,-)
%doc examples
%doc tutorial
%{_mandir}/*/*
%if 0%{?rhel} && 0%{?rhel} < 7
%if 0%{?rhel} < 7
%files sqlite
%defattr(-,root,root,-)
%{qtdir}/plugins/sqldrivers/libqsqlite.so
%endif
%files ODBC
%defattr(-,root,root,-)
%{qtdir}/plugins/sqldrivers/libqsqlodbc.so
%files PostgreSQL
%defattr(-,root,root,-)
%{qtdir}/plugins/sqldrivers/libqsqlpsql.so
%files MySQL
%defattr(-,root,root,-)
%{qtdir}/plugins/sqldrivers/libqsqlmysql.so
%files designer
%defattr(-,root,root,-)
%{qtdir}/templates
%{qtdir}/bin/designer
%{_datadir}/applications/*designer*.desktop
@ -647,207 +614,6 @@ mkdir -p %{buildroot}%{qtdir}/plugins/styles
%changelog
* Fri Jul 25 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8b-102
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8b-101
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Wed Aug 07 2024 Miroslav Suchý <msuchy@redhat.com> - 3.3.8b-100
- convert license to SPDX
* Fri Jul 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8b-99
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Fri Jan 26 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8b-98
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Mon Jan 22 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8b-97
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Thu Nov 30 2023 Lukas Javorsky <ljavorsk@redhat.com> - 3.3.8b-96
- Rebuilt for PostgreSQL 16 (BZ#2251109)
- For more info see the Fedora Change: https://fedoraproject.org/wiki/Changes/PostgreSQL_16
* Fri Jul 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8b-95
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Fri Jan 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8b-94
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Wed Nov 16 2022 Ondřej Sloup <osloup@redhat.com> - 3.3.8b-93
- Rebuild for new PostgreSQL 15
* Fri Sep 09 2022 Than Ngo <than@redhat.com> - 3.3.8b-92
- fixed bz#2120316 - qt3 shouldn't require postgresql-private-devel
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8b-91
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Fri Jan 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8b-90
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Tue Jan 11 2022 Than Ngo <than@redhat.com> - 3.3.8b-89
- Rebuild for Postgresql 14
* Thu Sep 16 2021 Than Ngo <than@redhat.com> - 3.3.8b-88
- Fix FTBFS
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8b-87
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Mon Feb 08 2021 Pavel Raiskup <praiskup@redhat.com> - 3.3.8b-86
- rebuild for libpq ABI fix rhbz#1908268
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8b-85
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8b-84
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Tue Jul 21 2020 Than Ngo <than@redhat.com> - 3.3.8b-83
- Use make macros, https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro
* Thu Jul 16 2020 Than Ngo <than@redhat.com> - 3.3.8b-82
- fixed 1839125 - compile with PostgreSQL 12, FTBFS
* Thu Apr 02 2020 Björn Esser <besser82@fedoraproject.org> - 3.3.8b-81
- Fix string quoting for rpm >= 4.16
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8b-80
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8b-79
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8b-78
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Sat Jan 05 2019 Kevin Kofler <Kevin@tigcc.ticalc.org> - 3.3.8b-77
- Hardcode the compiler version in the build key once and for all
- Rename the struct Param in qsqlextension_p.h that conflicts with PostgreSQL 11
* Fri Jul 20 2018 Rex Dieter <rdieter@fedoraproject.org> - 3.3.8b-76
- BR: gcc-c++
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8b-75
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Thu May 31 2018 Kevin Kofler <Kevin@tigcc.ticalc.org> - 3.3.8b-74
- Fix CVE-2016-10040 (stack overflow in QXmlSimpleReader due to a too high
entityCharacterLimit in the CVE-2013-4549 patch) (#1409603)
* Fri Feb 09 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 3.3.8b-73
- Escape macros in %%changelog
* Mon Nov 13 2017 Than Ngo <than@redhat.com> - 3.3.8b-72
- backport mysql driver mariadb fix
- BR: mariadb-connector-c-devel (f28+, #1494085)
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8b-71
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8b-70
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8b-69
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Mon Mar 28 2016 Ville Skyttä <ville.skytta@iki.fi> - 3.3.8b-68
- qt.sh: Avoid unnecessary command invocations
* Wed Feb 10 2016 Rex Dieter <rdieter@fedoraproject.org> 3.3.8b-67
- update gccX-buildkey.patch
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8b-66
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3.8b-65
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Mon May 04 2015 Kevin Kofler <Kevin@tigcc.ticalc.org> - 3.3.8b-64
- updated gcc5-buildkey patch for GCC 5 (supersedes gcc4-buildkey) (#1218091)
* Tue Apr 21 2015 Kevin Kofler <Kevin@tigcc.ticalc.org> - 3.3.8b-63
- backport CVE-2015-1860 (GIF handler buffer overflow, #1210675) fix from Qt 4
* Sat Feb 28 2015 Kevin Kofler <Kevin@tigcc.ticalc.org> - 3.3.8b-62
- backport CVE-2015-0295 (BMP image handler DoS, #1197275) fix from Qt 4
* Fri Feb 27 2015 Rex Dieter <rdieter@fedoraproject.org> 3.3.8b-61
- rebuild (gcc5)
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3.8b-60
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3.8b-59
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Thu May 29 2014 Kevin Kofler <Kevin@tigcc.ticalc.org> - 3.3.8b-58
- backport CVE-2014-0190 (GIF image handler DoS, QTBUG-38367) fix from Qt 4
* Sun Feb 23 2014 Kevin Kofler <Kevin@tigcc.ticalc.org> - 3.3.8b-57
- add ppc64le support to qt.sh and qt.csh (#1068898)
- fix ppc64 support in qt.csh
- search for FreeType using pkg-config, fixes FTBFS with freetype >= 2.5.1
* Tue Jan 14 2014 Kevin Kofler <Kevin@tigcc.ticalc.org> - 3.3.8b-56
- work around -Werror=format-security false positives (#1037297)
* Mon Jan 13 2014 Kevin Kofler <Kevin@tigcc.ticalc.org> - 3.3.8b-55
- fix QTBUG-35459 (too low entityCharacterLimit=1024 for CVE-2013-4549)
- fix QTBUG-35460 (error message for CVE-2013-4549 is misspelled)
* Thu Dec 05 2013 Kevin Kofler <Kevin@tigcc.ticalc.org> - 3.3.8b-54
- backport CVE-2013-4549 fix from Qt 4
* Tue Aug 27 2013 Rex Dieter <rdieter@fedoraproject.org> 3.3.8b-53
- trim changelog
* Tue Aug 27 2013 Rex Dieter <rdieter@fedoraproject.org> 3.3.8b-52
- strip extraneous libs from .pc/.prl files
- -devel: due to ^^, drop non-X11-related deps too
* Mon Aug 26 2013 Jon Ciesla <limburgher@gmail.com> - 3.3.8b-51
- libmng rebuild.
* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3.8b-50
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Wed Jul 17 2013 Petr Pisar <ppisar@redhat.com> - 3.3.8b-49
- Perl 5.18 rebuild
* Thu Apr 25 2013 Than Ngo <than@redhat.com> - 3.3.8b-48
- build with -fno-strict-aliasing
- drop deprecated Encoding
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3.8b-47
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Mon Jan 21 2013 Adam Tkac <atkac redhat com> - 3.3.8b-46
- rebuild due to "jpeg8-ABI" feature drop
* Wed Oct 24 2012 Rex Dieter <rdieter@fedoraproject.org> 3.3.8b-45
- rebuild (libjpeg-turbo v8)
* Tue Oct 09 2012 Than Ngo <than@redhat.com> - 3.3.8b-44
- fix url
* Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3.8b-43
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Wed Apr 18 2012 Than Ngo <than@redhat.com> - 3.3.8b-42
- add rhel condition
* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3.8b-41
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
* Sat Dec 10 2011 Kevin Kofler <Kevin@tigcc.ticalc.org> - 3.3.8b-40
- fix FTBFS with F17's libpng 1.5 (patch from NetBSD)
* Tue Dec 06 2011 Adam Jackson <ajax@redhat.com> - 3.3.8b-39
- Rebuild for new libpng
* Thu Dec 01 2011 Than Ngo <than@redhat.com> - 3.3.8b-38
- add rhel7 condition
@ -942,7 +708,7 @@ mkdir -p %{buildroot}%{qtdir}/plugins/styles
- fix obsolete/provides of version/release
* Thu Mar 13 2008 Kevin Kofler <Kevin@tigcc.ticalc.org> 3.3.8b-10
- fix %%{?epoch:%%{epoch}:} idiom not to add a ':' after it
- fix %{?epoch:%{epoch}:} idiom not to add a ':' after it
* Wed Mar 12 2008 Kevin Kofler <Kevin@tigcc.ticalc.org> 3.3.8b-9
- rename to qt3 on Fedora >= 9
@ -1998,13 +1764,13 @@ mkdir -p %{buildroot}%{qtdir}/plugins/styles
- fix compilation of the NSPlugin add-on
* Fri Mar 3 2000 Bill Nottingham <notting@redhat.com>
- fix %%postun script
- fix %postun script
* Fri Feb 18 2000 Bernhard Rosenkränzer <bero@redhat.com>
- beta1
- get rid of qt-ImageIO, the functionality is now in the main Qt library
- remove qt-Network, the functionality is now in the main Qt library
- add changes-2.1.0 to %%doc
- add changes-2.1.0 to %doc
* Thu Feb 17 2000 Preston Brown <pbrown@redhat.com>
- no refcount check on postun script, we want it to happen even on upgrades

View file

@ -4,5 +4,6 @@ Comment=Configure Qt3 behavior, styles, fonts
Exec=qtconfig
Icon=qtconfig3
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Settings;