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.
This commit is contained in:
meator 2021-06-17 22:22:41 +02:00 committed by Érico Nogueira Rolim
parent c374bbcc31
commit 5679f2d395
2 changed files with 49 additions and 1 deletions

View file

@ -0,0 +1,48 @@
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

View file

@ -1,7 +1,7 @@
# Template file for 'cgdb'
pkgname=cgdb
version=0.7.1
revision=1
revision=2
build_style=gnu-configure
configure_args="ac_cv_rl_version=6.3
ac_cv_file__proc_self_status=yes"