Module Name: src
Committed By: jmcneill
Date: Sat Jan 25 10:09:46 UTC 2020
Modified Files:
src/sys/stand/efiboot: prompt.c
Log Message:
Fix for disappearing counters on graphics consoles
To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/stand/efiboot/prompt.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/stand/efiboot/prompt.c
diff -u src/sys/stand/efiboot/prompt.c:1.5 src/sys/stand/efiboot/prompt.c:1.6
--- src/sys/stand/efiboot/prompt.c:1.5 Sun Sep 29 00:52:26 2019
+++ src/sys/stand/efiboot/prompt.c Sat Jan 25 10:09:46 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: prompt.c,v 1.5 2019/09/29 00:52:26 jakllsch Exp $ */
+/* $NetBSD: prompt.c,v 1.6 2020/01/25 10:09:46 jmcneill Exp $ */
/*
* Copyright (c) 1996, 1997
@@ -75,23 +75,27 @@ awaitkey(int timeout, int tell)
{
int i = timeout * POLL_FREQ;
int last_secs = -1, secs;
+ int last_len = -1, n;
+ char buf[32];
char c = 0;
for (;;) {
if (tell) {
- char buf[32];
int len;
secs = (i + POLL_FREQ - 1) / POLL_FREQ;
if (secs != last_secs) {
- len = snprintf(buf, sizeof(buf), "%d seconds. ", (i + POLL_FREQ - 1) / POLL_FREQ);
- if (len > 0 && len < sizeof(buf)) {
+ if (last_len != -1) {
char *p = buf;
- printf("%s", buf);
- while (*p)
+ for (n = 0; n < last_len; n++)
*p++ = '\b';
+ *p = '\0';
printf("%s", buf);
}
+ len = snprintf(buf, sizeof(buf), "%d seconds. ", (i + POLL_FREQ - 1) / POLL_FREQ);
+ if (len > 0 && len < sizeof(buf))
+ printf("%s", buf);
+ last_len = len;
last_secs = secs;
}
}
@@ -109,8 +113,16 @@ awaitkey(int timeout, int tell)
}
out:
- if (tell)
+ if (tell) {
+ if (last_len != -1) {
+ char *p = buf;
+ for (n = 0; n < last_len; n++)
+ *p++ = '\b';
+ *p = '\0';
+ printf("%s", buf);
+ }
printf("0 seconds. \n");
+ }
return c;
}