Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_actions.c e_config.c e_config.h e_desklock.c 
        e_int_config_desklock.c e_intl.c e_ipc_handlers.h 
        e_ipc_handlers_list.h e_manager.c e_utils.c e_utils.h 


Log Message:


1. remove ld_lib_path from all things e17 executes EXCEPT its own specific
tools.
2. custom screensaver patches

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_actions.c,v
retrieving revision 1.88
retrieving revision 1.89
diff -u -3 -r1.88 -r1.89
--- e_actions.c 28 Dec 2006 14:15:10 -0000      1.88
+++ e_actions.c 29 Dec 2006 02:56:25 -0000      1.89
@@ -1225,8 +1225,10 @@
    if (params)
      {
        Ecore_Exe *exe;
-       
+
+       e_util_library_path_strip();
        exe = ecore_exe_run(params, NULL);
+       e_util_library_path_restore();
        e_exehist_add("action/exec", params);
        if (exe) ecore_exe_free(exe);
      }
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_config.c,v
retrieving revision 1.218
retrieving revision 1.219
diff -u -3 -r1.218 -r1.219
--- e_config.c  17 Dec 2006 11:24:59 -0000      1.218
+++ e_config.c  29 Dec 2006 02:56:25 -0000      1.219
@@ -478,6 +478,8 @@
    E_CONFIG_VAL(D, T, desklock_use_timeout, INT);
    E_CONFIG_VAL(D, T, desklock_timeout, DOUBLE);
    E_CONFIG_VAL(D, T, desklock_disable_screensaver, INT);
+   E_CONFIG_VAL(D, T, desklock_use_custom_screensaver, INT);
+   E_CONFIG_VAL(D, T, desklock_custom_screensaver_cmd, STR);
    E_CONFIG_VAL(D, T, display_res_restore, INT);
    E_CONFIG_VAL(D, T, display_res_width, INT);
    E_CONFIG_VAL(D, T, display_res_height, INT);
@@ -1282,6 +1284,12 @@
    e_config->remember_internal_windows = 1;
    IFCFGEND;
    
+     
+   IFCFG(0x00106);
+   e_config->desklock_use_custom_screensaver = 0;
+   e_config->desklock_custom_screensaver_cmd = NULL;     
+   IFCFGEND;
+     
 #if 0 /* example of new config */
    IFCFG(0x0090); /* the version # where this value(s) was introduced */
    e_config->new_value = 10; /* set the value(s) */
@@ -1366,8 +1374,9 @@
    E_CONFIG_LIMIT(e_config->desklock_login_box_zone, -2, 1000);
    E_CONFIG_LIMIT(e_config->desklock_autolock, 0, 1);
    E_CONFIG_LIMIT(e_config->desklock_use_timeout, 0, 1);
-   E_CONFIG_LIMIT(e_config->desklock_timeout, 1.0, 600.0);
+   E_CONFIG_LIMIT(e_config->desklock_timeout, 1.0, 5400.0);
    E_CONFIG_LIMIT(e_config->desklock_disable_screensaver, 0, 1);
+   E_CONFIG_LIMIT(e_config->desklock_use_custom_screensaver, 0, 1);
    E_CONFIG_LIMIT(e_config->display_res_restore, 0, 1);
    E_CONFIG_LIMIT(e_config->display_res_width, 1, 8192);
    E_CONFIG_LIMIT(e_config->display_res_height, 1, 8192);
@@ -1966,6 +1975,7 @@
        if (e_config->wallpaper_import_last_dev) 
evas_stringshare_del(e_config->wallpaper_import_last_dev);
        if (e_config->wallpaper_import_last_path) 
evas_stringshare_del(e_config->wallpaper_import_last_path);
        if (e_config->theme_default_border_style) 
evas_stringshare_del(e_config->theme_default_border_style);
+   if (e_config->desklock_custom_screensaver_cmd) 
evas_stringshare_del(e_config->desklock_custom_screensaver_cmd);
        E_FREE(e_config);
      }
 }
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_config.h,v
retrieving revision 1.136
retrieving revision 1.137
diff -u -3 -r1.136 -r1.137
--- e_config.h  17 Dec 2006 16:14:11 -0000      1.136
+++ e_config.h  29 Dec 2006 02:56:26 -0000      1.137
@@ -52,7 +52,7 @@
 /* increment this whenever a new set of config values are added but the users
  * config doesn't need to be wiped - simply new values need to be put in
  */
-#define E_CONFIG_FILE_GENERATION 0x0105
+#define E_CONFIG_FILE_GENERATION 0x0106
 #define E_CONFIG_FILE_VERSION    ((E_CONFIG_FILE_EPOCH << 16) | 
E_CONFIG_FILE_GENERATION)
 
 #define E_EVAS_ENGINE_DEFAULT      0
@@ -231,7 +231,9 @@
    int         desklock_use_timeout; // GUI
    double      desklock_timeout; // GUI
    int         desklock_disable_screensaver; // GUI
-
+   int         desklock_use_custom_screensaver; //GUI
+   const char *desklock_custom_screensaver_cmd; // GUI
+   
    int         display_res_restore; // GUI
    int         display_res_width; // GUI
    int         display_res_height; // GUI
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_desklock.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -3 -r1.28 -r1.29
--- e_desklock.c        21 Oct 2006 02:32:13 -0000      1.28
+++ e_desklock.c        29 Dec 2006 02:56:26 -0000      1.29
@@ -49,6 +49,8 @@
 static Ecore_Event_Handler *_e_desklock_exit_handler = NULL;
 static pid_t                _e_desklock_child_pid = -1;
 #endif
+static Ecore_Exe *_e_custom_saver_exe = NULL;
+static Ecore_Event_Handler *_e_custom_saver_exe_handler = NULL;
 
 /***********************************************************************/
 
@@ -57,6 +59,7 @@
 static int _e_desklock_cb_mouse_up(void *data, int type, void *event);
 static int _e_desklock_cb_mouse_wheel(void *data, int type, void *event);
 static int _e_desklock_cb_mouse_move(void *data, int type, void *event);
+static int _e_desklock_cb_custom_saver_exit(void *data, int type, void *event);
 
 static void _e_desklock_passwd_update();
 static void _e_desklock_backspace();
@@ -77,17 +80,25 @@
 EAPI int
 e_desklock_init(void)
 {
+   
    if (e_config->desklock_disable_screensaver)
      ecore_x_screensaver_timeout_set(0);
    else
      {
        if (e_config->desklock_use_timeout)
-         ecore_x_screensaver_timeout_set(e_config->desklock_timeout);
+         ecore_x_screensaver_timeout_set(e_config->desklock_timeout);   
      }
-
+     
+   /*
+    * Effectively hide the X screensaver yet allow
+    * it to generate the timer events for us.
+    */
+   ecore_x_screensaver_blank_set(!e_config->desklock_use_custom_screensaver);
+   ecore_x_screensaver_expose_set(!e_config->desklock_use_custom_screensaver);
+     
    if (e_config->desklock_background)
        e_filereg_register(e_config->desklock_background);
-
+   
    return 1;
 }
 
@@ -110,9 +121,23 @@
    E_Zone                *current_zone;
    int                   zone_counter;
    int                   total_zone_num;
+   
 
-   if (edd) return 0;
+   if (_e_custom_saver_exe) return 0;
+
+   if (e_config->desklock_use_custom_screensaver)
+     {
+       _e_custom_saver_exe_handler = 
ecore_event_handler_add(ECORE_EXE_EVENT_DEL, 
+                                                             
_e_desklock_cb_custom_saver_exit, 
+                                                             NULL);
+        e_util_library_path_strip();
+       _e_custom_saver_exe = 
ecore_exe_run(e_config->desklock_custom_screensaver_cmd, NULL);
+        e_util_library_path_restore();
+       return 1;
+     }      
    
+   if (edd) return 0;
+
 #ifdef HAVE_PAM
    if (e_config->desklock_auth_method == 1)
      {
@@ -323,8 +348,14 @@
 {
    E_Desklock_Popup_Data       *edp;
    
-   if (!edd) return;
+   if ((!edd) && (!_e_custom_saver_exe)) return;
 
+   if (e_config->desklock_use_custom_screensaver)
+   {
+      _e_custom_saver_exe = NULL;
+      return;
+   }
+   
    if (edd->elock_grab_break_wnd)
      ecore_x_window_show(edd->elock_grab_break_wnd);
    while (edd->elock_wnd_list)
@@ -735,3 +766,30 @@
    return strdup("localhost");
 }
 #endif
+
+static int
+_e_desklock_cb_custom_saver_exit(void *data, int type, void *event)
+{
+   Ecore_Exe_Event_Del *ev;
+  
+   ev = event;
+   if (ev->exe != _e_custom_saver_exe) return 1;
+   
+   if (ev->exit_code != 0)
+   {
+             /* do something profound here... like notify someone */
+   }
+   
+   /*
+    * Miserable HACK alert!!!
+    * Seems I must reset this.  Some reason yet unknown, my
+    * intended values are getting reset!?! 
+    */
+   ecore_x_screensaver_timeout_set(e_config->desklock_timeout);   
+   ecore_x_screensaver_blank_set(!e_config->desklock_use_custom_screensaver);
+   ecore_x_screensaver_expose_set(!e_config->desklock_use_custom_screensaver);
+   
+   e_desklock_hide();
+   
+   return 0;
+}
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_int_config_desklock.c,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -3 -r1.44 -r1.45
--- e_int_config_desklock.c     28 Dec 2006 14:08:54 -0000      1.44
+++ e_int_config_desklock.c     29 Dec 2006 02:56:26 -0000      1.45
@@ -14,7 +14,6 @@
 #define DEF_DESKLOCK_BACKGROUND        "theme_desklock_background"
 #define DEF_THEME_BACKGROUND   "theme_background"
 
-
 static void *_create_data(E_Config_Dialog *cfd);
 static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
 static int  _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data 
*cfdata);
@@ -61,6 +60,9 @@
    int specific_lb_zone; // local variable
    int specific_lb_zone_backup; // used to have smart iface
    
+   int use_custom_screensaver;
+   char *custom_screensaver_cmd;
+   
    int zone_count; // local variable;
 
    int bg_mode; // config
@@ -290,7 +292,7 @@
    
    cfdata->autolock = e_config->desklock_autolock;
    cfdata->use_timeout = e_config->desklock_use_timeout;
-   cfdata->timeout = e_config->desklock_timeout;
+   cfdata->timeout = e_config->desklock_timeout / 60;
    
    /* should be taken from e_config */
    //cfdata->login_box_on_zone = -1;
@@ -347,6 +349,10 @@
    cfdata->auth_method = e_config->desklock_auth_method;
 #endif
    
+   cfdata->use_custom_screensaver = e_config->desklock_use_custom_screensaver;
+   if (e_config->desklock_custom_screensaver_cmd)
+      cfdata->custom_screensaver_cmd = 
strdup(e_config->desklock_custom_screensaver_cmd);
+     
    //vertical_lb_align = e_config->desklock_login
 }
 
@@ -385,14 +391,16 @@
    e_config->desklock_personal_passwd = 
evas_stringshare_add(cfdata->desklock_passwd_cp);
    e_config->desklock_autolock = cfdata->autolock;
    e_config->desklock_use_timeout = cfdata->use_timeout;
-   e_config->desklock_timeout = cfdata->timeout;
+   e_config->desklock_timeout = cfdata->timeout * 60;
 #ifdef HAVE_PAM
    e_config->desklock_auth_method = cfdata->auth_method;
 #endif
    if (e_config->desklock_use_timeout)
-     {
-       ecore_x_screensaver_timeout_set(e_config->desklock_timeout);
-     }
+         ecore_x_screensaver_timeout_set(e_config->desklock_timeout);
+       
+   ecore_x_screensaver_blank_set(!e_config->desklock_use_custom_screensaver);
+   ecore_x_screensaver_expose_set(!e_config->desklock_use_custom_screensaver); 
       
+     
    e_config_save_queue();
   return 1;
 }
@@ -417,8 +425,8 @@
    ob = e_widget_label_add(evas, _("Time until screensaver starts"));
    e_widget_disabled_set(ob, !ecore_x_screensaver_event_available_get());
    e_widget_framelist_object_append(of, ob);
-   ob = e_widget_slider_add(evas, 1, 0, _("%1.0f seconds"),
-                           1.0, 600.0,
+   ob = e_widget_slider_add(evas, 1, 0, _("%1.0f minutes"),
+                           1.0, 90.0,
                            1.0, 0, &(cfdata->timeout), NULL,
                            200);
    e_widget_framelist_object_append(of, ob);
@@ -467,14 +475,25 @@
 
    e_config->desklock_autolock = cfdata->autolock;
    e_config->desklock_use_timeout = cfdata->use_timeout;
-   e_config->desklock_timeout = cfdata->timeout;
+   e_config->desklock_timeout = cfdata->timeout * 60;
 #ifdef HAVE_PAM
    e_config->desklock_auth_method = cfdata->auth_method;
 #endif
 
    if (e_config->desklock_use_timeout)
-     ecore_x_screensaver_timeout_set(e_config->desklock_timeout);
+     ecore_x_screensaver_timeout_set(e_config->desklock_timeout);        
+     
+   e_config->desklock_use_custom_screensaver = cfdata->use_custom_screensaver;
+   if (cfdata->custom_screensaver_cmd) 
+      {
+   if (e_config->desklock_custom_screensaver_cmd)
+          evas_stringshare_del(e_config->desklock_custom_screensaver_cmd);
+   e_config->desklock_custom_screensaver_cmd = 
evas_stringshare_add(cfdata->custom_screensaver_cmd);
+      }
    
+   ecore_x_screensaver_blank_set(!e_config->desklock_use_custom_screensaver);
+   ecore_x_screensaver_expose_set(!e_config->desklock_use_custom_screensaver);
+      
    e_config_save_queue();
    return 1;
 }
@@ -713,7 +732,7 @@
    
    e_widget_disabled_set(of, !ecore_x_screensaver_event_available_get());
    
-   ob = e_widget_check_add(evas, _("Enable screensaver"), 
&(cfdata->use_timeout));
+   ob = e_widget_check_add(evas, _("Enable X screensaver"), 
&(cfdata->use_timeout));
    e_widget_disabled_set(ob, !ecore_x_screensaver_event_available_get());
    e_widget_framelist_object_append(of, ob);
    
@@ -724,8 +743,8 @@
    ob = e_widget_label_add(evas, _("Time until screensaver starts"));
    e_widget_disabled_set(ob, !ecore_x_screensaver_event_available_get());
    e_widget_framelist_object_append(of, ob);
-   ob = e_widget_slider_add(evas, 1, 0, _("%1.0f seconds"),
-                           1.0, 600.0,
+   ob = e_widget_slider_add(evas, 1, 0, _("%1.0f minutes"),
+                           1.0, 90.0,
                            1.0, 0, &(cfdata->timeout), NULL,
                            100);
    e_widget_framelist_object_append(of, ob);
@@ -733,6 +752,23 @@
    e_widget_table_object_append(ot, of, 1, 2, 1, 2 ,1 ,1 ,1 ,1);
 #else
    e_widget_table_object_append(ot, of, 1, 2, 1, 1 ,1 ,1 ,1 ,1);
+#endif
+
+   /* 
+    * Allow Custom Screen Saver
+    *   Useful, for example, for those of us who prefer
+    *   to use things like xscreensaver, kscreesaver, etc...
+    */
+   of = e_widget_framelist_add(evas, _("Custom Screensaver"), 0);
+   ob = e_widget_check_add(evas, _("Use custom screensaver/desklock"), 
+                           &(cfdata->use_custom_screensaver));
+   e_widget_framelist_object_append(of, ob);
+   ob = e_widget_entry_add(evas, &(cfdata->custom_screensaver_cmd));
+   e_widget_framelist_object_append(of, ob);
+#ifdef HAVE_PAM
+   e_widget_table_object_append(ot, of, 0, 4, 2, 1, 1, 1, 1, 1);
+#else
+   e_widget_table_object_append(ot, of, 0, 4, 2, 1, 1, 1, 1, 1);
 #endif
    
    e_dialog_resizable_set(cfd->dia, 0);
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_intl.c,v
retrieving revision 1.87
retrieving revision 1.88
diff -u -3 -r1.87 -r1.88
--- e_intl.c    17 Dec 2006 11:24:59 -0000      1.87
+++ e_intl.c    29 Dec 2006 02:56:26 -0000      1.88
@@ -352,7 +352,9 @@
                  
                  if (E_EXE_IS_VALID(imc->e_im_exec)) 
                    {
+                      e_util_library_path_strip();
                       _e_intl_input_method_exec = 
ecore_exe_run(imc->e_im_exec, NULL);
+                      e_util_library_path_restore();
                       ecore_exe_tag_set(_e_intl_input_method_exec,"E/im_exec");
                       
                       if (  !_e_intl_input_method_exec || 
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_ipc_handlers.h,v
retrieving revision 1.141
retrieving revision 1.142
diff -u -3 -r1.141 -r1.142
--- e_ipc_handlers.h    22 Dec 2006 10:55:25 -0000      1.141
+++ e_ipc_handlers.h    29 Dec 2006 02:56:26 -0000      1.142
@@ -7816,3 +7816,83 @@
 #elif (TYPE == E_REMOTE_IN)
 #endif
 #undef HDL
+
+/****************************************************************************/
+#define HDL E_IPC_OP_DESKLOCK_USE_CUSTOM_SCREENSAVER_SET
+#if (TYPE == E_REMOTE_OPTIONS)
+   OP("-desklock-use-custom-screensaver-set", 1, "Set whether a custom 
screensaver will be utilized", 0, HDL)
+#elif (TYPE == E_REMOTE_OUT)
+   REQ_INT(atoi(params[0]), HDL);
+#elif (TYPE == E_WM_IN)
+   START_INT(policy, HDL);
+   e_config->desklock_use_custom_screensaver = policy;
+   E_CONFIG_LIMIT(e_config->desklock_use_custom_screensaver, 0, 1);
+   SAVE;
+   END_INT;
+#elif (TYPE == E_REMOTE_IN)
+#endif
+#undef HDL
+
+/****************************************************************************/
+#define HDL E_IPC_OP_DESKLOCK_USE_CUSTOM_SCREENSAVER_GET
+#if (TYPE == E_REMOTE_OPTIONS)
+   OP("-desklock-use-custom-screensaver-get", 0, "Get whether a custom screen 
saver is being used", 1, HDL)
+#elif (TYPE == E_REMOTE_OUT)
+   REQ_NULL(HDL);
+#elif (TYPE == E_WM_IN)
+   SEND_INT(e_config->desklock_use_custom_screensaver, 
E_IPC_OP_DESKLOCK_USE_CUSTOM_SCREENSAVER_GET_REPLY, HDL);
+#elif (TYPE == E_REMOTE_IN)
+#endif
+#undef HDL
+
+/****************************************************************************/
+#define HDL E_IPC_OP_DESKLOCK_USE_CUSTOM_SCREENSAVER_GET_REPLY
+#if (TYPE == E_REMOTE_OPTIONS)
+#elif (TYPE == E_REMOTE_OUT)
+#elif (TYPE == E_WM_IN)
+#elif (TYPE == E_REMOTE_IN)
+   START_INT(val, HDL);
+   printf("REPLY: POLICY=%d\n", val);
+   END_INT;
+#endif
+#undef HDL
+
+/****************************************************************************/
+#define HDL E_IPC_OP_DESKLOCK_CUSTOM_SCREENSAVER_CMD_SET
+#if (TYPE == E_REMOTE_OPTIONS)
+   OP("-desklock-custom-screensaver-cmd-set", 1, "Set the current custom 
screensaver command to OPT1", 0, HDL)
+#elif (TYPE == E_REMOTE_OUT)
+   REQ_STRING(params[0], HDL);
+#elif (TYPE == E_WM_IN)
+   STRING(s, HDL);
+   if (e_config->desklock_custom_screensaver_cmd)
+          evas_stringshare_del(e_config->desklock_custom_screensaver_cmd);
+   e_config->desklock_custom_screensaver_cmd = evas_stringshare_add(s);   
+   END_STRING(s);
+#elif (TYPE == E_REMOTE_IN)
+#endif
+#undef HDL
+
+/****************************************************************************/
+#define HDL E_IPC_OP_DESKLOCK_CUSTOM_SCREENSAVER_CMD_GET
+#if (TYPE == E_REMOTE_OPTIONS)
+   OP("-desklock-custom-screensaver-cmd-get", 0, "Get the current custom 
screensaver command", 1, HDL)
+#elif (TYPE == E_REMOTE_OUT)
+   REQ_NULL(HDL);
+#elif (TYPE == E_WM_IN)
+   SEND_STRING(e_config->desklock_custom_screensaver_cmd, 
E_IPC_OP_PROFILE_GET_REPLY, HDL);
+#elif (TYPE == E_REMOTE_IN)
+#endif
+#undef HDL
+     
+/****************************************************************************/
+#define HDL E_IPC_OP_DESKLOCK_CUSTOM_SCREENSAVER_CMD_GET_REPLY
+#if (TYPE == E_REMOTE_OPTIONS)
+#elif (TYPE == E_REMOTE_OUT)
+#elif (TYPE == E_WM_IN)
+#elif (TYPE == E_REMOTE_IN)
+   STRING(s, HDL);
+   printf("REPLY: \"%s\"\n", s);
+   END_STRING(s);
+#endif
+#undef HDL
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_ipc_handlers_list.h,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -3 -r1.53 -r1.54
--- e_ipc_handlers_list.h       22 Dec 2006 10:55:25 -0000      1.53
+++ e_ipc_handlers_list.h       29 Dec 2006 02:56:26 -0000      1.54
@@ -413,3 +413,11 @@
 #define E_IPC_OP_HIBERNATE 376
 #define E_IPC_OP_REBOOT 377
 #define E_IPC_OP_SUSPEND 378
+
+#define E_IPC_OP_DESKLOCK_USE_CUSTOM_SCREENSAVER_SET 379
+#define E_IPC_OP_DESKLOCK_USE_CUSTOM_SCREENSAVER_GET 380
+#define E_IPC_OP_DESKLOCK_USE_CUSTOM_SCREENSAVER_GET_REPLY 381
+#define E_IPC_OP_DESKLOCK_CUSTOM_SCREENSAVER_CMD_SET 382
+#define E_IPC_OP_DESKLOCK_CUSTOM_SCREENSAVER_CMD_GET 383
+#define E_IPC_OP_DESKLOCK_CUSTOM_SCREENSAVER_CMD_GET_REPLY 384
+  
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_manager.c,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -3 -r1.58 -r1.59
--- e_manager.c 28 Oct 2006 01:28:01 -0000      1.58
+++ e_manager.c 29 Dec 2006 02:56:26 -0000      1.59
@@ -754,7 +754,8 @@
    
    if (e->on)
      {
-       if (e_config->desklock_autolock) e_desklock_show();
+       if ((e_config->desklock_autolock) || 
(e_config->desklock_use_custom_screensaver))
+      e_desklock_show();
      }
    return 1;
 }
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_utils.c,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -3 -r1.55 -r1.56
--- e_utils.c   17 Dec 2006 11:24:59 -0000      1.55
+++ e_utils.c   29 Dec 2006 02:56:26 -0000      1.56
@@ -229,7 +229,9 @@
      strcpy(buf, penv_display);
    
    ok = 1;
+   e_util_library_path_strip();
    exe = ecore_exe_run(cmd, NULL);
+   e_util_library_path_restore();
    if (!exe)
      {
        e_util_dialog_show(_("Run Error"),
@@ -778,6 +780,32 @@
    else 
      s = strdup(_("Unknown"));
    return s;
+}
+
+static char *prev_ld_library_path = NULL;
+
+EAPI void
+e_util_library_path_strip(void)
+{
+   char *p, *p2;
+   
+   p = getenv("LD_LIBRARY_PATH");
+   E_FREE(prev_ld_library_path);
+   if (p)
+     {
+       prev_ld_library_path = strdup(p);
+       p2 = strchr(p, ':');
+       if (p2) p2++;
+       e_util_env_set("LD_LIBRARY_PATH", p2);
+     }
+}
+
+EAPI void
+e_util_library_path_restore(void)
+{
+   if (!prev_ld_library_path) return;
+   e_util_env_set("LD_LIBRARY_PATH", prev_ld_library_path);
+   E_FREE(prev_ld_library_path);
 }
 
 /* local subsystem functions */
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_utils.h,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -3 -r1.29 -r1.30
--- e_utils.h   5 Dec 2006 14:28:48 -0000       1.29
+++ e_utils.h   29 Dec 2006 02:56:26 -0000      1.30
@@ -47,6 +47,8 @@
 EAPI char        *e_util_shell_env_path_eval(char *path);
 EAPI char        *e_util_size_string_get(off_t size);
 EAPI char        *e_util_file_time_get(time_t ftime);
+EAPI void         e_util_library_path_strip(void);
+EAPI void         e_util_library_path_restore(void);
     
 #endif
 #endif



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to