generic: get rid of KLibrary

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2016-03-05 03:36:21 +02:00
parent 89e60600f8
commit 376484dff8
19 changed files with 203 additions and 443 deletions

View file

@ -193,7 +193,6 @@ install(
KKeySequenceWidget KKeySequenceWidget
KLanguageButton KLanguageButton
KLed KLed
KLibrary
KLineEdit KLineEdit
KLinkItemSelectionModel KLinkItemSelectionModel
KListWidget KListWidget

View file

@ -1 +0,0 @@
#include "../klibrary.h"

View file

@ -19,17 +19,16 @@
#include "templateinterface.h" #include "templateinterface.h"
#include "document.h" #include "document.h"
#include "view.h" #include "view.h"
#include <QtCore/QString> #include <QString>
#include <QDateTime>
#include <QRegExp>
#include <QLibrary>
#include <klocale.h> #include <klocale.h>
#include <kglobal.h> #include <kglobal.h>
#include <QtCore/qdatetime.h>
#include <QtCore/QRegExp>
#include <kmessagebox.h> #include <kmessagebox.h>
#include <kcalendarsystem.h> #include <kcalendarsystem.h>
#include <unistd.h>
#include <klibrary.h>
#include <kdebug.h> #include <kdebug.h>
#include <unistd.h>
#define DUMMY_VALUE "!KTE:TEMPLATEHANDLER_DUMMY_VALUE!" #define DUMMY_VALUE "!KTE:TEMPLATEHANDLER_DUMMY_VALUE!"
@ -59,8 +58,8 @@ bool TemplateInterface::expandMacros( QMap<QString, QString> &map, QWidget *pare
{ {
if (kabcbridgecall==0) if (kabcbridgecall==0)
{ {
KLibrary lib(QLatin1String("ktexteditorkabcbridge")); QLibrary lib(QLatin1String("ktexteditorkabcbridge"));
kabcbridgecall=(kabcbridgecalltype)lib.resolveFunction("ktexteditorkabcbridge"); kabcbridgecall=(kabcbridgecalltype)lib.resolve("ktexteditorkabcbridge");
if (kabcbridgecall == 0) if (kabcbridgecall == 0)
{ {
KMessageBox::sorry(parentWindow,i18n("The template needs information about you, which is stored in your address book.\nHowever, the required plugin could not be loaded.\n\nPlease install the KDEPIM/Kontact package for your system.")); KMessageBox::sorry(parentWindow,i18n("The template needs information about you, which is stored in your address book.\nHowever, the required plugin could not be loaded.\n\nPlease install the KDEPIM/Kontact package for your system."));

View file

@ -37,8 +37,7 @@
#include <QStringList> #include <QStringList>
// KDE includes // KDE includes
#include <kglobal.h>
#include <klibrary.h>
// LibRaw includes // LibRaw includes

View file

@ -284,7 +284,6 @@ set(kdecore_LIB_SRCS
util/kdedmodule.cpp util/kdedmodule.cpp
util/kdeversion.cpp util/kdeversion.cpp
util/klauncher_iface.cpp util/klauncher_iface.cpp
util/klibrary.cpp
util/kmacroexpander.cpp util/kmacroexpander.cpp
util/kpluginfactory.cpp util/kpluginfactory.cpp
util/kpluginloader.cpp util/kpluginloader.cpp
@ -514,7 +513,6 @@ install(
util/kde_file.h util/kde_file.h
util/kdedmodule.h util/kdedmodule.h
util/klauncher_iface.h util/klauncher_iface.h
util/klibrary.h
util/kmacroexpander.h util/kmacroexpander.h
util/kexportplugin.h util/kexportplugin.h
util/kpluginfactory.h util/kpluginfactory.h

View file

@ -25,7 +25,6 @@
#include <kdebug.h> #include <kdebug.h>
#include <klocale.h> #include <klocale.h>
#include <klocale_p.h> #include <klocale_p.h>
#include <klibrary.h>
#include <kstandarddirs.h> #include <kstandarddirs.h>
#include <kuitsemantics_p.h> #include <kuitsemantics_p.h>
#include "kcatalogname_p.h" #include "kcatalogname_p.h"

View file

@ -1,120 +0,0 @@
/* This file is part of the KDE libraries
Copyright (C) 1999 Torben Weis <weis@kde.org>
Copyright (C) 2000 Michael Matz <matz@kde.org>
Copyright (C) 2007 Bernhard Loos <nhuh.put@web.de.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include "klibrary.h"
#include <QtCore/QDir>
#include <QtCore/QPointer>
#include <kcomponentdata.h>
#include <kstandarddirs.h>
#include <kpluginfactory.h>
#include <kdebug.h>
extern QString makeLibName( const QString &libname );
extern QString findLibraryInternal(const QString &name, const KComponentData &cData);
int kLibraryDebugArea() {
static int s_area = KDebug::registerArea("kdecore (KLibrary)");
return s_area;
}
//static
QString findLibrary(const QString &name, const KComponentData &cData)
{
return findLibraryInternal(name, cData);;
}
KLibrary::KLibrary(QObject *parent)
: QLibrary(parent), d_ptr(0)
{
}
KLibrary::KLibrary(const QString &name, const KComponentData &cData, QObject *parent)
: QLibrary(findLibrary(name, cData), parent), d_ptr(0)
{
}
KLibrary::KLibrary(const QString &name, int verNum, const KComponentData &cData, QObject *parent)
: QLibrary(findLibrary(name, cData), verNum, parent), d_ptr(0)
{
}
KLibrary::~KLibrary()
{
}
static KPluginFactory *kde4Factory(KLibrary *lib)
{
const QByteArray symname("qt_plugin_instance");
typedef QObject* (*t_func)();
t_func func = reinterpret_cast<t_func>(lib->resolveFunction(symname));
if ( !func )
{
kDebug(kLibraryDebugArea()) << "The library" << lib->fileName() << "does not offer a qt_plugin_instance function.";
return 0;
}
QObject* instance = func();
KPluginFactory *factory = qobject_cast<KPluginFactory *>(instance);
if( !factory )
{
if (instance)
kDebug(kLibraryDebugArea()) << "Expected a KPluginFactory, got a" << instance->metaObject()->className();
kDebug(kLibraryDebugArea()) << "The library" << lib->fileName() << "does not offer a KDE 4 compatible factory.";
return 0;
}
return factory;
}
// deprecated
KPluginFactory* KLibrary::factory(const char* factoryname)
{
Q_UNUSED(factoryname);
if (fileName().isEmpty()) {
return NULL;
}
return kde4Factory(this);
}
KLibrary::void_function_ptr KLibrary::resolveFunction( const char* symname )
{
void *psym = resolve( symname );
if (!psym)
return 0;
// Cast the void* to non-pointer type first - it's not legal to
// cast a pointer-to-object directly to a pointer-to-function.
ptrdiff_t tmp = reinterpret_cast<ptrdiff_t>(psym);
void_function_ptr sym = reinterpret_cast<void_function_ptr>(tmp);
return sym;
}
void KLibrary::setFileName(const QString &name, const KComponentData &data)
{
QLibrary::setFileName(findLibrary(name, data));
}
#include "moc_klibrary.cpp"

View file

@ -1,76 +0,0 @@
/* This file is part of the KDE libraries
Copyright (C) 2007 Bernhard Loos <nhuh.put@web.de.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef KLIBRARY_H
#define KLIBRARY_H
#include <kdecore_export.h>
#include <kglobal.h>
#include <QtCore/QLibrary>
class KLibraryPrivate;
class KPluginFactory;
/**
* \class KLibrary klibrary.h <KLibrary>
*
* Thin wrapper around QLibrary; you should rarely use this directly, see KPluginLoader for higher-level loading of plugins.
* KLibrary adds kde3-factory and kde4-factory support to QLibrary (for the deprecated KLibLoader)
* KLibrary also searches libs in the kde search paths.
*/
class KDECORE_EXPORT KLibrary : public QLibrary
{
Q_OBJECT
Q_PROPERTY(QString fileName READ fileName WRITE setFileName)
public:
typedef void (*void_function_ptr) ();
explicit KLibrary(QObject *parent = 0);
explicit KLibrary(const QString &name, const KComponentData &cData = KGlobal::mainComponent(), QObject *parent = 0);
KLibrary(const QString &name, int verNum, const KComponentData &cData = KGlobal::mainComponent(), QObject *parent = 0);
virtual ~KLibrary();
/**
* Returns the factory of the library.
* @param factoryname The postfix to the init_ symbol used to create the
* factory object. It corresponds to the first parameter to
* K_EXPORT_COMPONENT_FACTORY.
* @return The factory of the library if there is any, otherwise 0
* @deprecated use KPluginLoader::factory
*/
KDE_DEPRECATED KPluginFactory* factory( const char* factoryname = 0 );
/**
* Looks up a symbol from the library. This is a very low level
* function that you usually don't want to use.
* @param name the name of the symbol to look up
* @return the address of the symbol, or 0 if it does not exist
*/
void_function_ptr resolveFunction(const char *name);
void setFileName(const QString &name, const KComponentData &data = KGlobal::mainComponent());
bool unload() { return false; } //this is only temporary. i will remove it as soon as I have removed all dangerous users of it
private:
KLibraryPrivate *d_ptr;
};
#endif

View file

@ -28,8 +28,6 @@
K_GLOBAL_STATIC(QObjectCleanupHandler, factorycleanup) K_GLOBAL_STATIC(QObjectCleanupHandler, factorycleanup)
extern int kLibraryDebugArea();
KPluginFactory::KPluginFactory(const char *componentName, const char *catalogName, QObject *parent) KPluginFactory::KPluginFactory(const char *componentName, const char *catalogName, QObject *parent)
: QObject(parent), d_ptr(new KPluginFactoryPrivate) : QObject(parent), d_ptr(new KPluginFactoryPrivate)
{ {
@ -86,7 +84,7 @@ void KPluginFactory::registerPlugin(const QString &keyword, const QMetaObject *m
// we allow different interfaces to be registered without keyword // we allow different interfaces to be registered without keyword
if (!keyword.isEmpty()) { if (!keyword.isEmpty()) {
if (d->createInstanceHash.contains(keyword)) { if (d->createInstanceHash.contains(keyword)) {
kFatal(kLibraryDebugArea()) << "A plugin with the keyword" << keyword << "was already registered. A keyword must be unique!"; kFatal() << "A plugin with the keyword" << keyword << "was already registered. A keyword must be unique!";
} }
d->createInstanceHash.insert(keyword, KPluginFactoryPrivate::Plugin(metaObject, instanceFunction)); d->createInstanceHash.insert(keyword, KPluginFactoryPrivate::Plugin(metaObject, instanceFunction));
} else { } else {
@ -97,7 +95,7 @@ void KPluginFactory::registerPlugin(const QString &keyword, const QMetaObject *m
for (const QMetaObject *otherSuper = plugin.first->superClass(); otherSuper; for (const QMetaObject *otherSuper = plugin.first->superClass(); otherSuper;
otherSuper = otherSuper->superClass()) { otherSuper = otherSuper->superClass()) {
if (superClass == otherSuper) { if (superClass == otherSuper) {
kFatal(kLibraryDebugArea()) << "Two plugins with the same interface(" << superClass->className() << ") were registered. Use keywords to identify the plugins."; kFatal() << "Two plugins with the same interface(" << superClass->className() << ") were registered. Use keywords to identify the plugins.";
} }
} }
} }
@ -108,7 +106,7 @@ void KPluginFactory::registerPlugin(const QString &keyword, const QMetaObject *m
for (const QMetaObject *otherSuper = metaObject->superClass(); otherSuper; for (const QMetaObject *otherSuper = metaObject->superClass(); otherSuper;
otherSuper = otherSuper->superClass()) { otherSuper = otherSuper->superClass()) {
if (superClass == otherSuper) { if (superClass == otherSuper) {
kFatal(kLibraryDebugArea()) << "Two plugins with the same interface(" << superClass->className() << ") were registered. Use keywords to identify the plugins."; kFatal() << "Two plugins with the same interface(" << superClass->className() << ") were registered. Use keywords to identify the plugins.";
} }
} }
} }
@ -138,7 +136,7 @@ QObject *KPluginFactory::create(const char *iface, QWidget *parentWidget, QObjec
for (const QMetaObject *current = plugin.first; current; current = current->superClass()) { for (const QMetaObject *current = plugin.first; current; current = current->superClass()) {
if (0 == qstrcmp(iface, current->className())) { if (0 == qstrcmp(iface, current->className())) {
if (obj) { if (obj) {
kFatal(kLibraryDebugArea()) << "ambiguous interface requested from a DSO containing more than one plugin"; kFatal() << "ambiguous interface requested from a DSO containing more than one plugin";
} }
obj = plugin.second(parentWidget, parent, args); obj = plugin.second(parentWidget, parent, args);
break; break;

View file

@ -24,15 +24,12 @@
#include <klocale.h> #include <klocale.h>
#include "kpluginfactory.h" #include "kpluginfactory.h"
#include <kservice.h> #include <kservice.h>
#include "klibrary.h"
#include <kdebug.h> #include <kdebug.h>
#include <QtCore/QLibrary> #include <QtCore/QLibrary>
#include <QtCore/QDir> #include <QtCore/QDir>
#include <QtCore/QFileInfo> #include <QtCore/QFileInfo>
extern int kLibraryDebugArea();
class KPluginLoaderPrivate class KPluginLoaderPrivate
{ {
Q_DECLARE_PUBLIC(KPluginLoader) Q_DECLARE_PUBLIC(KPluginLoader)
@ -51,7 +48,7 @@ protected:
KDEPluginVerificationData *verificationData; KDEPluginVerificationData *verificationData;
QString errorString; QString errorString;
KLibrary *lib; QLibrary *lib;
}; };
inline QString makeLibName( const QString &libname ) inline QString makeLibName( const QString &libname )
@ -85,7 +82,7 @@ QString findLibraryInternal(const QString &name, const KComponentData &cData)
bool hasPrefix = fileinfo.fileName().startsWith(QLatin1String("lib")); bool hasPrefix = fileinfo.fileName().startsWith(QLatin1String("lib"));
if (hasPrefix) if (hasPrefix)
kDebug(kLibraryDebugArea()) << "plugins should not have a 'lib' prefix:" << libname; kDebug() << "plugins should not have a 'lib' prefix:" << libname;
// If it is a absolute path just return it // If it is a absolute path just return it
if (!QDir::isRelativePath(libname)) if (!QDir::isRelativePath(libname))
@ -105,7 +102,7 @@ QString findLibraryInternal(const QString &name, const KComponentData &cData)
libfile = cData.dirs()->findResource("lib", libname); libfile = cData.dirs()->findResource("lib", libname);
if (!libfile.isEmpty()) { if (!libfile.isEmpty()) {
kDebug(kLibraryDebugArea()) << "library" << libname << "not found under 'module' but under 'lib'"; kDebug() << "library" << libname << "not found under 'module' but under 'lib'";
return libfile; return libfile;
} }
@ -186,7 +183,7 @@ KPluginFactory *KPluginLoader::factory()
KPluginFactory *factory = qobject_cast<KPluginFactory *>(obj); KPluginFactory *factory = qobject_cast<KPluginFactory *>(obj);
if (factory == 0) { if (factory == 0) {
kDebug(kLibraryDebugArea()) << "Expected a KPluginFactory, got a" << obj->metaObject()->className(); kDebug() << "Expected a KPluginFactory, got a" << obj->metaObject()->className();
delete obj; delete obj;
d->errorString = i18n("The library %1 does not offer a KDE 4 compatible factory." , d->name); d->errorString = i18n("The library %1 does not offer a KDE 4 compatible factory." , d->name);
} }
@ -202,7 +199,7 @@ bool KPluginLoader::load()
return true; return true;
if (!QPluginLoader::load()) { if (!QPluginLoader::load()) {
d->lib = new KLibrary(d->name); d->lib = new QLibrary(d->name);
if (d->lib->load()) if (d->lib->load())
return true; return true;
@ -224,7 +221,7 @@ bool KPluginLoader::load()
return false; return false;
} }
} else { } else {
kDebug(kLibraryDebugArea()) << "The plugin" << d->name << "doesn't contain a kde_plugin_verification_data structure"; kDebug() << "The plugin" << d->name << "doesn't contain a kde_plugin_verification_data structure";
} }
quint32 *version = (quint32 *) lib.resolve("kde_plugin_version"); quint32 *version = (quint32 *) lib.resolve("kde_plugin_version");

View file

@ -34,7 +34,6 @@
#include <kapplication.h> #include <kapplication.h>
#include <kcmdlineargs.h> #include <kcmdlineargs.h>
#include <kaboutdata.h> #include <kaboutdata.h>
#include <klibrary.h>
#include <klocale.h> #include <klocale.h>
#include <kglobal.h> #include <kglobal.h>
#include <kconfig.h> #include <kconfig.h>
@ -415,7 +414,7 @@ QStringList Kded::loadedModules()
void Kded::slotKDEDModuleRemoved(KDEDModule *module) void Kded::slotKDEDModuleRemoved(KDEDModule *module)
{ {
m_modules.remove(module->moduleName()); m_modules.remove(module->moduleName());
//KLibrary *lib = m_libs.take(module->moduleName()); //QLibrary *lib = m_libs.take(module->moduleName());
//if (lib) //if (lib)
// lib->unload(); // lib->unload();
} }

View file

@ -197,7 +197,7 @@ private:
bool m_recreateBusy; bool m_recreateBusy;
QHash<QString,KDEDModule *> m_modules; QHash<QString,KDEDModule *> m_modules;
//QHash<QString,KLibrary *> m_libs; //QHash<QString,QLibrary *> m_libs;
QHash<QString,QObject *> m_dontLoad; QHash<QString,QObject *> m_dontLoad;
//window id tracking, with a QDBusServiceWatcher to remove them as needed //window id tracking, with a QDBusServiceWatcher to remove them as needed

View file

@ -54,7 +54,6 @@
#include <QtCore/QRegExp> #include <QtCore/QRegExp>
#include <QtGui/QFont> #include <QtGui/QFont>
#include <kcomponentdata.h> #include <kcomponentdata.h>
#include <klibrary.h>
#include <kdemacros.h> #include <kdemacros.h>
#include <kstandarddirs.h> #include <kstandarddirs.h>
#include <kglobal.h> #include <kglobal.h>
@ -64,6 +63,7 @@
#include <kdebug.h> #include <kdebug.h>
#include <kde_file.h> #include <kde_file.h>
#include <ksavefile.h> #include <ksavefile.h>
#include <kpluginloader.h>
#ifdef Q_OS_LINUX #ifdef Q_OS_LINUX
#include <sys/prctl.h> #include <sys/prctl.h>
@ -421,7 +421,7 @@ static pid_t launch(int argc, const char *_name, const char *args,
name = _name; name = _name;
lib = QFile::decodeName(name); lib = QFile::decodeName(name);
exec = name; exec = name;
KLibrary klib(lib, *s_instance ); KPluginLoader klib(lib, *s_instance );
libpath = klib.fileName(); libpath = klib.fileName();
execpath = execpath_avoid_loops(exec, envc, envs, avoid_loops); execpath = execpath_avoid_loops(exec, envc, envs, avoid_loops);
} else { } else {

View file

@ -44,7 +44,6 @@
#include <kconfig.h> #include <kconfig.h>
#include <kdebug.h> #include <kdebug.h>
#include <kde_file.h> #include <kde_file.h>
#include <klibrary.h>
#include <klocale.h> #include <klocale.h>
#include <kprotocolmanager.h> #include <kprotocolmanager.h>
#include <kprotocolinfo.h> #include <kprotocolinfo.h>
@ -1115,16 +1114,17 @@ KLauncher::requestSlave(const QString &protocol,
kde_safe_write(kdeinitSocket, &request_header, sizeof(request_header)); kde_safe_write(kdeinitSocket, &request_header, sizeof(request_header));
} }
if (mSlaveValgrind == protocol) { if (mSlaveValgrind == protocol) {
KLibrary lib(name, KGlobal::mainComponent()); KPluginLoader lib(name, KGlobal::mainComponent());
arg_list.prepend(lib.fileName()); arg_list.prepend(lib.fileName());
arg_list.prepend(KStandardDirs::locate("exe", QString::fromLatin1("kioslave"))); arg_list.prepend(KStandardDirs::locate("exe", QString::fromLatin1("kioslave")));
name = QString::fromLatin1("valgrind"); name = QString::fromLatin1("valgrind");
if (!mSlaveValgrindSkin.isEmpty()) { if (!mSlaveValgrindSkin.isEmpty()) {
arg_list.prepend(QLatin1String("--tool=") + mSlaveValgrindSkin); arg_list.prepend(QLatin1String("--tool=") + mSlaveValgrindSkin);
} else } else {
arg_list.prepend(QLatin1String("--tool=memcheck")); arg_list.prepend(QLatin1String("--tool=memcheck"));
} }
}
#endif #endif
KLaunchRequest *request = new KLaunchRequest; KLaunchRequest *request = new KLaunchRequest;
request->autoStart = false; request->autoStart = false;

View file

@ -39,7 +39,6 @@
#include <kstandarddirs.h> #include <kstandarddirs.h>
#include <ktoolinvocation.h> #include <ktoolinvocation.h>
#include <klauncher_iface.h> #include <klauncher_iface.h>
#include <klibrary.h>
#include "dataprotocol.h" #include "dataprotocol.h"
#include "kservice.h" #include "kservice.h"
@ -436,7 +435,7 @@ Slave* Slave::createSlave( const QString &protocol, const KUrl& url, int& error,
delete slave; delete slave;
return 0; return 0;
} }
KLibrary lib(_name, KGlobal::mainComponent()); KPluginLoader lib(_name, KGlobal::mainComponent());
QString lib_path = lib.fileName(); QString lib_path = lib.fileName();
if (lib_path.isEmpty()) if (lib_path.isEmpty())
{ {

View file

@ -28,11 +28,10 @@
#include <kdebug.h> #include <kdebug.h>
#include <kconfig.h> #include <kconfig.h>
#include <kconfiggroup.h> #include <kconfiggroup.h>
#include <klibrary.h>
#include <QtCore/QCoreApplication> #include <QtCore/QCoreApplication>
#include <QtCore/QFile> #include <QtCore/QFile>
#include <QtCore/QRegExp> #include <QtCore/QRegExp>
#include <QtCore/QLibrary>
#include <stdio.h> #include <stdio.h>
#include <unistd.h> #include <unistd.h>
@ -210,8 +209,8 @@ public:
: sslLib(0), cryptoLib(0), ok(false) : sslLib(0), cryptoLib(0), ok(false)
{} {}
KLibrary *sslLib; QLibrary *sslLib;
KLibrary *cryptoLib; QLibrary *cryptoLib;
bool ok; bool ok;
static KOpenSSLProxy *sSelf; static KOpenSSLProxy *sSelf;
@ -300,7 +299,7 @@ KOpenSSLProxy::KOpenSSLProxy()
{ {
QString libname = findMostRecentLib("/usr/lib" KDELIBSUFF, "crypto"); QString libname = findMostRecentLib("/usr/lib" KDELIBSUFF, "crypto");
if (!libname.isNull()) { if (!libname.isNull()) {
d->cryptoLib = new KLibrary(libname); d->cryptoLib = new QLibrary(libname);
d->cryptoLib->setLoadHints(QLibrary::ExportExternalSymbolsHint); d->cryptoLib->setLoadHints(QLibrary::ExportExternalSymbolsHint);
if (!d->cryptoLib->load()) { if (!d->cryptoLib->load()) {
delete d->cryptoLib; delete d->cryptoLib;
@ -366,7 +365,7 @@ KOpenSSLProxy::KOpenSSLProxy()
QString tmpStr(alib.toLatin1().constData()); QString tmpStr(alib.toLatin1().constData());
tmpStr.remove(QRegExp("\\(.*\\)")); tmpStr.remove(QRegExp("\\(.*\\)"));
if (!access(tmpStr.toLatin1(), R_OK)) { if (!access(tmpStr.toLatin1(), R_OK)) {
d->cryptoLib = new KLibrary(alib); d->cryptoLib = new QLibrary(alib);
d->cryptoLib->setLoadHints(QLibrary::ExportExternalSymbolsHint); d->cryptoLib->setLoadHints(QLibrary::ExportExternalSymbolsHint);
} }
if (d->cryptoLib && d->cryptoLib->load()) { if (d->cryptoLib && d->cryptoLib->load()) {
@ -382,128 +381,128 @@ KOpenSSLProxy::KOpenSSLProxy()
if (d->cryptoLib) { if (d->cryptoLib) {
#ifdef KSSL_HAVE_SSL #ifdef KSSL_HAVE_SSL
K_X509_free = (void (*) (X509 *)) d->cryptoLib->resolveFunction("X509_free"); K_X509_free = (void (*) (X509 *)) d->cryptoLib->resolve("X509_free");
K_RAND_egd = (int (*)(const char *)) d->cryptoLib->resolveFunction("RAND_egd"); K_RAND_egd = (int (*)(const char *)) d->cryptoLib->resolve("RAND_egd");
K_RAND_load_file = (int (*)(const char *, long)) d->cryptoLib->resolveFunction("RAND_load_file"); K_RAND_load_file = (int (*)(const char *, long)) d->cryptoLib->resolve("RAND_load_file");
K_RAND_file_name = (const char* (*)(char *, size_t)) d->cryptoLib->resolveFunction("RAND_file_name"); K_RAND_file_name = (const char* (*)(char *, size_t)) d->cryptoLib->resolve("RAND_file_name");
K_RAND_write_file = (int (*)(const char *)) d->cryptoLib->resolveFunction("RAND_write_file"); K_RAND_write_file = (int (*)(const char *)) d->cryptoLib->resolve("RAND_write_file");
K_CRYPTO_free = (void (*) (void *)) d->cryptoLib->resolveFunction("CRYPTO_free"); K_CRYPTO_free = (void (*) (void *)) d->cryptoLib->resolve("CRYPTO_free");
K_d2i_X509 = (X509 * (*)(X509 **,unsigned char **,long)) d->cryptoLib->resolveFunction("d2i_X509"); K_d2i_X509 = (X509 * (*)(X509 **,unsigned char **,long)) d->cryptoLib->resolve("d2i_X509");
K_i2d_X509 = (int (*)(X509 *,unsigned char **)) d->cryptoLib->resolveFunction("i2d_X509"); K_i2d_X509 = (int (*)(X509 *,unsigned char **)) d->cryptoLib->resolve("i2d_X509");
K_X509_cmp = (int (*)(X509 *, X509 *)) d->cryptoLib->resolveFunction("X509_cmp"); K_X509_cmp = (int (*)(X509 *, X509 *)) d->cryptoLib->resolve("X509_cmp");
K_X509_STORE_CTX_new = (X509_STORE_CTX * (*) (void)) d->cryptoLib->resolveFunction("X509_STORE_CTX_new"); K_X509_STORE_CTX_new = (X509_STORE_CTX * (*) (void)) d->cryptoLib->resolve("X509_STORE_CTX_new");
K_X509_STORE_CTX_free = (void (*) (X509_STORE_CTX *)) d->cryptoLib->resolveFunction("X509_STORE_CTX_free"); K_X509_STORE_CTX_free = (void (*) (X509_STORE_CTX *)) d->cryptoLib->resolve("X509_STORE_CTX_free");
K_X509_verify_cert = (int (*) (X509_STORE_CTX *)) d->cryptoLib->resolveFunction("X509_verify_cert"); K_X509_verify_cert = (int (*) (X509_STORE_CTX *)) d->cryptoLib->resolve("X509_verify_cert");
K_X509_STORE_new = (X509_STORE * (*) (void)) d->cryptoLib->resolveFunction("X509_STORE_new"); K_X509_STORE_new = (X509_STORE * (*) (void)) d->cryptoLib->resolve("X509_STORE_new");
K_X509_STORE_free = (void (*) (X509_STORE *)) d->cryptoLib->resolveFunction("X509_STORE_free"); K_X509_STORE_free = (void (*) (X509_STORE *)) d->cryptoLib->resolve("X509_STORE_free");
K_X509_NAME_oneline = (char * (*) (X509_NAME *,char *,int)) d->cryptoLib->resolveFunction("X509_NAME_oneline"); K_X509_NAME_oneline = (char * (*) (X509_NAME *,char *,int)) d->cryptoLib->resolve("X509_NAME_oneline");
K_X509_get_subject_name = (X509_NAME * (*) (X509 *)) d->cryptoLib->resolveFunction("X509_get_subject_name"); K_X509_get_subject_name = (X509_NAME * (*) (X509 *)) d->cryptoLib->resolve("X509_get_subject_name");
K_X509_get_issuer_name = (X509_NAME * (*) (X509 *)) d->cryptoLib->resolveFunction("X509_get_issuer_name"); K_X509_get_issuer_name = (X509_NAME * (*) (X509 *)) d->cryptoLib->resolve("X509_get_issuer_name");
K_X509_STORE_add_lookup = (X509_LOOKUP *(*) (X509_STORE *, X509_LOOKUP_METHOD *)) d->cryptoLib->resolveFunction("X509_STORE_add_lookup"); K_X509_STORE_add_lookup = (X509_LOOKUP *(*) (X509_STORE *, X509_LOOKUP_METHOD *)) d->cryptoLib->resolve("X509_STORE_add_lookup");
K_X509_LOOKUP_file = (X509_LOOKUP_METHOD *(*)(void)) d->cryptoLib->resolveFunction("X509_LOOKUP_file"); K_X509_LOOKUP_file = (X509_LOOKUP_METHOD *(*)(void)) d->cryptoLib->resolve("X509_LOOKUP_file");
K_X509_LOOKUP_free = (void (*)(X509_LOOKUP *)) d->cryptoLib->resolveFunction("X509_LOOKUP_free"); K_X509_LOOKUP_free = (void (*)(X509_LOOKUP *)) d->cryptoLib->resolve("X509_LOOKUP_free");
K_X509_LOOKUP_ctrl = (int (*)(X509_LOOKUP *, int, const char *, long, char **)) d->cryptoLib->resolveFunction("X509_LOOKUP_ctrl"); K_X509_LOOKUP_ctrl = (int (*)(X509_LOOKUP *, int, const char *, long, char **)) d->cryptoLib->resolve("X509_LOOKUP_ctrl");
K_X509_STORE_CTX_init = (void (*)(X509_STORE_CTX *, X509_STORE *, X509 *, STACK_OF(X509) *)) d->cryptoLib->resolveFunction("X509_STORE_CTX_init"); K_X509_STORE_CTX_init = (void (*)(X509_STORE_CTX *, X509_STORE *, X509 *, STACK_OF(X509) *)) d->cryptoLib->resolve("X509_STORE_CTX_init");
K_X509_dup = (X509* (*)(X509*)) d->cryptoLib->resolveFunction("X509_dup"); K_X509_dup = (X509* (*)(X509*)) d->cryptoLib->resolve("X509_dup");
K_BIO_s_mem = (BIO_METHOD *(*) (void)) d->cryptoLib->resolveFunction("BIO_s_mem"); K_BIO_s_mem = (BIO_METHOD *(*) (void)) d->cryptoLib->resolve("BIO_s_mem");
K_BIO_new = (BIO* (*)(BIO_METHOD *)) d->cryptoLib->resolveFunction("BIO_new"); K_BIO_new = (BIO* (*)(BIO_METHOD *)) d->cryptoLib->resolve("BIO_new");
K_BIO_new_fp = (BIO* (*)(FILE*, int)) d->cryptoLib->resolveFunction("BIO_new_fp"); K_BIO_new_fp = (BIO* (*)(FILE*, int)) d->cryptoLib->resolve("BIO_new_fp");
K_BIO_new_mem_buf = (BIO* (*)(void *, int)) d->cryptoLib->resolveFunction("BIO_new_mem_buf"); K_BIO_new_mem_buf = (BIO* (*)(void *, int)) d->cryptoLib->resolve("BIO_new_mem_buf");
K_BIO_free = (int (*)(BIO*)) d->cryptoLib->resolveFunction("BIO_free"); K_BIO_free = (int (*)(BIO*)) d->cryptoLib->resolve("BIO_free");
K_BIO_ctrl = (long (*) (BIO *,int,long,void *)) d->cryptoLib->resolveFunction("BIO_ctrl"); K_BIO_ctrl = (long (*) (BIO *,int,long,void *)) d->cryptoLib->resolve("BIO_ctrl");
K_BIO_write = (int (*) (BIO *b, const void *data, int len)) d->cryptoLib->resolveFunction("BIO_write"); K_BIO_write = (int (*) (BIO *b, const void *data, int len)) d->cryptoLib->resolve("BIO_write");
K_PEM_ASN1_write_bio = (int (*)(int (*)(), const char *,BIO*, char*, const EVP_CIPHER *, unsigned char *, int, pem_password_cb *, void *)) d->cryptoLib->resolveFunction("PEM_ASN1_write_bio"); K_PEM_ASN1_write_bio = (int (*)(int (*)(), const char *,BIO*, char*, const EVP_CIPHER *, unsigned char *, int, pem_password_cb *, void *)) d->cryptoLib->resolve("PEM_ASN1_write_bio");
K_ASN1_item_i2d_fp = (int (*)(ASN1_ITEM *, FILE*, unsigned char *)) K_ASN1_item_i2d_fp = (int (*)(ASN1_ITEM *, FILE*, unsigned char *))
d->cryptoLib->resolveFunction("ASN1_item_i2d_fp"); d->cryptoLib->resolve("ASN1_item_i2d_fp");
K_NETSCAPE_X509_it = (ASN1_ITEM *) d->cryptoLib->resolveFunction("NETSCAPE_X509_it"); K_NETSCAPE_X509_it = (ASN1_ITEM *) d->cryptoLib->resolve("NETSCAPE_X509_it");
K_X509_print_fp = (int (*)(FILE*, X509*)) d->cryptoLib->resolveFunction("X509_print_fp"); K_X509_print_fp = (int (*)(FILE*, X509*)) d->cryptoLib->resolve("X509_print_fp");
K_i2d_PKCS12 = (int (*)(PKCS12*, unsigned char**)) d->cryptoLib->resolveFunction("i2d_PKCS12"); K_i2d_PKCS12 = (int (*)(PKCS12*, unsigned char**)) d->cryptoLib->resolve("i2d_PKCS12");
K_i2d_PKCS12_fp = (int (*)(FILE *, PKCS12*)) d->cryptoLib->resolveFunction("i2d_PKCS12_fp"); K_i2d_PKCS12_fp = (int (*)(FILE *, PKCS12*)) d->cryptoLib->resolve("i2d_PKCS12_fp");
K_PKCS12_newpass = (int (*)(PKCS12*, char*, char*)) d->cryptoLib->resolveFunction("PKCS12_newpass"); K_PKCS12_newpass = (int (*)(PKCS12*, char*, char*)) d->cryptoLib->resolve("PKCS12_newpass");
K_d2i_PKCS12_fp = (PKCS12* (*)(FILE*, PKCS12**)) d->cryptoLib->resolveFunction("d2i_PKCS12_fp"); K_d2i_PKCS12_fp = (PKCS12* (*)(FILE*, PKCS12**)) d->cryptoLib->resolve("d2i_PKCS12_fp");
K_PKCS12_new = (PKCS12* (*)()) d->cryptoLib->resolveFunction("PKCS12_new"); K_PKCS12_new = (PKCS12* (*)()) d->cryptoLib->resolve("PKCS12_new");
K_PKCS12_free = (void (*)(PKCS12 *)) d->cryptoLib->resolveFunction("PKCS12_free"); K_PKCS12_free = (void (*)(PKCS12 *)) d->cryptoLib->resolve("PKCS12_free");
K_PKCS12_parse = (int (*)(PKCS12*, const char *, EVP_PKEY**, K_PKCS12_parse = (int (*)(PKCS12*, const char *, EVP_PKEY**,
X509**, STACK_OF(X509)**)) d->cryptoLib->resolveFunction("PKCS12_parse"); X509**, STACK_OF(X509)**)) d->cryptoLib->resolve("PKCS12_parse");
K_EVP_PKEY_free = (void (*) (EVP_PKEY *)) d->cryptoLib->resolveFunction("EVP_PKEY_free"); K_EVP_PKEY_free = (void (*) (EVP_PKEY *)) d->cryptoLib->resolve("EVP_PKEY_free");
K_EVP_PKEY_new = (EVP_PKEY* (*)()) d->cryptoLib->resolveFunction("EVP_PKEY_new"); K_EVP_PKEY_new = (EVP_PKEY* (*)()) d->cryptoLib->resolve("EVP_PKEY_new");
K_X509_REQ_free = (void (*)(X509_REQ*)) d->cryptoLib->resolveFunction("X509_REQ_free"); K_X509_REQ_free = (void (*)(X509_REQ*)) d->cryptoLib->resolve("X509_REQ_free");
K_X509_REQ_new = (X509_REQ* (*)()) d->cryptoLib->resolveFunction("X509_REQ_new"); K_X509_REQ_new = (X509_REQ* (*)()) d->cryptoLib->resolve("X509_REQ_new");
K_X509_STORE_CTX_set_chain = (void (*)(X509_STORE_CTX *, STACK_OF(X509)*)) d->cryptoLib->resolveFunction("X509_STORE_CTX_set_chain"); K_X509_STORE_CTX_set_chain = (void (*)(X509_STORE_CTX *, STACK_OF(X509)*)) d->cryptoLib->resolve("X509_STORE_CTX_set_chain");
K_X509_STORE_CTX_set_purpose = (void (*)(X509_STORE_CTX *, int)) d->cryptoLib->resolveFunction("X509_STORE_CTX_set_purpose"); K_X509_STORE_CTX_set_purpose = (void (*)(X509_STORE_CTX *, int)) d->cryptoLib->resolve("X509_STORE_CTX_set_purpose");
K_sk_free = (void (*) (STACK *)) d->cryptoLib->resolveFunction("sk_free"); K_sk_free = (void (*) (STACK *)) d->cryptoLib->resolve("sk_free");
K_sk_num = (int (*) (STACK *)) d->cryptoLib->resolveFunction("sk_num"); K_sk_num = (int (*) (STACK *)) d->cryptoLib->resolve("sk_num");
K_sk_pop = (char* (*) (STACK *)) d->cryptoLib->resolveFunction("sk_pop"); K_sk_pop = (char* (*) (STACK *)) d->cryptoLib->resolve("sk_pop");
K_sk_value = (char* (*) (STACK *, int)) d->cryptoLib->resolveFunction("sk_value"); K_sk_value = (char* (*) (STACK *, int)) d->cryptoLib->resolve("sk_value");
K_sk_new = (STACK* (*) (int (*)())) d->cryptoLib->resolveFunction("sk_new"); K_sk_new = (STACK* (*) (int (*)())) d->cryptoLib->resolve("sk_new");
K_sk_push = (int (*) (STACK*, char*)) d->cryptoLib->resolveFunction("sk_push"); K_sk_push = (int (*) (STACK*, char*)) d->cryptoLib->resolve("sk_push");
K_sk_dup = (STACK* (*) (STACK *)) d->cryptoLib->resolveFunction("sk_dup"); K_sk_dup = (STACK* (*) (STACK *)) d->cryptoLib->resolve("sk_dup");
K_i2s_ASN1_INTEGER = (char *(*) (X509V3_EXT_METHOD *, ASN1_INTEGER *)) d->cryptoLib->resolveFunction("i2s_ASN1_INTEGER"); K_i2s_ASN1_INTEGER = (char *(*) (X509V3_EXT_METHOD *, ASN1_INTEGER *)) d->cryptoLib->resolve("i2s_ASN1_INTEGER");
K_X509_get_serialNumber = (ASN1_INTEGER * (*) (X509 *)) d->cryptoLib->resolveFunction("X509_get_serialNumber"); K_X509_get_serialNumber = (ASN1_INTEGER * (*) (X509 *)) d->cryptoLib->resolve("X509_get_serialNumber");
K_X509_get_pubkey = (EVP_PKEY *(*)(X509 *)) d->cryptoLib->resolveFunction("X509_get_pubkey"); K_X509_get_pubkey = (EVP_PKEY *(*)(X509 *)) d->cryptoLib->resolve("X509_get_pubkey");
K_i2d_PublicKey = (int (*)(EVP_PKEY *, unsigned char **)) d->cryptoLib->resolveFunction("i2d_PublicKey"); K_i2d_PublicKey = (int (*)(EVP_PKEY *, unsigned char **)) d->cryptoLib->resolve("i2d_PublicKey");
K_X509_check_private_key = (int (*)(X509 *, EVP_PKEY *)) d->cryptoLib->resolveFunction("X509_check_private_key"); K_X509_check_private_key = (int (*)(X509 *, EVP_PKEY *)) d->cryptoLib->resolve("X509_check_private_key");
K_BN_bn2hex = (char *(*)(const BIGNUM *)) d->cryptoLib->resolveFunction("BN_bn2hex"); K_BN_bn2hex = (char *(*)(const BIGNUM *)) d->cryptoLib->resolve("BN_bn2hex");
K_X509_digest = (int (*)(const X509 *,const EVP_MD *, unsigned char *, unsigned int *)) d->cryptoLib->resolveFunction("X509_digest"); K_X509_digest = (int (*)(const X509 *,const EVP_MD *, unsigned char *, unsigned int *)) d->cryptoLib->resolve("X509_digest");
K_EVP_md5 = (EVP_MD *(*)()) d->cryptoLib->resolveFunction("EVP_md5"); K_EVP_md5 = (EVP_MD *(*)()) d->cryptoLib->resolve("EVP_md5");
K_ASN1_INTEGER_free = (void (*)(ASN1_INTEGER *)) d->cryptoLib->resolveFunction("ASN1_INTEGER_free"); K_ASN1_INTEGER_free = (void (*)(ASN1_INTEGER *)) d->cryptoLib->resolve("ASN1_INTEGER_free");
K_OBJ_obj2nid = (int (*)(ASN1_OBJECT *)) d->cryptoLib->resolveFunction("OBJ_obj2nid"); K_OBJ_obj2nid = (int (*)(ASN1_OBJECT *)) d->cryptoLib->resolve("OBJ_obj2nid");
K_OBJ_nid2ln = (const char *(*)(int)) d->cryptoLib->resolveFunction("OBJ_nid2ln"); K_OBJ_nid2ln = (const char *(*)(int)) d->cryptoLib->resolve("OBJ_nid2ln");
K_X509_get_ext_count = (int (*)(X509*)) d->cryptoLib->resolveFunction("X509_get_ext_count"); K_X509_get_ext_count = (int (*)(X509*)) d->cryptoLib->resolve("X509_get_ext_count");
K_X509_get_ext_by_NID = (int (*)(X509*,int,int)) d->cryptoLib->resolveFunction("X509_get_ext_by_NID"); K_X509_get_ext_by_NID = (int (*)(X509*,int,int)) d->cryptoLib->resolve("X509_get_ext_by_NID");
K_X509_get_ext_by_OBJ = (int (*)(X509*,ASN1_OBJECT*,int)) d->cryptoLib->resolveFunction("X509_get_ext_by_OBJ"); K_X509_get_ext_by_OBJ = (int (*)(X509*,ASN1_OBJECT*,int)) d->cryptoLib->resolve("X509_get_ext_by_OBJ");
K_X509_get_ext = (X509_EXTENSION* (*)(X509*,int)) d->cryptoLib->resolveFunction("X509_get_ext"); K_X509_get_ext = (X509_EXTENSION* (*)(X509*,int)) d->cryptoLib->resolve("X509_get_ext");
K_X509_delete_ext = (X509_EXTENSION* (*)(X509*,int)) d->cryptoLib->resolveFunction("X509_delete_ext"); K_X509_delete_ext = (X509_EXTENSION* (*)(X509*,int)) d->cryptoLib->resolve("X509_delete_ext");
K_X509_add_ext = (int (*)(X509*,X509_EXTENSION*,int)) d->cryptoLib->resolveFunction("X509_add_ext"); K_X509_add_ext = (int (*)(X509*,X509_EXTENSION*,int)) d->cryptoLib->resolve("X509_add_ext");
K_X509_get_ext_d2i = (void* (*)(X509*,int,int*,int*)) d->cryptoLib->resolveFunction("X509_get_ext_d2i"); K_X509_get_ext_d2i = (void* (*)(X509*,int,int*,int*)) d->cryptoLib->resolve("X509_get_ext_d2i");
K_i2s_ASN1_OCTET_STRING = (char *(*)(X509V3_EXT_METHOD*,ASN1_OCTET_STRING*)) d->cryptoLib->resolveFunction("i2s_ASN1_OCTET_STRING"); K_i2s_ASN1_OCTET_STRING = (char *(*)(X509V3_EXT_METHOD*,ASN1_OCTET_STRING*)) d->cryptoLib->resolve("i2s_ASN1_OCTET_STRING");
K_ASN1_BIT_STRING_get_bit = (int (*)(ASN1_BIT_STRING*,int)) d->cryptoLib->resolveFunction("ASN1_BIT_STRING_get_bit"); K_ASN1_BIT_STRING_get_bit = (int (*)(ASN1_BIT_STRING*,int)) d->cryptoLib->resolve("ASN1_BIT_STRING_get_bit");
K_PKCS7_new = (PKCS7 *(*)()) d->cryptoLib->resolveFunction("PKCS7_new"); K_PKCS7_new = (PKCS7 *(*)()) d->cryptoLib->resolve("PKCS7_new");
K_PKCS7_free = (void (*)(PKCS7*)) d->cryptoLib->resolveFunction("PKCS7_free"); K_PKCS7_free = (void (*)(PKCS7*)) d->cryptoLib->resolve("PKCS7_free");
K_PKCS7_content_free = (void (*)(PKCS7*)) d->cryptoLib->resolveFunction("PKCS7_content_free"); K_PKCS7_content_free = (void (*)(PKCS7*)) d->cryptoLib->resolve("PKCS7_content_free");
K_i2d_PKCS7 = (int (*)(PKCS7*, unsigned char**)) d->cryptoLib->resolveFunction("i2d_PKCS7"); K_i2d_PKCS7 = (int (*)(PKCS7*, unsigned char**)) d->cryptoLib->resolve("i2d_PKCS7");
K_i2d_PKCS7_fp = (int (*)(FILE*,PKCS7*)) d->cryptoLib->resolveFunction("i2d_PKCS7_fp"); K_i2d_PKCS7_fp = (int (*)(FILE*,PKCS7*)) d->cryptoLib->resolve("i2d_PKCS7_fp");
K_i2d_PKCS7_bio = (int (*)(BIO *bp,PKCS7 *p7)) d->cryptoLib->resolveFunction("i2d_PKCS7_bio"); K_i2d_PKCS7_bio = (int (*)(BIO *bp,PKCS7 *p7)) d->cryptoLib->resolve("i2d_PKCS7_bio");
K_d2i_PKCS7 = (PKCS7* (*)(PKCS7**,unsigned char**,long)) d->cryptoLib->resolveFunction("d2i_PKCS7"); K_d2i_PKCS7 = (PKCS7* (*)(PKCS7**,unsigned char**,long)) d->cryptoLib->resolve("d2i_PKCS7");
K_d2i_PKCS7_fp = (PKCS7 *(*)(FILE *,PKCS7**)) d->cryptoLib->resolveFunction("d2i_PKCS7_fp"); K_d2i_PKCS7_fp = (PKCS7 *(*)(FILE *,PKCS7**)) d->cryptoLib->resolve("d2i_PKCS7_fp");
K_d2i_PKCS7_bio = (PKCS7 *(*)(BIO *bp,PKCS7 **p7)) d->cryptoLib->resolveFunction("d2i_PKCS7_bio"); K_d2i_PKCS7_bio = (PKCS7 *(*)(BIO *bp,PKCS7 **p7)) d->cryptoLib->resolve("d2i_PKCS7_bio");
K_PKCS7_dup = (PKCS7* (*)(PKCS7*)) d->cryptoLib->resolveFunction("PKCS7_dup"); K_PKCS7_dup = (PKCS7* (*)(PKCS7*)) d->cryptoLib->resolve("PKCS7_dup");
K_PKCS7_sign = (PKCS7 *(*)(X509*, EVP_PKEY*, STACK_OF(X509)*, BIO*, int)) d->cryptoLib->resolveFunction("PKCS7_sign"); K_PKCS7_sign = (PKCS7 *(*)(X509*, EVP_PKEY*, STACK_OF(X509)*, BIO*, int)) d->cryptoLib->resolve("PKCS7_sign");
K_PKCS7_verify = (int (*)(PKCS7*,STACK_OF(X509)*,X509_STORE*,BIO*,BIO*,int)) d->cryptoLib->resolveFunction("PKCS7_verify"); K_PKCS7_verify = (int (*)(PKCS7*,STACK_OF(X509)*,X509_STORE*,BIO*,BIO*,int)) d->cryptoLib->resolve("PKCS7_verify");
K_PKCS7_get0_signers = (STACK_OF(X509) *(*)(PKCS7 *, STACK_OF(X509) *, int)) d->cryptoLib->resolveFunction("PKCS7_get0_signers"); K_PKCS7_get0_signers = (STACK_OF(X509) *(*)(PKCS7 *, STACK_OF(X509) *, int)) d->cryptoLib->resolve("PKCS7_get0_signers");
K_PKCS7_encrypt = (PKCS7* (*)(STACK_OF(X509) *, BIO *, EVP_CIPHER *, int)) d->cryptoLib->resolveFunction("PKCS7_encrypt"); K_PKCS7_encrypt = (PKCS7* (*)(STACK_OF(X509) *, BIO *, EVP_CIPHER *, int)) d->cryptoLib->resolve("PKCS7_encrypt");
K_PKCS7_decrypt = (int (*)(PKCS7 *, EVP_PKEY *, X509 *, BIO *, int)) d->cryptoLib->resolveFunction("PKCS7_decrypt"); K_PKCS7_decrypt = (int (*)(PKCS7 *, EVP_PKEY *, X509 *, BIO *, int)) d->cryptoLib->resolve("PKCS7_decrypt");
K_PEM_X509_INFO_read = (STACK_OF(X509_INFO) *(*)(FILE*, STACK_OF(X509_INFO)*, pem_password_cb*, void *)) d->cryptoLib->resolveFunction("PEM_X509_INFO_read"); K_PEM_X509_INFO_read = (STACK_OF(X509_INFO) *(*)(FILE*, STACK_OF(X509_INFO)*, pem_password_cb*, void *)) d->cryptoLib->resolve("PEM_X509_INFO_read");
K_ASN1_d2i_fp = (char *(*)(char *(*)(),char *(*)(),FILE*,unsigned char**)) d->cryptoLib->resolveFunction("ASN1_d2i_fp"); K_ASN1_d2i_fp = (char *(*)(char *(*)(),char *(*)(),FILE*,unsigned char**)) d->cryptoLib->resolve("ASN1_d2i_fp");
K_X509_new = (X509 *(*)()) d->cryptoLib->resolveFunction("X509_new"); K_X509_new = (X509 *(*)()) d->cryptoLib->resolve("X509_new");
K_X509_PURPOSE_get_count = (int (*)()) d->cryptoLib->resolveFunction("X509_PURPOSE_get_count"); K_X509_PURPOSE_get_count = (int (*)()) d->cryptoLib->resolve("X509_PURPOSE_get_count");
K_X509_PURPOSE_get_id = (int (*)(X509_PURPOSE *)) d->cryptoLib->resolveFunction("X509_PURPOSE_get_id"); K_X509_PURPOSE_get_id = (int (*)(X509_PURPOSE *)) d->cryptoLib->resolve("X509_PURPOSE_get_id");
K_X509_check_purpose = (int (*)(X509*,int,int)) d->cryptoLib->resolveFunction("X509_check_purpose"); K_X509_check_purpose = (int (*)(X509*,int,int)) d->cryptoLib->resolve("X509_check_purpose");
K_X509_PURPOSE_get0 = (X509_PURPOSE *(*)(int)) d->cryptoLib->resolveFunction("X509_PURPOSE_get0"); K_X509_PURPOSE_get0 = (X509_PURPOSE *(*)(int)) d->cryptoLib->resolve("X509_PURPOSE_get0");
K_EVP_PKEY_assign = (int (*)(EVP_PKEY*, int, char*)) d->cryptoLib->resolveFunction("EVP_PKEY_assign"); K_EVP_PKEY_assign = (int (*)(EVP_PKEY*, int, char*)) d->cryptoLib->resolve("EVP_PKEY_assign");
K_X509_REQ_set_pubkey = (int (*)(X509_REQ*, EVP_PKEY*)) d->cryptoLib->resolveFunction("X509_REQ_set_pubkey"); K_X509_REQ_set_pubkey = (int (*)(X509_REQ*, EVP_PKEY*)) d->cryptoLib->resolve("X509_REQ_set_pubkey");
K_RSA_generate_key = (RSA* (*)(int, unsigned long, void (*)(int,int,void *), void *)) d->cryptoLib->resolveFunction("RSA_generate_key"); K_RSA_generate_key = (RSA* (*)(int, unsigned long, void (*)(int,int,void *), void *)) d->cryptoLib->resolve("RSA_generate_key");
K_i2d_X509_REQ_fp = (int (*)(FILE *, X509_REQ *)) d->cryptoLib->resolveFunction("i2d_X509_REQ_fp"); K_i2d_X509_REQ_fp = (int (*)(FILE *, X509_REQ *)) d->cryptoLib->resolve("i2d_X509_REQ_fp");
K_ERR_clear_error = (void (*)()) d->cryptoLib->resolveFunction("ERR_clear_error"); K_ERR_clear_error = (void (*)()) d->cryptoLib->resolve("ERR_clear_error");
K_ERR_get_error = (unsigned long (*)()) d->cryptoLib->resolveFunction("ERR_get_error"); K_ERR_get_error = (unsigned long (*)()) d->cryptoLib->resolve("ERR_get_error");
K_ERR_print_errors_fp = (void (*)(FILE*)) d->cryptoLib->resolveFunction("ERR_print_errors_fp"); K_ERR_print_errors_fp = (void (*)(FILE*)) d->cryptoLib->resolve("ERR_print_errors_fp");
K_X509_get1_email = (STACK *(*)(X509 *x)) d->cryptoLib->resolveFunction("X509_get1_email"); K_X509_get1_email = (STACK *(*)(X509 *x)) d->cryptoLib->resolve("X509_get1_email");
K_X509_email_free = (void (*)(STACK *sk)) d->cryptoLib->resolveFunction("X509_email_free"); K_X509_email_free = (void (*)(STACK *sk)) d->cryptoLib->resolve("X509_email_free");
K_EVP_des_ede3_cbc = (EVP_CIPHER *(*)()) d->cryptoLib->resolveFunction("EVP_des_ede3_cbc"); K_EVP_des_ede3_cbc = (EVP_CIPHER *(*)()) d->cryptoLib->resolve("EVP_des_ede3_cbc");
K_EVP_des_cbc = (EVP_CIPHER *(*)()) d->cryptoLib->resolveFunction("EVP_des_cbc"); K_EVP_des_cbc = (EVP_CIPHER *(*)()) d->cryptoLib->resolve("EVP_des_cbc");
K_EVP_rc2_cbc = (EVP_CIPHER *(*)()) d->cryptoLib->resolveFunction("EVP_rc2_cbc"); K_EVP_rc2_cbc = (EVP_CIPHER *(*)()) d->cryptoLib->resolve("EVP_rc2_cbc");
K_EVP_rc2_64_cbc = (EVP_CIPHER *(*)()) d->cryptoLib->resolveFunction("EVP_rc2_64_cbc"); K_EVP_rc2_64_cbc = (EVP_CIPHER *(*)()) d->cryptoLib->resolve("EVP_rc2_64_cbc");
K_EVP_rc2_40_cbc = (EVP_CIPHER *(*)()) d->cryptoLib->resolveFunction("EVP_rc2_40_cbc"); K_EVP_rc2_40_cbc = (EVP_CIPHER *(*)()) d->cryptoLib->resolve("EVP_rc2_40_cbc");
K_i2d_PrivateKey_fp = (int (*)(FILE*,EVP_PKEY*)) d->cryptoLib->resolveFunction("i2d_PrivateKey_fp"); K_i2d_PrivateKey_fp = (int (*)(FILE*,EVP_PKEY*)) d->cryptoLib->resolve("i2d_PrivateKey_fp");
K_i2d_PKCS8PrivateKey_fp = (int (*)(FILE*, EVP_PKEY*, const EVP_CIPHER*, char*, int, pem_password_cb*, void*)) d->cryptoLib->resolveFunction("i2d_PKCS8PrivateKey_fp"); K_i2d_PKCS8PrivateKey_fp = (int (*)(FILE*, EVP_PKEY*, const EVP_CIPHER*, char*, int, pem_password_cb*, void*)) d->cryptoLib->resolve("i2d_PKCS8PrivateKey_fp");
K_RSA_free = (void (*)(RSA*)) d->cryptoLib->resolveFunction("RSA_free"); K_RSA_free = (void (*)(RSA*)) d->cryptoLib->resolve("RSA_free");
K_EVP_bf_cbc = (EVP_CIPHER *(*)()) d->cryptoLib->resolveFunction("EVP_bf_cbc"); K_EVP_bf_cbc = (EVP_CIPHER *(*)()) d->cryptoLib->resolve("EVP_bf_cbc");
K_X509_REQ_sign = (int (*)(X509_REQ*, EVP_PKEY*, const EVP_MD*)) d->cryptoLib->resolveFunction("X509_REQ_sign"); K_X509_REQ_sign = (int (*)(X509_REQ*, EVP_PKEY*, const EVP_MD*)) d->cryptoLib->resolve("X509_REQ_sign");
K_X509_NAME_add_entry_by_txt = (int (*)(X509_NAME*, char*, int, unsigned char*, int, int, int)) d->cryptoLib->resolveFunction("X509_NAME_add_entry_by_txt"); K_X509_NAME_add_entry_by_txt = (int (*)(X509_NAME*, char*, int, unsigned char*, int, int, int)) d->cryptoLib->resolve("X509_NAME_add_entry_by_txt");
K_X509_NAME_new = (X509_NAME *(*)()) d->cryptoLib->resolveFunction("X509_NAME_new"); K_X509_NAME_new = (X509_NAME *(*)()) d->cryptoLib->resolve("X509_NAME_new");
K_X509_REQ_set_subject_name = (int (*)(X509_REQ*,X509_NAME*)) d->cryptoLib->resolveFunction("X509_REQ_set_subject_name"); K_X509_REQ_set_subject_name = (int (*)(X509_REQ*,X509_NAME*)) d->cryptoLib->resolve("X509_REQ_set_subject_name");
K_ASN1_STRING_data = (unsigned char *(*)(ASN1_STRING*)) d->cryptoLib->resolveFunction("ASN1_STRING_data"); K_ASN1_STRING_data = (unsigned char *(*)(ASN1_STRING*)) d->cryptoLib->resolve("ASN1_STRING_data");
K_ASN1_STRING_length = (int (*)(ASN1_STRING*)) d->cryptoLib->resolveFunction("ASN1_STRING_length"); K_ASN1_STRING_length = (int (*)(ASN1_STRING*)) d->cryptoLib->resolve("ASN1_STRING_length");
#endif #endif
} }
@ -511,7 +510,7 @@ KOpenSSLProxy::KOpenSSLProxy()
{ {
QString libname = findMostRecentLib("/usr/lib", "ssl"); QString libname = findMostRecentLib("/usr/lib", "ssl");
if (!libname.isNull()) { if (!libname.isNull()) {
d->sslLib = new KLibrary(libname); d->sslLib = new QLibrary(libname);
d->sslLib->setLoadHints(QLibrary::ExportExternalSymbolsHint); d->sslLib->setLoadHints(QLibrary::ExportExternalSymbolsHint);
if (!d->sslLib->load()) { if (!d->sslLib->load()) {
delete d->sslLib; delete d->sslLib;
@ -533,7 +532,7 @@ KOpenSSLProxy::KOpenSSLProxy()
QString tmpStr(alib.toLatin1()); QString tmpStr(alib.toLatin1());
tmpStr.remove(QRegExp("\\(.*\\)")); tmpStr.remove(QRegExp("\\(.*\\)"));
if (!access(tmpStr.toLatin1(), R_OK)) { if (!access(tmpStr.toLatin1(), R_OK)) {
d->sslLib = new KLibrary(alib); d->sslLib = new QLibrary(alib);
d->sslLib->setLoadHints(QLibrary::ExportExternalSymbolsHint); d->sslLib->setLoadHints(QLibrary::ExportExternalSymbolsHint);
} }
if (d->sslLib && d->sslLib->load()) { if (d->sslLib && d->sslLib->load()) {
@ -551,80 +550,80 @@ KOpenSSLProxy::KOpenSSLProxy()
if (d->sslLib) { if (d->sslLib) {
#ifdef KSSL_HAVE_SSL #ifdef KSSL_HAVE_SSL
// stand back from your monitor and look at this. it's fun! :) // stand back from your monitor and look at this. it's fun! :)
K_SSL_connect = (int (*)(SSL *)) d->sslLib->resolveFunction("SSL_connect"); K_SSL_connect = (int (*)(SSL *)) d->sslLib->resolve("SSL_connect");
K_SSL_accept = (int (*)(SSL *)) d->sslLib->resolveFunction("SSL_accept"); K_SSL_accept = (int (*)(SSL *)) d->sslLib->resolve("SSL_accept");
K_SSL_read = (int (*)(SSL *, void *, int)) d->sslLib->resolveFunction("SSL_read"); K_SSL_read = (int (*)(SSL *, void *, int)) d->sslLib->resolve("SSL_read");
K_SSL_write = (int (*)(SSL *, const void *, int)) K_SSL_write = (int (*)(SSL *, const void *, int))
d->sslLib->resolveFunction("SSL_write"); d->sslLib->resolve("SSL_write");
K_SSL_new = (SSL* (*)(SSL_CTX *)) d->sslLib->resolveFunction("SSL_new"); K_SSL_new = (SSL* (*)(SSL_CTX *)) d->sslLib->resolve("SSL_new");
K_SSL_free = (void (*)(SSL *)) d->sslLib->resolveFunction("SSL_free"); K_SSL_free = (void (*)(SSL *)) d->sslLib->resolve("SSL_free");
K_SSL_shutdown = (int (*)(SSL *)) d->sslLib->resolveFunction("SSL_shutdown"); K_SSL_shutdown = (int (*)(SSL *)) d->sslLib->resolve("SSL_shutdown");
K_SSL_CTX_new = (SSL_CTX* (*)(SSL_METHOD*)) d->sslLib->resolveFunction("SSL_CTX_new"); K_SSL_CTX_new = (SSL_CTX* (*)(SSL_METHOD*)) d->sslLib->resolve("SSL_CTX_new");
K_SSL_CTX_free = (void (*)(SSL_CTX*)) d->sslLib->resolveFunction("SSL_CTX_free"); K_SSL_CTX_free = (void (*)(SSL_CTX*)) d->sslLib->resolve("SSL_CTX_free");
K_SSL_set_fd = (int (*)(SSL *, int)) d->sslLib->resolveFunction("SSL_set_fd"); K_SSL_set_fd = (int (*)(SSL *, int)) d->sslLib->resolve("SSL_set_fd");
K_SSL_pending = (int (*)(SSL *)) d->sslLib->resolveFunction("SSL_pending"); K_SSL_pending = (int (*)(SSL *)) d->sslLib->resolve("SSL_pending");
K_SSL_CTX_set_cipher_list = (int (*)(SSL_CTX *, const char *)) K_SSL_CTX_set_cipher_list = (int (*)(SSL_CTX *, const char *))
d->sslLib->resolveFunction("SSL_CTX_set_cipher_list"); d->sslLib->resolve("SSL_CTX_set_cipher_list");
K_SSL_CTX_set_verify = (void (*)(SSL_CTX*, int, int (*)(int, X509_STORE_CTX*))) d->sslLib->resolveFunction("SSL_CTX_set_verify"); K_SSL_CTX_set_verify = (void (*)(SSL_CTX*, int, int (*)(int, X509_STORE_CTX*))) d->sslLib->resolve("SSL_CTX_set_verify");
K_SSL_use_certificate = (int (*)(SSL*, X509*)) K_SSL_use_certificate = (int (*)(SSL*, X509*))
d->sslLib->resolveFunction("SSL_CTX_use_certificate"); d->sslLib->resolve("SSL_CTX_use_certificate");
K_SSL_get_current_cipher = (SSL_CIPHER *(*)(SSL *)) K_SSL_get_current_cipher = (SSL_CIPHER *(*)(SSL *))
d->sslLib->resolveFunction("SSL_get_current_cipher"); d->sslLib->resolve("SSL_get_current_cipher");
K_SSL_ctrl = (long (*)(SSL * ,int, long, char *)) K_SSL_ctrl = (long (*)(SSL * ,int, long, char *))
d->sslLib->resolveFunction("SSL_ctrl"); d->sslLib->resolve("SSL_ctrl");
K_TLSv1_client_method = (SSL_METHOD *(*)()) d->sslLib->resolveFunction("TLSv1_client_method"); K_TLSv1_client_method = (SSL_METHOD *(*)()) d->sslLib->resolve("TLSv1_client_method");
K_SSLv23_client_method = (SSL_METHOD *(*)()) d->sslLib->resolveFunction("SSLv23_client_method"); K_SSLv23_client_method = (SSL_METHOD *(*)()) d->sslLib->resolve("SSLv23_client_method");
K_SSL_get_peer_certificate = (X509 *(*)(SSL *)) d->sslLib->resolveFunction("SSL_get_peer_certificate"); K_SSL_get_peer_certificate = (X509 *(*)(SSL *)) d->sslLib->resolve("SSL_get_peer_certificate");
K_SSL_CIPHER_get_bits = (int (*)(SSL_CIPHER *,int *)) d->sslLib->resolveFunction("SSL_CIPHER_get_bits"); K_SSL_CIPHER_get_bits = (int (*)(SSL_CIPHER *,int *)) d->sslLib->resolve("SSL_CIPHER_get_bits");
K_SSL_CIPHER_get_version = (char * (*)(SSL_CIPHER *)) d->sslLib->resolveFunction("SSL_CIPHER_get_version"); K_SSL_CIPHER_get_version = (char * (*)(SSL_CIPHER *)) d->sslLib->resolve("SSL_CIPHER_get_version");
K_SSL_CIPHER_get_name = (const char * (*)(SSL_CIPHER *)) d->sslLib->resolveFunction("SSL_CIPHER_get_name"); K_SSL_CIPHER_get_name = (const char * (*)(SSL_CIPHER *)) d->sslLib->resolve("SSL_CIPHER_get_name");
K_SSL_CIPHER_description = (char * (*)(SSL_CIPHER *, char *, int)) d->sslLib->resolveFunction("SSL_CIPHER_description"); K_SSL_CIPHER_description = (char * (*)(SSL_CIPHER *, char *, int)) d->sslLib->resolve("SSL_CIPHER_description");
K_SSL_CTX_use_PrivateKey = (int (*)(SSL_CTX*, EVP_PKEY*)) d->sslLib->resolveFunction("SSL_CTX_use_PrivateKey"); K_SSL_CTX_use_PrivateKey = (int (*)(SSL_CTX*, EVP_PKEY*)) d->sslLib->resolve("SSL_CTX_use_PrivateKey");
K_SSL_CTX_use_certificate = (int (*)(SSL_CTX*, X509*)) d->sslLib->resolveFunction("SSL_CTX_use_certificate"); K_SSL_CTX_use_certificate = (int (*)(SSL_CTX*, X509*)) d->sslLib->resolve("SSL_CTX_use_certificate");
K_SSL_get_error = (int (*)(SSL*, int)) d->sslLib->resolveFunction("SSL_get_error"); K_SSL_get_error = (int (*)(SSL*, int)) d->sslLib->resolve("SSL_get_error");
K_SSL_get_peer_cert_chain = (STACK_OF(X509)* (*)(SSL*)) d->sslLib->resolveFunction("SSL_get_peer_cert_chain"); K_SSL_get_peer_cert_chain = (STACK_OF(X509)* (*)(SSL*)) d->sslLib->resolve("SSL_get_peer_cert_chain");
K_SSL_load_client_CA_file = (STACK_OF(X509_NAME)* (*)(const char *)) d->sslLib->resolveFunction("SSL_load_client_CA_file"); K_SSL_load_client_CA_file = (STACK_OF(X509_NAME)* (*)(const char *)) d->sslLib->resolve("SSL_load_client_CA_file");
K_SSL_peek = (int (*)(SSL*,void*,int)) d->sslLib->resolveFunction("SSL_peek"); K_SSL_peek = (int (*)(SSL*,void*,int)) d->sslLib->resolve("SSL_peek");
K_SSL_get1_session = (SSL_SESSION* (*)(SSL*)) d->sslLib->resolveFunction("SSL_get1_session"); K_SSL_get1_session = (SSL_SESSION* (*)(SSL*)) d->sslLib->resolve("SSL_get1_session");
K_SSL_SESSION_free = (void (*)(SSL_SESSION*)) d->sslLib->resolveFunction("SSL_SESSION_free"); K_SSL_SESSION_free = (void (*)(SSL_SESSION*)) d->sslLib->resolve("SSL_SESSION_free");
K_SSL_set_session = (int (*)(SSL*,SSL_SESSION*)) d->sslLib->resolveFunction("SSL_set_session"); K_SSL_set_session = (int (*)(SSL*,SSL_SESSION*)) d->sslLib->resolve("SSL_set_session");
K_d2i_SSL_SESSION = (SSL_SESSION* (*)(SSL_SESSION**,unsigned char**, long)) d->sslLib->resolveFunction("d2i_SSL_SESSION"); K_d2i_SSL_SESSION = (SSL_SESSION* (*)(SSL_SESSION**,unsigned char**, long)) d->sslLib->resolve("d2i_SSL_SESSION");
K_i2d_SSL_SESSION = (int (*)(SSL_SESSION*,unsigned char**)) d->sslLib->resolveFunction("i2d_SSL_SESSION"); K_i2d_SSL_SESSION = (int (*)(SSL_SESSION*,unsigned char**)) d->sslLib->resolve("i2d_SSL_SESSION");
K_SSL_get_ciphers = (STACK_OF(SSL_CIPHER) *(*)(const SSL*)) d->sslLib->resolveFunction("SSL_get_ciphers"); K_SSL_get_ciphers = (STACK_OF(SSL_CIPHER) *(*)(const SSL*)) d->sslLib->resolve("SSL_get_ciphers");
#endif #endif
// Initialize the library (once only!) // Initialize the library (once only!)
KLibrary::void_function_ptr x; void *x;
x = d->sslLib->resolveFunction("SSL_library_init"); x = d->sslLib->resolve("SSL_library_init");
if (d->cryptoLib) { if (d->cryptoLib) {
if (x) ((int (*)())x)(); if (x) ((int (*)())x)();
x = d->cryptoLib->resolveFunction("OpenSSL_add_all_algorithms"); x = d->cryptoLib->resolve("OpenSSL_add_all_algorithms");
if (!x) if (!x)
x = d->cryptoLib->resolveFunction("OPENSSL_add_all_algorithms"); x = d->cryptoLib->resolve("OPENSSL_add_all_algorithms");
if (x) { if (x) {
((void (*)())x)(); ((void (*)())x)();
} else { } else {
x = d->cryptoLib->resolveFunction("OpenSSL_add_all_algorithms_conf"); x = d->cryptoLib->resolve("OpenSSL_add_all_algorithms_conf");
if (!x) if (!x)
x = d->cryptoLib->resolveFunction("OPENSSL_add_all_algorithms_conf"); x = d->cryptoLib->resolve("OPENSSL_add_all_algorithms_conf");
if (x) { if (x) {
((void (*)())x)(); ((void (*)())x)();
} else { } else {
x = d->cryptoLib->resolveFunction("OpenSSL_add_all_algorithms_noconf"); x = d->cryptoLib->resolve("OpenSSL_add_all_algorithms_noconf");
if (!x) if (!x)
x = d->cryptoLib->resolveFunction("OPENSSL_add_all_algorithms_noconf"); x = d->cryptoLib->resolve("OPENSSL_add_all_algorithms_noconf");
if (x) if (x)
((void (*)())x)(); ((void (*)())x)();
} }
} }
x = d->cryptoLib->resolveFunction("OpenSSL_add_all_ciphers"); x = d->cryptoLib->resolve("OpenSSL_add_all_ciphers");
if (!x) if (!x)
x = d->cryptoLib->resolveFunction("OPENSSL_add_all_ciphers"); x = d->cryptoLib->resolve("OPENSSL_add_all_ciphers");
if (x) ((void (*)())x)(); if (x) ((void (*)())x)();
x = d->cryptoLib->resolveFunction("OpenSSL_add_all_digests"); x = d->cryptoLib->resolve("OpenSSL_add_all_digests");
if (!x) if (!x)
x = d->cryptoLib->resolveFunction("OPENSSL_add_all_digests"); x = d->cryptoLib->resolve("OPENSSL_add_all_digests");
if (x) ((void (*)())x)(); if (x) ((void (*)())x)();
} }
} }

View file

@ -24,7 +24,6 @@
#include <QtGui/QWidget> #include <QtGui/QWidget>
#include <kpluginloader.h> #include <kpluginloader.h>
#include <klibrary.h>
#include <klocale.h> #include <klocale.h>
#include <kglobal.h> #include <kglobal.h>
#include <kcomponentdata.h> #include <kcomponentdata.h>

View file

@ -319,32 +319,6 @@ QObject* Manager::module(const QString& modulename)
QByteArray libraryname = QString("krossmodule%1").arg(modulename).toLower().toLatin1(); QByteArray libraryname = QString("krossmodule%1").arg(modulename).toLower().toLatin1();
#if 0
KLibLoader* loader = KLibLoader::self();
KLibrary* lib = loader->library( libraryname, QLibrary::ExportExternalSymbolsHint );
if( ! lib ) { //FIXME this fallback-code should be in KLibLoader imho.
lib = loader->library( QString("lib%1").arg(libraryname), QLibrary::ExportExternalSymbolsHint );
if( ! lib ) {
krosswarning( QString("Failed to load module '%1': %2").arg(modulename).arg(loader->lastErrorMessage()) );
return 0;
}
}
def_module_func func;
func = (def_module_func) lib->resolveFunction("krossmodule");
if( ! func ) {
krosswarning( QString("Failed to determinate init function in module '%1'").arg(modulename) );
return 0;
}
QObject* module = (QObject*) (func)(); // call the function
lib->unload(); // unload the library
if( ! module ) {
krosswarning( QString("Failed to load module object '%1'").arg(modulename) );
return 0;
}
#else
if( void* funcPtr = loadLibrary(libraryname, "krossmodule") ) { if( void* funcPtr = loadLibrary(libraryname, "krossmodule") ) {
def_module_func func = (def_module_func) funcPtr; def_module_func func = (def_module_func) funcPtr;
Q_ASSERT( func ); Q_ASSERT( func );
@ -357,7 +331,6 @@ QObject* Manager::module(const QString& modulename)
else { else {
krosswarning( QString("Failed to load module '%1'").arg(modulename) ); krosswarning( QString("Failed to load module '%1'").arg(modulename) );
} }
#endif
return 0; return 0;
} }

View file

@ -27,7 +27,6 @@
#include <QtGui/QLabel> #include <QtGui/QLabel>
#include <QtGui/QLayout> #include <QtGui/QLayout>
#include <klibrary.h>
#include <kpluginloader.h> #include <kpluginloader.h>
#include <kdebug.h> #include <kdebug.h>
#include <klocale.h> #include <klocale.h>
@ -93,12 +92,12 @@ KCModule* KCModuleLoader::loadModule(const KCModuleInfo& mod, ErrorReporting rep
//#ifndef NDEBUG //#ifndef NDEBUG
{ {
// get the create_ function // get the create_ function
KLibrary lib(mod.library()); QLibrary lib(mod.library());
if (lib.load()) { if (lib.load()) {
KCModule *(*create)(QWidget *, const char *); KCModule *(*create)(QWidget *, const char *);
QByteArray factorymethod("create_"); QByteArray factorymethod("create_");
factorymethod += mod.handle().toLatin1(); factorymethod += mod.handle().toLatin1();
create = reinterpret_cast<KCModule *(*)(QWidget *, const char*)>(lib.resolveFunction(factorymethod)); create = reinterpret_cast<KCModule *(*)(QWidget *, const char*)>(lib.resolve(factorymethod));
if (create) { if (create) {
return create(parent, mod.handle().toLatin1()); return create(parent, mod.handle().toLatin1());
kFatal(1208) << "This module still uses a custom factory method (" << factorymethod << "). This is not supported anymore. Please fix the module."; kFatal(1208) << "This module still uses a custom factory method (" << factorymethod << "). This is not supported anymore. Please fix the module.";