grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v2] password: Fix backspace in username prompt


From: egori
Subject: [PATCH v2] password: Fix backspace in username prompt
Date: Wed, 17 Mar 2021 09:42:55 +0300

From: Egor Ignatov <egori@altlinux.org>

Make backspace work in superuser login prompt.

The problem was that bidi logical to visual ignored BN type,
so you couldn't print control characters.

Resolves: #60114
Signed-off-by: Egor Ignatov <egori@altlinux.org>
---
 grub-core/normal/charset.c | 1 +
 grub-core/term/gfxterm.c   | 9 ++++++++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/grub-core/normal/charset.c b/grub-core/normal/charset.c
index 4dfcc3107..77073c12f 100644
--- a/grub-core/normal/charset.c
+++ b/grub-core/normal/charset.c
@@ -931,6 +931,7 @@ grub_bidi_line_logical_to_visual (const grub_uint32_t 
*logical,
            pop_stack ();
            break;
          case GRUB_BIDI_TYPE_BN:
+           visual_len++;
            break;
          case GRUB_BIDI_TYPE_R:
          case GRUB_BIDI_TYPE_AL:
diff --git a/grub-core/term/gfxterm.c b/grub-core/term/gfxterm.c
index af7c090a3..5b0660cd2 100644
--- a/grub-core/term/gfxterm.c
+++ b/grub-core/term/gfxterm.c
@@ -847,7 +847,14 @@ grub_gfxterm_putchar (struct grub_term_output *term,
         {
         case '\b':
           if (virtual_screen.cursor_x > 0)
-            virtual_screen.cursor_x--;
+            {
+              virtual_screen.cursor_x--;
+            }
+          else if (virtual_screen.cursor_y > 0)
+            {
+              virtual_screen.cursor_y--;
+              virtual_screen.cursor_x = virtual_screen.columns-2;
+            }
           break;
 
         case '\n':
-- 
2.25.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]