From b28bc1fb793741e2650f2d4fba077fc7b8e70812 Mon Sep 17 00:00:00 2001 From: Manoj Ampalam Date: Thu, 22 Sep 2016 19:41:27 -0700 Subject: [PATCH] Manual Merge change 4e76517df10f1fb999a3a2d5546c24b73cc1f933 ID Author Date Message 4e76517df10f1fb999a3a2d5546c24b73cc1f933 Ray Hayes 9/20/2016 9:07:50 PM -07:00 Fixes to handle bash formatting on Windows --- contrib/win32/win32compat/ansiprsr.c | 12 ++++++------ contrib/win32/win32compat/shell-host.c | 6 ++++-- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/contrib/win32/win32compat/ansiprsr.c b/contrib/win32/win32compat/ansiprsr.c index a032df9..b27d370 100644 --- a/contrib/win32/win32compat/ansiprsr.c +++ b/contrib/win32/win32compat/ansiprsr.c @@ -188,7 +188,7 @@ unsigned char* ParseBuffer(unsigned char* pszBuffer, unsigned char* pszBufferEnd if (pszCurrent == pszNewCurrent) // Pointer didn't move inside Parse function { pszNewCurrent += ConWriteString( (char *)pszCurrent, 1); - return pszBuffer + 1; + return pszNewCurrent; } if (pszNewCurrent > pszCurrent) pszBuffer = pszNewCurrent; @@ -250,8 +250,8 @@ unsigned char* ParseBuffer(unsigned char* pszBuffer, unsigned char* pszBufferEnd case 10: pszBuffer++; AutoWrap = 1; - GoToNextLine(); - break; + bAtEOLN = TRUE; + break; case 12: pszBuffer++; @@ -869,7 +869,7 @@ unsigned char * ParseANSI(unsigned char * pszBuffer, unsigned char * pszBufferEn bCS1 = 0; bBkMode = 0; bCharMode = 0; - return pszCurrent; + return pszCurrent; } else return pszBuffer; @@ -912,9 +912,9 @@ unsigned char * ParseVT52(unsigned char * pszBuffer, unsigned char * pszBufferEn break; case 'H': // Cursor Home - ConSetCursorPosition(0, 0); + ConSetCursorPosition(1, 1); pszCurrent++; - bAtEOLN = FALSE; + bAtEOLN = FALSE; break; case 'I': // Reverse Line Feed pszCurrent++; diff --git a/contrib/win32/win32compat/shell-host.c b/contrib/win32/win32compat/shell-host.c index 1f71416..57ae3f3 100644 --- a/contrib/win32/win32compat/shell-host.c +++ b/contrib/win32/win32compat/shell-host.c @@ -227,7 +227,7 @@ void SendCharacter(HANDLE hInput, WORD attributes, char character) { char formatted_output[2048]; - static USHORT pColor = 0; + static WORD pattributes = 0; USHORT Color = 0; ULONG Status = 0; @@ -305,10 +305,12 @@ void SendCharacter(HANDLE hInput, WORD attributes, char character) { StringCbPrintfExA(Next, SizeLeft, &Next, &SizeLeft, 0, "m", Color); - if (bUseAnsiEmulation && Color != pColor) + if (bUseAnsiEmulation && attributes != pattributes) WriteFile(hInput, formatted_output, (Next - formatted_output), &wr, NULL); WriteFile(hInput, &character, 1, &wr, NULL); + + pattributes = attributes; } void SendBuffer(HANDLE hInput, CHAR_INFO *buffer, DWORD bufferSize) {