diff --git a/src/bin/e_actions.c b/src/bin/e_actions.c index 6f89aac71..98b9c766b 100644 --- a/src/bin/e_actions.c +++ b/src/bin/e_actions.c @@ -1959,20 +1959,44 @@ ACT_FN_GO(app, ) Efreet_Desktop *desktop = NULL; char *p, *p2; - p2 = alloca(strlen(params) + 1); - strcpy(p2, params); - p = strchr(p2, ' '); + p2 = strdupa(params); + p = strchr(p2, ':'); if (p) { - *p = 0; - if (!strcmp(p2, "file:")) - desktop = efreet_util_desktop_file_id_find(p + 1); - else if (!strcmp(p2, "name:")) - desktop = efreet_util_desktop_name_find(p + 1); - else if (!strcmp(p2, "generic:")) - desktop = efreet_util_desktop_generic_name_find(p + 1); - else if (!strcmp(p2, "exe:")) - desktop = efreet_util_desktop_exec_find(p + 1); + *p++ = 0; + if (*p == ' ') + { + E_Dialog *dia; + char dialog_text[1024]; + + dia = e_dialog_new(NULL, "E", "_e_action_act_app_go_syntax_error"); + if (!dia) return; + + snprintf(dialog_text, sizeof(dialog_text), + "%s

" + "Check syntax. You should not put a whitespace right after colon in action params.
" + "syntax: [file:file.desktop|name:App Name|generic:Generic Name|exe:exename]

" + "exe:terminology (O)
" + "exe: terminology (X)", params); + + e_dialog_title_set(dia, _("Action Params Syntax Error")); + e_dialog_text_set(dia, _(dialog_text)); + e_dialog_icon_set(dia, "dialog-error", 64); + e_dialog_button_add(dia, _("Close"), NULL, NULL, NULL); + e_dialog_button_focus_num(dia, 0); + elm_win_center(dia->win, 1, 1); + e_dialog_show(dia); + + return; + } + if (!strcmp(p2, "file")) + desktop = efreet_util_desktop_file_id_find(p); + else if (!strcmp(p2, "name")) + desktop = efreet_util_desktop_name_find(p); + else if (!strcmp(p2, "generic")) + desktop = efreet_util_desktop_generic_name_find(p); + else if (!strcmp(p2, "exe")) + desktop = efreet_util_desktop_exec_find(p); if (desktop) { e_exec(zone, desktop, NULL, NULL, "action/app");