Fixup to use e's DISPLAY padding and use the env if passed param is NULL

SVN revision: 13323
This commit is contained in:
handyande 2005-02-11 23:24:50 +00:00 committed by handyande
parent 65b68cf1d5
commit e5f25ad414
1 changed files with 37 additions and 1 deletions

View File

@ -34,9 +34,43 @@ int E_RESPONSE_BACKGROUND_GET = 0;
int
e_init(const char* display)
{
char *disp, *pos;
int free_disp;
if (_e_ipc_server)
return 0;
free_disp = 0;
if (display)
disp = (char *) display;
else
disp = getenv("DISPLAY");
if (!disp)
fprintf(stderr, "ERROR: No display parameter passed to e_init, and no DISPLAY variable\n");
pos = strrchr(disp, ':');
if (!pos)
{
char *tmp;
tmp = malloc(strlen(disp) + 5);
snprintf(tmp, sizeof(tmp), "%s:0.0", disp);
disp = tmp;
free_disp = 1;
}
else
{
pos = strrchr(pos, '.');
if (!pos)
{
char *tmp;
tmp = malloc(strlen(disp) + 3);
snprintf(tmp, strlen(tmp), "%s.0", disp);
disp = tmp;
free_disp = 1;
}
}
/* basic ecore init */
if (!ecore_init())
{
@ -54,7 +88,7 @@ e_init(const char* display)
}
/* setup e ipc service */
if (!_e_ipc_init(display))
if (!_e_ipc_init(disp))
{
fprintf(stderr, "ERROR: Enlightenment cannot set up the IPC socket.\n"
"Did you specify the right display?\n");
@ -67,6 +101,8 @@ e_init(const char* display)
E_RESPONSE_BACKGROUND_GET = ecore_event_type_new();
}
if (free_disp)
free(disp);
return 1;
}