diff options
author | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2022-01-09 21:14:23 +0000 |
---|---|---|
committer | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2022-01-09 21:14:23 +0000 |
commit | ec80ef2ce463fb3b9a14b9d9ed29f640908076cb (patch) | |
tree | 2da2767e6c56516069bd620f967d67e7cf9700f1 | |
parent | 6c9784b9188aec6245b604549ed5f576e8cb66fb (diff) | |
download | efl-ec80ef2ce463fb3b9a14b9d9ed29f640908076cb.tar.gz |
efreetd - use putenv for better porting to weird os's
-rw-r--r-- | src/bin/efreet/efreetd_ipc.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/src/bin/efreet/efreetd_ipc.c b/src/bin/efreet/efreetd_ipc.c index 129f886f34..14e441ac14 100644 --- a/src/bin/efreet/efreetd_ipc.c +++ b/src/bin/efreet/efreetd_ipc.c @@ -2,10 +2,6 @@ # include <config.h> #endif -#ifdef _WIN32 -# include <evil_private.h> /* setenv */ -#endif - #include <Ecore.h> #include <Ecore_Ipc.h> @@ -155,7 +151,16 @@ _cb_client_data(void *data EINA_UNUSED, int type EINA_UNUSED, void *event) fflush(efreetd_log_file); if ((s = _parse_str(e->data, e->size))) { - setenv("LANG", s, 1); + char envlang[128], *env; + + env = getenv("LANG"); + if (!((env) && (!strcmp(env, s)))) + { + snprintf(envlang, sizeof(envlang), "LANG=%s", s); + env = strdup(envlang); + putenv(env); + /* leak env intentionnally */ + } free(s); } // return if desktop cache exists (bool as minor) @@ -179,7 +184,16 @@ _cb_client_data(void *data EINA_UNUSED, int type EINA_UNUSED, void *event) fflush(efreetd_log_file); if ((s = _parse_str(e->data, e->size))) { - setenv("LANG", s, 1); + char envlang[128], *env; + + env = getenv("LANG"); + if (!((env) && (!strcmp(env, s)))) + { + snprintf(envlang, sizeof(envlang), "LANG=%s", s); + env = strdup(envlang); + putenv(env); + /* leak env intentionnally */ + } free(s); } cache_desktop_update(); |