From 31bc4c4346a809188a908fea73a212dd71c8b096 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Fri, 24 Jul 2020 08:38:34 +0100 Subject: [PATCH 1/8] 3.2-rc version. --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index a62029b3..07f9ae06 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,6 @@ # configure.ac -AC_INIT([tmux], next-3.3) +AC_INIT([tmux], 3.2-rc2) AC_PREREQ([2.60]) AC_CONFIG_AUX_DIR(etc) From 9d597390caf911cb23a2a748c1159a1cbc50de84 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Fri, 25 Sep 2020 09:41:41 +0100 Subject: [PATCH 2/8] Mention build dependencies, based on a change from Mateusz Urbanek. --- .github/README.md | 3 +++ README | 3 +++ 2 files changed, 6 insertions(+) diff --git a/.github/README.md b/.github/README.md index 2b299cc5..f41ff7e5 100644 --- a/.github/README.md +++ b/.github/README.md @@ -14,6 +14,9 @@ page](https://github.com/libevent/libevent/releases/latest). It also depends on [ncurses](https://www.gnu.org/software/ncurses/), available from [this page](https://invisible-mirror.net/archives/ncurses/). +To build tmux, a C compiler (for example gcc or clang), make and a suitable +yacc (yacc or bison) are needed. + ## Installation ### From release tarball diff --git a/README b/README index 4f577060..e19cf90d 100644 --- a/README +++ b/README @@ -16,6 +16,9 @@ It also depends on ncurses, available from: https://invisible-mirror.net/archives/ncurses/ +To build tmux, a C compiler (for example gcc or clang), make and a suitable +yacc (yacc or bison) are needed. + * Installation To build and install tmux from a release tarball, use: From a8802371417ac5c41260fc3798c7a3a7abbfacd2 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Fri, 25 Sep 2020 09:43:35 +0100 Subject: [PATCH 3/8] Also pkg-config. --- .github/README.md | 4 ++-- README | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/README.md b/.github/README.md index f41ff7e5..c1c35534 100644 --- a/.github/README.md +++ b/.github/README.md @@ -14,8 +14,8 @@ page](https://github.com/libevent/libevent/releases/latest). It also depends on [ncurses](https://www.gnu.org/software/ncurses/), available from [this page](https://invisible-mirror.net/archives/ncurses/). -To build tmux, a C compiler (for example gcc or clang), make and a suitable -yacc (yacc or bison) are needed. +To build tmux, a C compiler (for example gcc or clang), make, pkg-config and a +suitable yacc (yacc or bison) are needed. ## Installation diff --git a/README b/README index e19cf90d..730b9a30 100644 --- a/README +++ b/README @@ -16,8 +16,8 @@ It also depends on ncurses, available from: https://invisible-mirror.net/archives/ncurses/ -To build tmux, a C compiler (for example gcc or clang), make and a suitable -yacc (yacc or bison) are needed. +To build tmux, a C compiler (for example gcc or clang), make, pkg-config and a +suitable yacc (yacc or bison) are needed. * Installation From f70eda38175af89e05bf7b959128829375830143 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Fri, 25 Sep 2020 10:04:52 +0100 Subject: [PATCH 4/8] Check if UNIX 03 is needed for CMSG_DATA, for newer Solaris. From Eric N Vander Weele. --- configure.ac | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 07f9ae06..22a48c8d 100644 --- a/configure.ac +++ b/configure.ac @@ -328,8 +328,9 @@ AC_SEARCH_LIBS(inet_ntoa, nsl) AC_SEARCH_LIBS(socket, socket) AC_CHECK_LIB(xnet, socket) -# Check for CMSG_DATA. Some platforms require _XOPEN_SOURCE_EXTENDED (for -# example see xopen_networking(7) on HP-UX). +# Check for CMSG_DATA. On some platforms like HP-UX this requires UNIX 95 +# (_XOPEN_SOURCE and _XOPEN_SOURCE_EXTENDED) (see xopen_networking(7)). On +# others, UNIX 03 (_XOPEN_SOURCE 600, see standards(7) on Solaris). XOPEN_DEFINES= AC_MSG_CHECKING(for CMSG_DATA) AC_EGREP_CPP( @@ -362,6 +363,25 @@ if test "x$found_cmsg_data" = xno; then AC_MSG_RESULT($found_cmsg_data) if test "x$found_cmsg_data" = xyes; then XOPEN_DEFINES="-D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED" + fi +fi +if test "x$found_cmsg_data" = xno; then + AC_MSG_CHECKING(if CMSG_DATA needs _XOPEN_SOURCE 600) + AC_EGREP_CPP( + yes, + [ + #define _XOPEN_SOURCE 600 + #include + #ifdef CMSG_DATA + yes + #endif + ], + found_cmsg_data=yes, + found_cmsg_data=no + ) + AC_MSG_RESULT($found_cmsg_data) + if test "x$found_cmsg_data" = xyes; then + XOPEN_DEFINES="-D_XOPEN_SOURCE=600" else AC_MSG_ERROR("CMSG_DATA not found") fi From 68c2d5c48dbb5e3ca40f7271f43a4dc2165068d7 Mon Sep 17 00:00:00 2001 From: nicm Date: Wed, 23 Sep 2020 14:57:33 +0000 Subject: [PATCH 5/8] Escape+Up and the other arrow keys should be kept as Escape+Up and not converted to M-Up. Do not give them the implied meta flag so they don't match the M-Up entry in the output key tree. Fixes problem with vi reported by jsing@. --- tty-keys.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/tty-keys.c b/tty-keys.c index 19ad4f5b..941a9005 100644 --- a/tty-keys.c +++ b/tty-keys.c @@ -95,20 +95,25 @@ static const struct tty_default_key_raw tty_default_raw_keys[] = { { "\033OC", KEYC_RIGHT|KEYC_CURSOR }, { "\033OD", KEYC_LEFT|KEYC_CURSOR }, - { "\033\033OA", KEYC_UP|KEYC_CURSOR|KEYC_META|KEYC_IMPLIED_META }, - { "\033\033OB", KEYC_DOWN|KEYC_CURSOR|KEYC_META|KEYC_IMPLIED_META }, - { "\033\033OC", KEYC_RIGHT|KEYC_CURSOR|KEYC_META|KEYC_IMPLIED_META }, - { "\033\033OD", KEYC_LEFT|KEYC_CURSOR|KEYC_META|KEYC_IMPLIED_META }, - { "\033[A", KEYC_UP|KEYC_CURSOR }, { "\033[B", KEYC_DOWN|KEYC_CURSOR }, { "\033[C", KEYC_RIGHT|KEYC_CURSOR }, { "\033[D", KEYC_LEFT|KEYC_CURSOR }, - { "\033\033[A", KEYC_UP|KEYC_CURSOR|KEYC_META|KEYC_IMPLIED_META }, - { "\033\033[B", KEYC_DOWN|KEYC_CURSOR|KEYC_META|KEYC_IMPLIED_META }, - { "\033\033[C", KEYC_RIGHT|KEYC_CURSOR|KEYC_META|KEYC_IMPLIED_META }, - { "\033\033[D", KEYC_LEFT|KEYC_CURSOR|KEYC_META|KEYC_IMPLIED_META }, + /* + * Meta arrow keys. These do not get the IMPLIED_META flag so they + * don't match the xterm-style meta keys in the output tree - Escape+Up + * should stay as Escape+Up and not become M-Up. + */ + { "\033\033OA", KEYC_UP|KEYC_CURSOR|KEYC_META }, + { "\033\033OB", KEYC_DOWN|KEYC_CURSOR|KEYC_META }, + { "\033\033OC", KEYC_RIGHT|KEYC_CURSOR|KEYC_META }, + { "\033\033OD", KEYC_LEFT|KEYC_CURSOR|KEYC_META }, + + { "\033\033[A", KEYC_UP|KEYC_CURSOR|KEYC_META }, + { "\033\033[B", KEYC_DOWN|KEYC_CURSOR|KEYC_META }, + { "\033\033[C", KEYC_RIGHT|KEYC_CURSOR|KEYC_META }, + { "\033\033[D", KEYC_LEFT|KEYC_CURSOR|KEYC_META }, /* Other (xterm) "cursor" keys. */ { "\033OH", KEYC_HOME }, From 3bece648bd6f285959f90e58016fd9a636735e58 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Wed, 30 Sep 2020 13:26:31 +0100 Subject: [PATCH 6/8] Trim "s from process names, from Gregory Pakosz. --- names.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/names.c b/names.c index 07c689d1..f437b53e 100644 --- a/names.c +++ b/names.c @@ -107,7 +107,7 @@ check_window_name(struct window *w) char * default_window_name(struct window *w) { - char *cmd, *s; + char *cmd, *s; cmd = cmd_stringify_argv(w->active->argc, w->active->argv); if (cmd != NULL && *cmd != '\0') @@ -142,6 +142,10 @@ parse_window_name(const char *in) char *copy, *name, *ptr; name = copy = xstrdup(in); + if (*name == '"') + name++; + name[strcspn (name, "\"")] = '\0'; + if (strncmp(name, "exec ", (sizeof "exec ") - 1) == 0) name = name + (sizeof "exec ") - 1; From ec9e03d09a20ca00dd9d96f7938a2d03a504b535 Mon Sep 17 00:00:00 2001 From: nicm Date: Mon, 24 Aug 2020 05:23:30 +0000 Subject: [PATCH 7/8] Old Terminal.app versions do not respond correctly to secondary DA, instead responding with the primary DA response. Ignore it. Reported by Dave Vandervies. --- tty-keys.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tty-keys.c b/tty-keys.c index 941a9005..59426772 100644 --- a/tty-keys.c +++ b/tty-keys.c @@ -1197,7 +1197,10 @@ tty_keys_device_attributes(struct tty *tty, const char *buf, size_t len, if (tty->flags & TTY_HAVEDA) return (-1); - /* First three bytes are always \033[?. */ + /* + * First three bytes are always \033[>. Some older Terminal.app + * versions respond as for DA (\033[?) so accept and ignore that. + */ if (buf[0] != '\033') return (-1); if (len == 1) @@ -1206,7 +1209,7 @@ tty_keys_device_attributes(struct tty *tty, const char *buf, size_t len, return (-1); if (len == 2) return (1); - if (buf[2] != '>') + if (buf[2] != '>' && buf[2] != '?') return (-1); if (len == 3) return (1); @@ -1224,6 +1227,10 @@ tty_keys_device_attributes(struct tty *tty, const char *buf, size_t len, tmp[i] = '\0'; *size = 4 + i; + /* Ignore DA response. */ + if (buf[2] == '?') + return (0); + /* Convert all arguments to numbers. */ cp = tmp; while ((next = strsep(&cp, ";")) != NULL) { From cf8ef63c4a5cbbc29f655a076b2e57c144ad8316 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Wed, 30 Sep 2020 13:35:51 +0100 Subject: [PATCH 8/8] Fix some warnings, GitHub issue 2382. --- format.c | 5 ----- menu.c | 2 +- utf8.c | 4 ++-- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/format.c b/format.c index c7c6b12e..ced7b515 100644 --- a/format.c +++ b/format.c @@ -1372,7 +1372,6 @@ format_pretty_time(time_t t) struct tm now_tm, tm; time_t now, age; char s[6]; - int m; time(&now); if (now < t) @@ -1396,10 +1395,6 @@ format_pretty_time(time_t t) } /* Last 12 months. */ - if (now_tm.tm_mon == 0) - m = 11; - else - m = now_tm.tm_mon - 1; if ((tm.tm_year == now_tm.tm_year && tm.tm_mon < now_tm.tm_mon) || (tm.tm_year == now_tm.tm_year - 1 && tm.tm_mon > now_tm.tm_mon)) { strftime(s, sizeof s, "%d%b", &tm); diff --git a/menu.c b/menu.c index 16374115..4fcf660a 100644 --- a/menu.c +++ b/menu.c @@ -187,7 +187,7 @@ menu_key_cb(struct client *c, struct key_event *event) struct mouse_event *m = &event->m; u_int i; int count = menu->count, old = md->choice; - const char *name; + const char *name = NULL; const struct menu_item *item; struct cmdq_state *state; enum cmd_parse_status status; diff --git a/utf8.c b/utf8.c index e640d845..458363b8 100644 --- a/utf8.c +++ b/utf8.c @@ -100,9 +100,9 @@ utf8_put_item(const char *data, size_t size, u_int *index) ui = utf8_item_by_data(data, size); if (ui != NULL) { + *index = ui->index; log_debug("%s: found %.*s = %u", __func__, (int)size, data, *index); - *index = ui->index; return (0); } @@ -117,8 +117,8 @@ utf8_put_item(const char *data, size_t size, u_int *index) ui->size = size; RB_INSERT(utf8_data_tree, &utf8_data_tree, ui); - log_debug("%s: added %.*s = %u", __func__, (int)size, data, *index); *index = ui->index; + log_debug("%s: added %.*s = %u", __func__, (int)size, data, *index); return (0); }