GUACAMOLE-1632: Merge fill null chars before last printable char with spaces

This commit is contained in:
Virtually Nick 2024-06-11 14:44:29 -04:00 committed by GitHub
commit a52806ce0c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 0 deletions

View File

@ -283,6 +283,7 @@ static void guac_terminal_clipboard_append_row(guac_terminal* terminal,
char buffer[1024];
int i = start;
int eol;
guac_terminal_buffer_row* buffer_row =
guac_terminal_buffer_get_row(terminal->buffer, row, 0);
@ -296,6 +297,14 @@ static void guac_terminal_clipboard_append_row(guac_terminal* terminal,
if (end < 0 || end > buffer_row->length - 1)
end = buffer_row->length - 1;
/* Get position of last not null char */
for (eol = buffer_row->length; eol > start; eol--) {
if (buffer_row->characters[eol].value != 0)
break;
}
/* Repeatedly convert chunks of terminal buffer rows until entire specified
* region has been appended to clipboard */
while (i <= end) {
@ -308,6 +317,10 @@ static void guac_terminal_clipboard_append_row(guac_terminal* terminal,
int codepoint = buffer_row->characters[i].value;
/* Fill empty with spaces if not at end of line */
if (codepoint == 0 && i < eol)
codepoint = GUAC_CHAR_SPACE;
/* Ignore null (blank) characters */
if (codepoint == 0 || codepoint == GUAC_CHAR_CONTINUATION)
continue;

View File

@ -41,6 +41,11 @@
*/
#define GUAC_CHAR_CONTINUATION -1
/**
* The ASCII code of space.
*/
#define GUAC_CHAR_SPACE 32
/**
* Terminal attributes, as can be applied to a single character.
*/