This patch replaces the repeated pattern of freeing a window name and setting it to a strdup'ed value with a function. It lays the trail for a future patch which adds a control client notification when windows are renamed.
Do you want me to send a patch for the list-windows target or are you handling that? I'm not exactly sure how you wanted that to work. Index: tmux.h =================================================================== --- tmux.h (revision 2691) +++ tmux.h (working copy) @@ -1964,6 +1964,7 @@ struct window_pane *window_pane_find_down(struct window_pane *); struct window_pane *window_pane_find_left(struct window_pane *); struct window_pane *window_pane_find_right(struct window_pane *); +void window_set_name(struct window *, const char *); /* layout.c */ u_int layout_count_cells(struct layout_cell *); Index: cmd-new-session.c =================================================================== --- cmd-new-session.c (revision 2691) +++ cmd-new-session.c (working copy) @@ -217,8 +217,7 @@ if (cmd != NULL && args_has(args, 'n')) { w = s->curw->window; - xfree(w->name); - w->name = xstrdup(args_get(args, 'n')); + window_set_name(w, args_get(args, 'n')); options_set_number(&w->options, "automatic-rename", 0); } Index: cmd-break-pane.c =================================================================== --- cmd-break-pane.c (revision 2691) +++ cmd-break-pane.c (working copy) @@ -46,8 +46,10 @@ struct session *s; struct window_pane *wp; struct window *w; + char *name; char *cause; int base_idx; + struct client *c; if ((wl = cmd_find_pane(ctx, args_get(args, 't'), &s, &wp)) == NULL) return (-1); @@ -74,7 +76,9 @@ w = wp->window = window_create1(s->sx, s->sy); TAILQ_INSERT_HEAD(&w->panes, wp, entry); w->active = wp; - w->name = default_window_name(w); + name = default_window_name(w); + window_set_name(w, name); + xfree(name); layout_init(w); base_idx = options_get_number(&s->options, "base-index"); Index: cmd-rename-window.c =================================================================== --- cmd-rename-window.c (revision 2691) +++ cmd-rename-window.c (working copy) @@ -48,8 +48,7 @@ if ((wl = cmd_find_window(ctx, args_get(args, 't'), &s)) == NULL) return (-1); - xfree(wl->window->name); - wl->window->name = xstrdup(args->argv[0]); + window_set_name(wl->window, args->argv[0]); options_set_number(&wl->window->options, "automatic-rename", 0); server_status_window(wl->window); Index: input.c =================================================================== --- input.c (revision 2691) +++ input.c (working copy) @@ -1036,7 +1036,7 @@ struct window_pane *wp = ictx->wp; struct screen *s = sctx->s; struct input_table_entry *entry; - int n, m; + int n, m; if (ictx->flags & INPUT_DISCARD) return (0); @@ -1552,8 +1552,7 @@ return; log_debug("%s: \"%s\"", __func__, ictx->input_buf); - xfree(ictx->wp->window->name); - ictx->wp->window->name = xstrdup(ictx->input_buf); + window_set_name(ictx->wp->window, ictx->input_buf); options_set_number(&ictx->wp->window->options, "automatic-rename", 0); server_status_window(ictx->wp->window); Index: window.c =================================================================== --- window.c (revision 2691) +++ window.c (working copy) @@ -359,6 +359,14 @@ } void +window_set_name(struct window *w, const char *new_name) +{ + if (w->name) + xfree(w->name); + w->name = xstrdup(new_name); +} + +void window_resize(struct window *w, u_int sx, u_int sy) { w->sx = sx; @@ -760,7 +768,7 @@ window_pane_read_callback(unused struct bufferevent *bufev, void *data) { struct window_pane *wp = data; - char *new_data; + char *new_data; size_t new_size; new_size = EVBUFFER_LENGTH(wp->event->input) - wp->pipe_off; @@ -992,7 +1000,7 @@ { struct screen *s = &wp->base; char *newsearchstr, *line, *msg; - u_int i; + u_int i; msg = NULL; xasprintf(&newsearchstr, "*%s*", searchstr); ------------------------------------------------------------------------------ Keep Your Developer Skills Current with LearnDevNow! The most comprehensive online learning library for Microsoft developers is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3, Metro Style Apps, more. Free future releases when you subscribe now! http://p.sf.net/sfu/learndevnow-d2d _______________________________________________ tmux-users mailing list tmux-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tmux-users