mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 01:34:18 +00:00 
			
		
		
		
	Merge branch 'obsd-master'
Conflicts: tmux.c
This commit is contained in:
		
							
								
								
									
										13
									
								
								clock.c
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								clock.c
									
									
									
									
									
								
							@@ -103,13 +103,20 @@ clock_draw(struct screen_write_ctx *ctx, int colour, int style)
 | 
			
		||||
	struct grid_cell	 gc;
 | 
			
		||||
	char			 tim[64], *ptr;
 | 
			
		||||
	time_t			 t;
 | 
			
		||||
	struct tm		*tm;
 | 
			
		||||
	u_int			 i, j, x, y, idx;
 | 
			
		||||
 | 
			
		||||
	t = time(NULL);
 | 
			
		||||
	if (style == 0)
 | 
			
		||||
		strftime(tim, sizeof tim, "%l:%M %p", localtime(&t));
 | 
			
		||||
	tm = localtime(&t);
 | 
			
		||||
	if (style == 0) {
 | 
			
		||||
		strftime(tim, sizeof tim, "%l:%M ", localtime(&t));
 | 
			
		||||
		if (tm->tm_hour >= 12)
 | 
			
		||||
			strlcat(tim, "PM", sizeof tim);
 | 
			
		||||
		else
 | 
			
		||||
		strftime(tim, sizeof tim, "%H:%M", localtime(&t));
 | 
			
		||||
			strlcat(tim, "AM", sizeof tim);
 | 
			
		||||
	} else
 | 
			
		||||
		strftime(tim, sizeof tim, "%H:%M", tm);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	screen_write_clearscreen(ctx);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -54,9 +54,11 @@ cmd_copy_mode_exec(struct cmd *self, struct cmd_q *cmdq)
 | 
			
		||||
	if (cmd_find_pane(cmdq, args_get(args, 't'), NULL, &wp) == NULL)
 | 
			
		||||
		return (CMD_RETURN_ERROR);
 | 
			
		||||
 | 
			
		||||
	if (wp->mode != &window_copy_mode) {
 | 
			
		||||
		if (window_pane_set_mode(wp, &window_copy_mode) != 0)
 | 
			
		||||
			return (CMD_RETURN_NORMAL);
 | 
			
		||||
		window_copy_init_from_pane(wp);
 | 
			
		||||
	}
 | 
			
		||||
	if (wp->mode == &window_copy_mode && args_has(self->args, 'u'))
 | 
			
		||||
		window_copy_pageup(wp);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -158,7 +158,7 @@ cmdq_guard(struct cmd_q *cmdq, const char *guard)
 | 
			
		||||
{
 | 
			
		||||
	struct client	*c = cmdq->client;
 | 
			
		||||
 | 
			
		||||
	if (c == NULL || c->session == NULL)
 | 
			
		||||
	if (c == NULL)
 | 
			
		||||
		return 0;
 | 
			
		||||
	if (!(c->flags & CLIENT_CONTROL))
 | 
			
		||||
		return 0;
 | 
			
		||||
 
 | 
			
		||||
@@ -49,6 +49,7 @@ cmd_source_file_exec(struct cmd *self, struct cmd_q *cmdq)
 | 
			
		||||
	char		*cause;
 | 
			
		||||
 | 
			
		||||
	cmdq1 = cmdq_new(NULL);
 | 
			
		||||
	cmdq1->client = cmdq->client;
 | 
			
		||||
	cmdq1->emptyfn = cmd_source_file_done;
 | 
			
		||||
	cmdq1->data = cmdq;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -75,8 +75,12 @@ cmd_swap_pane_exec(struct cmd *self, struct cmd_q *cmdq)
 | 
			
		||||
			src_wp = TAILQ_PREV(dst_wp, window_panes, entry);
 | 
			
		||||
			if (src_wp == NULL)
 | 
			
		||||
				src_wp = TAILQ_LAST(&dst_w->panes, window_panes);
 | 
			
		||||
		} else
 | 
			
		||||
			return (CMD_RETURN_NORMAL);
 | 
			
		||||
		} else {
 | 
			
		||||
			src_wl = cmd_find_pane(cmdq, NULL, NULL, &src_wp);
 | 
			
		||||
			if (src_wl == NULL)
 | 
			
		||||
				return (CMD_RETURN_ERROR);
 | 
			
		||||
			src_w = src_wl->window;
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		src_wl = cmd_find_pane(cmdq, args_get(args, 's'), NULL, &src_wp);
 | 
			
		||||
		if (src_wl == NULL)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										26
									
								
								colour.c
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								colour.c
									
									
									
									
									
								
							@@ -287,29 +287,3 @@ colour_256to16(u_char c)
 | 
			
		||||
 | 
			
		||||
	return (table[c]);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Convert 256 colour palette to 88. */
 | 
			
		||||
u_char
 | 
			
		||||
colour_256to88(u_char c)
 | 
			
		||||
{
 | 
			
		||||
	static const u_char table[256] = {
 | 
			
		||||
		 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
 | 
			
		||||
		16, 17, 17, 18, 18, 19, 20, 21, 21, 22, 22, 23, 20, 21, 21, 22,
 | 
			
		||||
		22, 23, 24, 25, 25, 26, 26, 27, 24, 25, 25, 26, 26, 27, 28, 29,
 | 
			
		||||
		29, 30, 30, 31, 32, 33, 33, 34, 34, 35, 36, 37, 37, 38, 38, 39,
 | 
			
		||||
		36, 37, 37, 38, 38, 39, 40, 41, 41, 42, 42, 43, 40, 41, 41, 42,
 | 
			
		||||
		42, 43, 44, 45, 45, 46, 46, 47, 32, 33, 33, 34, 34, 35, 36, 37,
 | 
			
		||||
		37, 38, 38, 39, 36, 37, 37, 38, 38, 39, 40, 41, 41, 42, 42, 43,
 | 
			
		||||
		40, 41, 41, 42, 42, 43, 44, 45, 45, 46, 46, 47, 48, 49, 49, 50,
 | 
			
		||||
		50, 51, 52, 53, 53, 54, 54, 55, 52, 53, 53, 54, 54, 55, 56, 57,
 | 
			
		||||
		57, 58, 58, 59, 56, 57, 57, 58, 58, 59, 60, 61, 61, 62, 62, 63,
 | 
			
		||||
		48, 49, 49, 50, 50, 51, 52, 53, 53, 54, 54, 55, 52, 53, 53, 54,
 | 
			
		||||
		54, 55, 56, 57, 57, 58, 58, 59, 56, 57, 57, 58, 58, 59, 60, 61,
 | 
			
		||||
		61, 62, 62, 63, 64, 65, 65, 66, 66, 67, 68, 69, 69, 70, 70, 71,
 | 
			
		||||
		68, 69, 69, 70, 70, 71, 72, 73, 73, 74, 74, 75, 72, 73, 73, 74,
 | 
			
		||||
		74, 75, 76, 77, 77, 78, 78, 79,  0,  0, 80, 80, 80, 81, 81, 81,
 | 
			
		||||
		82, 82, 82, 83, 83, 83, 84, 84, 84, 85, 85, 85, 86, 86, 86, 87
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	return (table[c]);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								job.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								job.c
									
									
									
									
									
								
							@@ -108,7 +108,7 @@ job_run(const char *cmd, struct session *s,
 | 
			
		||||
 | 
			
		||||
	job->event = bufferevent_new(job->fd, NULL, job_write_callback,
 | 
			
		||||
	    job_callback, job);
 | 
			
		||||
	bufferevent_enable(job->event, EV_READ);
 | 
			
		||||
	bufferevent_enable(job->event, EV_READ|EV_WRITE);
 | 
			
		||||
 | 
			
		||||
	log_debug("run job %p: %s, pid %ld", job, job->cmd, (long) job->pid);
 | 
			
		||||
	return (job);
 | 
			
		||||
 
 | 
			
		||||
@@ -413,7 +413,7 @@ const struct options_table_entry session_options_table[] = {
 | 
			
		||||
 | 
			
		||||
	{ .name = "terminal-overrides",
 | 
			
		||||
	  .type = OPTIONS_TABLE_STRING,
 | 
			
		||||
	  .default_str = "*88col*:colors=88,*256col*:colors=256"
 | 
			
		||||
	  .default_str = "*256col*:colors=256"
 | 
			
		||||
	                 ",xterm*:XT:Ms=\\E]52;%p1%s;%p2%s\\007"
 | 
			
		||||
	                 ":Cc=\\E]12;%p1%s\\007:Cr=\\E]112\\007"
 | 
			
		||||
			 ":Cs=\\E[%p1%d q:Csr=\\E[2 q,screen*:XT"
 | 
			
		||||
 
 | 
			
		||||
@@ -488,6 +488,8 @@ screen_write_cursorup(struct screen_write_ctx *ctx, u_int ny)
 | 
			
		||||
		if (ny > s->cy - s->rupper)
 | 
			
		||||
			ny = s->cy - s->rupper;
 | 
			
		||||
	}
 | 
			
		||||
	if (s->cx == screen_size_x(s))
 | 
			
		||||
	    s->cx--;
 | 
			
		||||
	if (ny == 0)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
@@ -512,6 +514,8 @@ screen_write_cursordown(struct screen_write_ctx *ctx, u_int ny)
 | 
			
		||||
		if (ny > s->rlower - s->cy)
 | 
			
		||||
			ny = s->rlower - s->cy;
 | 
			
		||||
	}
 | 
			
		||||
	if (s->cx == screen_size_x(s))
 | 
			
		||||
	    s->cx--;
 | 
			
		||||
	if (ny == 0)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -534,18 +534,8 @@ server_client_check_resize(struct window_pane *wp)
 | 
			
		||||
	ws.ws_col = wp->sx;
 | 
			
		||||
	ws.ws_row = wp->sy;
 | 
			
		||||
 | 
			
		||||
	if (ioctl(wp->fd, TIOCSWINSZ, &ws) == -1) {
 | 
			
		||||
#ifdef __sun
 | 
			
		||||
		/*
 | 
			
		||||
		 * Some versions of Solaris apparently can return an error when
 | 
			
		||||
		 * resizing; don't know why this happens, can't reproduce on
 | 
			
		||||
		 * other platforms and ignoring it doesn't seem to cause any
 | 
			
		||||
		 * issues.
 | 
			
		||||
		 */
 | 
			
		||||
		if (errno != EINVAL)
 | 
			
		||||
#endif
 | 
			
		||||
	if (ioctl(wp->fd, TIOCSWINSZ, &ws) == -1)
 | 
			
		||||
		fatal("ioctl failed");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	wp->flags &= ~PANE_RESIZE;
 | 
			
		||||
}
 | 
			
		||||
@@ -981,8 +971,6 @@ server_client_msg_identify(
 | 
			
		||||
		c->tty.flags |= TTY_UTF8;
 | 
			
		||||
	if (data->flags & IDENTIFY_256COLOURS)
 | 
			
		||||
		c->tty.term_flags |= TERM_256COLOURS;
 | 
			
		||||
	else if (data->flags & IDENTIFY_88COLOURS)
 | 
			
		||||
		c->tty.term_flags |= TERM_88COLOURS;
 | 
			
		||||
 | 
			
		||||
	tty_resize(&c->tty);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										16
									
								
								tmux.1
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								tmux.1
									
									
									
									
									
								
							@@ -98,10 +98,6 @@ The options are as follows:
 | 
			
		||||
Force
 | 
			
		||||
.Nm
 | 
			
		||||
to assume the terminal supports 256 colours.
 | 
			
		||||
.It Fl 8
 | 
			
		||||
Like
 | 
			
		||||
.Fl 2 ,
 | 
			
		||||
but indicates that the terminal supports 88 colours.
 | 
			
		||||
.It Fl C
 | 
			
		||||
Start in control mode.
 | 
			
		||||
Given twice
 | 
			
		||||
@@ -145,11 +141,12 @@ session created, and continues to process the rest of the configuration file.
 | 
			
		||||
.It Fl L Ar socket-name
 | 
			
		||||
.Nm
 | 
			
		||||
stores the server socket in a directory under
 | 
			
		||||
.Pa /tmp
 | 
			
		||||
(or
 | 
			
		||||
.Ev TMUX_TMPDIR ,
 | 
			
		||||
.Ev TMPDIR
 | 
			
		||||
if set);
 | 
			
		||||
the default socket is named
 | 
			
		||||
if it is unset, or
 | 
			
		||||
.Pa /tmp
 | 
			
		||||
if both are unset.
 | 
			
		||||
The default socket is named
 | 
			
		||||
.Em default .
 | 
			
		||||
This option allows a different socket name to be specified, allowing several
 | 
			
		||||
independent
 | 
			
		||||
@@ -2652,7 +2649,7 @@ The default is
 | 
			
		||||
.Ql \ -_@ .
 | 
			
		||||
.El
 | 
			
		||||
.It Xo Ic set-window-option
 | 
			
		||||
.Op Fl agqu
 | 
			
		||||
.Op Fl agoqu
 | 
			
		||||
.Op Fl t Ar target-window
 | 
			
		||||
.Ar option Ar value
 | 
			
		||||
.Xc
 | 
			
		||||
@@ -2661,6 +2658,7 @@ Set a window option.
 | 
			
		||||
The
 | 
			
		||||
.Fl a ,
 | 
			
		||||
.Fl g ,
 | 
			
		||||
.Fl o ,
 | 
			
		||||
.Fl q
 | 
			
		||||
and
 | 
			
		||||
.Fl u
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										19
									
								
								tmux.c
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								tmux.c
									
									
									
									
									
								
							@@ -22,6 +22,8 @@
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <event.h>
 | 
			
		||||
#include <fcntl.h>
 | 
			
		||||
#include <locale.h>
 | 
			
		||||
#include <paths.h>
 | 
			
		||||
#include <pwd.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
@@ -167,10 +169,12 @@ makesocketpath(const char *label)
 | 
			
		||||
	u_int		uid;
 | 
			
		||||
 | 
			
		||||
	uid = getuid();
 | 
			
		||||
	if ((s = getenv("TMPDIR")) == NULL || *s == '\0')
 | 
			
		||||
		xsnprintf(base, sizeof base, "%s/tmux-%u", _PATH_TMP, uid);
 | 
			
		||||
	else
 | 
			
		||||
	if ((s = getenv("TMUX_TMPDIR")) != NULL && *s != '\0')
 | 
			
		||||
		xsnprintf(base, sizeof base, "%s/", s);
 | 
			
		||||
	else if ((s = getenv("TMPDIR")) != NULL && *s != '\0')
 | 
			
		||||
		xsnprintf(base, sizeof base, "%s/tmux-%u", s, uid);
 | 
			
		||||
	else
 | 
			
		||||
		xsnprintf(base, sizeof base, "%s/tmux-%u", _PATH_TMP, uid);
 | 
			
		||||
 | 
			
		||||
	if (mkdir(base, S_IRWXU) != 0 && errno != EEXIST)
 | 
			
		||||
		return (NULL);
 | 
			
		||||
@@ -244,18 +248,15 @@ main(int argc, char **argv)
 | 
			
		||||
	malloc_options = (char *) "AFGJPX";
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	setlocale(LC_TIME, "");
 | 
			
		||||
 | 
			
		||||
	quiet = flags = 0;
 | 
			
		||||
	label = path = NULL;
 | 
			
		||||
	login_shell = (**argv == '-');
 | 
			
		||||
	while ((opt = getopt(argc, argv, "28c:Cdf:lL:qS:uUvV")) != -1) {
 | 
			
		||||
	while ((opt = getopt(argc, argv, "2c:Cdf:lL:qS:uUv")) != -1) {
 | 
			
		||||
		switch (opt) {
 | 
			
		||||
		case '2':
 | 
			
		||||
			flags |= IDENTIFY_256COLOURS;
 | 
			
		||||
			flags &= ~IDENTIFY_88COLOURS;
 | 
			
		||||
			break;
 | 
			
		||||
		case '8':
 | 
			
		||||
			flags |= IDENTIFY_88COLOURS;
 | 
			
		||||
			flags &= ~IDENTIFY_256COLOURS;
 | 
			
		||||
			break;
 | 
			
		||||
		case 'c':
 | 
			
		||||
			free(shell_cmd);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								tmux.h
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								tmux.h
									
									
									
									
									
								
							@@ -477,7 +477,7 @@ struct msg_identify_data {
 | 
			
		||||
 | 
			
		||||
#define IDENTIFY_UTF8 0x1
 | 
			
		||||
#define IDENTIFY_256COLOURS 0x2
 | 
			
		||||
#define IDENTIFY_88COLOURS 0x4
 | 
			
		||||
/* 0x4 unused */
 | 
			
		||||
#define IDENTIFY_CONTROL 0x8
 | 
			
		||||
#define IDENTIFY_TERMIOS 0x10
 | 
			
		||||
	int		flags;
 | 
			
		||||
@@ -1137,8 +1137,7 @@ struct tty_term {
 | 
			
		||||
	struct tty_code	 codes[NTTYCODE];
 | 
			
		||||
 | 
			
		||||
#define TERM_256COLOURS 0x1
 | 
			
		||||
#define TERM_88COLOURS 0x2
 | 
			
		||||
#define TERM_EARLYWRAP 0x4
 | 
			
		||||
#define TERM_EARLYWRAP 0x2
 | 
			
		||||
	int		 flags;
 | 
			
		||||
 | 
			
		||||
	LIST_ENTRY(tty_term) entry;
 | 
			
		||||
@@ -1982,7 +1981,6 @@ void	 colour_set_bg(struct grid_cell *, int);
 | 
			
		||||
const char *colour_tostring(int);
 | 
			
		||||
int	 colour_fromstring(const char *);
 | 
			
		||||
u_char	 colour_256to16(u_char);
 | 
			
		||||
u_char	 colour_256to88(u_char);
 | 
			
		||||
 | 
			
		||||
/* attributes.c */
 | 
			
		||||
const char *attributes_tostring(u_char);
 | 
			
		||||
 
 | 
			
		||||
@@ -410,11 +410,9 @@ tty_term_find(char *name, int fd, const char *overrides, char **cause)
 | 
			
		||||
		goto error;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Figure out if we have 256 or 88 colours. */
 | 
			
		||||
	/* Figure out if we have 256. */
 | 
			
		||||
	if (tty_term_number(term, TTYC_COLORS) == 256)
 | 
			
		||||
		term->flags |= TERM_256COLOURS;
 | 
			
		||||
	if (tty_term_number(term, TTYC_COLORS) == 88)
 | 
			
		||||
		term->flags |= TERM_88COLOURS;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Terminals without xenl (eat newline glitch) wrap at at $COLUMNS - 1
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										36
									
								
								tty.c
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								tty.c
									
									
									
									
									
								
							@@ -35,7 +35,6 @@ void	tty_read_callback(struct bufferevent *, void *);
 | 
			
		||||
void	tty_error_callback(struct bufferevent *, short, void *);
 | 
			
		||||
 | 
			
		||||
int	tty_try_256(struct tty *, u_char, const char *);
 | 
			
		||||
int	tty_try_88(struct tty *, u_char, const char *);
 | 
			
		||||
 | 
			
		||||
void	tty_colours(struct tty *, const struct grid_cell *);
 | 
			
		||||
void	tty_check_fg(struct tty *, struct grid_cell *);
 | 
			
		||||
@@ -221,7 +220,7 @@ tty_start_tty(struct tty *tty)
 | 
			
		||||
		tty_puts(tty, "\033[?1000l\033[?1006l\033[?1005l");
 | 
			
		||||
 | 
			
		||||
	if (tty_term_has(tty->term, TTYC_XT))
 | 
			
		||||
		tty_puts(tty, "\033[c\033[>4;1m\033[?1004h");
 | 
			
		||||
		tty_puts(tty, "\033[c\033[>4;1m\033[?1004h\033[m");
 | 
			
		||||
 | 
			
		||||
	tty->cx = UINT_MAX;
 | 
			
		||||
	tty->cy = UINT_MAX;
 | 
			
		||||
@@ -284,7 +283,7 @@ tty_stop_tty(struct tty *tty)
 | 
			
		||||
		tty_raw(tty, "\033[?1000l\033[?1006l\033[?1005l");
 | 
			
		||||
 | 
			
		||||
	if (tty_term_has(tty->term, TTYC_XT))
 | 
			
		||||
		tty_raw(tty, "\033[>4m\033[?1004l");
 | 
			
		||||
		tty_raw(tty, "\033[>4m\033[?1004l\033[m");
 | 
			
		||||
 | 
			
		||||
	tty_raw(tty, tty_term_string(tty->term, TTYC_RMCUP));
 | 
			
		||||
 | 
			
		||||
@@ -1446,9 +1445,7 @@ tty_check_fg(struct tty *tty, struct grid_cell *gc)
 | 
			
		||||
	/* Is this a 256-colour colour? */
 | 
			
		||||
	if (gc->flags & GRID_FLAG_FG256) {
 | 
			
		||||
		/* And not a 256 colour mode? */
 | 
			
		||||
		if (!(tty->term->flags & TERM_88COLOURS) &&
 | 
			
		||||
		    !(tty->term_flags & TERM_88COLOURS) &&
 | 
			
		||||
		    !(tty->term->flags & TERM_256COLOURS) &&
 | 
			
		||||
		if (!(tty->term->flags & TERM_256COLOURS) &&
 | 
			
		||||
		    !(tty->term_flags & TERM_256COLOURS)) {
 | 
			
		||||
			gc->fg = colour_256to16(gc->fg);
 | 
			
		||||
			if (gc->fg & 8) {
 | 
			
		||||
@@ -1481,9 +1478,7 @@ tty_check_bg(struct tty *tty, struct grid_cell *gc)
 | 
			
		||||
		 * palette. Bold background doesn't exist portably, so just
 | 
			
		||||
		 * discard the bold bit if set.
 | 
			
		||||
		 */
 | 
			
		||||
		if (!(tty->term->flags & TERM_88COLOURS) &&
 | 
			
		||||
		    !(tty->term_flags & TERM_88COLOURS) &&
 | 
			
		||||
		    !(tty->term->flags & TERM_256COLOURS) &&
 | 
			
		||||
		if (!(tty->term->flags & TERM_256COLOURS) &&
 | 
			
		||||
		    !(tty->term_flags & TERM_256COLOURS)) {
 | 
			
		||||
			gc->bg = colour_256to16(gc->bg);
 | 
			
		||||
			if (gc->bg & 8)
 | 
			
		||||
@@ -1511,11 +1506,9 @@ tty_colours_fg(struct tty *tty, const struct grid_cell *gc)
 | 
			
		||||
 | 
			
		||||
	/* Is this a 256-colour colour? */
 | 
			
		||||
	if (gc->flags & GRID_FLAG_FG256) {
 | 
			
		||||
		/* Try as 256 colours or translating to 88. */
 | 
			
		||||
		/* Try as 256 colours. */
 | 
			
		||||
		if (tty_try_256(tty, fg, "38") == 0)
 | 
			
		||||
			goto save_fg;
 | 
			
		||||
		if (tty_try_88(tty, fg, "38") == 0)
 | 
			
		||||
			goto save_fg;
 | 
			
		||||
		/* Else already handled by tty_check_fg. */
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
@@ -1546,11 +1539,9 @@ tty_colours_bg(struct tty *tty, const struct grid_cell *gc)
 | 
			
		||||
 | 
			
		||||
	/* Is this a 256-colour colour? */
 | 
			
		||||
	if (gc->flags & GRID_FLAG_BG256) {
 | 
			
		||||
		/* Try as 256 colours or translating to 88. */
 | 
			
		||||
		/* Try as 256 colours. */
 | 
			
		||||
		if (tty_try_256(tty, bg, "48") == 0)
 | 
			
		||||
			goto save_bg;
 | 
			
		||||
		if (tty_try_88(tty, bg, "48") == 0)
 | 
			
		||||
			goto save_bg;
 | 
			
		||||
		/* Else already handled by tty_check_bg. */
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
@@ -1591,21 +1582,6 @@ tty_try_256(struct tty *tty, u_char colour, const char *type)
 | 
			
		||||
	return (0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
tty_try_88(struct tty *tty, u_char colour, const char *type)
 | 
			
		||||
{
 | 
			
		||||
	char	s[32];
 | 
			
		||||
 | 
			
		||||
	if (!(tty->term->flags & TERM_88COLOURS) &&
 | 
			
		||||
	    !(tty->term_flags & TERM_88COLOURS))
 | 
			
		||||
		return (-1);
 | 
			
		||||
	colour = colour_256to88(colour);
 | 
			
		||||
 | 
			
		||||
	xsnprintf(s, sizeof s, "\033[%s;5;%hhum", type, colour);
 | 
			
		||||
	tty_puts(tty, s);
 | 
			
		||||
	return (0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
tty_bell(struct tty *tty)
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								utf8.c
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								utf8.c
									
									
									
									
									
								
							@@ -173,7 +173,6 @@ struct utf8_width_entry utf8_width_table[] = {
 | 
			
		||||
	{ 0x30000, 0x3fffd, 2, NULL, NULL },
 | 
			
		||||
	{ 0x00711, 0x00711, 0, NULL, NULL },
 | 
			
		||||
	{ 0x0fe00, 0x0fe0f, 0, NULL, NULL },
 | 
			
		||||
	{ 0x01160, 0x011ff, 0, NULL, NULL },
 | 
			
		||||
	{ 0x0180b, 0x0180d, 0, NULL, NULL },
 | 
			
		||||
	{ 0x10a3f, 0x10a3f, 0, NULL, NULL },
 | 
			
		||||
	{ 0x00981, 0x00981, 0, NULL, NULL },
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user