diff options
| author | jc_gargma <jc_gargma@iserlohn-fortress.net> | 2024-02-25 20:42:32 -0800 | 
|---|---|---|
| committer | jc_gargma <jc_gargma@iserlohn-fortress.net> | 2024-02-25 20:42:32 -0800 | 
| commit | 5bcbae01e8671e89643ac62da6c89c32607a9b68 (patch) | |
| tree | 518e7a6f3e07790b811c7415600a87f913da0403 | |
| parent | Rebuild with hotfixes. (diff) | |
| download | tmux-5bcbae01e8671e89643ac62da6c89c32607a9b68.tar.xz | |
Updated to 3.4
| -rw-r--r-- | 0001-CVE-2022-47016.patch | 58 | ||||
| -rw-r--r-- | 0002-ncurses.patch | 759 | ||||
| -rw-r--r-- | PKGBUILD | 28 | 
3 files changed, 9 insertions, 836 deletions
diff --git a/0001-CVE-2022-47016.patch b/0001-CVE-2022-47016.patch deleted file mode 100644 index 4560869..0000000 --- a/0001-CVE-2022-47016.patch +++ /dev/null @@ -1,58 +0,0 @@ -Index: tmux-3.3a/control.c -=================================================================== ---- tmux-3.3a.orig/control.c -+++ tmux-3.3a/control.c -@@ -775,6 +775,9 @@ control_start(struct client *c) -  - 	cs->read_event = bufferevent_new(c->fd, control_read_callback, - 	    control_write_callback, control_error_callback, c); -+	if (cs->read_event == NULL) -+		fatalx("out of memory"); -+ - 	bufferevent_enable(cs->read_event, EV_READ); -  - 	if (c->flags & CLIENT_CONTROLCONTROL) -@@ -782,6 +785,8 @@ control_start(struct client *c) - 	else { - 		cs->write_event = bufferevent_new(c->out_fd, NULL, - 		    control_write_callback, control_error_callback, c); -+		if (cs->write_event == NULL) -+			fatalx("out of memory"); - 	} - 	bufferevent_setwatermark(cs->write_event, EV_WRITE, CONTROL_BUFFER_LOW, - 	    0); -Index: tmux-3.3a/file.c -=================================================================== ---- tmux-3.3a.orig/file.c -+++ tmux-3.3a/file.c -@@ -585,6 +585,8 @@ file_write_open(struct client_files *fil -  - 	cf->event = bufferevent_new(cf->fd, NULL, file_write_callback, - 	    file_write_error_callback, cf); -+	if (cf->event == NULL) -+		fatalx("out of memory"); - 	bufferevent_enable(cf->event, EV_WRITE); - 	goto reply; -  -@@ -744,6 +746,8 @@ file_read_open(struct client_files *file -  - 	cf->event = bufferevent_new(cf->fd, file_read_callback, NULL, - 	    file_read_error_callback, cf); -+	if (cf->event == NULL) -+		fatalx("out of memory"); - 	bufferevent_enable(cf->event, EV_READ); - 	return; -  -Index: tmux-3.3a/window.c -=================================================================== ---- tmux-3.3a.orig/window.c -+++ tmux-3.3a/window.c -@@ -1042,6 +1042,8 @@ window_pane_set_event(struct window_pane -  - 	wp->event = bufferevent_new(wp->fd, window_pane_read_callback, - 	    NULL, window_pane_error_callback, wp); -+	if (wp->event == NULL) -+		fatalx("out of memory"); - 	wp->ictx = input_init(wp, wp->event, &wp->palette); -  - 	bufferevent_enable(wp->event, EV_READ|EV_WRITE); diff --git a/0002-ncurses.patch b/0002-ncurses.patch deleted file mode 100644 index 9eb1014..0000000 --- a/0002-ncurses.patch +++ /dev/null @@ -1,759 +0,0 @@ -From 33b5788ef7534cf9b3492dda5fd15056042f3e1b Mon Sep 17 00:00:00 2001 -From: nicm <nicm> -Date: Tue, 25 Apr 2023 09:31:50 +0000 -Subject: [PATCH 1/3] Tidy tparm wrapper functions to have more obvious names - and check tparm return value. - -(cherry picked from commit 8f34504736cf3547992c4ba948c1e65f3813715c) ---- - tmux.h     |  26 ++++++------ - tty-term.c |  47 ++++++++++++++++----- - tty.c      | 118 ++++++++++++++++++++++++++--------------------------- - 3 files changed, 108 insertions(+), 83 deletions(-) - -diff --git a/tmux.h b/tmux.h -index 53084b8b..5a90352e 100644 ---- a/tmux.h -+++ b/tmux.h -@@ -2250,12 +2250,12 @@ void	tty_margin_off(struct tty *); - void	tty_cursor(struct tty *, u_int, u_int); - void	tty_clipboard_query(struct tty *); - void	tty_putcode(struct tty *, enum tty_code_code); --void	tty_putcode1(struct tty *, enum tty_code_code, int); --void	tty_putcode2(struct tty *, enum tty_code_code, int, int); --void	tty_putcode3(struct tty *, enum tty_code_code, int, int, int); --void	tty_putcode_ptr1(struct tty *, enum tty_code_code, const void *); --void	tty_putcode_ptr2(struct tty *, enum tty_code_code, const void *, --	    const void *); -+void	tty_putcode_i(struct tty *, enum tty_code_code, int); -+void	tty_putcode_ii(struct tty *, enum tty_code_code, int, int); -+void	tty_putcode_iii(struct tty *, enum tty_code_code, int, int, int); -+void	tty_putcode_s(struct tty *, enum tty_code_code, const char *); -+void	tty_putcode_ss(struct tty *, enum tty_code_code, const char *, -+	    const char *); - void	tty_puts(struct tty *, const char *); - void	tty_putc(struct tty *, u_char); - void	tty_putn(struct tty *, const void *, size_t, u_int); -@@ -2318,15 +2318,15 @@ int		 tty_term_read_list(const char *, int, char ***, u_int *, - void		 tty_term_free_list(char **, u_int); - int		 tty_term_has(struct tty_term *, enum tty_code_code); - const char	*tty_term_string(struct tty_term *, enum tty_code_code); --const char	*tty_term_string1(struct tty_term *, enum tty_code_code, int); --const char	*tty_term_string2(struct tty_term *, enum tty_code_code, int, -+const char	*tty_term_string_i(struct tty_term *, enum tty_code_code, int); -+const char	*tty_term_string_ii(struct tty_term *, enum tty_code_code, int, - 		     int); --const char	*tty_term_string3(struct tty_term *, enum tty_code_code, int, -+const char	*tty_term_string_iii(struct tty_term *, enum tty_code_code, int, - 		     int, int); --const char	*tty_term_ptr1(struct tty_term *, enum tty_code_code, --		     const void *); --const char	*tty_term_ptr2(struct tty_term *, enum tty_code_code, --		     const void *, const void *); -+const char	*tty_term_string_s(struct tty_term *, enum tty_code_code, -+		     const char *); -+const char	*tty_term_string_ss(struct tty_term *, enum tty_code_code, -+		     const char *, const char *); - int		 tty_term_number(struct tty_term *, enum tty_code_code); - int		 tty_term_flag(struct tty_term *, enum tty_code_code); - const char	*tty_term_describe(struct tty_term *, enum tty_code_code); -diff --git a/tty-term.c b/tty-term.c -index fdf0c4fa..32dd849a 100644 ---- a/tty-term.c -+++ b/tty-term.c -@@ -760,35 +760,60 @@ tty_term_string(struct tty_term *term, enum tty_code_code code) - } -  - const char * --tty_term_string1(struct tty_term *term, enum tty_code_code code, int a) -+tty_term_string_i(struct tty_term *term, enum tty_code_code code, int a) - { --	return (tparm((char *) tty_term_string(term, code), a, 0, 0, 0, 0, 0, 0, 0, 0)); -+	const char	*x = tty_term_string(term, code), *s; -+ -+	s = tparm((char *)x, a); -+	if (s == NULL) -+		fatalx("could not expand %s", tty_term_codes[code].name); -+	return (s); - } -  - const char * --tty_term_string2(struct tty_term *term, enum tty_code_code code, int a, int b) -+tty_term_string_ii(struct tty_term *term, enum tty_code_code code, int a, int b) - { --	return (tparm((char *) tty_term_string(term, code), a, b, 0, 0, 0, 0, 0, 0, 0)); -+	const char	*x = tty_term_string(term, code), *s; -+ -+	s = tparm((char *)x, a, b); -+	if (s == NULL) -+		fatalx("could not expand %s", tty_term_codes[code].name); -+	return (s); - } -  - const char * --tty_term_string3(struct tty_term *term, enum tty_code_code code, int a, int b, -+tty_term_string_iii(struct tty_term *term, enum tty_code_code code, int a, int b, -     int c) - { --	return (tparm((char *) tty_term_string(term, code), a, b, c, 0, 0, 0, 0, 0, 0)); -+	const char	*x = tty_term_string(term, code), *s; -+ -+	s = tparm((char *)x, a, b, c); -+	if (s == NULL) -+		fatalx("could not expand %s", tty_term_codes[code].name); -+	return (s); - } -  - const char * --tty_term_ptr1(struct tty_term *term, enum tty_code_code code, const void *a) -+tty_term_string_s(struct tty_term *term, enum tty_code_code code, const char *a) - { --	return (tparm((char *) tty_term_string(term, code), (long)a, 0, 0, 0, 0, 0, 0, 0, 0)); -+	const char	*x = tty_term_string(term, code), *s; -+ -+	s = tparm((char *)x, (long)a); -+	if (s == NULL) -+		fatalx("could not expand %s", tty_term_codes[code].name); -+	return (s); - } -  - const char * --tty_term_ptr2(struct tty_term *term, enum tty_code_code code, const void *a, --    const void *b) -+tty_term_string_ss(struct tty_term *term, enum tty_code_code code, const char *a, -+    const char *b) - { --	return (tparm((char *) tty_term_string(term, code), (long)a, (long)b, 0, 0, 0, 0, 0, 0, 0)); -+	const char	*x = tty_term_string(term, code), *s; -+ -+	s = tparm((char *)x, (long)a, (long)b); -+	if (s == NULL) -+		fatalx("could not expand %s", tty_term_codes[code].name); -+	return (s); - } -  - int -diff --git a/tty.c b/tty.c -index 49cf9795..a4d744d0 100644 ---- a/tty.c -+++ b/tty.c -@@ -399,7 +399,7 @@ tty_stop_tty(struct tty *tty) - 	if (tcsetattr(c->fd, TCSANOW, &tty->tio) == -1) - 		return; -  --	tty_raw(tty, tty_term_string2(tty->term, TTYC_CSR, 0, ws.ws_row - 1)); -+	tty_raw(tty, tty_term_string_ii(tty->term, TTYC_CSR, 0, ws.ws_row - 1)); - 	if (tty_acs_needed(tty)) - 		tty_raw(tty, tty_term_string(tty->term, TTYC_RMACS)); - 	tty_raw(tty, tty_term_string(tty->term, TTYC_SGR0)); -@@ -409,7 +409,7 @@ tty_stop_tty(struct tty *tty) - 		if (tty_term_has(tty->term, TTYC_SE)) - 			tty_raw(tty, tty_term_string(tty->term, TTYC_SE)); - 		else if (tty_term_has(tty->term, TTYC_SS)) --			tty_raw(tty, tty_term_string1(tty->term, TTYC_SS, 0)); -+			tty_raw(tty, tty_term_string_i(tty->term, TTYC_SS, 0)); - 	} - 	if (tty->mode & MODE_BRACKETPASTE) - 		tty_raw(tty, tty_term_string(tty->term, TTYC_DSBP)); -@@ -506,42 +506,42 @@ tty_putcode(struct tty *tty, enum tty_code_code code) - } -  - void --tty_putcode1(struct tty *tty, enum tty_code_code code, int a) -+tty_putcode_i(struct tty *tty, enum tty_code_code code, int a) - { - 	if (a < 0) - 		return; --	tty_puts(tty, tty_term_string1(tty->term, code, a)); -+	tty_puts(tty, tty_term_string_i(tty->term, code, a)); - } -  - void --tty_putcode2(struct tty *tty, enum tty_code_code code, int a, int b) -+tty_putcode_ii(struct tty *tty, enum tty_code_code code, int a, int b) - { - 	if (a < 0 || b < 0) - 		return; --	tty_puts(tty, tty_term_string2(tty->term, code, a, b)); -+	tty_puts(tty, tty_term_string_ii(tty->term, code, a, b)); - } -  - void --tty_putcode3(struct tty *tty, enum tty_code_code code, int a, int b, int c) -+tty_putcode_iii(struct tty *tty, enum tty_code_code code, int a, int b, int c) - { - 	if (a < 0 || b < 0 || c < 0) - 		return; --	tty_puts(tty, tty_term_string3(tty->term, code, a, b, c)); -+	tty_puts(tty, tty_term_string_iii(tty->term, code, a, b, c)); - } -  - void --tty_putcode_ptr1(struct tty *tty, enum tty_code_code code, const void *a) -+tty_putcode_s(struct tty *tty, enum tty_code_code code, const char *a) - { - 	if (a != NULL) --		tty_puts(tty, tty_term_ptr1(tty->term, code, a)); -+		tty_puts(tty, tty_term_string_s(tty->term, code, a)); - } -  - void --tty_putcode_ptr2(struct tty *tty, enum tty_code_code code, const void *a, --    const void *b) -+tty_putcode_ss(struct tty *tty, enum tty_code_code code, const char *a, -+    const char *b) - { - 	if (a != NULL && b != NULL) --		tty_puts(tty, tty_term_ptr2(tty->term, code, a, b)); -+		tty_puts(tty, tty_term_string_ss(tty->term, code, a, b)); - } -  - static void -@@ -603,7 +603,7 @@ tty_putc(struct tty *tty, u_char ch) - 			 * it works on sensible terminals as well. - 			 */ - 			if (tty->term->flags & TERM_NOAM) --				tty_putcode2(tty, TTYC_CUP, tty->cy, tty->cx); -+				tty_putcode_ii(tty, TTYC_CUP, tty->cy, tty->cx); - 		} else - 			tty->cx++; - 	} -@@ -682,7 +682,7 @@ tty_force_cursor_colour(struct tty *tty, int c) - 	else { - 		colour_split_rgb(c, &r, &g, &b); - 		xsnprintf(s, sizeof s, "rgb:%02hhx/%02hhx/%02hhx", r, g, b); --		tty_putcode_ptr1(tty, TTYC_CS, s); -+		tty_putcode_s(tty, TTYC_CS, s); - 	} - 	tty->ccolour = c; - } -@@ -743,7 +743,7 @@ tty_update_cursor(struct tty *tty, int mode, struct screen *s) - 			if (tty_term_has(tty->term, TTYC_SE)) - 				tty_putcode(tty, TTYC_SE); - 			else --				tty_putcode1(tty, TTYC_SS, 0); -+				tty_putcode_i(tty, TTYC_SS, 0); - 		} - 		if (cmode & (MODE_CURSOR_BLINKING|MODE_CURSOR_VERY_VISIBLE)) - 			tty_putcode(tty, TTYC_CVVIS); -@@ -751,27 +751,27 @@ tty_update_cursor(struct tty *tty, int mode, struct screen *s) - 	case SCREEN_CURSOR_BLOCK: - 		if (tty_term_has(tty->term, TTYC_SS)) { - 			if (cmode & MODE_CURSOR_BLINKING) --				tty_putcode1(tty, TTYC_SS, 1); -+				tty_putcode_i(tty, TTYC_SS, 1); - 			else --				tty_putcode1(tty, TTYC_SS, 2); -+				tty_putcode_i(tty, TTYC_SS, 2); - 		} else if (cmode & MODE_CURSOR_BLINKING) - 			tty_putcode(tty, TTYC_CVVIS); - 		break; - 	case SCREEN_CURSOR_UNDERLINE: - 		if (tty_term_has(tty->term, TTYC_SS)) { - 			if (cmode & MODE_CURSOR_BLINKING) --				tty_putcode1(tty, TTYC_SS, 3); -+				tty_putcode_i(tty, TTYC_SS, 3); - 			else --				tty_putcode1(tty, TTYC_SS, 4); -+				tty_putcode_i(tty, TTYC_SS, 4); - 		} else if (cmode & MODE_CURSOR_BLINKING) - 			tty_putcode(tty, TTYC_CVVIS); - 		break; - 	case SCREEN_CURSOR_BAR: - 		if (tty_term_has(tty->term, TTYC_SS)) { - 			if (cmode & MODE_CURSOR_BLINKING) --				tty_putcode1(tty, TTYC_SS, 5); -+				tty_putcode_i(tty, TTYC_SS, 5); - 			else --				tty_putcode1(tty, TTYC_SS, 6); -+				tty_putcode_i(tty, TTYC_SS, 6); - 		} else if (cmode & MODE_CURSOR_BLINKING) - 			tty_putcode(tty, TTYC_CVVIS); - 		break; -@@ -833,7 +833,7 @@ tty_emulate_repeat(struct tty *tty, enum tty_code_code code, -     enum tty_code_code code1, u_int n) - { - 	if (tty_term_has(tty->term, code)) --		tty_putcode1(tty, code, n); -+		tty_putcode_i(tty, code, n); - 	else { - 		while (n-- > 0) - 			tty_putcode(tty, code1); -@@ -1122,7 +1122,7 @@ tty_clear_line(struct tty *tty, const struct grid_cell *defaults, u_int py, - 		/* Section of line. Use ECH if possible. */ - 		if (tty_term_has(tty->term, TTYC_ECH)) { - 			tty_cursor(tty, px, py); --			tty_putcode1(tty, TTYC_ECH, nx); -+			tty_putcode_i(tty, TTYC_ECH, nx); - 			return; - 		} - 	} -@@ -1263,7 +1263,7 @@ tty_clear_area(struct tty *tty, const struct grid_cell *defaults, u_int py, - 		    tty_term_has(tty->term, TTYC_INDN)) { - 			tty_region(tty, py, py + ny - 1); - 			tty_margin_off(tty); --			tty_putcode1(tty, TTYC_INDN, ny); -+			tty_putcode_i(tty, TTYC_INDN, ny); - 			return; - 		} -  -@@ -1278,7 +1278,7 @@ tty_clear_area(struct tty *tty, const struct grid_cell *defaults, u_int py, - 		    tty_term_has(tty->term, TTYC_INDN)) { - 			tty_region(tty, py, py + ny - 1); - 			tty_margin(tty, px, px + nx - 1); --			tty_putcode1(tty, TTYC_INDN, ny); -+			tty_putcode_i(tty, TTYC_INDN, ny); - 			return; - 		} - 	} -@@ -1579,7 +1579,7 @@ tty_sync_start(struct tty *tty) -  - 	if (tty_term_has(tty->term, TTYC_SYNC)) { - 		log_debug("%s sync start", tty->client->name); --		tty_putcode1(tty, TTYC_SYNC, 1); -+		tty_putcode_i(tty, TTYC_SYNC, 1); - 	} - } -  -@@ -1594,7 +1594,7 @@ tty_sync_end(struct tty *tty) -  - 	if (tty_term_has(tty->term, TTYC_SYNC)) { -  		log_debug("%s sync end", tty->client->name); --		tty_putcode1(tty, TTYC_SYNC, 2); -+		tty_putcode_i(tty, TTYC_SYNC, 2); - 	} - } -  -@@ -1793,7 +1793,7 @@ tty_cmd_reverseindex(struct tty *tty, const struct tty_ctx *ctx) - 	if (tty_term_has(tty->term, TTYC_RI)) - 		tty_putcode(tty, TTYC_RI); - 	else --		tty_putcode1(tty, TTYC_RIN, 1); -+		tty_putcode_i(tty, TTYC_RIN, 1); - } -  - void -@@ -1872,7 +1872,7 @@ tty_cmd_scrollup(struct tty *tty, const struct tty_ctx *ctx) - 			tty_cursor(tty, 0, 0); - 		else - 			tty_cursor(tty, 0, tty->cy); --		tty_putcode1(tty, TTYC_INDN, ctx->num); -+		tty_putcode_i(tty, TTYC_INDN, ctx->num); - 	} - } -  -@@ -1902,7 +1902,7 @@ tty_cmd_scrolldown(struct tty *tty, const struct tty_ctx *ctx) - 	tty_cursor_pane(tty, ctx, ctx->ocx, ctx->orupper); -  - 	if (tty_term_has(tty->term, TTYC_RIN)) --		tty_putcode1(tty, TTYC_RIN, ctx->num); -+		tty_putcode_i(tty, TTYC_RIN, ctx->num); - 	else { - 		for (i = 0; i < ctx->num; i++) - 			tty_putcode(tty, TTYC_RI); -@@ -2101,7 +2101,7 @@ tty_set_selection(struct tty *tty, const char *buf, size_t len) -  - 	b64_ntop(buf, len, encoded, size); - 	tty->flags |= TTY_NOBLOCK; --	tty_putcode_ptr2(tty, TTYC_MS, "", encoded); -+	tty_putcode_ss(tty, TTYC_MS, "", encoded); -  - 	free(encoded); - } -@@ -2246,7 +2246,7 @@ tty_region(struct tty *tty, u_int rupper, u_int rlower) - 			tty_cursor(tty, 0, tty->cy); - 	} -  --	tty_putcode2(tty, TTYC_CSR, tty->rupper, tty->rlower); -+	tty_putcode_ii(tty, TTYC_CSR, tty->rupper, tty->rlower); - 	tty->cx = tty->cy = UINT_MAX; - } -  -@@ -2274,7 +2274,7 @@ tty_margin(struct tty *tty, u_int rleft, u_int rright) - 	if (tty->rleft == rleft && tty->rright == rright) - 		return; -  --	tty_putcode2(tty, TTYC_CSR, tty->rupper, tty->rlower); -+	tty_putcode_ii(tty, TTYC_CSR, tty->rupper, tty->rlower); -  - 	tty->rleft = rleft; - 	tty->rright = rright; -@@ -2282,7 +2282,7 @@ tty_margin(struct tty *tty, u_int rleft, u_int rright) - 	if (rleft == 0 && rright == tty->sx - 1) - 		tty_putcode(tty, TTYC_CLMG); - 	else --		tty_putcode2(tty, TTYC_CMG, rleft, rright); -+		tty_putcode_ii(tty, TTYC_CMG, rleft, rright); - 	tty->cx = tty->cy = UINT_MAX; - } -  -@@ -2392,7 +2392,7 @@ tty_cursor(struct tty *tty, u_int cx, u_int cy) - 		 * the cursor with CUB/CUF. - 		 */ - 		if ((u_int) abs(change) > cx && tty_term_has(term, TTYC_HPA)) { --			tty_putcode1(tty, TTYC_HPA, cx); -+			tty_putcode_i(tty, TTYC_HPA, cx); - 			goto out; - 		} else if (change > 0 && - 		    tty_term_has(term, TTYC_CUB) && -@@ -2402,12 +2402,12 @@ tty_cursor(struct tty *tty, u_int cx, u_int cy) - 				tty_putcode(tty, TTYC_CUB1); - 				goto out; - 			} --			tty_putcode1(tty, TTYC_CUB, change); -+			tty_putcode_i(tty, TTYC_CUB, change); - 			goto out; - 		} else if (change < 0 && - 		    tty_term_has(term, TTYC_CUF) && - 		    !tty_use_margin(tty)) { --			tty_putcode1(tty, TTYC_CUF, -change); -+			tty_putcode_i(tty, TTYC_CUF, -change); - 			goto out; - 		} - 	} else if (cx == thisx) { -@@ -2440,21 +2440,21 @@ tty_cursor(struct tty *tty, u_int cx, u_int cy) - 		    (change < 0 && cy - change > tty->rlower) || - 		    (change > 0 && cy - change < tty->rupper)) { - 			    if (tty_term_has(term, TTYC_VPA)) { --				    tty_putcode1(tty, TTYC_VPA, cy); -+				    tty_putcode_i(tty, TTYC_VPA, cy); - 				    goto out; - 			    } - 		} else if (change > 0 && tty_term_has(term, TTYC_CUU)) { --			tty_putcode1(tty, TTYC_CUU, change); -+			tty_putcode_i(tty, TTYC_CUU, change); - 			goto out; - 		} else if (change < 0 && tty_term_has(term, TTYC_CUD)) { --			tty_putcode1(tty, TTYC_CUD, -change); -+			tty_putcode_i(tty, TTYC_CUD, -change); - 			goto out; - 		} - 	} -  - absolute: - 	/* Absolute movement. */ --	tty_putcode2(tty, TTYC_CUP, cy, cx); -+	tty_putcode_ii(tty, TTYC_CUP, cy, cx); -  - out: - 	tty->cx = cx; -@@ -2533,13 +2533,13 @@ tty_attributes(struct tty *tty, const struct grid_cell *gc, - 		    !tty_term_has(tty->term, TTYC_SMULX)) - 			tty_putcode(tty, TTYC_SMUL); - 		else if (changed & GRID_ATTR_UNDERSCORE_2) --			tty_putcode1(tty, TTYC_SMULX, 2); -+			tty_putcode_i(tty, TTYC_SMULX, 2); - 		else if (changed & GRID_ATTR_UNDERSCORE_3) --			tty_putcode1(tty, TTYC_SMULX, 3); -+			tty_putcode_i(tty, TTYC_SMULX, 3); - 		else if (changed & GRID_ATTR_UNDERSCORE_4) --			tty_putcode1(tty, TTYC_SMULX, 4); -+			tty_putcode_i(tty, TTYC_SMULX, 4); - 		else if (changed & GRID_ATTR_UNDERSCORE_5) --			tty_putcode1(tty, TTYC_SMULX, 5); -+			tty_putcode_i(tty, TTYC_SMULX, 5); - 	} - 	if (changed & GRID_ATTR_BLINK) - 		tty_putcode(tty, TTYC_BLINK); -@@ -2593,14 +2593,14 @@ tty_colours(struct tty *tty, const struct grid_cell *gc) - 				if (have_ax) - 					tty_puts(tty, "\033[39m"); - 				else if (tc->fg != 7) --					tty_putcode1(tty, TTYC_SETAF, 7); -+					tty_putcode_i(tty, TTYC_SETAF, 7); - 				tc->fg = gc->fg; - 			} - 			if (COLOUR_DEFAULT(gc->bg) && !COLOUR_DEFAULT(tc->bg)) { - 				if (have_ax) - 					tty_puts(tty, "\033[49m"); - 				else if (tc->bg != 0) --					tty_putcode1(tty, TTYC_SETAB, 0); -+					tty_putcode_i(tty, TTYC_SETAB, 0); - 				tc->bg = gc->bg; - 			} - 		} -@@ -2768,12 +2768,12 @@ tty_colours_fg(struct tty *tty, const struct grid_cell *gc) - 			xsnprintf(s, sizeof s, "\033[%dm", gc->fg); - 			tty_puts(tty, s); - 		} else --			tty_putcode1(tty, TTYC_SETAF, gc->fg - 90 + 8); -+			tty_putcode_i(tty, TTYC_SETAF, gc->fg - 90 + 8); - 		goto save; - 	} -  - 	/* Otherwise set the foreground colour. */ --	tty_putcode1(tty, TTYC_SETAF, gc->fg); -+	tty_putcode_i(tty, TTYC_SETAF, gc->fg); -  - save: - 	/* Save the new values in the terminal current cell. */ -@@ -2800,12 +2800,12 @@ tty_colours_bg(struct tty *tty, const struct grid_cell *gc) - 			xsnprintf(s, sizeof s, "\033[%dm", gc->bg + 10); - 			tty_puts(tty, s); - 		} else --			tty_putcode1(tty, TTYC_SETAB, gc->bg - 90 + 8); -+			tty_putcode_i(tty, TTYC_SETAB, gc->bg - 90 + 8); - 		goto save; - 	} -  - 	/* Otherwise set the background colour. */ --	tty_putcode1(tty, TTYC_SETAB, gc->bg); -+	tty_putcode_i(tty, TTYC_SETAB, gc->bg); -  - save: - 	/* Save the new values in the terminal current cell. */ -@@ -2841,10 +2841,10 @@ tty_colours_us(struct tty *tty, const struct grid_cell *gc) - 	 * non-RGB version may be wrong. - 	 */ - 	if (tty_term_has(tty->term, TTYC_SETULC)) --		tty_putcode1(tty, TTYC_SETULC, c); -+		tty_putcode_i(tty, TTYC_SETULC, c); - 	else if (tty_term_has(tty->term, TTYC_SETAL) && - 	    tty_term_has(tty->term, TTYC_RGB)) --		tty_putcode1(tty, TTYC_SETAL, c); -+		tty_putcode_i(tty, TTYC_SETAL, c); -  - save: - 	/* Save the new values in the terminal current cell. */ -@@ -2858,18 +2858,18 @@ tty_try_colour(struct tty *tty, int colour, const char *type) -  - 	if (colour & COLOUR_FLAG_256) { - 		if (*type == '3' && tty_term_has(tty->term, TTYC_SETAF)) --			tty_putcode1(tty, TTYC_SETAF, colour & 0xff); -+			tty_putcode_i(tty, TTYC_SETAF, colour & 0xff); - 		else if (tty_term_has(tty->term, TTYC_SETAB)) --			tty_putcode1(tty, TTYC_SETAB, colour & 0xff); -+			tty_putcode_i(tty, TTYC_SETAB, colour & 0xff); - 		return (0); - 	} -  - 	if (colour & COLOUR_FLAG_RGB) { - 		colour_split_rgb(colour & 0xffffff, &r, &g, &b); - 		if (*type == '3' && tty_term_has(tty->term, TTYC_SETRGBF)) --			tty_putcode3(tty, TTYC_SETRGBF, r, g, b); -+			tty_putcode_iii(tty, TTYC_SETRGBF, r, g, b); - 		else if (tty_term_has(tty->term, TTYC_SETRGBB)) --			tty_putcode3(tty, TTYC_SETRGBB, r, g, b); -+			tty_putcode_iii(tty, TTYC_SETRGBB, r, g, b); - 		return (0); - 	} -  -@@ -2953,7 +2953,7 @@ tty_clipboard_query(struct tty *tty) -  - 	if ((~tty->flags & TTY_STARTED) || (tty->flags & TTY_OSC52QUERY)) - 		return; --	tty_putcode_ptr2(tty, TTYC_MS, "", "?"); -+	tty_putcode_ss(tty, TTYC_MS, "", "?"); -  - 	tty->flags |= TTY_OSC52QUERY; - 	evtimer_set(&tty->clipboard_timer, tty_clipboard_query_callback, tty); ---  -2.40.1 - - -From de51c8eb81b9db49fa34a8ea7886c9fe4164f46d Mon Sep 17 00:00:00 2001 -From: Nicholas Marriott <nicholas.marriott@gmail.com> -Date: Fri, 28 Apr 2023 06:44:40 +0100 -Subject: [PATCH 2/3] Use ncurses' new tparm_s function (added in 6.4-20230424) - instead of tparm so it does not object to string arguments in capabilities it - doesn't already know. - -(cherry picked from commit 39d41d0810d4e8ae6ce8d27776dfbb96722d9319) ---- - configure.ac |  4 ++++ - tty-term.c   | 48 +++++++++++++++++++++++++++++++++++++++--------- - 2 files changed, 43 insertions(+), 9 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 2b8b3b11..3c3c1873 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -344,6 +344,10 @@ else - 		AC_MSG_ERROR("curses not found") - 	fi - fi -+AC_CHECK_FUNCS([ \ -+	tiparm \ -+	tiparm_s \ -+]) -  - # Look for utempter. - AC_ARG_ENABLE( -diff --git a/tty-term.c b/tty-term.c -index 32dd849a..18b17420 100644 ---- a/tty-term.c -+++ b/tty-term.c -@@ -764,7 +764,13 @@ tty_term_string_i(struct tty_term *term, enum tty_code_code code, int a) - { - 	const char	*x = tty_term_string(term, code), *s; -  --	s = tparm((char *)x, a); -+#if defined(HAVE_TIPARM_S) -+	s = tiparm_s(1, 0, x, a); -+#elif defined(HAVE_TIPARM) -+	s = tiparm(x, a); -+#else -+	s = tparm((char *)x, a, 0, 0, 0, 0, 0, 0, 0, 0); -+#endif - 	if (s == NULL) - 		fatalx("could not expand %s", tty_term_codes[code].name); - 	return (s); -@@ -775,19 +781,31 @@ tty_term_string_ii(struct tty_term *term, enum tty_code_code code, int a, int b) - { - 	const char	*x = tty_term_string(term, code), *s; -  --	s = tparm((char *)x, a, b); -+#if defined(HAVE_TIPARM_S) -+	s = tiparm_s(2, 0, x, a, b); -+#elif defined(HAVE_TIPARM) -+	s = tiparm(x, a, b); -+#else -+	s = tparm((char *)x, a, b, 0, 0, 0, 0, 0, 0, 0); -+#endif - 	if (s == NULL) - 		fatalx("could not expand %s", tty_term_codes[code].name); - 	return (s); - } -  - const char * --tty_term_string_iii(struct tty_term *term, enum tty_code_code code, int a, int b, --    int c) -+tty_term_string_iii(struct tty_term *term, enum tty_code_code code, int a, -+    int b, int c) - { - 	const char	*x = tty_term_string(term, code), *s; -  --	s = tparm((char *)x, a, b, c); -+#if defined(HAVE_TIPARM_S) -+	s = tiparm_s(3, 0, x, a, b, c); -+#elif defined(HAVE_TIPARM) -+	s = tiparm(x, a, b, c); -+#else -+	s = tparm((char *)x, a, b, c, 0, 0, 0, 0, 0, 0); -+#endif - 	if (s == NULL) - 		fatalx("could not expand %s", tty_term_codes[code].name); - 	return (s); -@@ -798,19 +816,31 @@ tty_term_string_s(struct tty_term *term, enum tty_code_code code, const char *a) - { - 	const char	*x = tty_term_string(term, code), *s; -  --	s = tparm((char *)x, (long)a); -+#if defined(HAVE_TIPARM_S) -+	s = tiparm_s(1, 1, x, a); -+#elif defined(HAVE_TIPARM) -+	s = tiparm(x, a); -+#else -+	s = tparm((char *)x, (long)a, 0, 0, 0, 0, 0, 0, 0, 0); -+#endif - 	if (s == NULL) - 		fatalx("could not expand %s", tty_term_codes[code].name); - 	return (s); - } -  - const char * --tty_term_string_ss(struct tty_term *term, enum tty_code_code code, const char *a, --    const char *b) -+tty_term_string_ss(struct tty_term *term, enum tty_code_code code, -+    const char *a, const char *b) - { - 	const char	*x = tty_term_string(term, code), *s; -  --	s = tparm((char *)x, (long)a, (long)b); -+#if defined(HAVE_TIPARM_S) -+	s = tiparm_s(2, 3, x, a, b); -+#elif defined(HAVE_TIPARM) -+	s = tiparm(x, a, b); -+#else -+	s = tparm((char *)x, (long)a, b, 0, 0, 0, 0, 0, 0, 0); -+#endif - 	if (s == NULL) - 		fatalx("could not expand %s", tty_term_codes[code].name); - 	return (s); ---  -2.40.1 - - -From 732135ed357566d65749fde1967f5639026d9418 Mon Sep 17 00:00:00 2001 -From: nicm <nicm> -Date: Fri, 28 Apr 2023 05:59:35 +0000 -Subject: [PATCH 3/3] Do not fatal if tparm fails, instead just log it (not - working sequences are better than exiting). - -(cherry picked from commit bf636d9575806134ca7efd917ee0d54e9330ae86) ---- - tty-term.c | 30 ++++++++++++++++++++---------- - 1 file changed, 20 insertions(+), 10 deletions(-) - -diff --git a/tty-term.c b/tty-term.c -index 18b17420..e489f610 100644 ---- a/tty-term.c -+++ b/tty-term.c -@@ -771,8 +771,10 @@ tty_term_string_i(struct tty_term *term, enum tty_code_code code, int a) - #else - 	s = tparm((char *)x, a, 0, 0, 0, 0, 0, 0, 0, 0); - #endif --	if (s == NULL) --		fatalx("could not expand %s", tty_term_codes[code].name); -+	if (s == NULL) { -+		log_debug("could not expand %s", tty_term_codes[code].name); -+		return (""); -+	} - 	return (s); - } -  -@@ -788,8 +790,10 @@ tty_term_string_ii(struct tty_term *term, enum tty_code_code code, int a, int b) - #else - 	s = tparm((char *)x, a, b, 0, 0, 0, 0, 0, 0, 0); - #endif --	if (s == NULL) --		fatalx("could not expand %s", tty_term_codes[code].name); -+	if (s == NULL) { -+		log_debug("could not expand %s", tty_term_codes[code].name); -+		return (""); -+	} - 	return (s); - } -  -@@ -806,8 +810,10 @@ tty_term_string_iii(struct tty_term *term, enum tty_code_code code, int a, - #else - 	s = tparm((char *)x, a, b, c, 0, 0, 0, 0, 0, 0); - #endif --	if (s == NULL) --		fatalx("could not expand %s", tty_term_codes[code].name); -+	if (s == NULL) { -+		log_debug("could not expand %s", tty_term_codes[code].name); -+		return (""); -+	} - 	return (s); - } -  -@@ -823,8 +829,10 @@ tty_term_string_s(struct tty_term *term, enum tty_code_code code, const char *a) - #else - 	s = tparm((char *)x, (long)a, 0, 0, 0, 0, 0, 0, 0, 0); - #endif --	if (s == NULL) --		fatalx("could not expand %s", tty_term_codes[code].name); -+	if (s == NULL) { -+		log_debug("could not expand %s", tty_term_codes[code].name); -+		return (""); -+	} - 	return (s); - } -  -@@ -841,8 +849,10 @@ tty_term_string_ss(struct tty_term *term, enum tty_code_code code, - #else - 	s = tparm((char *)x, (long)a, b, 0, 0, 0, 0, 0, 0, 0); - #endif --	if (s == NULL) --		fatalx("could not expand %s", tty_term_codes[code].name); -+	if (s == NULL) { -+		log_debug("could not expand %s", tty_term_codes[code].name); -+		return (""); -+	} - 	return (s); - } -  ---  -2.40.1 - @@ -5,33 +5,22 @@  # AUR version lacks additional optimization and hardening flags  pkgname=tmux -pkgver=3.3_a -pkgrel=7 +pkgver=3.4 +pkgrel=4  pkgdesc='Terminal multiplexer'  url='https://github.com/tmux/tmux/wiki'  arch=('x86_64')  license=('BSD') -depends=('ncurses' 'libevent' 'libutempter') +depends=('libevent' 'libevent_core-2.1.so' +         'libutempter' +         'ncurses' 'libncursesw.so')  # # For some reason this breaks compiling. "error: C compiler cannot create executables"  # # But old-fashioned raw injection of -flto=auto via export doesn't.  #options=('lto') -source=("https://github.com/tmux/tmux/releases/download/${pkgver/_/}/tmux-${pkgver/_/}.tar.gz" -        '0001-CVE-2022-47016.patch' -        '0002-ncurses.patch') -sha256sums=('e4fd347843bd0772c4f48d6dde625b0b109b7a380ff15db21e97c11a4dcdf93f' -            '58fb690833e086b71b52555aa8eced695ace0a0bc51b8bccfda441e35a47ca93' -            '70e8cc2a95dd4a19ff54bcf0abaeff6464ebecbaace5ed0aec06ca93a84d415a') -b2sums=('e835ce0f136175521035a684419f221864edb0a9506d7d68cbc0239b1349e78949ebd96573a9d8651a2df6d99acb433075d6e0c20d7394a53fe6b44bd9e56069' -        '5d6e44167fc067da71a7b222eea9f631bf9a64e88846d243207e9e29ab25e0bc78addca6b006ceed43a45be88abc53822a1250fd5b9a7c4830496ef77408eae3' -        '6077460e424e4857eea3bf36d88a400155d95481500b25005790f3de782b8e7f2790c3ba450f6704149f236562fb25b743575c0e73cbc3cbec7785aa729816c3') - -prepare() { -  cd "$pkgname-${pkgver/_/}" -  patch -Np1 -i ../0001-CVE-2022-47016.patch -  patch -Np1 -i ../0002-ncurses.patch +source=("https://github.com/tmux/tmux/releases/download/${pkgver/_/}/tmux-${pkgver/_/}.tar.gz") +sha256sums=('551ab8dea0bf505c0ad6b7bb35ef567cdde0ccb84357df142c254f35a23e19aa') +b2sums=('2b1990b95d7439702e9287402d9828d4ecab573202c099aa482969c047b540d4b899f79d87587fc712e727d9cebf5fa7393512087e469fc355b4a30b1894e229') -  autoreconf -fi -}  build() {    cd "$pkgname-${pkgver/_/}" @@ -42,6 +31,7 @@ build() {    ./configure \      --prefix=/usr \ +    --enable-sixel \      --enable-utempter    make  }  | 
