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) {