summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2022-01-09 21:14:23 +0000
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2022-01-09 21:14:23 +0000
commitec80ef2ce463fb3b9a14b9d9ed29f640908076cb (patch)
tree2da2767e6c56516069bd620f967d67e7cf9700f1
parent6c9784b9188aec6245b604549ed5f576e8cb66fb (diff)
downloadefl-ec80ef2ce463fb3b9a14b9d9ed29f640908076cb.tar.gz
efreetd - use putenv for better porting to weird os's
-rw-r--r--src/bin/efreet/efreetd_ipc.c26
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();