From 759884ddd42846d4c705961c142670f7f7214848 Mon Sep 17 00:00:00 2001
From: Oliver
Date: Sun, 2 Nov 2025 19:59:34 +0100
Subject: [PATCH] Allow to backspace with 'Delete' (and some optimization)
---
libsrc/conio/cgets.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/libsrc/conio/cgets.c b/libsrc/conio/cgets.c
index 290a6b131..e0d2c3bd0 100644
--- a/libsrc/conio/cgets.c
+++ b/libsrc/conio/cgets.c
@@ -38,7 +38,7 @@ char* __fastcall__ cgets (char* buffer, int size)
/* Actually just the last column! */
--w;
cursor (1);
- for (buffer[i] = '\0', --size; i < size; ) {
+ for (--size; i < size; ) {
c = cgetc ();
/* Handle CR/LF */
if (strchr (CRLF, c)) {
@@ -47,10 +47,14 @@ char* __fastcall__ cgets (char* buffer, int size)
break;
}
/* Handle backspace */
- if (c == '\b') {
+ if (c == '\b'
+#ifdef CH_DEL
+ || c == CH_DEL
+#endif
+ ) {
if (i > 0) {
/* Remove the character */
- buffer[--i] = '\0';
+ --i;
/* Logic to account for line wrapping */
y = wherey ();
x = wherex ();
@@ -64,11 +68,11 @@ char* __fastcall__ cgets (char* buffer, int size)
/* Handle regular characters */
} else if (isprint (c)) {
cputc (c);
- buffer[i] = c;
- buffer[++i] = '\0';
+ buffer[i++] = c;
}
}
cursor (0);
+ buffer[i] = '\0';
}
/* Done */