void-packages/srcpkgs/cgdb/patches/fixescape.patch
meator 5679f2d395 cgdb: fix escape sequences
This commit adds a patch that fixes bad escape sequences in prompt. This
should be fixed in next release of cgdb. The patch is based of
https://github.com/cgdb/cgdb/issues/239#issuecomment-706249589 and
https://github.com/cgdb/cgdb/issues/255#issuecomment-820546156.
2021-06-21 08:56:43 -03:00

48 lines
2.2 KiB
Diff

From 242ea26b6f4aa7ce2ce56cbb1b50cd93a3126a57 Mon Sep 17 00:00:00 2001
From: meator <coder64@protonmail.com>
Date: Thu, 17 Jun 2021 21:30:06 +0200
Subject: [PATCH] Patch
This is a patch for v0.7.1 of cgdb. It fixes bad escape sequences in prompt string. Based of https://github.com/cgdb/cgdb/issues/239#issuecomment-706249589 and https://github.com/cgdb/cgdb/issues/255#issuecomment-820546156.
---
cgdb/scroller.cpp | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/cgdb/scroller.cpp b/cgdb/scroller.cpp
index 2d01e82..d2d36ca 100644
--- a/cgdb/scroller.cpp
+++ b/cgdb/scroller.cpp
@@ -106,14 +106,27 @@ static char *parse(struct scroller *scr, struct hl_line_attr **attrs,
/* Carriage return -> Move back to the beginning of the line */
case '\r':
i = 0;
- if (buf[j + 1] != '\n') {
+ if ((buflen - j) >= 1 && buf[j + 1] != '\n') {
sbfree(*attrs);
*attrs = NULL;
}
break;
case '\033':
/* Handle ansi escape characters */
- if (hl_ansi_color_support(hl_groups_instance) &&
+ /* see https://conemu.github.io/en/AnsiEscapeCodes.html#SGR_Select_Graphic_Rendition_parameters
+ */
+ if ((buflen - j) >= 6
+ && buf[j + 1] == '[' && buf[j + 2] == '?' && buf[j + 3] == '2'
+ && buf[j + 4] == '0' && buf[j + 5] == '0' && buf[j + 6] == '4') {
+ /* simply ignore these escape sequences like e.g. "[?2004h" */
+ j += 7;
+ } else if ((buflen - j) >= 2 && buf[j + 1] == '[' && buf[j + 2] == '?') {
+ /* simply ignore these escape sequences like e.g. "[?1h" */
+ j += 4;
+ } else if ((buflen - j) >= 1 && (buf[j + 1] == '=' || buf[j + 1] == '>')) {
+ /* simply ignore these escape sequences */
+ j += 1;
+ } else if (hl_ansi_color_support(hl_groups_instance) &&
debugwincolor) {
int attr;
int ansi_count = hl_ansi_get_color_attrs(
--
2.32.0