Fix finding 32-bit LLW from 64-bit; fix \e[K; release v1.65.

This commit is contained in:
Jason Hood 2013-09-04 19:37:55 +10:00
parent 1448c72b66
commit 75a65af4d6
5 changed files with 23 additions and 16 deletions

5
ANSI.c
View File

@ -104,6 +104,9 @@
v1.64, 2 August, 2013: v1.64, 2 August, 2013:
better method of determining a console handle (see IsConsoleHandle). better method of determining a console handle (see IsConsoleHandle).
v1.65, 28 August, 2013:
fix \e[K (was using window, not buffer).
*/ */
#include "ansicon.h" #include "ansicon.h"
@ -547,7 +550,7 @@ void InterpretEscSeq( void )
switch (es_argv[0]) switch (es_argv[0])
{ {
case 0: // ESC[0K Clear to end of line case 0: // ESC[0K Clear to end of line
len = Info.srWindow.Right - Info.dwCursorPosition.X + 1; len = Info.dwSize.X - Info.dwCursorPosition.X + 1;
FillConsoleOutputCharacter( hConOut, ' ', len, FillConsoleOutputCharacter( hConOut, ' ', len,
Info.dwCursorPosition, Info.dwCursorPosition,
&NumberOfCharsWritten ); &NumberOfCharsWritten );

View File

@ -78,7 +78,7 @@
don't write the reset sequence if output is redirected. don't write the reset sequence if output is redirected.
*/ */
#define PDATE L"2 August, 2013" #define PDATE L"4 September, 2013"
#include "ansicon.h" #include "ansicon.h"
#include "version.h" #include "version.h"

View File

@ -32,10 +32,11 @@ TWow64SetThreadContext Wow64SetThreadContext;
#define GetThreadContext Wow64GetThreadContext #define GetThreadContext Wow64GetThreadContext
#define SetThreadContext Wow64SetThreadContext #define SetThreadContext Wow64SetThreadContext
#define MakeVA( cast, offset ) (cast)((DWORD_PTR)base + (DWORD)(offset)) #define MakeVA( cast, offset ) (cast)((DWORD_PTR)pDosHeader + (DWORD)(offset))
extern DWORD LLW32; extern DWORD LLW32;
LPVOID base; LPVOID base;
static PIMAGE_DOS_HEADER pDosHeader;
int export_cmp( const void* a, const void* b ) int export_cmp( const void* a, const void* b )
{ {
@ -54,7 +55,6 @@ BOOL get_LLW32( void )
HMODULE kernel32; HMODULE kernel32;
TCHAR buf[MAX_PATH]; TCHAR buf[MAX_PATH];
UINT len; UINT len;
PIMAGE_DOS_HEADER pDosHeader;
PIMAGE_NT_HEADERS32 pNTHeader; PIMAGE_NT_HEADERS32 pNTHeader;
PIMAGE_EXPORT_DIRECTORY pExportDir; PIMAGE_EXPORT_DIRECTORY pExportDir;
PDWORD fun_table, name_table; PDWORD fun_table, name_table;
@ -63,7 +63,7 @@ BOOL get_LLW32( void )
len = GetSystemWow64Directory( buf, MAX_PATH ); len = GetSystemWow64Directory( buf, MAX_PATH );
wcscpy( buf + len, L"\\kernel32.dll" ); wcscpy( buf + len, L"\\kernel32.dll" );
// MinGW-w64 has a typo, calling it LINRARY. // MinGW-w64 had a typo, calling it LINRARY.
kernel32 = LoadLibraryEx( buf, NULL, 0x20/*LOAD_LIBRARY_AS_IMAGE_RESOURCE*/ ); kernel32 = LoadLibraryEx( buf, NULL, 0x20/*LOAD_LIBRARY_AS_IMAGE_RESOURCE*/ );
if (kernel32 == NULL) if (kernel32 == NULL)
{ {
@ -71,9 +71,7 @@ BOOL get_LLW32( void )
return FALSE; return FALSE;
} }
// The handle uses low bits as flags, so strip 'em off. // The handle uses low bits as flags, so strip 'em off.
base = (LPVOID)((DWORD_PTR)kernel32 & ~0xFFFF); pDosHeader = (PIMAGE_DOS_HEADER)((DWORD_PTR)kernel32 & ~0xFFFF);
pDosHeader = (PIMAGE_DOS_HEADER)base;
pNTHeader = MakeVA( PIMAGE_NT_HEADERS32, pDosHeader->e_lfanew ); pNTHeader = MakeVA( PIMAGE_NT_HEADERS32, pDosHeader->e_lfanew );
pExportDir = MakeVA( PIMAGE_EXPORT_DIRECTORY, pExportDir = MakeVA( PIMAGE_EXPORT_DIRECTORY,
pNTHeader->OptionalHeader. pNTHeader->OptionalHeader.

View File

@ -3,7 +3,7 @@
Copyright 2005-2013 Jason Hood Copyright 2005-2013 Jason Hood
Version 1.64. Freeware Version 1.65. Freeware
Description Description
@ -270,6 +270,10 @@ Version History
Legend: + added, - bug-fixed, * changed. Legend: + added, - bug-fixed, * changed.
1.65 - 4 September, 2013:
- fix finding 32-bit LoadLibraryW address from 64-bit;
- fix \e[K (was using window, not buffer).
1.64 - 2 August, 2013: 1.64 - 2 August, 2013:
- improved detection of console output. - improved detection of console output.
@ -425,6 +429,8 @@ Acknowledgments
Leigh Hebblethwaite for documentation tweaks. Leigh Hebblethwaite for documentation tweaks.
Vincent Fatica for pointing out \e[K was not right.
Contact Contact
======= =======
@ -452,5 +458,5 @@ Distribution
in LICENSE.txt. in LICENSE.txt.
=========================== ==============================
Jason Hood, 2 August, 2013. Jason Hood, 4 September, 2013.

View File

@ -2,11 +2,11 @@
version.h - Version defines. version.h - Version defines.
*/ */
#define PVERS L"1.64" // wide string #define PVERS L"1.65" // wide string
#define PVERSA "1.64" // ANSI string (windres 2.16.91 didn't like L) #define PVERSA "1.65" // ANSI string (windres 2.16.91 didn't like L)
#define PVERE L"164" // wide environment string #define PVERE L"165" // wide environment string
#define PVEREA "164" // ANSI environment string #define PVEREA "165" // ANSI environment string
#define PVERB 1,6,4,0 // binary (resource) #define PVERB 1,6,5,0 // binary (resource)
#ifdef _WIN64 #ifdef _WIN64
# define BITS L"64" # define BITS L"64"