forked from enlightenment/efl
parent
be7b396171
commit
c01f421317
|
@ -57,140 +57,140 @@ EAPI int
|
|||
efreet_init(void)
|
||||
{
|
||||
#ifndef _WIN32
|
||||
char *tmp;
|
||||
char *tmp;
|
||||
#endif
|
||||
|
||||
if (++_efreet_init_count != 1)
|
||||
return _efreet_init_count;
|
||||
if (++_efreet_init_count != 1)
|
||||
return _efreet_init_count;
|
||||
|
||||
#ifndef _WIN32
|
||||
/* Find users real uid and gid */
|
||||
tmp = getenv("SUDO_UID");
|
||||
if (tmp)
|
||||
ruid = strtoul(tmp, NULL, 10);
|
||||
else
|
||||
ruid = getuid();
|
||||
/* Find users real uid and gid */
|
||||
tmp = getenv("SUDO_UID");
|
||||
if (tmp)
|
||||
ruid = strtoul(tmp, NULL, 10);
|
||||
else
|
||||
ruid = getuid();
|
||||
|
||||
tmp = getenv("SUDO_GID");
|
||||
if (tmp)
|
||||
rgid = strtoul(tmp, NULL, 10);
|
||||
else
|
||||
rgid = getgid();
|
||||
tmp = getenv("SUDO_GID");
|
||||
if (tmp)
|
||||
rgid = strtoul(tmp, NULL, 10);
|
||||
else
|
||||
rgid = getgid();
|
||||
#endif
|
||||
|
||||
if (!eina_init())
|
||||
return --_efreet_init_count;
|
||||
if (!eet_init())
|
||||
goto shutdown_eina;
|
||||
if (!ecore_init())
|
||||
goto shutdown_eet;
|
||||
if (!ecore_file_init())
|
||||
goto shutdown_ecore;
|
||||
if (!eina_init())
|
||||
return --_efreet_init_count;
|
||||
if (!eet_init())
|
||||
goto shutdown_eina;
|
||||
if (!ecore_init())
|
||||
goto shutdown_eet;
|
||||
if (!ecore_file_init())
|
||||
goto shutdown_ecore;
|
||||
|
||||
if (!efreet_base_init())
|
||||
goto shutdown_ecore_file;
|
||||
if (!efreet_base_init())
|
||||
goto shutdown_ecore_file;
|
||||
|
||||
if (!efreet_cache_init())
|
||||
goto shutdown_efreet_base;
|
||||
if (!efreet_cache_init())
|
||||
goto shutdown_efreet_base;
|
||||
|
||||
if (!efreet_xml_init())
|
||||
goto shutdown_efreet_cache;
|
||||
if (!efreet_xml_init())
|
||||
goto shutdown_efreet_cache;
|
||||
|
||||
if (!efreet_icon_init())
|
||||
goto shutdown_efreet_xml;
|
||||
if (!efreet_icon_init())
|
||||
goto shutdown_efreet_xml;
|
||||
|
||||
if (!efreet_ini_init())
|
||||
goto shutdown_efreet_icon;
|
||||
if (!efreet_ini_init())
|
||||
goto shutdown_efreet_icon;
|
||||
|
||||
if (!efreet_desktop_init())
|
||||
goto shutdown_efreet_ini;
|
||||
if (!efreet_desktop_init())
|
||||
goto shutdown_efreet_ini;
|
||||
|
||||
if (!efreet_menu_init())
|
||||
goto shutdown_efreet_desktop;
|
||||
if (!efreet_menu_init())
|
||||
goto shutdown_efreet_desktop;
|
||||
|
||||
if (!efreet_util_init())
|
||||
goto shutdown_efreet_menu;
|
||||
if (!efreet_util_init())
|
||||
goto shutdown_efreet_menu;
|
||||
|
||||
#ifdef ENABLE_NLS
|
||||
bindtextdomain(PACKAGE, LOCALE_DIR);
|
||||
bind_textdomain_codeset(PACKAGE, "UTF-8");
|
||||
bindtextdomain(PACKAGE, LOCALE_DIR);
|
||||
bind_textdomain_codeset(PACKAGE, "UTF-8");
|
||||
#endif
|
||||
|
||||
return _efreet_init_count;
|
||||
return _efreet_init_count;
|
||||
|
||||
shutdown_efreet_menu:
|
||||
efreet_menu_shutdown();
|
||||
efreet_menu_shutdown();
|
||||
shutdown_efreet_desktop:
|
||||
efreet_desktop_shutdown();
|
||||
efreet_desktop_shutdown();
|
||||
shutdown_efreet_ini:
|
||||
efreet_ini_shutdown();
|
||||
efreet_ini_shutdown();
|
||||
shutdown_efreet_icon:
|
||||
efreet_icon_shutdown();
|
||||
efreet_icon_shutdown();
|
||||
shutdown_efreet_xml:
|
||||
efreet_xml_shutdown();
|
||||
efreet_xml_shutdown();
|
||||
shutdown_efreet_cache:
|
||||
efreet_cache_shutdown();
|
||||
efreet_cache_shutdown();
|
||||
shutdown_efreet_base:
|
||||
efreet_base_shutdown();
|
||||
efreet_base_shutdown();
|
||||
shutdown_ecore_file:
|
||||
ecore_file_shutdown();
|
||||
ecore_file_shutdown();
|
||||
shutdown_ecore:
|
||||
ecore_shutdown();
|
||||
ecore_shutdown();
|
||||
shutdown_eet:
|
||||
eet_shutdown();
|
||||
eet_shutdown();
|
||||
shutdown_eina:
|
||||
eina_shutdown();
|
||||
eina_shutdown();
|
||||
|
||||
return --_efreet_init_count;
|
||||
return --_efreet_init_count;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
efreet_shutdown(void)
|
||||
{
|
||||
if (_efreet_init_count <= 0)
|
||||
{
|
||||
EINA_LOG_ERR("Init count not greater than 0 in shutdown.");
|
||||
return 0;
|
||||
}
|
||||
if (--_efreet_init_count != 0)
|
||||
return _efreet_init_count;
|
||||
if (_efreet_init_count <= 0)
|
||||
{
|
||||
EINA_LOG_ERR("Init count not greater than 0 in shutdown.");
|
||||
return 0;
|
||||
}
|
||||
if (--_efreet_init_count != 0)
|
||||
return _efreet_init_count;
|
||||
|
||||
efreet_util_shutdown();
|
||||
efreet_menu_shutdown();
|
||||
efreet_desktop_shutdown();
|
||||
efreet_ini_shutdown();
|
||||
efreet_icon_shutdown();
|
||||
efreet_xml_shutdown();
|
||||
efreet_cache_shutdown();
|
||||
efreet_base_shutdown();
|
||||
efreet_util_shutdown();
|
||||
efreet_menu_shutdown();
|
||||
efreet_desktop_shutdown();
|
||||
efreet_ini_shutdown();
|
||||
efreet_icon_shutdown();
|
||||
efreet_xml_shutdown();
|
||||
efreet_cache_shutdown();
|
||||
efreet_base_shutdown();
|
||||
|
||||
IF_RELEASE(efreet_lang);
|
||||
IF_RELEASE(efreet_lang_country);
|
||||
IF_RELEASE(efreet_lang_modifier);
|
||||
efreet_parsed_locale = 0; /* reset this in case they init efreet again */
|
||||
IF_RELEASE(efreet_lang);
|
||||
IF_RELEASE(efreet_lang_country);
|
||||
IF_RELEASE(efreet_lang_modifier);
|
||||
efreet_parsed_locale = 0; /* reset this in case they init efreet again */
|
||||
|
||||
ecore_file_shutdown();
|
||||
ecore_shutdown();
|
||||
eet_shutdown();
|
||||
eina_shutdown();
|
||||
ecore_file_shutdown();
|
||||
ecore_shutdown();
|
||||
eet_shutdown();
|
||||
eina_shutdown();
|
||||
|
||||
return _efreet_init_count;
|
||||
return _efreet_init_count;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
efreet_lang_reset(void)
|
||||
{
|
||||
IF_RELEASE(efreet_lang);
|
||||
IF_RELEASE(efreet_lang_country);
|
||||
IF_RELEASE(efreet_lang_modifier);
|
||||
efreet_parsed_locale = 0; /* reset this in case they init efreet again */
|
||||
IF_RELEASE(efreet_lang);
|
||||
IF_RELEASE(efreet_lang_country);
|
||||
IF_RELEASE(efreet_lang_modifier);
|
||||
efreet_parsed_locale = 0; /* reset this in case they init efreet again */
|
||||
|
||||
efreet_dirs_reset();
|
||||
efreet_cache_desktop_close();
|
||||
efreet_cache_desktop_update();
|
||||
efreet_dirs_reset();
|
||||
efreet_cache_desktop_close();
|
||||
efreet_cache_desktop_update();
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* @internal
|
||||
* @return Returns the current users language setting or NULL if none set
|
||||
* @brief Retrieves the current language setting
|
||||
|
@ -198,10 +198,10 @@ efreet_lang_reset(void)
|
|||
const char *
|
||||
efreet_lang_get(void)
|
||||
{
|
||||
if (efreet_parsed_locale) return efreet_lang;
|
||||
if (efreet_parsed_locale) return efreet_lang;
|
||||
|
||||
efreet_parse_locale();
|
||||
return efreet_lang;
|
||||
efreet_parse_locale();
|
||||
return efreet_lang;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -212,10 +212,10 @@ efreet_lang_get(void)
|
|||
const char *
|
||||
efreet_lang_country_get(void)
|
||||
{
|
||||
if (efreet_parsed_locale) return efreet_lang_country;
|
||||
if (efreet_parsed_locale) return efreet_lang_country;
|
||||
|
||||
efreet_parse_locale();
|
||||
return efreet_lang_country;
|
||||
efreet_parse_locale();
|
||||
return efreet_lang_country;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -227,10 +227,10 @@ efreet_lang_country_get(void)
|
|||
const char *
|
||||
efreet_lang_modifier_get(void)
|
||||
{
|
||||
if (efreet_parsed_locale) return efreet_lang_modifier;
|
||||
if (efreet_parsed_locale) return efreet_lang_modifier;
|
||||
|
||||
efreet_parse_locale();
|
||||
return efreet_lang_modifier;
|
||||
efreet_parse_locale();
|
||||
return efreet_lang_modifier;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -242,15 +242,15 @@ efreet_lang_modifier_get(void)
|
|||
static void
|
||||
efreet_parse_locale(void)
|
||||
{
|
||||
efreet_parsed_locale = 1;
|
||||
efreet_parsed_locale = 1;
|
||||
|
||||
if (efreet_parse_locale_setting("LANG"))
|
||||
return;
|
||||
if (efreet_parse_locale_setting("LANG"))
|
||||
return;
|
||||
|
||||
if (efreet_parse_locale_setting("LC_ALL"))
|
||||
return;
|
||||
if (efreet_parse_locale_setting("LC_ALL"))
|
||||
return;
|
||||
|
||||
efreet_parse_locale_setting("LC_MESSAGES");
|
||||
efreet_parse_locale_setting("LC_MESSAGES");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -263,46 +263,46 @@ efreet_parse_locale(void)
|
|||
static int
|
||||
efreet_parse_locale_setting(const char *env)
|
||||
{
|
||||
int found = 0;
|
||||
char *setting;
|
||||
char *p;
|
||||
size_t len;
|
||||
int found = 0;
|
||||
char *setting;
|
||||
char *p;
|
||||
size_t len;
|
||||
|
||||
p = getenv(env);
|
||||
if (!p) return 0;
|
||||
len = strlen(p) + 1;
|
||||
setting = alloca(len);
|
||||
memcpy(setting, p, len);
|
||||
p = getenv(env);
|
||||
if (!p) return 0;
|
||||
len = strlen(p) + 1;
|
||||
setting = alloca(len);
|
||||
memcpy(setting, p, len);
|
||||
|
||||
/* pull the modifier off the end */
|
||||
p = strrchr(setting, '@');
|
||||
if (p)
|
||||
{
|
||||
/* pull the modifier off the end */
|
||||
p = strrchr(setting, '@');
|
||||
if (p)
|
||||
{
|
||||
*p = '\0';
|
||||
efreet_lang_modifier = eina_stringshare_add(p + 1);
|
||||
found = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* if there is an encoding we ignore it */
|
||||
p = strrchr(setting, '.');
|
||||
if (p) *p = '\0';
|
||||
/* if there is an encoding we ignore it */
|
||||
p = strrchr(setting, '.');
|
||||
if (p) *p = '\0';
|
||||
|
||||
/* get the country if available */
|
||||
p = strrchr(setting, '_');
|
||||
if (p)
|
||||
{
|
||||
/* get the country if available */
|
||||
p = strrchr(setting, '_');
|
||||
if (p)
|
||||
{
|
||||
*p = '\0';
|
||||
efreet_lang_country = eina_stringshare_add(p + 1);
|
||||
found = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (*setting != '\0')
|
||||
{
|
||||
if (*setting != '\0')
|
||||
{
|
||||
efreet_lang = eina_stringshare_add(setting);
|
||||
found = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return found;
|
||||
return found;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -317,26 +317,26 @@ efreet_parse_locale_setting(const char *env)
|
|||
size_t
|
||||
efreet_array_cat(char *buffer, size_t size, const char *strs[])
|
||||
{
|
||||
int i;
|
||||
size_t n;
|
||||
for (i = 0, n = 0; n < size && strs[i]; i++)
|
||||
{
|
||||
int i;
|
||||
size_t n;
|
||||
for (i = 0, n = 0; n < size && strs[i]; i++)
|
||||
{
|
||||
n += eina_strlcpy(buffer + n, strs[i], size - n);
|
||||
}
|
||||
return n;
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
#ifndef _WIN32
|
||||
EAPI void
|
||||
efreet_fsetowner(int fd)
|
||||
{
|
||||
struct stat st;
|
||||
struct stat st;
|
||||
|
||||
if (fd < 0) return;
|
||||
if (fstat(fd, &st) < 0) return;
|
||||
if (st.st_uid == ruid) return;
|
||||
if (fd < 0) return;
|
||||
if (fstat(fd, &st) < 0) return;
|
||||
if (st.st_uid == ruid) return;
|
||||
|
||||
if (fchown(fd, ruid, rgid) != 0) return;
|
||||
if (fchown(fd, ruid, rgid) != 0) return;
|
||||
}
|
||||
#else
|
||||
EAPI void
|
||||
|
@ -349,14 +349,14 @@ efreet_fsetowner(int fd __UNUSED__)
|
|||
EAPI void
|
||||
efreet_setowner(const char *path)
|
||||
{
|
||||
EINA_SAFETY_ON_NULL_RETURN(path);
|
||||
EINA_SAFETY_ON_NULL_RETURN(path);
|
||||
|
||||
int fd;
|
||||
int fd;
|
||||
|
||||
fd = open(path, O_RDONLY);
|
||||
if (fd < 0) return;
|
||||
efreet_fsetowner(fd);
|
||||
close(fd);
|
||||
fd = open(path, O_RDONLY);
|
||||
if (fd < 0) return;
|
||||
efreet_fsetowner(fd);
|
||||
close(fd);
|
||||
}
|
||||
#else
|
||||
EAPI void
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue