raster pushed a commit to branch v-1.26.0.

http://git.enlightenment.org/core/efl.git/commit/?id=071fc06ec52b3aa49d1a19d1da6cfd4c7eef7fe5

commit 071fc06ec52b3aa49d1a19d1da6cfd4c7eef7fe5
Author: Carsten Haitzler <[email protected]>
Date:   Sun Jan 9 21:14:23 2022 +0000

    efreetd - use putenv for better porting to weird os's
---
 src/bin/efreet/efreetd_ipc.c | 26 ++++++++++++++++++++------
 1 file 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();

-- 


Reply via email to