From e5f25ad414ab018f303f65fc9a564799205c683d Mon Sep 17 00:00:00 2001 From: handyande Date: Fri, 11 Feb 2005 23:24:50 +0000 Subject: [PATCH] Fixup to use e's DISPLAY padding and use the env if passed param is NULL SVN revision: 13323 --- src/lib/e_main.c | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/src/lib/e_main.c b/src/lib/e_main.c index 6572bc303..b425da401 100644 --- a/src/lib/e_main.c +++ b/src/lib/e_main.c @@ -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; }