dcs: we have no parent terminal to pass through to

This commit is contained in:
Daniel Eklöf 2019-07-21 18:22:26 +02:00
parent 2c1c49e499
commit 2096753b52
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
6 changed files with 1 additions and 59 deletions

32
dcs.c
View file

@ -1,32 +0,0 @@
#include "dcs.h"
#define LOG_MODULE "dcs"
#define LOG_ENABLE_DBG 0
#include "log.h"
void
dcs_passthrough(struct terminal *term)
{
LOG_DBG("DCS passthrough: %.*s (%zu bytes)",
(int)term->vt.dcs.idx, term->vt.dcs.data, term->vt.dcs.idx);
}
bool
dcs_ensure_size(struct terminal *term, size_t required_size)
{
if (required_size <= term->vt.dcs.size)
return true;
size_t new_size = (required_size + 127) / 128 * 128;
assert(new_size > 0);
uint8_t *new_data = realloc(term->vt.dcs.data, new_size);
if (new_data == NULL) {
LOG_ERRNO("failed to increase size of DCS buffer");
return false;
}
term->vt.dcs.data = new_data;
term->vt.dcs.size = new_size;
return true;
}

7
dcs.h
View file

@ -1,7 +0,0 @@
#pragma once
#include <stdbool.h>
#include "terminal.h"
void dcs_passthrough(struct terminal *term);
bool dcs_ensure_size(struct terminal *term, size_t required_size);

1
main.c
View file

@ -842,7 +842,6 @@ out:
xkb_context_unref(term.kbd.xkb);
free(term.vt.osc.data);
free(term.vt.dcs.data);
for (int row = 0; row < term.normal.num_rows; row++)
grid_row_free(term.normal.rows[row]);
free(term.normal.rows);

View file

@ -63,7 +63,6 @@ executable(
'config.c', 'config.h',
'commands.c', 'commands.h',
'csi.c', 'csi.h',
'dcs.c', 'dcs.h',
'font.c', 'font.h',
'grid.c', 'grid.h',
'input.c', 'input.h',

View file

@ -129,11 +129,6 @@ struct vt {
size_t size;
size_t idx;
} osc;
struct {
uint8_t *data;
size_t size;
size_t idx;
} dcs;
struct {
uint8_t data[4];
size_t idx;

14
vt.c
View file

@ -9,7 +9,6 @@
#define LOG_ENABLE_DBG 0
#include "log.h"
#include "csi.h"
#include "dcs.h"
#include "grid.h"
#include "osc.h"
@ -931,20 +930,9 @@ action(struct terminal *term, enum action _action, uint8_t c)
break;
case ACTION_HOOK:
term->vt.dcs.idx = 0;
break;
case ACTION_PUT:
if (!dcs_ensure_size(term, term->vt.dcs.idx + 1))
break;
term->vt.dcs.data[term->vt.dcs.idx++] = c;
break;
case ACTION_UNHOOK:
if (!dcs_ensure_size(term, term->vt.dcs.idx + 1))
break;
term->vt.dcs.data[term->vt.dcs.idx] = '\0';
dcs_passthrough(term);
/* We have no parent terminal to pass through to */
break;
case ACTION_UTF8_2_ENTRY: