rpms/kdelibs/FC-5 kdelibs-3.5.3-kde#118277.patch, NONE, 1.1 kdelibs-3.5.3-kde#123315.patch, NONE, 1.1 kdelibs-3.5.3-kde#128760.patch, NONE, 1.1 kdelibs-3.5.3-kde#128842.patch, NONE, 1.1 kdelibs-3.5.3-kde#128902.patch, NONE, 1.1 kdelibs-3.5.3-kde#57159.patch, NONE, 1.1 kdelibs-3.5.3-kde#65546.patch, NONE, 1.1 kdelibs-3.5.3-kde#67849.patch, NONE, 1.1 kdelibs-3.5.3-kde#81806.patch, NONE, 1.1 kdelibs-3.5.3-khtml-regression.patch, NONE, 1.1 kdelibs-3.5.3.diff, NONE, 1.1 kdelibs.spec, 1.133, 1.134

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Tue Jul 4 21:56:05 UTC 2006


Author: than

Update of /cvs/dist/rpms/kdelibs/FC-5
In directory cvs.devel.redhat.com:/tmp/cvs-serv13988

Modified Files:
	kdelibs.spec 
Added Files:
	kdelibs-3.5.3-kde#118277.patch kdelibs-3.5.3-kde#123315.patch 
	kdelibs-3.5.3-kde#128760.patch kdelibs-3.5.3-kde#128842.patch 
	kdelibs-3.5.3-kde#128902.patch kdelibs-3.5.3-kde#57159.patch 
	kdelibs-3.5.3-kde#65546.patch kdelibs-3.5.3-kde#67849.patch 
	kdelibs-3.5.3-kde#81806.patch 
	kdelibs-3.5.3-khtml-regression.patch kdelibs-3.5.3.diff 
Log Message:
- apply upstream patches,
   fix #128940/#81806/#57159/#118277/#123315/#65546/#128842/#128902/#67849/#81806
- fix #196013, mark kde.sh/kde.csh as config file
- fix #178323 #196225, typo in kde.sh


kdelibs-3.5.3-kde#118277.patch:
 html/html_baseimpl.cpp      |   25 +++++++++++++++++++++++++
 html/html_baseimpl.h        |    4 ++++
 khtmlview.cpp               |   14 +++++++++-----
 rendering/render_form.h     |    5 -----
 rendering/render_frames.h   |    8 ++++++++
 rendering/render_object.cpp |   10 +++++++---
 rendering/render_replaced.h |    5 +++++
 7 files changed, 58 insertions(+), 13 deletions(-)

--- NEW FILE kdelibs-3.5.3-kde#118277.patch ---
Index: khtml/khtmlview.cpp
===================================================================
--- khtml/khtmlview.cpp	(Revision 555344)
+++ khtml/khtmlview.cpp	(Revision 555345)
@@ -660,7 +660,14 @@
 	QWidget *w = it.current();
 	RenderWidget* rw = static_cast<RenderWidget*>( it.currentKey() );
 	if (w && rw && !rw->isKHTMLWidget()) { 
-            QRect g = w->geometry();
+            int x, y;
+            rw->absolutePosition(x, y);
+            contentsToViewport(x, y, x, y);
+            int pbx = rw->borderLeft()+rw->paddingLeft();
+            int pby = rw->borderTop()+rw->paddingTop();
+            QRect g = QRect(x+pbx, y+pby, 
+                            rw->width()-pbx-rw->borderRight()-rw->paddingRight(), 
+                            rw->height()-pby-rw->borderBottom()-rw->paddingBottom());
             if ( !rw->isFrame() && ((g.top() > pt.y()+eh) || (g.bottom() <= pt.y()) ||
                                     (g.right() <= pt.x()) || (g.left() > pt.x()+ew) ))
                 continue;
@@ -673,10 +680,7 @@
                 mask = mask.intersect( QRect(g.x(),g.y(),g.width(),g.height()) );
                 cr -= mask;
             } else {
-                int x, y;
-                rw->absolutePosition(x,y);
-                contentsToViewport(x,y,x,y);
-                cr -= QRect(x,y,rw->width(),rw->height());
+                cr -= g;
             }
         }
     }
Index: khtml/html/html_baseimpl.cpp
===================================================================
--- khtml/html/html_baseimpl.cpp	(Revision 555344)
+++ khtml/html/html_baseimpl.cpp	(Revision 555345)
@@ -584,6 +584,7 @@
     marginWidth = 0;
     marginHeight = 0;
     needWidgetUpdate = false;
+    m_frame = true;
 }
 
 HTMLIFrameElementImpl::~HTMLIFrameElementImpl()
@@ -615,17 +616,41 @@
         needWidgetUpdate = true; // ### do this for scrolling, margins etc?
         HTMLFrameElementImpl::parseAttribute( attr );
         break;
+    case ATTR_FRAMEBORDER:
+    {
+        m_frame = (!attr->val() || attr->value().toInt() > 0);
+        if (attached()) updateFrame();
+    }
     default:
         HTMLFrameElementImpl::parseAttribute( attr );
     }
 }
 
+void HTMLIFrameElementImpl::updateFrame()
+{
+    if (m_frame) {
+        addCSSProperty(CSS_PROP_BORDER_TOP_STYLE, CSS_VAL_OUTSET);
+        addCSSProperty(CSS_PROP_BORDER_BOTTOM_STYLE, CSS_VAL_OUTSET);
+        addCSSProperty(CSS_PROP_BORDER_LEFT_STYLE, CSS_VAL_OUTSET);
+        addCSSProperty(CSS_PROP_BORDER_RIGHT_STYLE, CSS_VAL_OUTSET);
+        addCSSLength(CSS_PROP_BORDER_WIDTH, "2");
+    } else {
+        addCSSProperty(CSS_PROP_BORDER_TOP_STYLE, CSS_VAL_NONE);
+        addCSSProperty(CSS_PROP_BORDER_BOTTOM_STYLE, CSS_VAL_NONE);
+        addCSSProperty(CSS_PROP_BORDER_LEFT_STYLE, CSS_VAL_NONE);
+        addCSSProperty(CSS_PROP_BORDER_RIGHT_STYLE, CSS_VAL_NONE);
+        removeCSSProperty(CSS_PROP_BORDER_WIDTH);
+    }
+
+}
+
 void HTMLIFrameElementImpl::attach()
 {
     assert(!attached());
     assert(!m_render);
     assert(parentNode());
 
+    updateFrame();
     name = getAttribute(ATTR_NAME);
     if (name.isNull())
         name = getAttribute(ATTR_ID);
Index: khtml/html/html_baseimpl.h
===================================================================
--- khtml/html/html_baseimpl.h	(Revision 555344)
+++ khtml/html/html_baseimpl.h	(Revision 555345)
@@ -190,7 +190,11 @@
     virtual void recalcStyle( StyleChange ch );
 
 protected:
+
+    void updateFrame();
+
     bool needWidgetUpdate;
+    bool m_frame;
 };
 
 
Index: khtml/rendering/render_form.h
===================================================================
--- khtml/rendering/render_form.h	(Revision 555344)
+++ khtml/rendering/render_form.h	(Revision 555345)
@@ -78,11 +78,6 @@
 
     virtual bool isFormElement() const { return true; }
 
-    virtual int borderTop() const { return canHaveBorder() ? RenderWidget::borderTop() : 0; }
-    virtual int borderBottom() const { return canHaveBorder() ? RenderWidget::borderBottom() : 0; }
-    virtual int borderLeft() const { return canHaveBorder() ? RenderWidget::borderLeft() : 0; }
-    virtual int borderRight() const { return canHaveBorder() ? RenderWidget::borderRight() : 0; }
-
     // form elements never have padding
     virtual int paddingTop() const { return 0; }
     virtual int paddingBottom() const { return 0; }
Index: khtml/rendering/render_frames.h
===================================================================
--- khtml/rendering/render_frames.h	(Revision 555344)
+++ khtml/rendering/render_frames.h	(Revision 555345)
@@ -130,6 +130,12 @@
     virtual const char *renderName() const { return "RenderFrame"; }
     virtual bool isFrame() const { return true; }
 
+    // frames never have padding
+    virtual int paddingTop() const { return 0; }
+    virtual int paddingBottom() const { return 0; }
+    virtual int paddingLeft() const { return 0; }
+    virtual int paddingRight() const { return 0; }
+
     DOM::HTMLFrameElementImpl *element() const
     { return static_cast<DOM::HTMLFrameElementImpl*>(RenderObject::element()); }
 
@@ -150,6 +156,8 @@
 
     virtual void layout( );
     virtual void updateWidget();
+    
+    virtual bool canHaveBorder() const { return true; }
 
     virtual bool partLoadingErrorNotify( khtml::ChildFrame *childFrame, const KURL& url, const QString& serviceType );
 
Index: khtml/rendering/render_replaced.h
===================================================================
--- khtml/rendering/render_replaced.h	(Revision 555344)
+++ khtml/rendering/render_replaced.h	(Revision 555345)
@@ -146,6 +146,11 @@
     bool m_needsMask;
 
 public:
+    virtual int borderTop() const { return canHaveBorder() ? RenderReplaced::borderTop() : 0; }
+    virtual int borderBottom() const { return canHaveBorder() ? RenderReplaced::borderBottom() : 0; }
+    virtual int borderLeft() const { return canHaveBorder() ? RenderReplaced::borderLeft() : 0; }
+    virtual int borderRight() const { return canHaveBorder() ? RenderReplaced::borderRight() : 0; }
+
     class EventPropagator : public QWidget {
     public:
         void sendEvent(QEvent *e);
Index: khtml/rendering/render_object.cpp
===================================================================
--- khtml/rendering/render_object.cpp	(Revision 555344)
+++ khtml/rendering/render_object.cpp	(Revision 555345)
@@ -2182,9 +2182,13 @@
             QRegion r = l ? l->getMask() : QRegion();
             int x,y;
             if (!r.isNull() && curr->absolutePosition(x,y)) {
-                x+= curr->borderLeft()+curr->paddingLeft();
-                y+= curr->borderBottom()+curr->paddingBottom();
-                r = r.intersect(QRect(x,y,curr->width(),curr->height()));
+                int pbx = curr->borderLeft()+curr->paddingLeft();
+                int pby = curr->borderTop()+curr->paddingTop();
+                x+= pbx;
+                y+= pby;
+                r = r.intersect(QRect(x,y,
+                                  curr->width()-pbx-curr->borderRight()-curr->paddingRight(),
+                                  curr->height()-pby-curr->borderBottom()-curr->paddingBottom()));
 #ifdef MASK_DEBUG
                 QMemArray<QRect> ar = r.rects();
                 kdDebug(6040) << "|| Setting widget mask for " << curr->information() << endl;

kdelibs-3.5.3-kde#123315.patch:
 kdirwatch.cpp |   75 ++++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 52 insertions(+), 23 deletions(-)

--- NEW FILE kdelibs-3.5.3-kde#123315.patch ---
--- kio/kio/kdirwatch.cpp.kde#123315	2006-05-22 20:14:17.000000000 +0200
+++ kio/kio/kdirwatch.cpp	2006-07-03 08:40:04.000000000 +0200
@@ -340,7 +340,7 @@
   kdDebug(7001) << "Available methods: " << available << endl;
 }
 
-/* This should never be called, but doesn't harm */
+/* This is called on app exit (KStaticDeleter) */
 KDirWatchPrivate::~KDirWatchPrivate()
 {
   timer->stop();
@@ -407,9 +407,6 @@
       if ( event->len )
         path = QFile::decodeName( QCString( event->name, event->len ) );
 
-      if ( event->mask & IN_IGNORED )
-        continue;
-
       if ( path.length() && isNoisyFile( path.latin1() ) )
         continue;
 
@@ -428,12 +425,15 @@
             if( event->mask & IN_DELETE_SELF) {
               kdDebug(7001) << "-->got deleteself signal for " << e->path << endl;
               e->m_status = NonExistent;
-              //(void) inotify_rm_watch( m_inotify_fd, e->wd );
-              addEntry(0, QDir::cleanDirPath(e->path+"/.."), e, true);
+              if (e->isDir)
+                addEntry(0, QDir::cleanDirPath(e->path+"/.."), e, true);
+              else
+                addEntry(0, QFileInfo(e->path).dirPath(true), e, true);
+            }
+            if ( event->mask & IN_IGNORED ) {
+              e->wd = 0;
             }
             if ( event->mask & (IN_CREATE|IN_MOVED_TO) ) {
-              kdDebug(7001) << "-->got new subfile " << path << " in " << e->path << endl;
-
               Entry *sub_entry = e->m_entries.first();
               for(;sub_entry; sub_entry = e->m_entries.next())
                 if (sub_entry->path == e->path + "/" + path) break;
@@ -727,7 +727,10 @@
     return true;
 
   if ( e->m_status == NonExistent ) {
-    addEntry(0, QDir::cleanDirPath(e->path+"/.."), e, true);
+    if (e->isDir) 
+      addEntry(0, QDir::cleanDirPath(e->path+"/.."), e, true);
+    else
+      addEntry(0, QFileInfo(e->path).dirPath(true), e, true);
     return true;
   }
 
@@ -782,7 +785,9 @@
        (*it).m_entries.append(sub_entry);
        kdDebug(7001) << "Added already watched Entry " << path
 		     << " (for " << sub_entry->path << ")" << endl;
+
 #ifdef HAVE_DNOTIFY
+     {
        Entry* e = &(*it);
        if( (e->m_mode == DNotifyMode) && (e->dn_fd > 0) ) {
          int mask = DN_DELETE|DN_CREATE|DN_RENAME|DN_MULTISHOT;
@@ -797,7 +802,25 @@
            useStat( e );
          }
        }
+     }
+#endif
+
+#ifdef HAVE_INOTIFY
+     {
+       Entry* e = &(*it);
+       if( (e->m_mode == INotifyMode) && (e->wd > 0) ) {
+         int mask = IN_DELETE|IN_DELETE_SELF|IN_CREATE|IN_MOVE|IN_MOVE_SELF|IN_DONT_FOLLOW;
+         if(!e->isDir)
+           mask |= IN_MODIFY|IN_ATTRIB;
+         else
+           mask |= IN_ONLYDIR;
+
+         inotify_rm_watch (m_inotify_fd, e->wd);
+         e->wd = inotify_add_watch( m_inotify_fd, QFile::encodeName( e->path ), mask);
+       }
+    }
 #endif
+ 
     }
     else {
        (*it).addClient(instance);
@@ -928,8 +951,12 @@
         m_inotify_fd << ", "  << e->wd <<
         ") for " << e->path << endl;
     }
-    else
-      removeEntry( 0, QDir::cleanDirPath( e->path+"/.." ), e );
+    else {
+      if (e->isDir)
+	removeEntry(0, QDir::cleanDirPath(e->path+"/.."), e);
+      else
+	removeEntry(0, QFileInfo(e->path).dirPath(true), e);
+    }
   }
 #endif
 
@@ -1167,15 +1194,6 @@
       return Changed;
     }
 
-#ifdef HAVE_INOTIFY
-    // for inotify we delay the initial stating till the first event in it
-    if ( e->m_status == Normal && e->m_ctime == invalid_ctime )
-    {
-      e->m_ctime = stat_buf.st_ctime;
-      e->m_nlink = stat_buf.st_nlink;
-    }
-#endif
-
     return NoChange;
   }
 
@@ -1278,7 +1296,7 @@
   // removeDir(), when called in slotDirty(), can cause a crash otherwise
   delayRemove = true;
 
-#ifdef HAVE_DNOTIFY
+#if defined(HAVE_DNOTIFY) || defined(HAVE_INOTIFY)
   QPtrList<Entry> dList, cList;
 #endif
 
@@ -1306,6 +1324,16 @@
 
     int ev = scanEntry( &(*it) );
 
+
+#ifdef HAVE_INOTIFY
+    if ((*it).m_mode == INotifyMode && ev == Created && (*it).wd == 0) {
+      cList.append( &(*it) );
+      if (! useINotify( &(*it) )) {
+        useStat( &(*it) );
+      }
+    }
+#endif
+
 #ifdef HAVE_DNOTIFY
     if ((*it).m_mode == DNotifyMode) {
       if ((*it).isDir && (ev == Deleted)) {
@@ -1337,7 +1365,7 @@
   }
 
 
-#ifdef HAVE_DNOTIFY
+#if defined(HAVE_DNOTIFY) || defined(HAVE_INOTIFY)
   // Scan parent of deleted directories for new creation
   Entry* e;
   for(e=dList.first();e;e=dList.next())
@@ -1542,7 +1570,8 @@
 	kdDebug(7001) << "    dependent entries:" << endl;
 	Entry* d = e->m_entries.first();
 	for(;d; d = e->m_entries.next()) {
-	  kdDebug(7001) << "      " << d->path << endl;
+          kdDebug(7001) << "      " << d << endl;
+	  kdDebug(7001) << "      " << d->path << " (" << d << ") " << endl;
 	}
       }
     }

kdelibs-3.5.3-kde#128760.patch:
 dom_textimpl.cpp |    2 ++
 1 files changed, 2 insertions(+)

--- NEW FILE kdelibs-3.5.3-kde#128760.patch ---
Index: khtml/xml/dom_textimpl.cpp
===================================================================
--- khtml/xml/dom_textimpl.cpp	(Revision 557103)
+++ khtml/xml/dom_textimpl.cpp	(Revision 557104)
@@ -389,6 +389,8 @@
         }
 
         RenderObject *first = par->firstChild();
+        while (first && first->isFloatingOrPositioned())
+            first = first->nextSibling();
         RenderObject *next = nextRenderer();
         if (!first || next == first) {
             // Whitespace at the start of a block just goes away.  Don't even

kdelibs-3.5.3-kde#128842.patch:
 ustring.cpp |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

--- NEW FILE kdelibs-3.5.3-kde#128842.patch ---
Index: kjs/ustring.cpp
===================================================================
--- kjs/ustring.cpp	(Revision 549505)
+++ kjs/ustring.cpp	(Revision 549506)
@@ -131,18 +131,20 @@
 UChar UChar::toLower() const
 {
   // ### properly support unicode tolower
-  if (uc >= 256 || islower(uc))
+  if (uc >= 256)
     return *this;
 
-  return (unsigned char)tolower(uc);
+  // tolower is locale-dependent, don't use it.
+  return static_cast<unsigned char>( ( ( uc >= 'A' ) && ( uc <= 'Z' ) ) ? ( (int)uc + 'a' - 'A' ) : uc );
 }
 
 UChar UChar::toUpper() const
 {
-  if (uc >= 256 || isupper(uc))
+  if (uc >= 256)
     return *this;
 
-  return (unsigned char)toupper(uc);
+  // toupper is locale-dependent, don't use it.
+  return static_cast<unsigned char>( ( ( uc >= 'a' ) && ( uc <= 'z' ) ) ? ( (int)uc + 'A' - 'a' ) : uc );
 }
 
 UCharReference& UCharReference::operator=(UChar c)

kdelibs-3.5.3-kde#128902.patch:
 kjs_window.cpp |    4 +++-
 1 files changed, 3 insertions(+), 1 deletion(-)

--- NEW FILE kdelibs-3.5.3-kde#128902.patch ---
Index: khtml/ecma/kjs_window.cpp
===================================================================
--- khtml/ecma/kjs_window.cpp	(Revision 549887)
+++ khtml/ecma/kjs_window.cpp	(Revision 549888)
@@ -2464,8 +2464,10 @@
     break;
   case Location::Reload: {
     KHTMLPart *khtmlpart = ::qt_cast<KHTMLPart *>(part);
-    if (part)
+    if (khtmlpart)
       khtmlpart->scheduleRedirection(-1, part->url().url(), true/*lock history*/);
+    else
+      part->openURL(part->url());
     break;
   }
   case Location::ToString:

kdelibs-3.5.3-kde#57159.patch:
 css/css_stylesheetimpl.cpp |    4 ++++
 xml/dom_docimpl.cpp        |   12 ++++++++++--
 xml/dom_docimpl.h          |    6 +++++-
 3 files changed, 19 insertions(+), 3 deletions(-)

--- NEW FILE kdelibs-3.5.3-kde#57159.patch ---
Index: khtml/css/css_stylesheetimpl.cpp
===================================================================
--- khtml/css/css_stylesheetimpl.cpp	(Revision 555956)
+++ khtml/css/css_stylesheetimpl.cpp	(Revision 555957)
@@ -194,6 +194,8 @@
     // HIERARCHY_REQUEST_ERR: Raised if the rule cannot be inserted at the specified index e.g. if an
     //@import rule is inserted after a standard rule set or other at-rule.
     m_lstChildren->insert(index, r);
+    if (m_doc) 
+        m_doc->updateStyleSelector(true /*shallow*/);
     return index;
 }
 
@@ -211,6 +213,8 @@
         return;
     }
     b->deref();
+    if (m_doc)
+        m_doc->updateStyleSelector(true /*shallow*/);
 }
 
 void CSSStyleSheetImpl::addNamespace(CSSParser* p, const DOM::DOMString& prefix, const DOM::DOMString& uri)
Index: khtml/xml/dom_docimpl.cpp
===================================================================
--- khtml/xml/dom_docimpl.cpp	(Revision 555956)
+++ khtml/xml/dom_docimpl.cpp	(Revision 555957)
@@ -1976,7 +1976,7 @@
     if (exceptioncode) *exceptioncode = excode;
 }
 
-void DocumentImpl::updateStyleSelector()
+void DocumentImpl::updateStyleSelector(bool shallow)
 {
 //    kdDebug() << "PENDING " << m_pendingStylesheets << endl;
 
@@ -1984,7 +1984,10 @@
     if (m_pendingStylesheets > 0)
         return;
 
-    recalcStyleSelector();
+    if (shallow)
+        rebuildStyleSelector();
+    else
+        recalcStyleSelector();
     recalcStyle(Force);
 #if 0
 
@@ -2134,6 +2137,11 @@
     for (; it.current(); ++it)
 	it.current()->deref();
 
+    rebuildStyleSelector();
+}
+
+void DocumentImpl::rebuildStyleSelector()
+{
     // Create a new style selector
     delete m_styleSelector;
     QString usersheet = m_usersheet;
Index: khtml/xml/dom_docimpl.h
===================================================================
--- khtml/xml/dom_docimpl.h	(Revision 555956)
+++ khtml/xml/dom_docimpl.h	(Revision 555957)
@@ -258,10 +258,14 @@
      * <LINK>, <STYLE> or <BODY> elements, as well as processing instructions (XML documents only). A list is
      * constructed from these which is used to create the a new style selector which collates all of the stylesheets
      * found and is used to calculate the derived styles for all rendering objects.
+     *
+     * @param shallow If the stylesheet list for the document is unchanged, with only added or removed rules 
+     * in existing sheets, then set this argument to true for efficiency.
      */
-    void updateStyleSelector();
+    void updateStyleSelector(bool shallow=false);
 
     void recalcStyleSelector();
+    void rebuildStyleSelector();
 
     QString nextState();
 

kdelibs-3.5.3-kde#65546.patch:
 dtd.cpp |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

--- NEW FILE kdelibs-3.5.3-kde#65546.patch ---
Index: khtml/html/dtd.cpp
===================================================================
--- khtml/html/dtd.cpp	(Revision 549400)
+++ khtml/html/dtd.cpp	(Revision 549401)
@@ -599,8 +599,8 @@
         // _1 *
         return check_array(childID, tag_list_1) || check_array(childID, tag_list_6);
     case ID_P:
-        // P: ( _0 | TABLE ) *
-        return check_array(childID, tag_list_0) || (!strict && childID == ID_TABLE);
+        // P: ( _0 | TABLE | NOSCRIPT) *
+        return check_array(childID, tag_list_0) || (!strict && (childID == ID_TABLE || childID == ID_NOSCRIPT));
     case ID_H1:
     case ID_H2:
     case ID_H3:

kdelibs-3.5.3-kde#67849.patch:
 table_layout.cpp |    2 --
 1 files changed, 2 deletions(-)

--- NEW FILE kdelibs-3.5.3-kde#67849.patch ---
Index: khtml/rendering/table_layout.cpp
===================================================================
--- khtml/rendering/table_layout.cpp	(Revision 552381)
+++ khtml/rendering/table_layout.cpp	(Revision 552382)
@@ -288,8 +288,6 @@
 	int base = tableWidth * totalPercent / 100;
 	if ( base > available )
 	    base = available;
-	else
-	    totalPercent = 100;
 
 #ifdef DEBUG_LAYOUT
     qDebug("FixedTableLayout::layout: assigning percent width, base=%d, totalPercent=%d", base, totalPercent);

kdelibs-3.5.3-kde#81806.patch:
 dtd.cpp        |  352 ++++++++++++++++++---------------------------------------
 htmlparser.cpp |    5 
 2 files changed, 115 insertions(+), 242 deletions(-)

--- NEW FILE kdelibs-3.5.3-kde#81806.patch ---
Index: khtml/html/dtd.cpp
===================================================================
--- khtml/html/dtd.cpp	(Revision 552024)
+++ khtml/html/dtd.cpp	(Revision 552025)
@@ -259,261 +259,111 @@
     REQUIRED   // ID_TEXT
 };
 
-
-static const ushort tag_list_0[] = {
+// This a combination of HTML4.dtd XHTML11.dtd and various extensions
+// and deprecated elements
+static const ushort tag_list_inline[] = {
     ID_TEXT,
+    // %fontstyle
     ID_TT,
     ID_I,
     ID_B,
-    ID_U,
-    ID_S,
-    ID_STRIKE,
     ID_BIG,
     ID_SMALL,
+    ID_U,           // legacy
+    ID_S,           // legacy
+    ID_STRIKE,      // legacy
+    ID_FONT,        // legacy
+    ID_BASEFONT,    // legacy
+    // %phrase
     ID_EM,
     ID_STRONG,
     ID_DFN,
     ID_CODE,
+    ID_Q,
     ID_SAMP,
     ID_KBD,
     ID_VAR,
     ID_CITE,
     ID_ABBR,
     ID_ACRONYM,
-    ID_A,
-    ID_IMG,
-    ID_APPLET,
-    ID_OBJECT,
-    ID_EMBED,
-    ID_FONT,
-    ID_BASEFONT,
-    ID_BR,
-    ID_SCRIPT,
-    ID_MAP,
-    ID_Q,
     ID_SUB,
     ID_SUP,
-    ID_SPAN,
-    ID_BDO,
-    ID_IFRAME,
+    // %inline.forms
     ID_INPUT,
     ID_SELECT,
     ID_TEXTAREA,
     ID_LABEL,
     ID_BUTTON,
-    ID_INS,
-    ID_DEL,
-    ID_COMMENT,
-    ID_NOBR,
-    ID_WBR,
-    0
-};
-
-static const ushort tag_list_1[] = {
-    ID_TEXT,
-    ID_P,
-    ID_H1,
-    ID_H2,
-    ID_H3,
-    ID_H4,
-    ID_H5,
-    ID_H6,
-    ID_UL,
-    ID_OL,
-    ID_DIR,
-    ID_MENU,
-    ID_PRE,
-    ID_PLAINTEXT,
-    ID_DL,
-    ID_DIV,
-    ID_ILAYER,
-    ID_LAYER,
-    ID_CENTER,
-    ID_NOSCRIPT,
-    ID_NOFRAMES,
-    ID_BLOCKQUOTE,
-    ID_FORM,
-    ID_ISINDEX,
-    ID_HR,
-    ID_TABLE,
-    ID_FIELDSET,
-    ID_ADDRESS,
-    ID_TT,
-    ID_I,
-    ID_B,
-    ID_U,
-    ID_S,
-    ID_STRIKE,
-    ID_BIG,
-    ID_SMALL,
-    ID_EM,
-    ID_STRONG,
-    ID_DFN,
-    ID_CODE,
-    ID_SAMP,
-    ID_KBD,
-    ID_VAR,
-    ID_CITE,
-    ID_ABBR,
-    ID_ACRONYM,
+    // %special
     ID_A,
+    ID_OBJECT,
     ID_IMG,
     ID_APPLET,
-    ID_OBJECT,
-    ID_EMBED,
-    ID_FONT,
-    ID_BASEFONT,
+    ID_IFRAME,
+    ID_EMBED,       // ?
+    // %special.pre
     ID_BR,
-    ID_SCRIPT,
-    ID_MAP,
-    ID_Q,
-    ID_SUB,
-    ID_SUP,
     ID_SPAN,
     ID_BDO,
-    ID_IFRAME,
-    ID_INPUT,
-    ID_KEYGEN,
-    ID_SELECT,
-    ID_TEXTAREA,
-    ID_LABEL,
-    ID_BUTTON,
-    ID_COMMENT,
-    ID_LI,
-    ID_DD,
-    ID_XMP,
+    ID_MAP,
+    // %misc.inline
+    ID_SCRIPT,
     ID_INS,
     ID_DEL,
-    ID_NOBR,
-    ID_WBR,
-    ID_MARQUEE,
+    // non-standard:
+    ID_ILAYER,      // deprecated
+    ID_NOBR,        // ?
+    ID_WBR,         // ?
     0
 };
 
-static const ushort tag_list_2[] = {
-    ID_COMMENT,
+static const ushort tag_list_quirk_inline[] = {
+    ID_NOSCRIPT,    // block, but parsed as inline in Mozilla and MSIE
     0
 };
 
-static const ushort tag_list_3[] = {
-    ID_TEXT,
+static const ushort tag_list_block[] = {
+    ID_TEXT, // white-space is allowed
     ID_P,
+    // %headings
     ID_H1,
     ID_H2,
     ID_H3,
     ID_H4,
     ID_H5,
     ID_H6,
+    // %lists
     ID_UL,
     ID_OL,
-    ID_DIR,
-    ID_MENU,
-    ID_PRE,
-    ID_PLAINTEXT,
     ID_DL,
-    ID_DIV,
-    ID_ILAYER,
-    ID_LAYER,
-    ID_CENTER,
-    ID_NOSCRIPT,
-    ID_NOFRAMES,
-    ID_BLOCKQUOTE,
-    ID_FORM,
-    ID_ISINDEX,
+    ID_DIR,         // legacy
+    ID_MENU,        // legacy
+    // %blocktext
+    ID_PRE,
     ID_HR,
-    ID_TABLE,
-    ID_FIELDSET,
+    ID_BLOCKQUOTE,
     ID_ADDRESS,
-    ID_COMMENT,
-    ID_LI,
-    ID_DD,
-    ID_XMP,
-    ID_MARQUEE,
-    0
-};
-
-static const ushort tag_list_4[] = {
-    ID_TEXT,
-    ID_PARAM,
-    ID_P,
-    ID_H1,
-    ID_H2,
-    ID_H3,
-    ID_H4,
-    ID_H5,
-    ID_H6,
-    ID_UL,
-    ID_OL,
-    ID_DIR,
-    ID_MENU,
-    ID_PRE,
-    ID_PLAINTEXT,
-    ID_DL,
+    ID_PLAINTEXT,   // ?
+    ID_XMP,         // ?
+    ID_CENTER,      // legacy
+    // other
     ID_DIV,
-    ID_ILAYER,
-    ID_LAYER,
-    ID_CENTER,
+    ID_FIELDSET,
+    ID_TABLE,
     ID_NOSCRIPT,
     ID_NOFRAMES,
-    ID_BLOCKQUOTE,
     ID_FORM,
-    ID_ISINDEX,
-    ID_HR,
-    ID_TABLE,
-    ID_FIELDSET,
-    ID_ADDRESS,
-    ID_TEXT,
-    ID_TT,
-    ID_I,
-    ID_B,
-    ID_U,
-    ID_S,
-    ID_STRIKE,
-    ID_BIG,
-    ID_SMALL,
-    ID_EM,
-    ID_STRONG,
-    ID_DFN,
-    ID_CODE,
-    ID_SAMP,
-    ID_KBD,
-    ID_VAR,
-    ID_CITE,
-    ID_ABBR,
-    ID_ACRONYM,
-    ID_A,
-    ID_IMG,
-    ID_APPLET,
-    ID_OBJECT,
-    ID_EMBED,
-    ID_FONT,
-    ID_BASEFONT,
-    ID_BR,
-    ID_SCRIPT,
-    ID_MAP,
-    ID_Q,
-    ID_SUB,
-    ID_SUP,
-    ID_SPAN,
-    ID_BDO,
-    ID_IFRAME,
-    ID_INPUT,
-    ID_SELECT,
-    ID_TEXTAREA,
-    ID_LABEL,
-    ID_BUTTON,
-    ID_COMMENT,
-    ID_LI,
-    ID_DD,
-    ID_XMP,
-    ID_MARQUEE,
+    ID_ISINDEX,     // legacy
+    // non-standard:
+    ID_LAYER,       // deprecated
+    ID_MARQUEE,     // extension
     0
 };
 
-static const ushort tag_list_6[] = {
-    ID_DT,
+// block elements allowed for quirky error recovery
+static const ushort tag_list_quirk_block[] = {
+    ID_LI,
     ID_DD,
-    ID_COMMENT,
     0
 };
 
@@ -521,7 +371,6 @@
     ID_TEXT,
     ID_OPTGROUP,
     ID_OPTION,
-    ID_COMMENT,
     ID_SCRIPT,
     0
 };
@@ -530,19 +379,19 @@
     ID_FRAMESET,
     ID_FRAME,
     ID_NOFRAMES,
-    ID_COMMENT,
     0
 };
 
+// %head.content
 static const ushort tag_list_11[] = {
     ID_SCRIPT,
     ID_STYLE,
     ID_META,
     ID_LINK,
+    ID_OBJECT,
     ID_TITLE,
-    ID_ISINDEX,
     ID_BASE,
-    ID_COMMENT,
+    ID_ISINDEX,
     0
 };
 
@@ -557,7 +406,23 @@
     return false;
 }
 
+static bool check_block(ushort childID, bool strict)
+{
+    return check_array(childID, tag_list_block) ||
+           (!strict && check_array(childID, tag_list_quirk_block));
+}
 
+static bool check_inline(ushort childID, bool strict)
+{
+    return check_array(childID, tag_list_inline) ||
+           (!strict && check_array(childID, tag_list_quirk_inline));
+}
+
+static bool check_flow(ushort childID, bool strict)
+{
+    return check_block(childID, strict) || check_inline(childID, strict);
+}
+
 bool DOM::checkChild(ushort tagID, ushort childID, bool strict)
 {
     //kdDebug( 6030 ) << "checkChild: " << tagID << "/" << childID << endl;
@@ -567,6 +432,8 @@
     if (tagID >= 1000 || childID >= 1000)
         return true; // one or both of the elements in an XML element; just allow for now
 
+    if (childID == ID_COMMENT) return true;
+
     switch(tagID)
     {
     case ID_TT:
@@ -593,23 +460,27 @@
     case ID_FONT:
     case ID_LEGEND:
     case ID_Q:
-    case ID_A:
     case ID_NOBR:
     case ID_WBR:
-        // _1 *
-        return check_array(childID, tag_list_1) || check_array(childID, tag_list_6);
+        // %inline *
+        return check_inline(childID, strict) ||
+               (!strict && check_block(childID, true));
+    case ID_A:
+        // A: %inline * (but even strict sites expect %flow)
+        return check_flow(childID, true);
     case ID_P:
-        // P: ( _0 | TABLE | NOSCRIPT) *
-        return check_array(childID, tag_list_0) || (!strict && (childID == ID_TABLE || childID == ID_NOSCRIPT));
+        // P: %inline *
+        return check_inline(childID, strict) || 
+               (!strict && childID == ID_TABLE );
     case ID_H1:
     case ID_H2:
     case ID_H3:
     case ID_H4:
     case ID_H5:
     case ID_H6:
-        // _0 *
-        return check_array(childID, tag_list_0) ||
-               (!strict && check_array(childID, tag_list_3) && (childID < ID_H1 || childID > ID_H6));
+        // %inline *
+        return check_inline(childID, strict) ||
+               (!strict && check_block(childID, true) && (childID < ID_H1 || childID > ID_H6));
     case ID_BASEFONT:
     case ID_BR:
     case ID_AREA:
@@ -627,13 +498,16 @@
         // BASEFONT: EMPTY
         return false;
     case ID_BODY:
-        // BODY: _1 * + _2
-        return check_array(childID, tag_list_1) || check_array(childID, tag_list_2);
+        // BODY: %block | SCRIPT (but even strict sites expect %flow)
+        return check_flow(childID, strict);
     case ID_ADDRESS:
-        // ADDRESS: ( _0 | P ) *
-        return check_array(childID, tag_list_0) || childID == ID_P;
+        // ADDRESS: %inline *
+        return check_inline(childID, strict) || 
+               (!strict && childID == ID_P);
     case ID_DT:
-        if ( childID == ID_DL ) return false;
+        // DT: %inline *
+        return check_inline(childID, strict) || 
+              (!strict && check_block(childID, true) && childID != ID_DL);
     case ID_LI:
     case ID_DIV:
     case ID_SPAN:
@@ -651,47 +525,48 @@
     case ID_NOSCRIPT:
     case ID_CAPTION:
     case ID_MARQUEE:
-        // DIV: _1 *
-        return check_array(childID, tag_list_1);
+        // DIV: %flow *
+        return check_flow(childID, strict);
     case ID_MAP:
-	// We accept SCRIPT in client-side image maps as an extension to the DTD.
-        // MAP: ( _3 + | AREA + | SCRIPT + )
-        return check_array(childID, tag_list_3) ||
-            childID == ID_AREA ||
-            childID == ID_SCRIPT;
+        // MAP: ( %block | AREA ) + 
+        return check_block(childID, true) || childID == ID_AREA ||
+               (!strict && childID == ID_SCRIPT);
     case ID_OBJECT:
     case ID_EMBED:
     case ID_APPLET:
-        // OBJECT: _4 *
-        return check_array(childID, tag_list_4);
+        // OBJECT: %flow | PARAM *
+        return check_flow(childID, true) || childID == ID_PARAM;
     case ID_PRE:
     case ID_XMP:
     case ID_PLAINTEXT:
-        // PRE: _0 * - _5
-        return check_array(childID, tag_list_1);
+        // PRE: %flow * - _5
+        return check_flow(childID, true);
     case ID_DL:
-        // DL: _6 +
-        return check_array(childID, tag_list_6) || check_array(childID, tag_list_1);
+        // DL: DT | DD +
+        return (childID == ID_DT || childID == ID_DD || childID == ID_TEXT) || 
+               (!strict && check_flow(childID, true));
     case ID_OL:
     case ID_UL:
         // OL: LI +
-        return check_array(childID, tag_list_1);
+        return (childID == ID_LI || childID == ID_TEXT) || 
+               (!strict && check_flow(childID, true));
     case ID_DIR:
     case ID_MENU:
         // (DIR|MENU): LI + - _3
         if(childID == ID_LI) return true;
         return false;
     case ID_FORM:
-        // FORM: _1 * - FORM
-        return check_array(childID, tag_list_1);
+        // FORM: %flow * - FORM
+        return check_flow(childID, strict);
     case ID_LABEL:
-        // LABEL: _1 * - LABEL
-        return check_array(childID, tag_list_1);
+        // LABEL: %inline * - LABEL
+        return check_inline(childID, strict) ||
+               (!strict && check_block(childID, true));
+    case ID_KEYGEN:
         // KEYGEN does not really allow any children
         // from outside, just need this to be able
         // to add the keylengths ourself
         // Yes, consider it a hack (Dirk)
-    case ID_KEYGEN:
     case ID_SELECT:
         // SELECT: _7 +
         return check_array(childID, tag_list_7);
@@ -708,13 +583,13 @@
         if(childID == ID_TEXT) return true;
         return false;
     case ID_FIELDSET:
-        // FIELDSET: ( TEXT , LEGEND , _1 * )
+        // FIELDSET: ( TEXT , LEGEND , %flow * )
         if(childID == ID_TEXT) return true;
         if(childID == ID_LEGEND) return true;
-        return check_array(childID, tag_list_1);
+        return check_flow(childID, strict);
     case ID_BUTTON:
-        // BUTTON: _1 * - _8
-        return check_array(childID, tag_list_1);
+        // BUTTON: %flow * - _8
+        return check_flow(childID, strict);
     case ID_TABLE:
         // TABLE: ( CAPTION ? , ( COL * | COLGROUP * ) , THEAD ? , TFOOT ? , TBODY + )
         switch(childID)
@@ -755,7 +630,6 @@
         switch(childID)
         {
         case ID_HEAD:
-        case ID_COMMENT:
         case ID_BODY:
         case ID_FRAMESET:
         case ID_NOFRAMES:
Index: khtml/html/htmlparser.cpp
===================================================================
--- khtml/html/htmlparser.cpp	(Revision 552024)
+++ khtml/html/htmlparser.cpp	(Revision 552025)
@@ -371,12 +371,11 @@
         HTMLElementImpl *e;
         bool handled = false;
 
-        // first switch on current element for a elements with optional end-tag
+        // first switch on current element for elements with optional end-tag and inline-only content
         switch(current->id())
         {
         case ID_P:
-        case ID_DD:
-        case ID_LI:
+        case ID_DT:
             if(!n->isInline())
             {
                 popBlock(current->id());

kdelibs-3.5.3-khtml-regression.patch:
 htmltokenizer.cpp |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

--- NEW FILE kdelibs-3.5.3-khtml-regression.patch ---
--- kdelibs-3.5.3/khtml/html/htmltokenizer.cpp.orig	2006-06-24 15:12:38.000000000 +0200
+++ kdelibs-3.5.3/khtml/html/htmltokenizer.cpp	2006-06-24 15:14:08.000000000 +0200
@@ -388,9 +388,10 @@
 
     // Scripts following a frameset element should not be executed or even loaded in the case of extern scripts.
     bool followingFrameset = (parser->doc()->body() && parser->doc()->body()->id() == ID_FRAMESET);
+    bool effectiveScript = !parser->skipMode() && !followingFrameset; 
     bool deferredScript = false;
 
-    if ( !parser->skipMode() && !followingFrameset) {
+    if ( effectiveScript ) { 
         CachedScript* cs = 0;
 
         // forget what we just got, load from src url instead
@@ -419,7 +420,7 @@
     script = false;
     scriptCodeSize = scriptCodeResync = 0;
 
-    if (parser->skipMode() || followingFrameset)
+    if ( !effectiveScript )
         return;
 
     if ( !m_executingScript && cachedScript.isEmpty() ) {

kdelibs-3.5.3.diff:
 kcrash.cpp   |    7 +++++--
 kprocess.cpp |    5 ++++-
 2 files changed, 9 insertions(+), 3 deletions(-)

--- NEW FILE kdelibs-3.5.3.diff ---
Patch102: kdelibs-3.5.3.diff
------------------------------------------------------------------------
r549079 | mueller | 2006-06-07 13:18:16 +0200 (Wed, 07 Jun 2006) | 2 lines

add safety checks for set*uid return values

------------------------------------------------------------------------
Index: kdecore/kprocess.cpp
===================================================================
--- kdecore/kprocess.cpp	(revision 549078)
+++ kdecore/kprocess.cpp	(revision 549079)
@@ -387,7 +387,10 @@ bool KProcess::start(RunMode runmode, Co
            if (pw)
               initgroups(pw->pw_name, pw->pw_gid);
 #endif
-           setuid(getuid());
+	   if (geteuid() != getuid())
+	       setuid(getuid());
+	   if (geteuid() != getuid())
+	       _exit(1);
         }
 
         setupEnvironment();
Index: kdecore/kcrash.cpp

===================================================================
--- kdecore/kcrash.cpp	(revision 549078)
+++ kdecore/kcrash.cpp	(revision 549079)
 com
iapply upstream patches
  kdlel	.s	
  pid_t pid = fork();
   - apply upstream patches
if (pid <= 0)
   {
-    setgid(getgid());
-    setuid(getuid());
+    if(!geteuid() && setgid(getgid()) < 0)
+      _exit(253);
+    if(!geteuid() && setuid(getuid()) < 0)
+      _exit(253);
     execvp("drkonqi", const_cast< char** >( argv ));
+    _exit(errno);
   }
   else
   {ireturn-check


Index: kdelibs.spec
===================================================================
RCS file: /cvs/dist/rpms/kdelibs/FC-5/kdelibs.spec,v
retrieving revision 1.133
retrieving revision 1.134
diff -u -r1.133 -r1.134
--- kdelibs.spec	14 Jun 2006 10:08:35 -0000	1.133
+++ kdelibs.spec	4 Jul 2006 21:56:02 -0000	1.134
@@ -1,4 +1,4 @@
-%define redhatify 1
+%define distname "Fedora-Core"
 
 %define debug 0
 %define final 1
@@ -7,7 +7,7 @@
 %define arts_epoch 8
 %define cups_epoch 1
 
-%define qt_version 3.3.5
+%define qt_version 3.3.6
 %define arts_version 1.5.3
 %define kde_major_version 3
 
@@ -16,22 +16,17 @@
 %define make_cvs 0
 %define fam 1
 %define dnotify 1
-%define pcre 1
-%define alsa 1
-%define pie 1
 %define arts 1
 
-%define disable_gcc_check_and_hidden_visibility 1
-
 Version: 3.5.3
-Release: 0.2.fc5
+Release: 0.3.fc5
 Summary: K Desktop Environment - Libraries
 Name: kdelibs
 Url: http://www.kde.org/
 Epoch: 6
 Group: System Environment/Libraries
 License: LGPL
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) 
 
 Source0: ftp://ftp.kde.org/pub/kde/stable/%{version}/src/%{name}-%{version}.tar.bz2
 Source1: kde.sh
@@ -56,6 +51,16 @@
 
 # upstream patches
 Patch100: kdelibs-3.5.3-konqueror-khtml.patch
+Patch101: kdelibs-3.5.3-khtml-regression.patch
+Patch102: kdelibs-3.5.3.diff
+Patch103: kdelibs-3.5.3-kde#57159.patch
+Patch104: kdelibs-3.5.3-kde#118277.patch
+Patch105: kdelibs-3.5.3-kde#123315.patch
+Patch106: kdelibs-3.5.3-kde#65546.patch
+Patch107: kdelibs-3.5.3-kde#128842.patch
+Patch108: kdelibs-3.5.3-kde#128902.patch
+Patch109: kdelibs-3.5.3-kde#67849.patch
+Patch110: kdelibs-3.5.3-kde#81806.patch
 
 %if %{arts}
 Requires: arts >= %{arts_epoch}:%{arts_version}
@@ -63,28 +68,22 @@
 Requires: qt >= %{qt_epoch}:%{qt_version}
 Requires: cups-libs >= %{cups_epoch}:1.1.12
 Requires: iceauth
-
-%if %{redhatify}
 Requires: desktop-backgrounds-basic
 Requires: redhat-artwork >= 0.239-2
 Requires: hicolor-icon-theme
 Requires: redhat-menus >= 5.0.4
-%endif
-
-Requires(post,postun): /sbin/ldconfig
-Requires(post,postun): desktop-file-utils
-Requires: fileutils
+Requires(pre): coreutils
+Requires(post): /sbin/ldconfig
+Requires(post): desktop-file-utils
+Requires(postun): /sbin/ldconfig
+Requires(postun): desktop-file-utils
 Requires: shadow-utils
-Requires: dev
 
 %if %{fam}
 BuildRequires: fam-devel
 %endif
 
-%if %{pcre}
 BuildRequires: pcre-devel
-%endif
-
 BuildRequires: cups-devel >= %{cups_epoch}:1.1.20
 BuildRequires: qt-devel >= %{qt_epoch}:%{qt_version}
 BuildRequires: flex >= 2.5.4a-13
@@ -109,14 +108,18 @@
 BuildRequires: byacc
 BuildRequires: libart_lgpl-devel >= 2.3.8
 BuildRequires: bzip2-devel
-BuildRequires: libjpeg-devel
-BuildRequires: libpng-devel
 BuildRequires: libtiff-devel
-BuildRequires: pkgconfig
-BuildRequires: autoconf automake
+BuildRequires: autoconf
+BuildRequires: automake
 BuildRequires: libacl-devel
 BuildRequires: libattr-devel
 BuildRequires: aspell-devel
+BuildRequires: krb5-devel
+BuildRequires: openldap-devel
+BuildRequires: db4-devel
+BuildRequires: alsa-lib-devel
+BuildRequires: pkgconfig
+
 Obsoletes: %{name}2
 Obsoletes: kdesupport
 Obsoletes: kdoc
@@ -148,9 +151,8 @@
 %if %{fam}
 Requires: fam-devel
 %endif
-%if %{pcre}
 Requires: pcre-devel
-%endif
+
 Obsoletes: kdesupport-devel
 
 %description devel
@@ -161,7 +163,7 @@
 Group: Development/Documentation
 Summary: KDE API documentation.
 Requires: %{name} = %{epoch}:%{version}-%{release}
-Obsoletes: kdelibs-docs
+Obsoletes: kdelibs-docs < %{epoch}:%{version}-%{release}
 
 %description apidocs
 This package includes the KDE API documentation in HTML
@@ -190,54 +192,31 @@
 
 # upstream patches
 %patch100 -p1 -b .konqueror-khtml
+%patch101 -p1 -b .khtml-regression
+%patch102 -p0 -b .return-check
+%patch103 -p0 -b .kde#57159
+%patch104 -p0 -b .kde#118277
+%patch105 -p0 -b .kde#123315
+%patch106 -p0 -b .kde#65546
+%patch107 -p0 -b .kde#128842
+%patch108 -p0 -b .kde#128902
+%patch109 -p0 -b .kde#67849
+%patch110 -p0 -b .kde#81806
 
-# add redhat into KDE_VERSION_STRING
-%if %{redhatify}
-   perl -pi -e "s,^#define KDE_VERSION_STRING .*,#define KDE_VERSION_STRING \"%{version}-%{release} Red Hat\"," kdecore/kdeversion.h
-%endif
+perl -pi -e "s,^#define KDE_VERSION_STRING .*,#define KDE_VERSION_STRING \"%{version}-%{release} %{distname}\"," kdecore/kdeversion.h
 
 %build
-export QTDOC=%{qtdocdir}
 unset QTDIR && . /etc/profile.d/qt.sh
+
+export QTDOC=%{qtdocdir}
 export libltdl_cv_shlibext=".so"
+export PATH=/usr/kerberos/bin:${PATH}
 
 %if %{make_cvs}
    make -f admin/Makefile.common cvs
 %endif
 
-# set some default FLAGS
-FLAGS="$RPM_OPT_FLAGS"
-
-%if %{debug}
-   FLAGS="-O0"
-%endif
-
-# workaround for compiler bug on ia64, will be removed later
-%ifarch ia64
-export CFLAGS="$RPM_OPT_FLAGS -O0"
-export CXXFLAGS="$RPM_OPT_FLAGS -O0"
-%endif
-
-export CXXFLAGS="$FLAGS"
-export CFLAGS="$FLAGS"
-export QTLIB=$QTDIR/lib
-
-if pkg-config openssl ; then
-   export CFLAGS="$CFLAGS `pkg-config --cflags openssl`"
-   export CXXFLAGS="$CXXFLAGS `pkg-config --cflags openssl`"
-   export CPPFLAGS="$CPPFLAGS `pkg-config --cflags-only-I openssl`"
-   export LDFLAGS="$LDFLAGS `pkg-config --libs-only-L openssl`"
-fi
-
-# Check which version/distribution we are...
-%if %{redhatify}
-   VERSION=`cat /etc/redhat-release 2>/dev/null |awk '{ print $5; }'`
-   if [ -z "$VERSION" -o -z "echo $VERSION |sed -e 's,[0-9]*,,g;s,\.,,g'" ]; then
-      VERSION="A Red Hat Linux-based distribution"
-   else
-      VERSION="Red Hat Linux $VERSION"
-   fi
-%endif
+VERSION=`cat /etc/redhat-release 2>/dev/null`
 
 suffix=""
 if [ "%{_lib}" == "lib64" ] ; then
@@ -252,21 +231,13 @@
    --enable-cups \
    --enable-mitshm \
    --with-xinerama \
-%if %{disable_gcc_check_and_hidden_visibility}
    --disable-gcc-hidden-visibility \
-%endif
-%if %{pie}
    --enable-pie \
-%endif
 %if %{arts} == 0
    --without-arts \
 %endif
-%if %{redhatify}
    --with-distribution="$VERSION" \
-%endif 
-%if %{alsa}
    --with-alsa \
-%endif
    --includedir=%{_includedir}/kde \
 %if %{debug} == 0
    --disable-debug \
@@ -281,9 +252,6 @@
 %if %{dnotify}
    --enable-dnotify \
 %endif
-%if %{pcre} == 0
-   --disable-pcre \
-%endif
    --disable-rpath \
    --with-rgbfile=%{_datadir}/X11/rgb.txt
 
@@ -297,22 +265,22 @@
 make apidox
 
 %install
-rm -rf $RPM_BUILD_ROOT
+rm -rf %{buildroot}
 
-make DESTDIR=$RPM_BUILD_ROOT install
+make DESTDIR=%{buildroot} install
 
-chmod a+x $RPM_BUILD_ROOT%{_libdir}/*
-install -m 644 %{SOURCE3} $RPM_BUILD_ROOT%{_datadir}/services/
+chmod a+x %{buildroot}%{_libdir}/*
+install -m 644 %{SOURCE3} %{buildroot}%{_datadir}/services/
 
-pushd $RPM_BUILD_ROOT%{_docdir}
+pushd %{buildroot}%{_docdir}
 ln -sf HTML/en/kdelibs-apidocs %{name}-devel-%{kde_major_version}
 popd
 
-mkdir -p $RPM_BUILD_ROOT/etc/profile.d
-install -m 755 %{SOURCE1} %{SOURCE2} $RPM_BUILD_ROOT/etc/profile.d/
+mkdir -p %{buildroot}%{_sysconfdir}/profile.d
+install -m 755 %{SOURCE1} %{SOURCE2} %{buildroot}%{_sysconfdir}/profile.d/
 
 # Make symlinks relative
-pushd $RPM_BUILD_ROOT%{_docdir}/HTML/en
+pushd %{buildroot}%{_docdir}/HTML/en
 for i in *; do
    if [ -d $i -a -L $i/common ]; then
       rm -f $i/common
@@ -321,17 +289,16 @@
 done
 popd
 
-%if %{redhatify}
-   pushd $RPM_BUILD_ROOT/etc/xdg/menus/
-      mv applications.menu kde-applications.menu
-      ln -s applications-merged kde-applications-merged
-   popd
-   echo "OnlyShowIn=KDE;" >> $RPM_BUILD_ROOT%{_datadir}/applications/kde/kresources.desktop
-   rm -f $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/index.theme
-%endif
+mkdir -p %{buildroot}%{_sysconfdir}/xdg.d/kde/menus
+pushd %{buildroot}%{_sysconfdir}/xdg/menus/
+   mv applications.menu %{buildroot}%{_sysconfdir}/xdg.d/kde/menus
+   ln -s applications-merged kde-applications-merged
+popd
+echo "OnlyShowIn=KDE;" >> %{buildroot}%{_datadir}/applications/kde/kresources.desktop
+rm -f %{buildroot}%{_datadir}/icons/hicolor/index.theme
 
 %clean
-rm -rf $RPM_BUILD_ROOT
+rm -rf %{buildroot}
 
 %pre
 if [ -d /etc/skel/Desktop/Autostart ]; then
@@ -345,7 +312,7 @@
 /sbin/ldconfig
 touch --no-create %{_datadir}/icons/crystalsvg || :
 if [ -x %{_bindir}/gtk-update-icon-cache ]; then
-   %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/crystalsvg || :
+   %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/crystalsvg 2> /dev/null || :
 fi
 %{_bindir}/update-desktop-database > /dev/null 2>&1 || :
 
@@ -353,19 +320,78 @@
 /sbin/ldconfig
 touch --no-create %{_datadir}/icons/crystalsvg || :
 if [ -x %{_bindir}/gtk-update-icon-cache ]; then
-   %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/crystalsvg || :
+   %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/crystalsvg 2> /dev/null || :
 fi
 %{_bindir}/update-desktop-database > /dev/null 2>&1 || :
 
 %files
 %defattr(-,root,root)
-/etc/profile.d/*
-/etc/xdg/menus/*
-%{_bindir}/*
+%dir %{_sysconfdir}/xdg.d
+%dir %{_sysconfdir}/xdg.d/kde
+%dir %{_sysconfdir}/xdg.d/kde/menus
+%config(noreplace) %{_sysconfdir}/profile.d/*
+%{_sysconfdir}/xdg/menus/*
+%{_sysconfdir}/xdg.d/kde/menus/*
+%{_bindir}/artsmessage
+%{_bindir}/checkXML
+%{_bindir}/cupsdconf
+%{_bindir}/cupsdoprint
+%{_bindir}/dcop
+%{_bindir}/dcopclient
+%{_bindir}/dcopfind
+%{_bindir}/dcopobject
+%{_bindir}/dcopquit
+%{_bindir}/dcopref
+%{_bindir}/dcopserver
+%{_bindir}/dcopserver_shutdown
+%{_bindir}/dcopstart
+%{_bindir}/filesharelist
+%{_bindir}/fileshareset
+%{_bindir}/imagetops
+%{_bindir}/kab2kabc
+%{_bindir}/kaddprinterwizard
+%{_bindir}/kbuildsycoca
+%{_bindir}/kcmshell
+%{_bindir}/kconf_update
+%{_bindir}/kconfig_compiler
+%{_bindir}/kcookiejar
+%{_bindir}/kde-config
+%{_bindir}/kde-menu
+%{_bindir}/kded
+%{_bindir}/kdeinit
+%{_bindir}/kdeinit_shutdown
+%{_bindir}/kdeinit_wrapper
+%{_bindir}/kdesu_stub
+%{_bindir}/kdontchangethehostname
+%{_bindir}/kdostartupconfig
+%{_bindir}/kfile
+%{_bindir}/kfmexec
+%{_bindir}/khotnewstuff
+%{_bindir}/kinstalltheme
+%{_bindir}/kio_http_cache_cleaner
+%{_bindir}/kio_uiserver
+%{_bindir}/kioexec
+%{_bindir}/kioslave
+%{_bindir}/klauncher
+%{_bindir}/kmailservice
+%{_bindir}/ksendbugmail
+%{_bindir}/kshell
+%{_bindir}/kstartupconfig
+%{_bindir}/ksvgtopng
+%{_bindir}/ktelnetservice
+%{_bindir}/ktradertest
+%{_bindir}/kunittestmodrunner
+%{_bindir}/kwrapper
+%{_bindir}/lnusertemp
+%{_bindir}/make_driver_db_cups
+%{_bindir}/make_driver_db_lpr
+%{_bindir}/makekdewidgets
+%{_bindir}/meinproc
+%{_bindir}/preparetips
 %attr(4755,root,root) %{_bindir}/kpac_dhcp_helper
 %attr(4755,root,root) %{_bindir}/kgrantpty
-%exclude %{_bindir}/dcopidl*
-%{_libdir}/lib*
+%{_libdir}/lib*.so*
+%{_libdir}/lib*.la
 %{_libdir}/kde3
 %{_datadir}/applications
 %{_datadir}/apps
@@ -388,6 +414,7 @@
 %defattr(-,root,root)
 %{_bindir}/dcopidl*
 %{_includedir}/kde
+%{_libdir}/lib*.a
 
 %files apidocs
 %defattr(-,root,root)
@@ -395,6 +422,12 @@
 %doc %{_docdir}/HTML/en/kdelibs*
 
 %changelog
+* Tue Jul 04 2006 Than Ngo <than at redhat.com> 6:3.5.3-0.3.fc5
+- apply upstream patches,
+   fix #128940/#81806/#57159/#118277/#123315/#65546/#128842/#128902/#67849/#81806
+- fix #196013, mark kde.sh/kde.csh as config file
+- fix #178323 #196225, typo in kde.sh
+
 * Wed Jun 14 2006 Than Ngo <than at redhat.com> 6:3.5.3-0.2.fc5
 - apply patch to fix crash in konqueror
 




More information about the fedora-cvs-commits mailing list