Branch data Line data Source code
1 : : /***
2 : : This file is part of PulseAudio.
3 : :
4 : : Copyright 2004-2006 Lennart Poettering
5 : : Copyright 2006 Pierre Ossman <ossman@cendio.se> for Cendio AB
6 : :
7 : : PulseAudio is free software; you can redistribute it and/or modify
8 : : it under the terms of the GNU Lesser General Public License as published
9 : : by the Free Software Foundation; either version 2.1 of the License,
10 : : or (at your option) any later version.
11 : :
12 : : PulseAudio is distributed in the hope that it will be useful, but
13 : : WITHOUT ANY WARRANTY; without even the implied warranty of
14 : : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 : : General Public License for more details.
16 : :
17 : : You should have received a copy of the GNU Lesser General Public License
18 : : along with PulseAudio; if not, write to the Free Software
19 : : Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
20 : : USA.
21 : : ***/
22 : :
23 : : #ifdef HAVE_CONFIG_H
24 : : #include <config.h>
25 : : #endif
26 : :
27 : : #include <stdlib.h>
28 : : #include <ctype.h>
29 : :
30 : : #include <pulse/xmalloc.h>
31 : :
32 : : #include <pulsecore/core-util.h>
33 : : #include <pulsecore/macro.h>
34 : :
35 : : #include "ltdl-helper.h"
36 : :
37 : 0 : pa_void_func_t pa_load_sym(lt_dlhandle handle, const char *module, const char *symbol) {
38 : : char *sn, *c;
39 : : pa_void_func_t f;
40 : :
41 [ # # ]: 0 : pa_assert(handle);
42 [ # # ]: 0 : pa_assert(symbol);
43 : :
44 : 0 : f = (pa_void_func_t) lt_dlsym(handle, symbol);
45 : :
46 [ # # ]: 0 : if (f)
47 : : return f;
48 : :
49 [ # # ]: 0 : if (!module)
50 : : return NULL;
51 : :
52 : : /* As the .la files might have been cleansed from the system, we should
53 : : * try with the ltdl prefix as well. */
54 : :
55 : 0 : sn = pa_sprintf_malloc("%s_LTX_%s", module, symbol);
56 : :
57 [ # # ]: 0 : for (c = sn; *c; c++)
58 [ # # ]: 0 : if (!isalnum(*c))
59 : 0 : *c = '_';
60 : :
61 : 0 : f = (pa_void_func_t) lt_dlsym(handle, sn);
62 : 0 : pa_xfree(sn);
63 : :
64 : 0 : return f;
65 : : }
|