Merge branch 'obsd-master'

This commit is contained in:
Thomas Adam 2024-08-19 12:01:09 +01:00
commit 963e824f5f
2 changed files with 20 additions and 16 deletions

34
input.c
View File

@ -109,10 +109,11 @@ struct input_ctx {
int utf8started;
int ch;
int last;
struct utf8_data last;
int flags;
#define INPUT_DISCARD 0x1
#define INPUT_LAST 0x2
const struct input_state *state;
@ -867,8 +868,6 @@ input_reset(struct input_ctx *ictx, int clear)
input_clear(ictx);
ictx->last = -1;
ictx->state = &input_state_ground;
ictx->flags = 0;
}
@ -1149,7 +1148,9 @@ input_print(struct input_ctx *ictx)
utf8_set(&ictx->cell.cell.data, ictx->ch);
screen_write_collect_add(sctx, &ictx->cell.cell);
ictx->last = ictx->ch;
utf8_copy(&ictx->last, &ictx->cell.cell.data);
ictx->flags |= INPUT_LAST;
ictx->cell.cell.attr &= ~GRID_ATTR_CHARSET;
@ -1261,7 +1262,7 @@ input_c0_dispatch(struct input_ctx *ictx)
break;
}
ictx->last = -1;
ictx->flags &= ~INPUT_LAST;
return (0);
}
@ -1337,7 +1338,7 @@ input_esc_dispatch(struct input_ctx *ictx)
break;
}
ictx->last = -1;
ictx->flags &= ~INPUT_LAST;
return (0);
}
@ -1574,12 +1575,12 @@ input_csi_dispatch(struct input_ctx *ictx)
if (n > m)
n = m;
if (ictx->last == -1)
if (~ictx->flags & INPUT_LAST)
break;
ictx->ch = ictx->last;
utf8_copy(&ictx->cell.cell.data, &ictx->last);
for (i = 0; i < n; i++)
input_print(ictx);
screen_write_collect_add(sctx, &ictx->cell.cell);
break;
case INPUT_CSI_RCP:
input_restore_state(ictx);
@ -1649,7 +1650,7 @@ input_csi_dispatch(struct input_ctx *ictx)
}
ictx->last = -1;
ictx->flags &= ~INPUT_LAST;
return (0);
}
@ -2284,7 +2285,7 @@ input_enter_dcs(struct input_ctx *ictx)
input_clear(ictx);
input_start_timer(ictx);
ictx->last = -1;
ictx->flags &= ~INPUT_LAST;
}
/* DCS terminator (ST) received. */
@ -2341,7 +2342,7 @@ input_enter_osc(struct input_ctx *ictx)
input_clear(ictx);
input_start_timer(ictx);
ictx->last = -1;
ictx->flags &= ~INPUT_LAST;
}
/* OSC terminator (ST) received. */
@ -2436,7 +2437,7 @@ input_enter_apc(struct input_ctx *ictx)
input_clear(ictx);
input_start_timer(ictx);
ictx->last = -1;
ictx->flags &= ~INPUT_LAST;
}
/* APC terminator (ST) received. */
@ -2465,7 +2466,7 @@ input_enter_rename(struct input_ctx *ictx)
input_clear(ictx);
input_start_timer(ictx);
ictx->last = -1;
ictx->flags &= ~INPUT_LAST;
}
/* Rename terminator (ST) received. */
@ -2509,7 +2510,7 @@ input_top_bit_set(struct input_ctx *ictx)
struct screen_write_ctx *sctx = &ictx->ctx;
struct utf8_data *ud = &ictx->utf8data;
ictx->last = -1;
ictx->flags &= ~INPUT_LAST;
if (!ictx->utf8started) {
if (utf8_open(ud, ictx->ch) != UTF8_MORE)
@ -2535,6 +2536,9 @@ input_top_bit_set(struct input_ctx *ictx)
utf8_copy(&ictx->cell.cell.data, ud);
screen_write_collect_add(sctx, &ictx->cell.cell);
utf8_copy(&ictx->last, &ictx->cell.cell.data);
ictx->flags |= INPUT_LAST;
return (0);
}

View File

@ -1212,7 +1212,7 @@ tty_keys_clipboard(struct tty *tty, const char *buf, size_t len, size_t *size)
}
if (end == len)
return (1);
*size = end + terminator;
*size = end + 1;
/* Skip the initial part. */
buf += 5;