more work on ssh data transmission

This commit is contained in:
Kovid Goyal
2022-03-03 21:24:42 +05:30
parent 4279f20daf
commit f37d947dd5
7 changed files with 103 additions and 35 deletions
+13 -20
View File
@@ -1071,27 +1071,20 @@ dispatch_dcs(Screen *screen, PyObject DUMP_UNUSED *dump_callback) {
Py_DECREF(cmd);
} else PyErr_Clear();
#undef CMD_PREFIX
#define PRINT_PREFIX "kitty-print|"
} else if (startswith(screen->parser_buf + 1, screen->parser_buf_pos - 1, PRINT_PREFIX)) {
const size_t pp_size = sizeof(PRINT_PREFIX);
PyObject *msg = PyUnicode_FromKindAndData(PyUnicode_4BYTE_KIND, screen->parser_buf + pp_size, screen->parser_buf_pos - pp_size);
if (msg != NULL) {
REPORT_OSC2(screen_handle_print, (char)screen->parser_buf[0], msg);
screen_handle_print(screen, msg);
Py_DECREF(msg);
} else PyErr_Clear();
#undef PRINT_PREFIX
#define ECHO_PREFIX "kitty-echo|"
} else if (startswith(screen->parser_buf + 1, screen->parser_buf_pos - 1, ECHO_PREFIX)) {
const size_t pp_size = sizeof(ECHO_PREFIX);
PyObject *msg = PyUnicode_FromKindAndData(PyUnicode_4BYTE_KIND, screen->parser_buf + pp_size, screen->parser_buf_pos - pp_size);
if (msg != NULL) {
REPORT_OSC2(screen_handle_echo, (char)screen->parser_buf[0], msg);
screen_handle_echo(screen, msg);
Py_DECREF(msg);
} else PyErr_Clear();
#undef ECHO_PREFIX
#define IF_SIMPLE_PREFIX(prefix, func) \
if (startswith(screen->parser_buf + 1, screen->parser_buf_pos - 1, prefix)) { \
const size_t pp_size = sizeof(prefix); \
PyObject *msg = PyUnicode_FromKindAndData(PyUnicode_4BYTE_KIND, screen->parser_buf + pp_size, screen->parser_buf_pos - pp_size); \
if (msg != NULL) { \
REPORT_OSC2(func, (char)screen->parser_buf[0], msg); \
func(screen, msg); \
Py_DECREF(msg); \
} else PyErr_Clear();
} else IF_SIMPLE_PREFIX("kitty-print|", screen_handle_print)
} else IF_SIMPLE_PREFIX("kitty-echo|", screen_handle_echo)
} else IF_SIMPLE_PREFIX("kitty-ssh|", screen_handle_ssh)
#undef IF_SIMPLE_PREFIX
} else {
REPORT_ERROR("Unrecognized DCS @ code: 0x%x", screen->parser_buf[1]);
}