mirror of
https://github.com/tmux/tmux.git
synced 2026-05-30 22:26:18 +00:00
Merge branch 'obsd-master'
This commit is contained in:
21
file.c
21
file.c
@@ -804,7 +804,7 @@ file_read_cancel(struct client_files *files, struct imsg *imsg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Handle a write ready message (server). */
|
/* Handle a write ready message (server). */
|
||||||
void
|
int
|
||||||
file_write_ready(struct client_files *files, struct imsg *imsg)
|
file_write_ready(struct client_files *files, struct imsg *imsg)
|
||||||
{
|
{
|
||||||
struct msg_write_ready *msg = imsg->data;
|
struct msg_write_ready *msg = imsg->data;
|
||||||
@@ -812,19 +812,20 @@ file_write_ready(struct client_files *files, struct imsg *imsg)
|
|||||||
struct client_file find, *cf;
|
struct client_file find, *cf;
|
||||||
|
|
||||||
if (msglen != sizeof *msg)
|
if (msglen != sizeof *msg)
|
||||||
fatalx("bad MSG_WRITE_READY size");
|
return (-1);
|
||||||
find.stream = msg->stream;
|
find.stream = msg->stream;
|
||||||
if ((cf = RB_FIND(client_files, files, &find)) == NULL)
|
if ((cf = RB_FIND(client_files, files, &find)) == NULL)
|
||||||
return;
|
return (0);
|
||||||
if (msg->error != 0) {
|
if (msg->error != 0) {
|
||||||
cf->error = msg->error;
|
cf->error = msg->error;
|
||||||
file_fire_done(cf);
|
file_fire_done(cf);
|
||||||
} else
|
} else
|
||||||
file_push(cf);
|
file_push(cf);
|
||||||
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Handle read data message (server). */
|
/* Handle read data message (server). */
|
||||||
void
|
int
|
||||||
file_read_data(struct client_files *files, struct imsg *imsg)
|
file_read_data(struct client_files *files, struct imsg *imsg)
|
||||||
{
|
{
|
||||||
struct msg_read_data *msg = imsg->data;
|
struct msg_read_data *msg = imsg->data;
|
||||||
@@ -834,10 +835,10 @@ file_read_data(struct client_files *files, struct imsg *imsg)
|
|||||||
size_t bsize = msglen - sizeof *msg;
|
size_t bsize = msglen - sizeof *msg;
|
||||||
|
|
||||||
if (msglen < sizeof *msg)
|
if (msglen < sizeof *msg)
|
||||||
fatalx("bad MSG_READ_DATA size");
|
return (-1);
|
||||||
find.stream = msg->stream;
|
find.stream = msg->stream;
|
||||||
if ((cf = RB_FIND(client_files, files, &find)) == NULL)
|
if ((cf = RB_FIND(client_files, files, &find)) == NULL)
|
||||||
return;
|
return (0);
|
||||||
|
|
||||||
log_debug("file %d read %zu bytes", cf->stream, bsize);
|
log_debug("file %d read %zu bytes", cf->stream, bsize);
|
||||||
if (cf->error == 0 && !cf->closed) {
|
if (cf->error == 0 && !cf->closed) {
|
||||||
@@ -847,10 +848,11 @@ file_read_data(struct client_files *files, struct imsg *imsg)
|
|||||||
} else
|
} else
|
||||||
file_fire_read(cf);
|
file_fire_read(cf);
|
||||||
}
|
}
|
||||||
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Handle a read done message (server). */
|
/* Handle a read done message (server). */
|
||||||
void
|
int
|
||||||
file_read_done(struct client_files *files, struct imsg *imsg)
|
file_read_done(struct client_files *files, struct imsg *imsg)
|
||||||
{
|
{
|
||||||
struct msg_read_done *msg = imsg->data;
|
struct msg_read_done *msg = imsg->data;
|
||||||
@@ -858,12 +860,13 @@ file_read_done(struct client_files *files, struct imsg *imsg)
|
|||||||
struct client_file find, *cf;
|
struct client_file find, *cf;
|
||||||
|
|
||||||
if (msglen != sizeof *msg)
|
if (msglen != sizeof *msg)
|
||||||
fatalx("bad MSG_READ_DONE size");
|
return (-1);
|
||||||
find.stream = msg->stream;
|
find.stream = msg->stream;
|
||||||
if ((cf = RB_FIND(client_files, files, &find)) == NULL)
|
if ((cf = RB_FIND(client_files, files, &find)) == NULL)
|
||||||
return;
|
return (0);
|
||||||
|
|
||||||
log_debug("file %d read done", cf->stream);
|
log_debug("file %d read done", cf->stream);
|
||||||
cf->error = msg->error;
|
cf->error = msg->error;
|
||||||
file_fire_done(cf);
|
file_fire_done(cf);
|
||||||
|
return (0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -949,8 +949,8 @@ screen_redraw_draw_pane(struct screen_redraw_ctx *ctx, struct window_pane *wp)
|
|||||||
struct colour_palette *palette = &wp->palette;
|
struct colour_palette *palette = &wp->palette;
|
||||||
struct grid_cell defaults;
|
struct grid_cell defaults;
|
||||||
struct visible_ranges *r;
|
struct visible_ranges *r;
|
||||||
struct visible_range *rr;
|
struct visible_range *rr = NULL;
|
||||||
u_int i, j, k, top, x, y, width;
|
u_int i, j, k, top, x, y, width, used;
|
||||||
|
|
||||||
if (wp->base.mode & MODE_SYNC)
|
if (wp->base.mode & MODE_SYNC)
|
||||||
screen_write_stop_sync(wp);
|
screen_write_stop_sync(wp);
|
||||||
@@ -997,11 +997,15 @@ screen_redraw_draw_pane(struct screen_redraw_ctx *ctx, struct window_pane *wp)
|
|||||||
tty_default_colours(&defaults, wp);
|
tty_default_colours(&defaults, wp);
|
||||||
|
|
||||||
r = tty_check_overlay_range(tty, x, y, width);
|
r = tty_check_overlay_range(tty, x, y, width);
|
||||||
for (k = 0; k < r->used; k++) {
|
used = r->used;
|
||||||
rr = &r->ranges[k];
|
|
||||||
if (rr->nx != 0) {
|
rr = xreallocarray(rr, used, sizeof *rr);
|
||||||
tty_draw_line(tty, s, rr->px - wp->xoff, j,
|
memcpy(rr, r->ranges, used * sizeof *rr);
|
||||||
rr->nx, rr->px, y, &defaults, palette);
|
|
||||||
|
for (k = 0; k < used; k++) {
|
||||||
|
if (rr[k].nx != 0) {
|
||||||
|
tty_draw_line(tty, s, rr[k].px - wp->xoff, j,
|
||||||
|
rr[k].nx, rr[k].px, y, &defaults, palette);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1009,6 +1013,7 @@ screen_redraw_draw_pane(struct screen_redraw_ctx *ctx, struct window_pane *wp)
|
|||||||
#ifdef ENABLE_SIXEL
|
#ifdef ENABLE_SIXEL
|
||||||
tty_draw_images(c, wp, s);
|
tty_draw_images(c, wp, s);
|
||||||
#endif
|
#endif
|
||||||
|
free(rr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Draw the panes scrollbars */
|
/* Draw the panes scrollbars */
|
||||||
|
|||||||
@@ -2235,13 +2235,16 @@ server_client_dispatch(struct imsg *imsg, void *arg)
|
|||||||
goto bad;
|
goto bad;
|
||||||
break;
|
break;
|
||||||
case MSG_WRITE_READY:
|
case MSG_WRITE_READY:
|
||||||
file_write_ready(&c->files, imsg);
|
if (file_write_ready(&c->files, imsg) != 0)
|
||||||
|
goto bad;
|
||||||
break;
|
break;
|
||||||
case MSG_READ:
|
case MSG_READ:
|
||||||
file_read_data(&c->files, imsg);
|
if (file_read_data(&c->files, imsg) != 0)
|
||||||
|
goto bad;
|
||||||
break;
|
break;
|
||||||
case MSG_READ_DONE:
|
case MSG_READ_DONE:
|
||||||
file_read_done(&c->files, imsg);
|
if (file_read_done(&c->files, imsg) != 0)
|
||||||
|
goto bad;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
6
tmux.h
6
tmux.h
@@ -2994,9 +2994,9 @@ void file_write_data(struct client_files *, struct imsg *);
|
|||||||
void file_write_close(struct client_files *, struct imsg *);
|
void file_write_close(struct client_files *, struct imsg *);
|
||||||
void file_read_open(struct client_files *, struct tmuxpeer *, struct imsg *,
|
void file_read_open(struct client_files *, struct tmuxpeer *, struct imsg *,
|
||||||
int, int, client_file_cb, void *);
|
int, int, client_file_cb, void *);
|
||||||
void file_write_ready(struct client_files *, struct imsg *);
|
int file_write_ready(struct client_files *, struct imsg *);
|
||||||
void file_read_data(struct client_files *, struct imsg *);
|
int file_read_data(struct client_files *, struct imsg *);
|
||||||
void file_read_done(struct client_files *, struct imsg *);
|
int file_read_done(struct client_files *, struct imsg *);
|
||||||
void file_read_cancel(struct client_files *, struct imsg *);
|
void file_read_cancel(struct client_files *, struct imsg *);
|
||||||
|
|
||||||
/* server.c */
|
/* server.c */
|
||||||
|
|||||||
2
window.c
2
window.c
@@ -411,7 +411,7 @@ window_set_name(struct window *w, const char *new_name)
|
|||||||
name = clean_name(new_name, "#");
|
name = clean_name(new_name, "#");
|
||||||
if (name != NULL) {
|
if (name != NULL) {
|
||||||
free(w->name);
|
free(w->name);
|
||||||
utf8_stravis(&w->name, new_name, VIS_OCTAL|VIS_CSTYLE|VIS_TAB|VIS_NL);
|
w->name = name;
|
||||||
notify_window("window-renamed", w);
|
notify_window("window-renamed", w);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user