aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2020-01-07 09:49:32 +0000
committerRon Yorston <rmy@pobox.com>2020-01-07 09:49:32 +0000
commitd15f2823f3431165f45f2ed6eadcf62a931cdcf5 (patch)
treeaff1da9de27a2b9abb1d58bcb181f7160daf797a
parentfe5a564b429e8472c68f931cc9b53815b889bb1f (diff)
downloadbusybox-w32-d15f2823f3431165f45f2ed6eadcf62a931cdcf5.tar.gz
busybox-w32-d15f2823f3431165f45f2ed6eadcf62a931cdcf5.tar.bz2
busybox-w32-d15f2823f3431165f45f2ed6eadcf62a931cdcf5.zip
winansi: restore correct attributes after ls
As reported in GitHub issue #178 the last colour set by the ls command is retained in the console. This is due to the previous commit reinitialising the stored attributes more frequently than it should. Attriubutes should only be initialised once.
-rw-r--r--win32/winansi.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/win32/winansi.c b/win32/winansi.c
index f45970747..0d8cf662a 100644
--- a/win32/winansi.c
+++ b/win32/winansi.c
@@ -32,9 +32,15 @@ static HANDLE get_console(void)
32 32
33static void init(void) 33static void init(void)
34{ 34{
35 HANDLE console = get_console(); 35 static int initialised = FALSE;
36 HANDLE console;
36 CONSOLE_SCREEN_BUFFER_INFO sbi; 37 CONSOLE_SCREEN_BUFFER_INFO sbi;
37 38
39 if (initialised)
40 return;
41 initialised = TRUE;
42
43 console = get_console();
38 if (GetConsoleScreenBufferInfo(console, &sbi)) { 44 if (GetConsoleScreenBufferInfo(console, &sbi)) {
39 attr = plain_attr = sbi.wAttributes; 45 attr = plain_attr = sbi.wAttributes;
40 negative = 0; 46 negative = 0;