=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/cmd-command-prompt.c,v retrieving revision 1.18 retrieving revision 1.19 diff -c -r1.18 -r1.19 *** src/usr.bin/tmux/cmd-command-prompt.c 2011/07/03 18:18:15 1.18 --- src/usr.bin/tmux/cmd-command-prompt.c 2011/07/08 06:37:57 1.19 *************** *** 1,4 **** ! /* $OpenBSD: cmd-command-prompt.c,v 1.18 2011/07/03 18:18:15 nicm Exp $ */ /* * Copyright (c) 2008 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: cmd-command-prompt.c,v 1.19 2011/07/08 06:37:57 nicm Exp $ */ /* * Copyright (c) 2008 Nicholas Marriott *************** *** 90,97 **** const char *inputs, *prompts; struct cmd_command_prompt_cdata *cdata; struct client *c; ! char *input = NULL; ! char *prompt, *prompt_replaced, *ptr; size_t n; if ((c = cmd_find_client(ctx, args_get(args, 't'))) == NULL) --- 90,96 ---- const char *inputs, *prompts; struct cmd_command_prompt_cdata *cdata; struct client *c; ! char *prompt, *ptr, *input = NULL; size_t n; if ((c = cmd_find_client(ctx, args_get(args, 't'))) == NULL) *************** *** 127,154 **** ptr = strsep(&cdata->next_prompt, ","); if (prompts == NULL) prompt = xstrdup(ptr); ! else { ! prompt_replaced = status_replace(c, NULL, NULL, NULL, ptr, ! time(NULL), 0); ! xasprintf(&prompt, "%s ", prompt_replaced); ! xfree(prompt_replaced); ! } /* Get initial prompt input. */ if ((inputs = args_get(args, 'I')) != NULL) { cdata->inputs = xstrdup(inputs); cdata->next_input = cdata->inputs; ! ptr = strsep(&cdata->next_input, ","); ! ! input = status_replace(c, NULL, NULL, NULL, ptr, time(NULL), ! 0); } status_prompt_set(c, prompt, input, cmd_command_prompt_callback, cmd_command_prompt_free, cdata, 0); - - if (input != NULL) - xfree(input); xfree(prompt); return (0); --- 126,143 ---- ptr = strsep(&cdata->next_prompt, ","); if (prompts == NULL) prompt = xstrdup(ptr); ! else ! xasprintf(&prompt, "%s ", ptr); /* Get initial prompt input. */ if ((inputs = args_get(args, 'I')) != NULL) { cdata->inputs = xstrdup(inputs); cdata->next_input = cdata->inputs; ! input = strsep(&cdata->next_input, ","); } status_prompt_set(c, prompt, input, cmd_command_prompt_callback, cmd_command_prompt_free, cdata, 0); xfree(prompt); return (0); *************** *** 161,168 **** struct client *c = cdata->c; struct cmd_list *cmdlist; struct cmd_ctx ctx; ! char *cause, *new_template, *prompt; ! char *prompt_replaced, *ptr, *input = NULL; if (s == NULL) return (0); --- 150,157 ---- struct client *c = cdata->c; struct cmd_list *cmdlist; struct cmd_ctx ctx; ! char *cause, *new_template, *prompt, *ptr; ! char *input = NULL; if (s == NULL) return (0); *************** *** 176,198 **** * and update the prompt data. */ if ((ptr = strsep(&cdata->next_prompt, ",")) != NULL) { ! prompt_replaced = status_replace(c, NULL, NULL, NULL, ptr, ! time(NULL), 0); ! xasprintf(&prompt, "%s ", prompt_replaced); ! ! /* Find next input and expand special sequences. */ ! if ((ptr = strsep(&cdata->next_input, ",")) != NULL) { ! input = status_replace(c, NULL, NULL, NULL, ptr, ! time(NULL), 0); ! } ! status_prompt_update(c, prompt, input); - if (input != NULL) - xfree(input); - xfree(prompt_replaced); xfree(prompt); - cdata->idx++; return (1); } --- 165,175 ---- * and update the prompt data. */ if ((ptr = strsep(&cdata->next_prompt, ",")) != NULL) { ! xasprintf(&prompt, "%s ", ptr); ! input = strsep(&cdata->next_input, ","); status_prompt_update(c, prompt, input); xfree(prompt); cdata->idx++; return (1); }