2010-05-22 00:04:00 -07:00
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
#include "config.h"
|
|
|
|
#endif
|
|
|
|
|
2010-10-16 16:01:33 -07:00
|
|
|
#include <Ecore.h>
|
2010-05-22 00:04:00 -07:00
|
|
|
#include <Eeze.h>
|
|
|
|
#include "eeze_udev_private.h"
|
|
|
|
|
2010-05-22 14:44:26 -07:00
|
|
|
/**
|
|
|
|
* @defgroup udev udev
|
|
|
|
*
|
|
|
|
* These are functions which interact directly with udev.
|
|
|
|
*/
|
|
|
|
|
2010-05-22 00:04:00 -07:00
|
|
|
_udev *udev;
|
|
|
|
|
2010-10-15 21:38:11 -07:00
|
|
|
int _eeze_udev_log_dom = -1;
|
2010-05-22 00:04:00 -07:00
|
|
|
int _eeze_init_count = 0;
|
|
|
|
|
2010-05-22 14:44:26 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @defgroup main main
|
|
|
|
*
|
|
|
|
* These are general eeze functions which include init and shutdown.
|
|
|
|
*/
|
|
|
|
|
2010-05-31 02:33:54 -07:00
|
|
|
static Eeze_Version _version = { VMAJ, VMIN, VMIC, VREV };
|
|
|
|
EAPI Eeze_Version *eeze_version = &_version;
|
2010-05-22 14:44:26 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Initialize the eeze library.
|
|
|
|
* @return The number of times the function has been called, or -1 on failure.
|
|
|
|
*
|
|
|
|
* This function should be called prior to using any eeze functions, and MUST
|
|
|
|
* be called prior to using any udev functions to avoid a segv.
|
|
|
|
*
|
|
|
|
* @ingroup main
|
|
|
|
*/
|
2010-05-22 00:04:00 -07:00
|
|
|
EAPI int
|
|
|
|
eeze_init(void)
|
|
|
|
{
|
|
|
|
if (++_eeze_init_count != 1)
|
|
|
|
return _eeze_init_count;
|
|
|
|
|
2010-10-16 21:48:39 -07:00
|
|
|
if (!eina_init())
|
|
|
|
return 0;
|
2010-05-22 00:04:00 -07:00
|
|
|
|
2010-10-15 21:38:11 -07:00
|
|
|
_eeze_udev_log_dom = eina_log_domain_register
|
2010-10-15 21:45:23 -07:00
|
|
|
("eeze_udev", EEZE_UDEV_COLOR_DEFAULT);
|
2010-05-22 00:04:00 -07:00
|
|
|
|
2010-10-15 21:38:11 -07:00
|
|
|
if (_eeze_udev_log_dom < 0)
|
2010-05-22 00:04:00 -07:00
|
|
|
{
|
|
|
|
EINA_LOG_ERR("Could not register 'eeze_udev' log domain.");
|
2010-10-16 21:48:39 -07:00
|
|
|
goto eina_fail;
|
2010-05-22 00:04:00 -07:00
|
|
|
}
|
|
|
|
|
2010-10-16 21:48:39 -07:00
|
|
|
if (!ecore_init())
|
|
|
|
goto fail;
|
|
|
|
|
2010-05-22 00:04:00 -07:00
|
|
|
if (!((udev) = udev_new()))
|
|
|
|
{
|
2010-10-15 21:18:26 -07:00
|
|
|
EINA_LOG_ERR("Could not initialize udev library!");
|
2010-10-16 21:48:39 -07:00
|
|
|
goto ecore_fail;
|
2010-05-22 00:04:00 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
return _eeze_init_count;
|
2010-10-16 21:48:39 -07:00
|
|
|
ecore_fail:
|
|
|
|
ecore_shutdown();
|
2010-05-22 00:04:00 -07:00
|
|
|
fail:
|
2010-10-15 21:38:11 -07:00
|
|
|
eina_log_domain_unregister(_eeze_udev_log_dom);
|
|
|
|
_eeze_udev_log_dom = -1;
|
2010-10-16 21:48:39 -07:00
|
|
|
eina_fail:
|
2010-05-22 00:04:00 -07:00
|
|
|
eina_shutdown();
|
2010-10-16 21:48:39 -07:00
|
|
|
return 0;
|
2010-05-22 00:04:00 -07:00
|
|
|
}
|
|
|
|
|
2010-05-22 14:44:26 -07:00
|
|
|
/**
|
|
|
|
* Shut down the eeze library.
|
|
|
|
* @return The number of times the eeze_init has been called, or -1 when
|
|
|
|
* all occurrences of eeze have been shut down.
|
|
|
|
*
|
|
|
|
* This function should be called when no further eeze functions will be called.
|
|
|
|
*
|
|
|
|
* @ingroup main
|
|
|
|
*/
|
2010-05-22 00:04:00 -07:00
|
|
|
EAPI int
|
|
|
|
eeze_shutdown(void)
|
|
|
|
{
|
|
|
|
if (--_eeze_init_count != 0)
|
|
|
|
return _eeze_init_count;
|
|
|
|
|
|
|
|
udev_unref(udev);
|
2010-10-15 21:38:11 -07:00
|
|
|
eina_log_domain_unregister(_eeze_udev_log_dom);
|
|
|
|
_eeze_udev_log_dom = -1;
|
2010-10-16 15:56:44 -07:00
|
|
|
ecore_shutdown();
|
2010-05-22 00:04:00 -07:00
|
|
|
eina_shutdown();
|
|
|
|
return _eeze_init_count;
|
|
|
|
}
|