From e097f0b4ee30352ef1ea37ef030838b634fdf27e Mon Sep 17 00:00:00 2001 From: Tiago Cunha Date: Sun, 3 Jul 2011 21:52:50 +0000 Subject: Sync OpenBSD patchset 927: Allow the initial context on prompts to be set with the new -I option to command-prompt. From Tiago Cunha. --- status.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'status.c') diff --git a/status.c b/status.c index d58a8365..f9c38a59 100644 --- a/status.c +++ b/status.c @@ -1,4 +1,4 @@ -/* $Id: status.c,v 1.160 2011-05-05 10:02:36 tcunha Exp $ */ +/* $Id$ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -815,7 +815,7 @@ status_message_redraw(struct client *c) /* Enable status line prompt. */ void -status_prompt_set(struct client *c, const char *msg, +status_prompt_set(struct client *c, const char *msg, const char *input, int (*callbackfn)(void *, const char *), void (*freefn)(void *), void *data, int flags) { @@ -826,8 +826,11 @@ status_prompt_set(struct client *c, const char *msg, c->prompt_string = xstrdup(msg); - c->prompt_buffer = xstrdup(""); - c->prompt_index = 0; + if (input != NULL) + c->prompt_buffer = xstrdup(input); + else + c->prompt_buffer = xstrdup(""); + c->prompt_index = strlen(c->prompt_buffer); c->prompt_callbackfn = callbackfn; c->prompt_freefn = freefn; @@ -871,13 +874,17 @@ status_prompt_clear(struct client *c) /* Update status line prompt with a new prompt string. */ void -status_prompt_update(struct client *c, const char *msg) +status_prompt_update(struct client *c, const char *msg, const char *input) { xfree(c->prompt_string); c->prompt_string = xstrdup(msg); - *c->prompt_buffer = '\0'; - c->prompt_index = 0; + xfree(c->prompt_buffer); + if (input != NULL) + c->prompt_buffer = xstrdup(input); + else + c->prompt_buffer = xstrdup(""); + c->prompt_index = strlen(c->prompt_buffer); c->prompt_hindex = 0; -- cgit