EFL 1.7 svn doobies
[profile/ivi/eeze.git] / src / lib / eeze_main.c
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include <Ecore.h>
6 #include <Eeze.h>
7 #include <Eeze_Disk.h>
8 #include "eeze_udev_private.h"
9 #include "eeze_net_private.h"
10 #include "eeze_disk_private.h"
11
12 _udev *udev;
13
14 int _eeze_udev_log_dom = -1;
15 int _eeze_net_log_dom = -1;
16 int _eeze_init_count = 0;
17
18 static Eeze_Version _version = { VMAJ, VMIN, VMIC, VREV };
19 EAPI Eeze_Version *eeze_version = &_version;
20
21 EAPI int
22 eeze_init(void)
23 {
24    if (++_eeze_init_count != 1)
25      return _eeze_init_count;
26
27    if (!eina_init())
28      return 0;
29
30    _eeze_udev_log_dom = eina_log_domain_register("eeze_udev", EINA_COLOR_CYAN);
31    if (_eeze_udev_log_dom < 0)
32      {
33         EINA_LOG_ERR("Could not register 'eeze_udev' log domain.");
34         goto eina_fail;
35      }
36    _eeze_net_log_dom = eina_log_domain_register("eeze_net", EINA_COLOR_GREEN);
37    if (_eeze_net_log_dom < 0)
38      {
39         EINA_LOG_ERR("Could not register 'eeze_net' log domain.");
40         goto eina_net_fail;
41      }
42
43
44    if (!ecore_init())
45      goto ecore_fail;
46 #ifdef HAVE_EEZE_MOUNT
47    if (!eeze_disk_init())
48      goto eeze_fail;
49 #endif
50    if (!(udev = udev_new()))
51      {
52         EINA_LOG_ERR("Could not initialize udev library!");
53         goto fail;
54      }
55    if (!eeze_net_init())
56      {
57         EINA_LOG_ERR("Error initializing eeze_net subsystems!");
58         goto net_fail;
59      }
60
61    return _eeze_init_count;
62
63 net_fail:
64    udev_unref(udev);
65 fail:
66 #ifdef HAVE_EEZE_MOUNT
67    eeze_disk_shutdown();
68 eeze_fail:
69 #endif
70    ecore_shutdown();
71 ecore_fail:
72    eina_log_domain_unregister(_eeze_net_log_dom);
73    _eeze_net_log_dom = -1;
74 eina_net_fail:
75    eina_log_domain_unregister(_eeze_udev_log_dom);
76    _eeze_udev_log_dom = -1;
77 eina_fail:
78    eina_shutdown();
79    return 0;
80 }
81
82 EAPI int
83 eeze_shutdown(void)
84 {
85    if (_eeze_init_count <= 0)
86      {
87         EINA_LOG_ERR("Init count not greater than 0 in shutdown.");
88         return 0;
89      }
90    if (--_eeze_init_count != 0)
91      return _eeze_init_count;
92
93    udev_unref(udev);
94 #ifdef HAVE_EEZE_MOUNT
95    eeze_disk_shutdown();
96 #endif
97    eeze_net_shutdown();
98    ecore_shutdown();
99    eina_log_domain_unregister(_eeze_udev_log_dom);
100    _eeze_udev_log_dom = -1;
101    eina_shutdown();
102    return _eeze_init_count;
103 }
104