handle NULL config strings. some of them anyway
authorCarsten Haitzler <raster@rasterman.com>
Wed, 23 Nov 2005 12:55:55 +0000 (12:55 +0000)
committerCarsten Haitzler <raster@rasterman.com>
Wed, 23 Nov 2005 12:55:55 +0000 (12:55 +0000)
SVN revision: 18616

src/bin/e_bg.c
src/bin/e_bindings.c
src/bin/e_config.c
src/bin/e_module.c

index ea01779d86f134e687c961ddb59d5d9ecd982df7..1853730b187149c72765e18c5ad2cdfe379f9a84 100644 (file)
@@ -21,7 +21,7 @@ e_bg_zone_update(E_Zone *zone, E_Bg_Transition transition)
    if (transition == E_BG_TRANSITION_START) trans = e_config->transition_start;
    else if (transition == E_BG_TRANSITION_DESK) trans = e_config->transition_desk;
    else if (transition == E_BG_TRANSITION_CHANGE) trans = e_config->transition_change;
-   if (strlen(trans) < 1) transition = E_BG_TRANSITION_NONE;
+   if ((!trans) || (strlen(trans) < 1)) transition = E_BG_TRANSITION_NONE;
 
    ok = 0;
    for (l = e_config->desktop_backgrounds; l; l = l->next)
index d69757b4d08662f31c66a7e5d0879eb4aba2d86f..4462e6c65bd98768948b996593ef1a5d2c1cc180 100644 (file)
@@ -52,7 +52,8 @@ e_bindings_init(void)
                              eb->any_mod, eb->action, eb->params);
        /* FIXME: Can this be solved in a generic way? */
        /* FIXME: Only change cursor if action is allowed! */
-       if ((!strcmp(eb->action, "window_resize")) &&
+       if ((eb->action) && (eb->signal) && (eb->source) &&
+           (!strcmp(eb->action, "window_resize")) &&
            (!strncmp(eb->signal, "mouse,down,", 11)) &&
            (!strncmp(eb->source, "resize_", 7)))
          {
@@ -125,8 +126,8 @@ e_bindings_mouse_add(E_Binding_Context ctxt, int button, E_Binding_Modifier mod,
    bind->button = button;
    bind->mod = mod;
    bind->any_mod = any_mod;
-   bind->action = strdup(action);
-   bind->params = strdup(params);
+   if (action) bind->action = strdup(action);
+   if (params) bind->params = strdup(params);
    mouse_bindings = evas_list_append(mouse_bindings, bind);
 }
 
@@ -144,8 +145,10 @@ e_bindings_mouse_del(E_Binding_Context ctxt, int button, E_Binding_Modifier mod,
            (bind->button == button) &&
            (bind->mod == mod) &&
            (bind->any_mod == any_mod) &&
-           (!strcmp(bind->action, action)) &&
-           (!strcmp(bind->params, params)))
+           (((bind->action) && (action) && (!strcmp(bind->action, action))) ||
+            ((!bind->action) && (!action))) &&
+           (((bind->params) && (params) && (!strcmp(bind->params, params))) ||
+            ((!bind->params) && (!params))))
          {
             _e_bindings_mouse_free(bind);
             mouse_bindings = evas_list_remove_list(mouse_bindings, l);
@@ -315,8 +318,8 @@ e_bindings_key_add(E_Binding_Context ctxt, char *key, E_Binding_Modifier mod, in
    bind->key = strdup(key);
    bind->mod = mod;
    bind->any_mod = any_mod;
-   bind->action = strdup(action);
-   bind->params = strdup(params);
+   if (action) bind->action = strdup(action);
+   if (params) bind->params = strdup(params);
    key_bindings = evas_list_append(key_bindings, bind);
 }
 
@@ -331,11 +334,13 @@ e_bindings_key_del(E_Binding_Context ctxt, char *key, E_Binding_Modifier mod, in
        
        bind = l->data;
        if ((bind->ctxt == ctxt) &&
-           (!strcmp(bind->key, key)) &&
+           (key) && (bind->key) && (!strcmp(bind->key, key)) &&
            (bind->mod == mod) &&
            (bind->any_mod == any_mod) &&
-           (!strcmp(bind->action, action)) &&
-           (!strcmp(bind->params, params)))
+           (((bind->action) && (action) && (!strcmp(bind->action, action))) ||
+            ((!bind->action) && (!action))) &&
+           (((bind->params) && (params) && (!strcmp(bind->params, params))) ||
+            ((!bind->params) && (!params))))
          {
             _e_bindings_key_free(bind);
             key_bindings = evas_list_remove_list(key_bindings, l);
@@ -409,7 +414,7 @@ e_bindings_key_down_event_handle(E_Binding_Context ctxt, E_Object *obj, Ecore_X_
        E_Binding_Key *bind;
        
        bind = l->data;
-       if ((!strcmp(bind->key, ev->keyname)) &&
+       if ((bind->key) && (!strcmp(bind->key, ev->keyname)) &&
            ((bind->any_mod) || (bind->mod == mod)))
          {
             if (_e_bindings_context_match(bind->ctxt, ctxt))
@@ -447,7 +452,7 @@ e_bindings_key_up_event_handle(E_Binding_Context ctxt, E_Object *obj, Ecore_X_Ev
        E_Binding_Key *bind;
        
        bind = l->data;
-       if ((!strcmp(bind->key, ev->keyname)) &&
+       if ((bind->key) && (!strcmp(bind->key, ev->keyname)) &&
            ((bind->any_mod) || (bind->mod == mod)))
          {
             if (_e_bindings_context_match(bind->ctxt, ctxt))
@@ -478,12 +483,12 @@ e_bindings_signal_add(E_Binding_Context ctxt, char *sig, char *src, E_Binding_Mo
    
    bind = calloc(1, sizeof(E_Binding_Signal));
    bind->ctxt = ctxt;
-   bind->sig = strdup(sig);
-   bind->src = strdup(src);
+   if (sig) bind->sig = strdup(sig);
+   if (src) bind->src = strdup(src);
    bind->mod = mod;
    bind->any_mod = any_mod;
-   bind->action = strdup(action);
-   bind->params = strdup(params);
+   if (action) bind->action = strdup(action);
+   if (params) bind->params = strdup(params);
    signal_bindings = evas_list_append(signal_bindings, bind);
 }
 
@@ -498,12 +503,16 @@ e_bindings_signal_del(E_Binding_Context ctxt, char *sig, char *src, E_Binding_Mo
        
        bind = l->data;
        if ((bind->ctxt == ctxt) &&
-           (!strcmp(bind->sig, sig)) &&
-           (!strcmp(bind->src, src)) &&
+           (((bind->sig) && (sig) && (!strcmp(bind->sig, sig))) ||
+            ((!bind->sig) && (!sig))) &&
+           (((bind->src) && (src) && (!strcmp(bind->src, src))) ||
+            ((!bind->src) && (!src))) &&
            (bind->mod == mod) &&
            (bind->any_mod == any_mod) &&
-           (!strcmp(bind->action, action)) &&
-           (!strcmp(bind->params, params)))
+           (((bind->action) && (action) && (!strcmp(bind->action, action))) ||
+            ((!bind->action) && (!action))) &&
+           (((bind->params) && (params) && (!strcmp(bind->params, params))) ||
+            ((!bind->params) && (!params))))
          {
             _e_bindings_signal_free(bind);
             signal_bindings = evas_list_remove_list(signal_bindings, l);
@@ -549,7 +558,9 @@ e_bindings_signal_handle(E_Binding_Context ctxt, E_Object *obj, char *sig, char
 {
    E_Action *act;
    E_Binding_Signal *bind;
-   
+
+   if (sig[0] == 0) sig = NULL;
+   if (src[0] == 0) src = NULL;
    act = e_bindings_signal_find(ctxt, obj, sig, src, &bind);
    if (act)
      {
@@ -574,8 +585,8 @@ e_bindings_wheel_add(E_Binding_Context ctxt, int direction, int z, E_Binding_Mod
    bind->z = z;
    bind->mod = mod;
    bind->any_mod = any_mod;
-   bind->action = strdup(action);
-   bind->params = strdup(params);
+   if (action) bind->action = strdup(action);
+   if (params) bind->params = strdup(params);
    wheel_bindings = evas_list_append(wheel_bindings, bind);
 }
 
@@ -594,8 +605,10 @@ e_bindings_wheel_del(E_Binding_Context ctxt, int direction, int z, E_Binding_Mod
            (bind->z == z) &&
            (bind->mod == mod) &&
            (bind->any_mod == any_mod) &&
-           (!strcmp(bind->action, action)) &&
-           (!strcmp(bind->params, params)))
+           (((bind->action) && (action) && (!strcmp(bind->action, action))) ||
+            ((!bind->action) && (!action))) &&
+           (((bind->params) && (params) && (!strcmp(bind->params, params))) ||
+            ((!bind->params) && (!params))))
          {
             _e_bindings_wheel_free(bind);
             wheel_bindings = evas_list_remove_list(wheel_bindings, l);
index 07d71ed62d3b717ee8ad06ff7c0be5caf29fb6ba..b54dd10c6abbeb971d31241775eb985d5872b108 100644 (file)
@@ -400,7 +400,7 @@ e_config_init(void)
        e_config = E_NEW(E_Config, 1);
        e_config->config_version = E_CONFIG_FILE_VERSION;
        e_config->show_splash = 1;
-       e_config->desktop_default_background = strdup("");
+       e_config->desktop_default_background = NULL;
        e_config->desktop_default_name = strdup("Desktop %i, %i");
        e_config->menus_scroll_speed = 1000.0;
        e_config->menus_fast_mouse_move_threshhold = 300.0;
@@ -426,7 +426,7 @@ e_config_init(void)
        e_config->evas_engine_drag = E_EVAS_ENGINE_DEFAULT;
        e_config->evas_engine_win = E_EVAS_ENGINE_DEFAULT;
        e_config->evas_engine_zone = E_EVAS_ENGINE_DEFAULT;
-       e_config->language = strdup("");
+       e_config->language = NULL;
        e_config->window_placement_policy = E_WINDOW_PLACEMENT_SMART;
        e_config->focus_policy = E_FOCUS_SLOPPY;
        e_config->focus_setting = E_FOCUS_NEW_DIALOG_IF_OWNER_FOCUSED;
@@ -466,7 +466,7 @@ e_config_init(void)
        e_config->kill_timer_wait = 10.0;
        e_config->ping_clients = 1;
        e_config->ping_clients_wait = 10.0;
-       e_config->transition_start = strdup("");
+       e_config->transition_start = NULL;
        e_config->transition_desk = strdup("vswipe");
        e_config->transition_change = strdup("crossfade");
        e_config->move_info_follows = 1;
@@ -589,7 +589,7 @@ e_config_init(void)
             eb->modifiers = E_BINDING_MODIFIER_ALT;
             eb->any_mod = 0;
             eb->action = strdup("window_move");
-            eb->params = strdup("");
+            eb->params = NULL;
             e_config->mouse_bindings = evas_list_append(e_config->mouse_bindings, eb);
 
             eb = E_NEW(E_Config_Binding_Mouse, 1);
@@ -598,7 +598,7 @@ e_config_init(void)
             eb->modifiers = E_BINDING_MODIFIER_ALT;
             eb->any_mod = 0;
             eb->action = strdup("window_resize");
-            eb->params = strdup("");
+            eb->params = NULL;
             e_config->mouse_bindings = evas_list_append(e_config->mouse_bindings, eb);
 
             eb = E_NEW(E_Config_Binding_Mouse, 1);
@@ -607,7 +607,7 @@ e_config_init(void)
             eb->modifiers = E_BINDING_MODIFIER_ALT;
             eb->any_mod = 0;
             eb->action = strdup("window_menu");
-            eb->params = strdup("");
+            eb->params = NULL;
             e_config->mouse_bindings = evas_list_append(e_config->mouse_bindings, eb);
 
             eb = E_NEW(E_Config_Binding_Mouse, 1);
@@ -643,7 +643,7 @@ e_config_init(void)
             eb->modifiers = E_BINDING_MODIFIER_ALT;
             eb->any_mod = 0;
             eb->action = strdup("edit_mode");
-            eb->params = strdup("");
+            eb->params = NULL;
             e_config->mouse_bindings = evas_list_append(e_config->mouse_bindings, eb);
          }
          {
@@ -691,7 +691,7 @@ e_config_init(void)
             eb->modifiers = E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT;
             eb->any_mod = 0;
             eb->action = strdup("window_raise");
-            eb->params = strdup("");
+            eb->params = NULL;
             e_config->key_bindings = evas_list_append(e_config->key_bindings, eb);
 
             eb = E_NEW(E_Config_Binding_Key, 1);
@@ -700,7 +700,7 @@ e_config_init(void)
             eb->modifiers = E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT;
             eb->any_mod = 0;
             eb->action = strdup("window_lower");
-            eb->params = strdup("");
+            eb->params = NULL;
             e_config->key_bindings = evas_list_append(e_config->key_bindings, eb);
 
             eb = E_NEW(E_Config_Binding_Key, 1);
@@ -709,7 +709,7 @@ e_config_init(void)
             eb->modifiers = E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT;
             eb->any_mod = 0;
             eb->action = strdup("window_close");
-            eb->params = strdup("");
+            eb->params = NULL;
             e_config->key_bindings = evas_list_append(e_config->key_bindings, eb);
 
             eb = E_NEW(E_Config_Binding_Key, 1);
@@ -718,7 +718,7 @@ e_config_init(void)
             eb->modifiers = E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT;
             eb->any_mod = 0;
             eb->action = strdup("window_kill");
-            eb->params = strdup("");
+            eb->params = NULL;
             e_config->key_bindings = evas_list_append(e_config->key_bindings, eb);
 
             eb = E_NEW(E_Config_Binding_Key, 1);
@@ -727,7 +727,7 @@ e_config_init(void)
             eb->modifiers = E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT;
             eb->any_mod = 0;
             eb->action = strdup("window_menu");
-            eb->params = strdup("");
+            eb->params = NULL;
             e_config->key_bindings = evas_list_append(e_config->key_bindings, eb);
 
             eb = E_NEW(E_Config_Binding_Key, 1);
@@ -736,7 +736,7 @@ e_config_init(void)
             eb->modifiers = E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT;
             eb->any_mod = 0;
             eb->action = strdup("window_sticky_toggle");
-            eb->params = strdup("");
+            eb->params = NULL;
             e_config->key_bindings = evas_list_append(e_config->key_bindings, eb);
 
             eb = E_NEW(E_Config_Binding_Key, 1);
@@ -745,7 +745,7 @@ e_config_init(void)
             eb->modifiers = E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT;
             eb->any_mod = 0;
             eb->action = strdup("window_iconic_toggle");
-            eb->params = strdup("");
+            eb->params = NULL;
             e_config->key_bindings = evas_list_append(e_config->key_bindings, eb);
 
             eb = E_NEW(E_Config_Binding_Key, 1);
@@ -754,7 +754,7 @@ e_config_init(void)
             eb->modifiers = E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT;
             eb->any_mod = 0;
             eb->action = strdup("window_maximized_toggle");
-            eb->params = strdup("");
+            eb->params = NULL;
             e_config->key_bindings = evas_list_append(e_config->key_bindings, eb);
 
             eb = E_NEW(E_Config_Binding_Key, 1);
@@ -763,7 +763,7 @@ e_config_init(void)
             eb->modifiers = E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT;
             eb->any_mod = 0;
             eb->action = strdup("window_shaded_toggle");
-            eb->params = strdup("");
+            eb->params = NULL;
             e_config->key_bindings = evas_list_append(e_config->key_bindings, eb);
 
             eb = E_NEW(E_Config_Binding_Key, 1);
@@ -970,7 +970,7 @@ e_config_init(void)
             eb->modifiers = E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT;
             eb->any_mod = 0;
             eb->action = strdup("edit_mode_toggle");
-            eb->params = strdup("");
+            eb->params = NULL;
             e_config->key_bindings = evas_list_append(e_config->key_bindings, eb);
             
             eb = E_NEW(E_Config_Binding_Key, 1);
@@ -979,7 +979,7 @@ e_config_init(void)
             eb->modifiers = E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT;
             eb->any_mod = 0;
             eb->action = strdup("restart");
-            eb->params = strdup("");
+            eb->params = NULL;
             e_config->key_bindings = evas_list_append(e_config->key_bindings, eb);
             
             eb = E_NEW(E_Config_Binding_Key, 1);
@@ -988,7 +988,7 @@ e_config_init(void)
             eb->modifiers = E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT;
             eb->any_mod = 0;
             eb->action = strdup("exit");
-            eb->params = strdup("");
+            eb->params = NULL;
             e_config->key_bindings = evas_list_append(e_config->key_bindings, eb);
             
    /* need to support fullscreen anyway for this - ie netwm and the border
@@ -1046,7 +1046,7 @@ e_config_init(void)
             eb->modifiers = E_BINDING_MODIFIER_NONE;
             eb->any_mod = 1;
             eb->action = strdup("window_menu");
-            eb->params = strdup("");
+            eb->params = NULL;
             e_config->signal_bindings = evas_list_append(e_config->signal_bindings, eb);
             
             eb = E_NEW(E_Config_Binding_Signal, 1);
@@ -1056,7 +1056,7 @@ e_config_init(void)
             eb->modifiers = E_BINDING_MODIFIER_NONE;
             eb->any_mod = 1;
             eb->action = strdup("window_menu");
-            eb->params = strdup("");
+            eb->params = NULL;
             e_config->signal_bindings = evas_list_append(e_config->signal_bindings, eb);
 
             eb = E_NEW(E_Config_Binding_Signal, 1);
@@ -1066,7 +1066,7 @@ e_config_init(void)
             eb->modifiers = E_BINDING_MODIFIER_NONE;
             eb->any_mod = 1;
             eb->action = strdup("window_close");
-            eb->params = strdup("");
+            eb->params = NULL;
             e_config->signal_bindings = evas_list_append(e_config->signal_bindings, eb);
 
             eb = E_NEW(E_Config_Binding_Signal, 1);
@@ -1076,7 +1076,7 @@ e_config_init(void)
             eb->modifiers = E_BINDING_MODIFIER_NONE;
             eb->any_mod = 1;
             eb->action = strdup("window_kill");
-            eb->params = strdup("");
+            eb->params = NULL;
             e_config->signal_bindings = evas_list_append(e_config->signal_bindings, eb);
 
             eb = E_NEW(E_Config_Binding_Signal, 1);
@@ -1086,7 +1086,7 @@ e_config_init(void)
             eb->modifiers = E_BINDING_MODIFIER_NONE;
             eb->any_mod = 1;
             eb->action = strdup("window_maximized_toggle");
-            eb->params = strdup("");
+            eb->params = NULL;
             e_config->signal_bindings = evas_list_append(e_config->signal_bindings, eb);
 
             eb = E_NEW(E_Config_Binding_Signal, 1);
@@ -1116,7 +1116,7 @@ e_config_init(void)
             eb->modifiers = E_BINDING_MODIFIER_NONE;
             eb->any_mod = 1;
             eb->action = strdup("window_iconic_toggle");
-            eb->params = strdup("");
+            eb->params = NULL;
             e_config->signal_bindings = evas_list_append(e_config->signal_bindings, eb);
 
             eb = E_NEW(E_Config_Binding_Signal, 1);
@@ -1126,7 +1126,7 @@ e_config_init(void)
             eb->modifiers = E_BINDING_MODIFIER_NONE;
             eb->any_mod = 1;
             eb->action = strdup("window_drag_icon");
-            eb->params = strdup("");
+            eb->params = NULL;
             e_config->signal_bindings = evas_list_append(e_config->signal_bindings, eb);
 
             eb = E_NEW(E_Config_Binding_Signal, 1);
@@ -1136,7 +1136,7 @@ e_config_init(void)
             eb->modifiers = E_BINDING_MODIFIER_NONE;
             eb->any_mod = 1;
             eb->action = strdup("window_move");
-            eb->params = strdup("");
+            eb->params = NULL;
             e_config->signal_bindings = evas_list_append(e_config->signal_bindings, eb);
 
             eb = E_NEW(E_Config_Binding_Signal, 1);
@@ -1246,7 +1246,7 @@ e_config_init(void)
             eb->modifiers = E_BINDING_MODIFIER_NONE;
             eb->any_mod = 1;
             eb->action = strdup("window_move");
-            eb->params = strdup("");
+            eb->params = NULL;
             e_config->signal_bindings = evas_list_append(e_config->signal_bindings, eb);
 
             eb = E_NEW(E_Config_Binding_Signal, 1);
index e1eb63704df86eed299ec2cb7e09bbbef43afae3..1d72dc06a7ee1e1abc93ffe84697c6f21304b82b 100644 (file)
@@ -48,7 +48,8 @@ e_module_init(void)
        em = l->data;
        pl = l;
        l = l->next;
-       m = e_module_new(em->name);
+       m = NULL;
+       if (em->name) m = e_module_new(em->name);
        if (m)
          {
             if (em->enabled) e_module_enable(m);