]> git.draconx.ca Git - upkg.git/blob - src/module.c
5edc5e2b891262c005331ea4d853ed6f2313d45a
[upkg.git] / src / module.c
1 #include <stdio.h>
2 #include <glib-object.h>
3 #include <ltdl.h>
4
5 #include "module.h"
6
7 static unsigned initialized;
8
9 static void dl_print_errors(const char *prefix)
10 {
11         const char *err;
12         while (err = lt_dlerror()) {
13                 if (prefix) fprintf(stderr, "%s: ", prefix);
14                 puts(lt_dlerror());
15         }
16 }
17
18 int module_init(void)
19 {
20         if (!initialized) {
21                 if (lt_dlinit() != 0) {
22                         dl_print_errors(__func__);
23                         return -1;
24                 }
25
26                 g_type_init();
27         }
28
29         initialized++;
30         return 0;
31 }
32
33 int module_exit(void)
34 {
35         if (--initialized)
36                 return 0;
37
38         if (lt_dlexit() != 0) {
39                 dl_print_errors(__func__);
40                 return -1;
41         }
42 }