-rw-r--r-- | microkde/kdecore/klibloader.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/microkde/kdecore/klibloader.cpp b/microkde/kdecore/klibloader.cpp index 130cc7c..c07d50f 100644 --- a/microkde/kdecore/klibloader.cpp +++ b/microkde/kdecore/klibloader.cpp | |||
@@ -9,49 +9,53 @@ | |||
9 | This library is distributed in the hope that it will be useful, | 9 | This library is distributed in the hope that it will be useful, |
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
12 | Library General Public License for more details. | 12 | Library General Public License for more details. |
13 | 13 | ||
14 | You should have received a copy of the GNU Library General Public License | 14 | You should have received a copy of the GNU Library General Public License |
15 | along with this library; see the file COPYING.LIB. If not, write to | 15 | along with this library; see the file COPYING.LIB. If not, write to |
16 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 16 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
17 | Boston, MA 02111-1307, USA. | 17 | Boston, MA 02111-1307, USA. |
18 | */ | 18 | */ |
19 | //US #include <config.h> | 19 | //US #include <config.h> |
20 | #include <qclipboard.h> | 20 | #include <qclipboard.h> |
21 | #include <qfile.h> | 21 | #include <qfile.h> |
22 | #include <qtimer.h> | 22 | #include <qtimer.h> |
23 | #include <qobjectdict.h> | 23 | #include <qobjectdict.h> |
24 | #include <qwidgetlist.h> | 24 | #include <qwidgetlist.h> |
25 | #include <qwidget.h> | 25 | #include <qwidget.h> |
26 | 26 | ||
27 | #include "kapplication.h" | 27 | #include "kapplication.h" |
28 | #include "klibloader.h" | 28 | #include "klibloader.h" |
29 | #include "kstandarddirs.h" | 29 | #include "kstandarddirs.h" |
30 | #include "kdebug.h" | 30 | #include "kdebug.h" |
31 | #include "klocale.h" | 31 | #include "klocale.h" |
32 | 32 | ||
33 | //US #include "ltdl.h" | 33 | /*US |
34 | #ifndef NDEBUG | ||
35 | #include "ltdl.h" | ||
36 | #endif | ||
37 | */ | ||
34 | 38 | ||
35 | //US do everything through qlibrary | 39 | //US do everything through qlibrary |
36 | #ifndef DESKTOP_VERSION | 40 | #ifndef DESKTOP_VERSION |
37 | #include <qpe/qpeapplication.h> | 41 | #include <qpe/qpeapplication.h> |
38 | #include <qtopia/qlibrary.h> | 42 | #include <qtopia/qlibrary.h> |
39 | #endif | 43 | #endif |
40 | 44 | ||
41 | /*US | 45 | /*US |
42 | #ifdef Q_WS_X11 | 46 | #ifdef Q_WS_X11 |
43 | #include <X11/Xlib.h> | 47 | #include <X11/Xlib.h> |
44 | #include <X11/Xatom.h> | 48 | #include <X11/Xatom.h> |
45 | #endif | 49 | #endif |
46 | */ | 50 | */ |
47 | template class QAsciiDict<KLibrary>; | 51 | template class QAsciiDict<KLibrary>; |
48 | 52 | ||
49 | #include <stdlib.h> //getenv | 53 | #include <stdlib.h> //getenv |
50 | 54 | ||
51 | /*US | 55 | /*US |
52 | #if HAVE_DLFCN_H | 56 | #if HAVE_DLFCN_H |
53 | # include <dlfcn.h> | 57 | # include <dlfcn.h> |
54 | #endif | 58 | #endif |
55 | 59 | ||
56 | #ifdef RTLD_GLOBAL | 60 | #ifdef RTLD_GLOBAL |
57 | # define LT_GLOBAL RTLD_GLOBAL | 61 | # define LT_GLOBAL RTLD_GLOBAL |
@@ -132,53 +136,56 @@ KLibrary::~KLibrary() | |||
132 | 136 | ||
133 | if ( m_factory ) { | 137 | if ( m_factory ) { |
134 | //kdDebug(150) << " ... deleting the factory " << m_factory << endl; | 138 | //kdDebug(150) << " ... deleting the factory " << m_factory << endl; |
135 | delete m_factory; | 139 | delete m_factory; |
136 | } | 140 | } |
137 | } | 141 | } |
138 | 142 | ||
139 | QString KLibrary::name() const | 143 | QString KLibrary::name() const |
140 | { | 144 | { |
141 | return m_libname; | 145 | return m_libname; |
142 | } | 146 | } |
143 | 147 | ||
144 | QString KLibrary::fileName() const | 148 | QString KLibrary::fileName() const |
145 | { | 149 | { |
146 | return m_filename; | 150 | return m_filename; |
147 | } | 151 | } |
148 | 152 | ||
149 | KLibFactory* KLibrary::factory() | 153 | KLibFactory* KLibrary::factory() |
150 | { | 154 | { |
151 | if ( m_factory ) | 155 | if ( m_factory ) |
152 | return m_factory; | 156 | return m_factory; |
153 | 157 | ||
154 | QCString symname; | 158 | QCString symname; |
155 | symname.sprintf("init_%s", name().latin1() ); | 159 | symname.sprintf("init_%s", name().latin1() ); |
156 | 160 | ||
157 | void* sym = symbol( symname ); | 161 | void* sym = symbol( symname ); |
158 | if ( !sym ) | 162 | if ( !sym ) |
159 | { | 163 | { |
160 | qDebug("KLibrary: The library %s does not offer an %s function", name().latin1(), symname.data()); | 164 | qDebug("KLibrary: The library %s does not offer an %s function", name().latin1(), symname.data()); |
165 | #ifndef NDEBUG | ||
166 | //US qDebug("KLibrary: errorcode: %s", lt_dlerror()); | ||
167 | #endif | ||
161 | kdWarning(150) << "KLibrary: The library " << name().latin1() << " does not offer an init_" << name().latin1() << " function" << endl; | 168 | kdWarning(150) << "KLibrary: The library " << name().latin1() << " does not offer an init_" << name().latin1() << " function" << endl; |
162 | return 0; | 169 | return 0; |
163 | } | 170 | } |
164 | 171 | ||
165 | typedef KLibFactory* (*t_func)(); | 172 | typedef KLibFactory* (*t_func)(); |
166 | t_func func = (t_func)sym; | 173 | t_func func = (t_func)sym; |
167 | m_factory = func(); | 174 | m_factory = func(); |
168 | 175 | ||
169 | if( !m_factory ) | 176 | if( !m_factory ) |
170 | { | 177 | { |
171 | kdWarning(150) << "KLibrary: The library " << name() << " does not offer a KDE compatible factory" << endl; | 178 | kdWarning(150) << "KLibrary: The library " << name() << " does not offer a KDE compatible factory" << endl; |
172 | return 0; | 179 | return 0; |
173 | } | 180 | } |
174 | 181 | ||
175 | connect( m_factory, SIGNAL( objectCreated( QObject * ) ), | 182 | connect( m_factory, SIGNAL( objectCreated( QObject * ) ), |
176 | this, SLOT( slotObjectCreated( QObject * ) ) ); | 183 | this, SLOT( slotObjectCreated( QObject * ) ) ); |
177 | 184 | ||
178 | return m_factory; | 185 | return m_factory; |
179 | } | 186 | } |
180 | 187 | ||
181 | void* KLibrary::symbol( const char* symname ) const | 188 | void* KLibrary::symbol( const char* symname ) const |
182 | { | 189 | { |
183 | //US void* sym = lt_dlsym( (lt_dlhandle) m_handle, symname ); | 190 | //US void* sym = lt_dlsym( (lt_dlhandle) m_handle, symname ); |
184 | void* sym = m_handle->resolve( symname ); | 191 | void* sym = m_handle->resolve( symname ); |
@@ -386,52 +393,52 @@ QString KLibLoader::findLibrary( const char * name/*US , const KInstance * insta | |||
386 | libfile = libname; | 393 | libfile = libname; |
387 | else | 394 | else |
388 | { | 395 | { |
389 | //US at this point the libname must exist as real filesname. No expansions will be made later | 396 | //US at this point the libname must exist as real filesname. No expansions will be made later |
390 | // in findResources. Because of that we prepend the lib prefix here to the name | 397 | // in findResources. Because of that we prepend the lib prefix here to the name |
391 | //US I add also the "lib" prefix. I do not how could this could have worked before without it? | 398 | //US I add also the "lib" prefix. I do not how could this could have worked before without it? |
392 | libname.insert(pos, "lib"); | 399 | libname.insert(pos, "lib"); |
393 | 400 | ||
394 | 401 | ||
395 | //US libfile = instance->dirs()->findResource( "module", libname ); | 402 | //US libfile = instance->dirs()->findResource( "module", libname ); |
396 | libfile = KGlobal::dirs()->findResource( "module", libname ); | 403 | libfile = KGlobal::dirs()->findResource( "module", libname ); |
397 | if ( libfile.isEmpty() ) | 404 | if ( libfile.isEmpty() ) |
398 | { | 405 | { |
399 | //US libfile = instance->dirs()->findResource( "lib", libname ); | 406 | //US libfile = instance->dirs()->findResource( "lib", libname ); |
400 | libfile = KGlobal::dirs()->findResource( "lib", libname ); | 407 | libfile = KGlobal::dirs()->findResource( "lib", libname ); |
401 | #ifndef NDEBUG | 408 | #ifndef NDEBUG |
402 | if ( !libfile.isEmpty() && libname.left(3) == "lib" ) // don't warn for kdeinit modules | 409 | if ( !libfile.isEmpty() && libname.left(3) == "lib" ) // don't warn for kdeinit modules |
403 | kdDebug(150) << "library " << libname << " not found under 'module' but under 'lib'" << endl; | 410 | kdDebug(150) << "library " << libname << " not found under 'module' but under 'lib'" << endl; |
404 | #endif | 411 | #endif |
405 | } | 412 | } |
406 | if ( libfile.isEmpty() ) | 413 | if ( libfile.isEmpty() ) |
407 | { | 414 | { |
408 | #ifndef NDEBUG | 415 | #ifndef NDEBUG |
409 | kdDebug(150) << "library=" << libname << ": No file names " << libname.data() << " found in paths." << endl; | 416 | kdDebug(150) << "library=" << libname << ": No file names " << libname.data() << " found in paths." << endl; |
410 | #endif | 417 | self()->d->errorMessage = i18n("Library files for \"%1\" not found in paths").arg(libname); |
411 | self()->d->errorMessage = i18n("Library files for \"%1\" not found in paths").arg(libname); | ||
412 | 418 | ||
413 | qDebug("KLibLoader::library could not find library: %s", libname.data()); | 419 | qDebug("KLibLoader::library could not find library: %s", libname.data()); |
420 | #endif | ||
414 | 421 | ||
415 | } | 422 | } |
416 | else | 423 | else |
417 | self()->d->errorMessage = QString::null; | 424 | self()->d->errorMessage = QString::null; |
418 | } | 425 | } |
419 | return libfile; | 426 | return libfile; |
420 | } | 427 | } |
421 | 428 | ||
422 | 429 | ||
423 | KLibrary* KLibLoader::globalLibrary( const char *name ) | 430 | KLibrary* KLibLoader::globalLibrary( const char *name ) |
424 | { | 431 | { |
425 | KLibrary *tmp; | 432 | KLibrary *tmp; |
426 | /*US | 433 | /*US |
427 | int olt_dlopen_flag = lt_dlopen_flag; | 434 | int olt_dlopen_flag = lt_dlopen_flag; |
428 | 435 | ||
429 | lt_dlopen_flag |= LT_GLOBAL; | 436 | lt_dlopen_flag |= LT_GLOBAL; |
430 | kdDebug(150) << "Loading the next library global with flag " | 437 | kdDebug(150) << "Loading the next library global with flag " |
431 | << lt_dlopen_flag | 438 | << lt_dlopen_flag |
432 | << "." << endl; | 439 | << "." << endl; |
433 | */ | 440 | */ |
434 | tmp = library(name); | 441 | tmp = library(name); |
435 | /*US | 442 | /*US |
436 | lt_dlopen_flag = olt_dlopen_flag; | 443 | lt_dlopen_flag = olt_dlopen_flag; |
437 | */ | 444 | */ |