backgroundchecker.h   backgroundchecker.h 
skipping to change at line 79 skipping to change at line 79
QString text() const; QString text() const;
QString currentContext() const; QString currentContext() const;
Speller speller() const; Speller speller() const;
void setSpeller(const Speller &speller); void setSpeller(const Speller &speller);
bool checkWord(const QString &word); bool checkWord(const QString &word);
QStringList suggest(const QString &word) const; QStringList suggest(const QString &word) const;
bool addWordToPersonal(const QString &word); bool addWordToPersonal(const QString &word);
void restore(KConfig *config);
public Q_SLOTS: public Q_SLOTS:
virtual void start(); virtual void start();
virtual void stop(); virtual void stop();
void replace(int start, const QString &oldText, void replace(int start, const QString &oldText,
const QString &newText); const QString &newText);
void changeLanguage(const QString &lang); void changeLanguage(const QString &lang);
/** /**
* After emitting misspelling signal the background * After emitting misspelling signal the background
* checker stops. The catcher is responsible for calling * checker stops. The catcher is responsible for calling
 End of changes. 1 change blocks. 
0 lines changed or deleted 3 lines changed or added


 dom_exception.h   dom_exception.h 
skipping to change at line 89 skipping to change at line 89
NOT_FOUND_ERR = 8, NOT_FOUND_ERR = 8,
NOT_SUPPORTED_ERR = 9, NOT_SUPPORTED_ERR = 9,
INUSE_ATTRIBUTE_ERR = 10, INUSE_ATTRIBUTE_ERR = 10,
INVALID_STATE_ERR = 11, INVALID_STATE_ERR = 11,
SYNTAX_ERR = 12, SYNTAX_ERR = 12,
INVALID_MODIFICATION_ERR = 13, INVALID_MODIFICATION_ERR = 13,
NAMESPACE_ERR = 14, NAMESPACE_ERR = 14,
INVALID_ACCESS_ERR = 15, INVALID_ACCESS_ERR = 15,
VALIDATION_ERR = 16, VALIDATION_ERR = 16,
TYPE_MISMATCH_ERR = 17, TYPE_MISMATCH_ERR = 17,
SECURITY_ERR = 18 SECURITY_ERR = 18,
NETWORK_ERR = 19, ///< @since 4.5.2
ABORT_ERR = 20, ///< @since 4.5.2
URL_MISMATCH_ERR = 21, ///< @since 4.5.2
QUOTA_EXCEEDED_ERR = 22, ///< @since 4.5.2
TIMEOUT_ERR = 23, ///< @since 4.5.2
NOT_READABLE_ERR = 24, ///< @since 4.5.2
DATA_CLONE_ERR = 25, ///< @since 4.5.2
ENCODING_ERR = 26 ///< @since 4.5.2
}; };
unsigned short code; unsigned short code;
/// Returns the name of this error /// Returns the name of this error
DOMString codeAsString() const; DOMString codeAsString() const;
/// Returns the name of given error code /// Returns the name of given error code
static DOMString codeAsString(int code); static DOMString codeAsString(int code);
/** @internal - checks to see whether internal code is a DOMException o ne */ /** @internal - checks to see whether internal code is a DOMException o ne */
 End of changes. 1 change blocks. 
1 lines changed or deleted 9 lines changed or added


 kdeversion.h   kdeversion.h 
skipping to change at line 47 skipping to change at line 47
* This macro contains the KDE version in string form. As it is a macro, * This macro contains the KDE version in string form. As it is a macro,
* it contains the version at compile time. See versionString() if you need * it contains the version at compile time. See versionString() if you need
* the KDE version used at runtime. * the KDE version used at runtime.
* *
* @note The version string might contain a section in parentheses, * @note The version string might contain a section in parentheses,
* especially for development versions of KDE. * especially for development versions of KDE.
* If you use that macro directly for a file format (e.g. OASIS Open Docume nt) * If you use that macro directly for a file format (e.g. OASIS Open Docume nt)
* or for a protocol (e.g. http) be careful that it is appropriate. * or for a protocol (e.g. http) be careful that it is appropriate.
* (Fictional) example: "4.0.90 (>=20070101)" * (Fictional) example: "4.0.90 (>=20070101)"
*/ */
#define KDE_VERSION_STRING "4.5.1 (KDE 4.5.1)" #define KDE_VERSION_STRING "4.5.2 (KDE 4.5.2)"
/** /**
* @def KDE_VERSION_MAJOR * @def KDE_VERSION_MAJOR
* @ingroup KDEMacros * @ingroup KDEMacros
* @brief Major version of KDE, at compile time * @brief Major version of KDE, at compile time
*/ */
#define KDE_VERSION_MAJOR 4 #define KDE_VERSION_MAJOR 4
/** /**
* @def KDE_VERSION_MINOR * @def KDE_VERSION_MINOR
* @ingroup KDEMacros * @ingroup KDEMacros
* @brief Minor version of KDE, at compile time * @brief Minor version of KDE, at compile time
*/ */
#define KDE_VERSION_MINOR 5 #define KDE_VERSION_MINOR 5
/** /**
* @def KDE_VERSION_RELEASE * @def KDE_VERSION_RELEASE
* @ingroup KDEMacros * @ingroup KDEMacros
* @brief Release version of KDE, at compile time * @brief Release version of KDE, at compile time
*/ */
#define KDE_VERSION_RELEASE 1 #define KDE_VERSION_RELEASE 2
/** /**
* @ingroup KDEMacros * @ingroup KDEMacros
* @brief Make a number from the major, minor and release number of a KDE v ersion * @brief Make a number from the major, minor and release number of a KDE v ersion
* *
* This function can be used for preprocessing when KDE_IS_VERSION is not * This function can be used for preprocessing when KDE_IS_VERSION is not
* appropriate. * appropriate.
*/ */
#define KDE_MAKE_VERSION( a,b,c ) (((a) << 16) | ((b) << 8) | (c)) #define KDE_MAKE_VERSION( a,b,c ) (((a) << 16) | ((b) << 8) | (c))
 End of changes. 2 change blocks. 
2 lines changed or deleted 2 lines changed or added


 kfontchooser.h   kfontchooser.h 
skipping to change at line 92 skipping to change at line 92
/** /**
* Constructs a font picker widget. * Constructs a font picker widget.
* It normally comes up with all font families present on the system; the * It normally comes up with all font families present on the system; the
* getFont method below does allow some more fine-tuning of the selection of fonts * getFont method below does allow some more fine-tuning of the selection of fonts
* that will be displayed in the dialog. * that will be displayed in the dialog.
* <p>Consider the following code snippet; * <p>Consider the following code snippet;
* \code * \code
* QStringList list; * QStringList list;
* KFontChooser::getFontList(list, KFontChooser::SmoothScalableFonts); * KFontChooser::getFontList(list, KFontChooser::SmoothScalableFonts);
* KFontChooser *chooseFont = new KFontChooser(0, false, list); * KFontChooser *chooseFont = new KFontChooser(0, NoDisplayFlags, list );
* \endcode * \endcode
* <p> * <p>
* The above creates a font chooser dialog with only SmoothScaleble fonts . * The above creates a font chooser dialog with only SmoothScaleble fonts .
* *
* @param parent The parent widget. * @param parent The parent widget.
* @param flags Defines how the font chooser is displayed. @see DisplayFl ags * @param flags Defines how the font chooser is displayed. @see DisplayFl ags
* @param fontList A list of fonts to display, in XLFD format. If * @param fontList A list of fonts to display, in XLFD format. If
* no list is formatted, the internal KDE font list is used. * no list is formatted, the internal KDE font list is used.
* If that has not been created, X is queried, and all fonts * If that has not been created, X is queried, and all fonts
* available on the system are displayed. * available on the system are displayed.
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 kimagecache.h   kimagecache.h 
skipping to change at line 79 skipping to change at line 79
* cache then use the deleteCache() function to remove that cache firs t. * cache then use the deleteCache() function to remove that cache firs t.
* @param expectedItemSize The expected general size of the items to be * @param expectedItemSize The expected general size of the items to be
* added to the image cache, in bytes. Use 0 if you just want a defaul t * added to the image cache, in bytes. Use 0 if you just want a defaul t
* item size. * item size.
*/ */
KImageCache(const QString &cacheName, KImageCache(const QString &cacheName,
unsigned defaultCacheSize, unsigned defaultCacheSize,
unsigned expectedItemSize = 0); unsigned expectedItemSize = 0);
/** /**
* Deconstructor
*/
~KImageCache();
/**
* Inserts the pixmap given by @p pixmap to the cache, accessible with * Inserts the pixmap given by @p pixmap to the cache, accessible with
* @p key. The pixmap must be converted to a QImage in order to be stor ed * @p key. The pixmap must be converted to a QImage in order to be stor ed
* into shared memory. In order to prevent unnecessary conversions from * into shared memory. In order to prevent unnecessary conversions from
* taking place @p pixmap will also be cached (but not in stored * taking place @p pixmap will also be cached (but not in stored
* memory) and would be accessible using findPixmap() if pixmap caching is * memory) and would be accessible using findPixmap() if pixmap caching is
* enabled. * enabled.
* *
* @param key Name to access @p pixmap with. * @param key Name to access @p pixmap with.
* @param pixmap The pixmap to add to the cache. * @param pixmap The pixmap to add to the cache.
* @return true if the pixmap was successfully cached, false otherwise. * @return true if the pixmap was successfully cached, false otherwise.
 End of changes. 1 change blocks. 
0 lines changed or deleted 5 lines changed or added


 kmodelindexproxymapper.h   kmodelindexproxymapper.h 
skipping to change at line 88 skipping to change at line 88
*/ */
class KDEUI_EXPORT KModelIndexProxyMapper : public QObject class KDEUI_EXPORT KModelIndexProxyMapper : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
/** /**
* Constructor * Constructor
*/ */
KModelIndexProxyMapper(const QAbstractItemModel *leftModel, const QAbstra ctItemModel *rightModel, QObject* parent = 0); KModelIndexProxyMapper(const QAbstractItemModel *leftModel, const QAbstra ctItemModel *rightModel, QObject* parent = 0);
~KModelIndexProxyMapper();
/** /**
* Maps the @p index from the left model to the right model. * Maps the @p index from the left model to the right model.
*/ */
QModelIndex mapLeftToRight(const QModelIndex &index) const; QModelIndex mapLeftToRight(const QModelIndex &index) const;
/** /**
* Maps the @p index from the right model to the left model. * Maps the @p index from the right model to the left model.
*/ */
QModelIndex mapRightToLeft(const QModelIndex &index) const; QModelIndex mapRightToLeft(const QModelIndex &index) const;
 End of changes. 1 change blocks. 
0 lines changed or deleted 2 lines changed or added


 krecursivefilterproxymodel.h   krecursivefilterproxymodel.h 
skipping to change at line 103 skipping to change at line 103
explicit KRecursiveFilterProxyModel(QObject* parent = 0); explicit KRecursiveFilterProxyModel(QObject* parent = 0);
/** /**
Destructor Destructor
*/ */
virtual ~KRecursiveFilterProxyModel(); virtual ~KRecursiveFilterProxyModel();
/** @reimp */ /** @reimp */
void setSourceModel( QAbstractItemModel *model ); void setSourceModel( QAbstractItemModel *model );
/**
* @reimplemented
*/
virtual QModelIndexList match( const QModelIndex& start, int role, const
QVariant& value, int hits = 1,
Qt::MatchFlags flags = Qt::MatchFlags( Qt:
:MatchStartsWith | Qt::MatchWrap ) ) const;
protected: protected:
/** /**
Reimplement this method for custom filtering strategies. Reimplement this method for custom filtering strategies.
*/ */
virtual bool acceptRow(int sourceRow, const QModelIndex &sourceParent) co nst; virtual bool acceptRow(int sourceRow, const QModelIndex &sourceParent) co nst;
private: private:
/** @reimp */ /** @reimp */
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) con st; bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) con st;
 End of changes. 1 change blocks. 
0 lines changed or deleted 8 lines changed or added


 kselectaction.h   kselectaction.h 
skipping to change at line 362 skipping to change at line 362
/** /**
* Reimplemented from @see QWidgetAction. * Reimplemented from @see QWidgetAction.
*/ */
virtual QWidget *createWidget(QWidget *parent); virtual QWidget *createWidget(QWidget *parent);
/** /**
* Reimplemented from @see QWidgetAction. * Reimplemented from @see QWidgetAction.
*/ */
virtual void deleteWidget(QWidget *widget); virtual void deleteWidget(QWidget *widget);
virtual bool event(QEvent *event);
virtual bool eventFilter (QObject *watched, QEvent *event); virtual bool eventFilter (QObject *watched, QEvent *event);
/** /**
* @internal * @internal
* Creates a new KSelectAction object. * Creates a new KSelectAction object.
* *
* @param dd the private d member * @param dd the private d member
* @param parent The action's parent object. * @param parent The action's parent object.
*/ */
KSelectAction(KSelectActionPrivate &dd, QObject *parent); KSelectAction(KSelectActionPrivate &dd, QObject *parent);
 End of changes. 1 change blocks. 
0 lines changed or deleted 2 lines changed or added


 kurifilter.h   kurifilter.h 
skipping to change at line 250 skipping to change at line 250
* function returns an empty string. * function returns an empty string.
* *
* @see typedString * @see typedString
* @since 4.5 * @since 4.5
*/ */
QString searchProvider() const; QString searchProvider() const;
/** /**
* Returns a list of the names of the preferred search providers. * Returns a list of the names of the preferred search providers.
* *
* This function returns the list of favorite or preferred providers on * This function returns the list of providers that are marked as favor
ly ite
* when this data filtered through the default search uri plugin 'kuris * or preferred by the user whenever the data it contains is filtered b
earchfilter'. y the
* Otherwise, it returns an empty list. * 'kuriikwsfilter' search uri filter plugin.
*
* If no prior search providers were marked preferred or no default sea
rch
* engine was selected, then this function will return an empty list un
less
* you set alternate default or search providers using the appropriate
function.
* See @ref setAlternateDefaultSearchProvider and @ref setAlternateSear
chProviders.
* *
* You can use @ref queryForPreferredServiceProvider to obtain the quer ies * You can use @ref queryForPreferredServiceProvider to obtain the quer ies
* associated with the returned search providers. * associated with the returned search providers.
* *
* @see searchProvider * @see searchProvider
* @see alternateSearchProviders
* @see alternateDefaultSearchProvider
* @see queryForPreferredServiceProvider
* @since 4.5 * @since 4.5
*/ */
QStringList preferredSearchProviders() const; QStringList preferredSearchProviders() const;
/** /**
* Returns the query url for the given preferred search provider. * Returns the query url for the given preferred search provider.
* *
* You can use this function to obtain the query for the preferred sear ch * You can use this function to obtain the query for the preferred sear ch
* providers returned by @ref preferredSearchProviders. Note that this * providers returned by @ref preferredSearchProviders. Note that this
* function actually returns a query, e.g. "gg:foo bar", that must be * function actually returns a query, e.g. "gg:foo bar", that must be
skipping to change at line 290 skipping to change at line 298
* *
* @see preferredSearchProviders * @see preferredSearchProviders
* @since 4.5 * @since 4.5
*/ */
QString iconNameForPreferredSearchProvider(const QString &provider) con st; QString iconNameForPreferredSearchProvider(const QString &provider) con st;
/** /**
* Returns the list of alternate search providers. * Returns the list of alternate search providers.
* *
* This function returns an empty list if @ref setAlternateSearchProvid ers * This function returns an empty list if @ref setAlternateSearchProvid ers
* was not called to set alternate search providers to be used in place * was not called to set the alternate search providers to be when no
of * preferred providers have been chosen by the user through the search
* the preferred search providers when they are not available. * configuration module.
* *
* @see setAlternatteSearchProviders * @see setAlternatteSearchProviders
* @see preferredSearchProviders * @see preferredSearchProviders
* @since 4.5 * @since 4.5
*/ */
QStringList alternateSearchProviders() const; QStringList alternateSearchProviders() const;
/** /**
* Returns the search provider to use when a default provider is not av ailable. * Returns the search provider to use when a default provider is not av ailable.
* *
* The alternate default search provider is not set by default and this * This function returns an empty string if @ref setAlternateDefaultSea
function rchProvider
* returns an empty string. * was not called to set the default search provider to be used when no
ne has been
* chosen by the user through the search configuration module.
* *
* @see setAlternateDefaultSearchProvider * @see setAlternateDefaultSearchProvider
* @since 4.5 * @since 4.5
*/ */
QString alternateDefaultSearchProvider() const; QString alternateDefaultSearchProvider() const;
/** /**
* The name of the icon that matches the current filtered URL. * The name of the icon that matches the current filtered URL.
* *
* This function returns a null string by default and when no icon is f ound * This function returns a null string by default and when no icon is f ound
skipping to change at line 365 skipping to change at line 375
* a KUrl, make sure you set the argument for this function to the resu lt * a KUrl, make sure you set the argument for this function to the resu lt
* of calling path () instead of url (). * of calling path () instead of url ().
* *
* @param abs_path the abolute path to the local resource. * @param abs_path the abolute path to the local resource.
* *
* @return true if absolute path is successfully set. Otherwise, false. * @return true if absolute path is successfully set. Otherwise, false.
*/ */
bool setAbsolutePath( const QString& abs_path ); bool setAbsolutePath( const QString& abs_path );
/** /**
* Sets a list of search providers to use in case no default preferred search * Sets a list of search providers to use in case no preferred search
* providers are available. * providers are available.
* *
* The list of preferred search providers set using this function will * The list of preferred search providers set using this function will
only be only
* used if the default and favorite search providers have not yet been * be used if the default and favorite search providers have not yet be
configured en
* through the configuration dialogs. Otherwise, the providers specifie * selected by the user. Otherwise, the providers specified through thi
d by this s
* function will be ignored. * function will be ignored.
* *
* @see alternatteSearchProviders * @see alternateSearchProviders
* @see preferredSearchProviders * @see preferredSearchProviders
* @since 4.5 * @since 4.5
*/ */
void setAlternateSearchProviders(const QStringList &providers); void setAlternateSearchProviders(const QStringList &providers);
/** /**
* Sets the search provider to use when there no default provider has b * Sets the search provider to use in case no default provider is avail
een able.
* set by though the web shortcuts configuration dialog.
* *
* @see setAlternateDefaultSearchProvider * The default search provider set using this function will only be use
d if
* the default and favorite search providers have not yet been selected
by
* the user. Otherwise, the default provider specified by through funct
ion
* will be ignored.
*
* @see alternateDefaultSearchProvider
* @see preferredSearchProviders
* @since 4.5 * @since 4.5
*/ */
void setAlternateDefaultSearchProvider(const QString &provider); void setAlternateDefaultSearchProvider(const QString &provider);
/** /**
* Overloaded assigenment operator. * Overloaded assigenment operator.
* *
* This function allows you to easily assign a KUrl * This function allows you to easily assign a KUrl
* to a KUriFilterData object. * to a KUriFilterData object.
* *
 End of changes. 9 change blocks. 
23 lines changed or deleted 45 lines changed or added


 pushbutton.h   pushbutton.h 
skipping to change at line 225 skipping to change at line 225
QWidget *widget = 0); QWidget *widget = 0);
void resizeEvent(QGraphicsSceneResizeEvent *event); void resizeEvent(QGraphicsSceneResizeEvent *event);
void hoverEnterEvent(QGraphicsSceneHoverEvent *event); void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
void changeEvent(QEvent *event); void changeEvent(QEvent *event);
QSizeF sizeHint(Qt::SizeHint which, const QSizeF & constraint) const; QSizeF sizeHint(Qt::SizeHint which, const QSizeF & constraint) const;
private: private:
Q_PRIVATE_SLOT(d, void syncBorders()) Q_PRIVATE_SLOT(d, void syncBorders())
Q_PRIVATE_SLOT(d, void setPixmap()) Q_PRIVATE_SLOT(d, void setPixmap())
Q_PRIVATE_SLOT(d, void syncToAction())
friend class PushButtonPrivate; friend class PushButtonPrivate;
PushButtonPrivate *const d; PushButtonPrivate *const d;
}; };
} // namespace Plasma } // namespace Plasma
#endif // multiple inclusion guard #endif // multiple inclusion guard
 End of changes. 1 change blocks. 
0 lines changed or deleted 1 lines changed or added


 signalplotter.h   signalplotter.h 
skipping to change at line 79 skipping to change at line 79
public: public:
SignalPlotter(QGraphicsItem *parent = 0); SignalPlotter(QGraphicsItem *parent = 0);
~SignalPlotter(); ~SignalPlotter();
/** /**
* Add a new line to the graph plotter, with the specified color. * Add a new line to the graph plotter, with the specified color.
* Note that the order you add the plots must be the same order that * Note that the order you add the plots must be the same order that
* the same data is given in (unless you reorder the plots). * the same data is given in (unless you reorder the plots).
* @param color the color to use for this plot * @param color the color to use for this plot
*/ */
void addPlot(const QColor &color); Q_INVOKABLE void addPlot(const QColor &color);
/** /**
* Add data to the graph, and advance the graph by one time period. * Add data to the graph, and advance the graph by one time period.
* The data must be given as a list in the same order that the plots we re * The data must be given as a list in the same order that the plots we re
* added (or consequently reordered). * added (or consequently reordered).
* @param samples a list with the new value for each plot * @param samples a list with the new value for each plot
*/ */
void addSample(const QList<double> &samples); Q_INVOKABLE void addSample(const QList<double> &samples);
/** /**
* Reorder the plots into the order given. For example: * Reorder the plots into the order given. For example:
* \code * \code
* KSignalPlotter *s = KSignalPlotter(parent); * KSignalPlotter *s = KSignalPlotter(parent);
* s->addPlot(Qt::Blue); * s->addPlot(Qt::Blue);
* s->addPlot(Qt::Green); * s->addPlot(Qt::Green);
* QList neworder; * QList neworder;
* neworder << 1 << 0; * neworder << 1 << 0;
* reorderPlots(newOrder); * reorderPlots(newOrder);
* //Now the order is Green then Blue * //Now the order is Green then Blue
* \endcode * \endcode
* @param newOrder a list with the new position of each plot * @param newOrder a list with the new position of each plot
*/ */
void reorderPlots(const QList<uint>& newOrder); Q_INVOKABLE void reorderPlots(const QList<uint>& newOrder);
/** /**
* Removes the plot at the specified index. * Removes the plot at the specified index.
* @param pos the index of the plot to be removed * @param pos the index of the plot to be removed
*/ */
void removePlot(uint pos); Q_INVOKABLE void removePlot(uint pos);
/** /**
* Return the list of plot colors, in the order that the plots * Return the list of plot colors, in the order that the plots
* were added (or later reordered). * were added (or later reordered).
* @return a list containing the color of every plot * @return a list containing the color of every plot
*/ */
QList<PlotColor> &plotColors(); QList<PlotColor> &plotColors();
/** /**
* Set the title of the graph. Drawn in the top left. * Set the title of the graph. Drawn in the top left.
 End of changes. 4 change blocks. 
4 lines changed or deleted 4 lines changed or added


 slavebase.h   slavebase.h 
skipping to change at line 868 skipping to change at line 868
protected: protected:
/** /**
* Name of the protocol supported by this slave * Name of the protocol supported by this slave
*/ */
QByteArray mProtocol; QByteArray mProtocol;
//Often used by TcpSlaveBase and unlikely to change //Often used by TcpSlaveBase and unlikely to change
MetaData mOutgoingMetaData; MetaData mOutgoingMetaData;
MetaData mIncomingMetaData; MetaData mIncomingMetaData;
enum VirtualFunctionId {
AppConnectionMade = 0
};
virtual void virtual_hook( int id, void* data ); virtual void virtual_hook( int id, void* data );
private: private:
#if 0 // TODO KDE5: enable #if 0 // TODO KDE5: enable
// This helps catching missing tr() calls in error(). // This helps catching missing tr() calls in error().
void error( int _errid, const QByteArray &_text ); void error( int _errid, const QByteArray &_text );
#endif #endif
void send(int cmd, const QByteArray& arr = QByteArray()); void send(int cmd, const QByteArray& arr = QByteArray());
SlaveBasePrivate* const d; SlaveBasePrivate* const d;
friend class SlaveBasePrivate; friend class SlaveBasePrivate;
 End of changes. 1 change blocks. 
0 lines changed or deleted 3 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/