Pass window titles through vis(1). <0x20 is dropped anyway by the input state

machine but top-bit-set nonprintables could cause trouble, and they are neater
like this anyway.
This commit is contained in:
Nicholas Marriott 2009-06-25 15:49:27 +00:00
parent 4f2e5f8c50
commit 7597cb6834
2 changed files with 9 additions and 4 deletions

View File

@ -1,4 +1,4 @@
/* $Id: input.c,v 1.78 2009-05-04 17:58:26 nicm Exp $ */ /* $OpenBSD: input.c,v 1.2 2009/06/03 19:33:04 nicm Exp $ */
/* /*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -475,7 +475,7 @@ input_state_string_next(u_char ch, struct input_ctx *ictx)
return; return;
} }
if (ch >= 0x20 && ch != 0x7f) { if (ch >= 0x20) {
if (input_add_string(ictx, ch) != 0) if (input_add_string(ictx, ch) != 0)
input_state(ictx, input_state_first); input_state(ictx, input_state_first);
return; return;

View File

@ -1,4 +1,4 @@
/* $Id: screen.c,v 1.82 2009-05-04 17:58:27 nicm Exp $ */ /* $OpenBSD: screen.c,v 1.2 2009/06/03 19:33:04 nicm Exp $ */
/* /*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -19,6 +19,7 @@
#include <sys/types.h> #include <sys/types.h>
#include <string.h> #include <string.h>
#include <vis.h>
#include "tmux.h" #include "tmux.h"
@ -65,8 +66,12 @@ screen_free(struct screen *s)
void void
screen_set_title(struct screen *s, const char *title) screen_set_title(struct screen *s, const char *title)
{ {
char tmp[BUFSIZ];
strnvis(tmp, title, sizeof tmp, VIS_OCTAL|VIS_TAB|VIS_NL);
xfree(s->title); xfree(s->title);
s->title = xstrdup(title); s->title = xstrdup(tmp);
} }
/* Resize screen. */ /* Resize screen. */