=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/cmd-confirm-before.c,v retrieving revision 1.36 retrieving revision 1.37 diff -c -r1.36 -r1.37 *** src/usr.bin/tmux/cmd-confirm-before.c 2019/05/20 11:46:06 1.36 --- src/usr.bin/tmux/cmd-confirm-before.c 2019/05/23 11:13:30 1.37 *************** *** 1,4 **** ! /* $OpenBSD: cmd-confirm-before.c,v 1.36 2019/05/20 11:46:06 nicm Exp $ */ /* * Copyright (c) 2009 Tiago Cunha --- 1,4 ---- ! /* $OpenBSD: cmd-confirm-before.c,v 1.37 2019/05/23 11:13:30 nicm Exp $ */ /* * Copyright (c) 2009 Tiago Cunha *************** *** 87,118 **** __unused int done) { struct cmd_confirm_before_data *cdata = data; - struct cmd_list *cmdlist; struct cmdq_item *new_item; ! char *cause; if (c->flags & CLIENT_DEAD) return (0); if (s == NULL || *s == '\0') return (0); ! if (tolower((u_char) s[0]) != 'y' || s[1] != '\0') return (0); ! cmdlist = cmd_string_parse(cdata->cmd, NULL, 0, &cause); ! if (cmdlist == NULL) { ! if (cause != NULL) ! new_item = cmdq_get_error(cause); ! else ! new_item = NULL; ! free(cause); ! } else { ! new_item = cmdq_get_command(cmdlist, NULL, NULL, 0); ! cmd_list_free(cmdlist); ! } ! ! if (new_item != NULL) cmdq_append(c, new_item); return (0); } --- 87,119 ---- __unused int done) { struct cmd_confirm_before_data *cdata = data; struct cmdq_item *new_item; ! struct cmd_parse_result *pr; if (c->flags & CLIENT_DEAD) return (0); if (s == NULL || *s == '\0') return (0); ! if (tolower((u_char)s[0]) != 'y' || s[1] != '\0') return (0); ! pr = cmd_parse_from_string(cdata->cmd, NULL); ! switch (pr->status) { ! case CMD_PARSE_EMPTY: ! new_item = NULL; ! break; ! case CMD_PARSE_ERROR: ! new_item = cmdq_get_error(pr->error); ! free(pr->error); cmdq_append(c, new_item); + break; + case CMD_PARSE_SUCCESS: + new_item = cmdq_get_command(pr->cmdlist, NULL, NULL, 0); + cmd_list_free(pr->cmdlist); + cmdq_append(c, new_item); + break; + } return (0); }