Output more details about unknown CSI codes
This commit is contained in:
parent
490310a9f1
commit
013fd31493
@ -33,6 +33,17 @@ utoi(uint32_t *buf, unsigned int sz) {
|
|||||||
}
|
}
|
||||||
return ans;
|
return ans;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static inline const char*
|
||||||
|
utf8(char_type codepoint) {
|
||||||
|
if (!codepoint) return "";
|
||||||
|
static char buf[8];
|
||||||
|
int n = encode_utf8(codepoint, buf);
|
||||||
|
buf[n] = 0;
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
// }}}
|
// }}}
|
||||||
|
|
||||||
// Macros {{{
|
// Macros {{{
|
||||||
@ -354,6 +365,21 @@ restore_cursor(Screen *s, unsigned int UNUSED param, bool private) {
|
|||||||
else screen_restore_cursor(s);
|
else screen_restore_cursor(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline const char*
|
||||||
|
repr_csi_params(unsigned int *params, unsigned int num_params) {
|
||||||
|
if (!num_params) return "";
|
||||||
|
static char buf[256];
|
||||||
|
int pos = 0;
|
||||||
|
while (pos < 200 && num_params) {
|
||||||
|
const char *fmt = num_params > 1 ? "%u " : "%u";
|
||||||
|
int ret = snprintf(buf + pos, sizeof(buf) - pos - 1, fmt, params[num_params--]);
|
||||||
|
if (ret < 0) return "An error occurred formatting the params array";
|
||||||
|
pos += ret;
|
||||||
|
}
|
||||||
|
buf[pos] = 0;
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
dispatch_csi(Screen *screen, PyObject DUMP_UNUSED *dump_callback) {
|
dispatch_csi(Screen *screen, PyObject DUMP_UNUSED *dump_callback) {
|
||||||
#define CALL_CSI_HANDLER1(name, defval) \
|
#define CALL_CSI_HANDLER1(name, defval) \
|
||||||
@ -499,11 +525,11 @@ dispatch_csi(Screen *screen, PyObject DUMP_UNUSED *dump_callback) {
|
|||||||
// DECRQM
|
// DECRQM
|
||||||
CALL_CSI_HANDLER1P(report_mode_status, 0, '?');
|
CALL_CSI_HANDLER1P(report_mode_status, 0, '?');
|
||||||
} else {
|
} else {
|
||||||
REPORT_ERROR("Unknown DECSTR CSI sequence with start and end modifiers: 0x%x 0x%x", start_modifier, end_modifier);
|
REPORT_ERROR("Unknown DECSTR CSI sequence with start and end modifiers: '%c' '%c'", start_modifier, end_modifier);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
REPORT_ERROR("Unknown CSI code: 0x%x", code);
|
REPORT_ERROR("Unknown CSI code: '%s' with start_modifier: '%c' and end_modifier: '%c' and parameters: '%s'", utf8(code), start_modifier, end_modifier, repr_csi_params(params, num_params));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// }}}
|
// }}}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user