Index: libmenu/menu_cmdlist.c =================================================================== --- libmenu/menu_cmdlist.c (revision 25326) +++ libmenu/menu_cmdlist.c (working copy) @@ -58,32 +58,26 @@ switch(cmd) { case MENU_CMD_RIGHT: if(mpriv->p.current->right) { - mp_cmd_t* c = mp_input_parse_cmd(mpriv->p.current->right); - if(c) mp_input_queue_cmd(c); + mp_input_parse_and_queue_cmds(mpriv->p.current->right); break; } // fallback on ok if right is not defined case MENU_CMD_OK: { if(mpriv->p.current->ok) { - mp_cmd_t* c = mp_input_parse_cmd(mpriv->p.current->ok); - if(c) + if (mp_input_parse_and_queue_cmds(mpriv->p.current->ok)) { if (mpriv->auto_close) mp_input_queue_cmd (mp_input_parse_cmd ("menu hide")); - mp_input_queue_cmd(c); } } } break; case MENU_CMD_LEFT: if(mpriv->p.current->left) { - mp_cmd_t* c = mp_input_parse_cmd(mpriv->p.current->left); - if(c) mp_input_queue_cmd(c); + mp_input_parse_and_queue_cmds(mpriv->p.current->left); break; } // fallback on cancel if left is not defined case MENU_CMD_CANCEL: if(mpriv->p.current->cancel) { - mp_cmd_t* c = mp_input_parse_cmd(mpriv->p.current->cancel); - if(c) - mp_input_queue_cmd(c); + mp_input_parse_and_queue_cmds(mpriv->p.current->cancel); break; } default: Index: libmenu/menu.c =================================================================== --- libmenu/menu.c (revision 25326) +++ libmenu/menu.c (working copy) @@ -275,7 +275,7 @@ for (i = 0; i < bindings->binding_num; ++i) { if (bindings->bindings[i].key == cmd) { if (bindings->bindings[i].cmd) - mp_input_queue_cmd(mp_input_parse_cmd(bindings->bindings[i].cmd)); + mp_input_parse_and_queue_cmds(bindings->bindings[i].cmd); return 1; } } Index: libmenu/menu_filesel.c =================================================================== --- libmenu/menu_filesel.c (revision 25328) +++ libmenu/menu_filesel.c (working copy) @@ -334,22 +334,19 @@ } free(p); } else { // File and directory dealt with action string. - mp_cmd_t* c; int fname_len = strlen(mpriv->dir) + strlen(mpriv->p.current->p.txt) + 1; char filename[fname_len]; char *str; char *action = mpriv->p.current->d ? mpriv->dir_action:mpriv->file_action; sprintf(filename,"%s%s",mpriv->dir,mpriv->p.current->p.txt); str = replace_path(action, filename); - c = mp_input_parse_cmd(str); + if (mp_input_parse_and_queue_cmds(str)) { + if(mpriv->auto_close) + menu->cl = 1; + } if (str != action) free(str); - if(c) { - mp_input_queue_cmd(c); - if(mpriv->auto_close) - menu->cl = 1; } - } } break; case MENU_CMD_ACTION: { int fname_len = strlen(mpriv->dir) + strlen(mpriv->p.current->p.txt) + 1; @@ -357,7 +354,7 @@ char *str; sprintf(filename,"%s%s",mpriv->dir,mpriv->p.current->p.txt); str = replace_path(action, filename); - mp_input_queue_cmd(mp_input_parse_cmd(str)); + mp_input_parse_and_queue_cmds(str); if(str != action) free(str); } break;