e - fix xdg runtime dir creation withotu deletion

this fixes T1366 - uses tmp dot file in xdg dir to mark it for
deletion to survive e restarts and crashes.
This commit is contained in:
Carsten Haitzler 2014-07-07 14:46:35 +09:00
parent eeedb6a9d8
commit dec56e87da
1 changed files with 14 additions and 1 deletions

View File

@ -164,7 +164,12 @@ _xdg_data_dirs_augment(void)
snprintf(buf, sizeof(buf), "/tmp/xdg-XXXXXX");
dir = mkdtemp(buf);
if (!dir) dir = "/tmp";
e_util_env_set("XDG_RUNTIME_DIR", dir);
else
{
e_util_env_set("XDG_RUNTIME_DIR", dir);
snprintf(buf, sizeof(buf), "%s/.e-deleteme", dir);
ecore_file_mkdir(buf);
}
}
/* set menu prefix so we get our e menu */
@ -1054,6 +1059,8 @@ static void
_e_main_shutdown(int errcode)
{
int i = 0;
char buf[PATH_MAX];
const char *dir;
printf("E19: Begin Shutdown Procedure!\n");
@ -1064,6 +1071,12 @@ _e_main_shutdown(int errcode)
if (_idle_flush) ecore_idle_enterer_del(_idle_flush);
_idle_flush = NULL;
dir = getenv("XDG_RUNTIME_DIR");
if (dir)
{
snprintf(buf, sizeof(buf), "%s/.e-deleteme", dir);
if (ecore_file_exists(buf)) ecore_file_recursive_rm(dir);
}
for (i = (_e_main_lvl - 1); i >= 0; i--)
(*_e_main_shutdown_func[i])();
if (errcode < 0) exit(errcode);