]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - src/dynamic.cpp
Changed to non-conflicting numeric 948 for invalid idle time
[user/henk/code/inspircd.git] / src / dynamic.cpp
1 /*       +------------------------------------+
2  *       | Inspire Internet Relay Chat Daemon |
3  *       +------------------------------------+
4  *
5  *  Inspire is copyright (C) 2002-2004 ChatSpike-Dev.
6  *                       E-mail:
7  *                <brain@chatspike.net>
8  *                <Craig@chatspike.net>
9  *     
10  * Written by Craig Edwards, Craig McLure, and others.
11  * This program is free but copyrighted software; see
12  *            the file COPYING for details.
13  *
14  * ---------------------------------------------------
15  */
16
17 #include "globals.h"
18 #include <dlfcn.h>
19 #include "dynamic.h"
20 #include "inspstring.h"
21
22 DLLManager::DLLManager(const char *fname)
23 {
24     // Try to open the library now and get any error message.
25         
26         h=dlopen( fname, RTLD_NOW );
27         err=dlerror();
28 }
29
30 DLLManager::~DLLManager()
31 {
32         // close the library if it isn't null
33         if (h!=0)
34         dlclose(h);
35 }
36
37
38 bool DLLManager::GetSymbol(void **v, const char *sym_name)
39 {
40         // try extract a symbol from the library
41         // get any error message is there is any
42         
43         if( h!=0 )
44         {
45                 *v = dlsym( h, sym_name );
46         err=dlerror();
47             if( err==0 )
48           return true;
49         else
50           return false;
51         }
52         else
53         {       
54         return false;
55         }
56         
57 }
58
59
60 DLLFactoryBase::DLLFactoryBase(const char *fname, const char *factory) : DLLManager(fname)
61 {
62         // try get the factory function if there is no error yet
63         
64         factory_func=0;
65         
66         if( LastError()==0 )
67         {               
68         GetSymbol( (void **)&factory_func, factory ? factory : "init_module" );
69         }
70         
71 }
72
73
74 DLLFactoryBase::~DLLFactoryBase()
75 {
76 }
77
78
79