diff --git a/controls/menu.c b/controls/menu.c index 2b174372271..dcbdc17eeff 100644 --- a/controls/menu.c +++ b/controls/menu.c @@ -4086,7 +4086,7 @@ HMENU16 WINAPI LoadMenu16( HINSTANCE16 instance, LPCSTR name ) HGLOBAL16 handle; HMENU16 hMenu; - TRACE("(%04x,%s)\n", instance, debugres_a(name) ); + TRACE("(%04x,%s)\n", instance, debugstr_a(name) ); if (HIWORD(name)) { diff --git a/dlls/commdlg/cdlg32.c b/dlls/commdlg/cdlg32.c index faa143a2eac..f3bcbfc90a1 100644 --- a/dlls/commdlg/cdlg32.c +++ b/dlls/commdlg/cdlg32.c @@ -63,7 +63,7 @@ static char * GPA_string = "Failed to get entry point %s for hinst = 0x%08x\n"; #define GPA(dest, hinst, name) \ if(!(dest = (void*)GetProcAddress(hinst,name)))\ { \ - ERR(GPA_string, debugres_a(name), hinst); \ + ERR(GPA_string, debugstr_a(name), hinst); \ return FALSE; \ } diff --git a/dlls/ntdll/debugtools.c b/dlls/ntdll/debugtools.c index 013e48529f1..1cba5ef32d2 100644 --- a/dlls/ntdll/debugtools.c +++ b/dlls/ntdll/debugtools.c @@ -27,6 +27,7 @@ #include "wine/debug.h" #include "wine/exception.h" +#include "wine/unicode.h" #include "thread.h" #include "winbase.h" #include "winnt.h" @@ -92,11 +93,12 @@ inline static char *put_string_a( const char *src, int n ) { char *dst, *res; + if (n == -1) n = strlen(src); if (n < 0) n = 0; else if (n > 200) n = 200; dst = res = gimme1 (n * 4 + 6); *dst++ = '"'; - while (n-- > 0 && *src) + while (n-- > 0) { unsigned char c = *src++; switch (c) @@ -135,12 +137,13 @@ inline static char *put_string_w( const WCHAR *src, int n ) { char *dst, *res; + if (n == -1) n = strlenW(src); if (n < 0) n = 0; else if (n > 200) n = 200; dst = res = gimme1 (n * 5 + 7); *dst++ = 'L'; *dst++ = '"'; - while (n-- > 0 && *src) + while (n-- > 0) { WCHAR c = *src++; switch (c) @@ -174,9 +177,9 @@ inline static char *put_string_w( const WCHAR *src, int n ) } /*********************************************************************** - * wine_dbgstr_an (NTDLL.@) + * NTDLL_dbgstr_an */ -const char *wine_dbgstr_an( const char *src, int n ) +static const char *NTDLL_dbgstr_an( const char *src, int n ) { char *res, *old_pos; struct debug_info *info = get_info(); @@ -204,9 +207,9 @@ const char *wine_dbgstr_an( const char *src, int n ) } /*********************************************************************** - * wine_dbgstr_wn (NTDLL.@) + * NTDLL_dbgstr_wn */ -const char *wine_dbgstr_wn( const WCHAR *src, int n ) +static const char *NTDLL_dbgstr_wn( const WCHAR *src, int n ) { char *res, *old_pos; struct debug_info *info = get_info(); @@ -235,9 +238,9 @@ const char *wine_dbgstr_wn( const WCHAR *src, int n ) } /*********************************************************************** - * wine_dbgstr_guid (NTDLL.@) + * NTDLL_dbgstr_guid */ -const char *wine_dbgstr_guid( const GUID *id ) +static const char *NTDLL_dbgstr_guid( const GUID *id ) { char *str; @@ -259,9 +262,9 @@ const char *wine_dbgstr_guid( const GUID *id ) } /*********************************************************************** - * wine_dbg_vprintf (NTDLL.@) + * NTDLL_dbg_vprintf */ -int wine_dbg_vprintf( const char *format, va_list args ) +static int NTDLL_dbg_vprintf( const char *format, va_list args ) { struct debug_info *info = get_info(); char *p; @@ -296,36 +299,31 @@ int wine_dbg_vprintf( const char *format, va_list args ) } /*********************************************************************** - * wine_dbg_printf (NTDLL.@) + * NTDLL_dbg_vlog */ -int wine_dbg_printf(const char *format, ...) +static int NTDLL_dbg_vlog( int cls, const char *channel, + const char *function, const char *format, va_list args ) { - int ret; - va_list valist; + static const char *classes[] = { "fixme", "err", "warn", "trace" }; + int ret = 0; - va_start(valist, format); - ret = wine_dbg_vprintf( format, valist ); - va_end(valist); + if (TRACE_ON(tid)) + ret = wine_dbg_printf( "%08lx:", (DWORD)NtCurrentTeb()->tid ); + if (cls < sizeof(classes)/sizeof(classes[0])) + ret += wine_dbg_printf( "%s:%s:%s ", classes[cls], channel + 1, function ); + if (format) + ret += NTDLL_dbg_vprintf( format, args ); return ret; } /*********************************************************************** - * wine_dbg_log (NTDLL.@) + * debug_init */ -int wine_dbg_log(enum __WINE_DEBUG_CLASS cls, const char *channel, - const char *function, const char *format, ... ) +DECL_GLOBAL_CONSTRUCTOR(debug_init) { - static const char *classes[__WINE_DBCL_COUNT] = { "fixme", "err", "warn", "trace" }; - va_list valist; - int ret = 0; - - va_start(valist, format); - if (TRACE_ON(tid)) - ret = wine_dbg_printf( "%08lx:", (DWORD)NtCurrentTeb()->tid ); - if (cls < __WINE_DBCL_COUNT) - ret += wine_dbg_printf( "%s:%s:%s ", classes[cls], channel + 1, function ); - if (format) - ret += wine_dbg_vprintf( format, valist ); - va_end(valist); - return ret; + __wine_dbgstr_an = NTDLL_dbgstr_an; + __wine_dbgstr_wn = NTDLL_dbgstr_wn; + __wine_dbgstr_guid = NTDLL_dbgstr_guid; + __wine_dbg_vprintf = NTDLL_dbg_vprintf; + __wine_dbg_vlog = NTDLL_dbg_vlog; } diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index 74d66ad020d..61ec0e97312 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -1021,14 +1021,6 @@ name ntdll # Relays @ cdecl -norelay -i386 __wine_call_from_32_regs() __wine_call_from_32_regs -# Debugging interface -@ cdecl -norelay wine_dbgstr_an(str long) wine_dbgstr_an -@ cdecl -norelay wine_dbgstr_wn(str long) wine_dbgstr_wn -@ cdecl -norelay wine_dbgstr_guid(ptr) wine_dbgstr_guid -@ cdecl -norelay wine_dbg_vprintf(str ptr) wine_dbg_vprintf -@ varargs wine_dbg_printf(str) wine_dbg_printf -@ varargs wine_dbg_log(long str str str) wine_dbg_log - # Server interface @ cdecl -norelay wine_server_call(ptr) wine_server_call @ cdecl wine_server_handle_to_fd(long long ptr ptr ptr) wine_server_handle_to_fd diff --git a/dlls/user/resource.c b/dlls/user/resource.c index 76ec677065d..183d9c02927 100644 --- a/dlls/user/resource.c +++ b/dlls/user/resource.c @@ -47,7 +47,7 @@ HACCEL16 WINAPI LoadAccelerators16(HINSTANCE16 instance, LPCSTR lpTableName) { HRSRC16 hRsrc; - TRACE_(accel)("%04x %s\n", instance, debugres_a(lpTableName) ); + TRACE_(accel)("%04x %s\n", instance, debugstr_a(lpTableName) ); if (!(hRsrc = FindResource16( instance, lpTableName, RT_ACCELERATORA ))) { WARN_(accel)("couldn't find accelerator table resource\n"); diff --git a/if1632/relay.c b/if1632/relay.c index 551cbb3cb11..3f8bbec4fe7 100644 --- a/if1632/relay.c +++ b/if1632/relay.c @@ -248,12 +248,12 @@ void RELAY_DebugCallFrom16( CONTEXT86 *context ) break; case ARG_STR: DPRINTF( "%08x %s", *(int *)args16, - debugres_a( MapSL(*(SEGPTR *)args16 ))); + debugstr_a( MapSL(*(SEGPTR *)args16 ))); args16 += sizeof(int); break; case ARG_SEGSTR: DPRINTF( "%04x:%04x %s", *(WORD *)(args16+2), *(WORD *)args16, - debugres_a( MapSL(*(SEGPTR *)args16 )) ); + debugstr_a( MapSL(*(SEGPTR *)args16 )) ); args16 += sizeof(SEGPTR); break; default: @@ -289,12 +289,12 @@ void RELAY_DebugCallFrom16( CONTEXT86 *context ) case ARG_STR: args16 -= sizeof(int); DPRINTF( "%08x %s", *(int *)args16, - debugres_a( MapSL(*(SEGPTR *)args16 ))); + debugstr_a( MapSL(*(SEGPTR *)args16 ))); break; case ARG_SEGSTR: args16 -= sizeof(SEGPTR); DPRINTF( "%04x:%04x %s", *(WORD *)(args16+2), *(WORD *)args16, - debugres_a( MapSL(*(SEGPTR *)args16 )) ); + debugstr_a( MapSL(*(SEGPTR *)args16 )) ); break; default: break; diff --git a/include/wine/debug.h b/include/wine/debug.h index 789fc954321..f4dcce3e686 100644 --- a/include/wine/debug.h +++ b/include/wine/debug.h @@ -87,6 +87,13 @@ enum __WINE_DEBUG_CLASS { #endif /* __GNUC__ */ +extern const char * (*__wine_dbgstr_an)( const char * s, int n ); +extern const char * (*__wine_dbgstr_wn)( const WCHAR *s, int n ); +extern const char * (*__wine_dbgstr_guid)( const struct _GUID *id ); +extern int (*__wine_dbg_vprintf)( const char *format, va_list args ); +extern int (*__wine_dbg_vlog)( int cls, const char *channel, + const char *function, const char *format, va_list args ); + /* * Exported definitions and macros @@ -95,17 +102,15 @@ enum __WINE_DEBUG_CLASS { /* These function return a printable version of a string, including quotes. The string will be valid for some time, but not indefinitely as strings are re-used. */ -extern const char *wine_dbgstr_an( const char * s, int n ); -extern const char *wine_dbgstr_wn( const WCHAR *s, int n ); -extern const char *wine_dbgstr_guid( const struct _GUID *id ); +inline static const char *wine_dbgstr_guid( const struct _GUID *id ) { return __wine_dbgstr_guid(id); } +inline static const char *wine_dbgstr_an( const char * s, int n ) { return __wine_dbgstr_an(s, n); } +inline static const char *wine_dbgstr_wn( const WCHAR *s, int n ) { return __wine_dbgstr_wn(s, n); } +inline static const char *wine_dbgstr_a( const char *s ) { return __wine_dbgstr_an( s, -1 ); } +inline static const char *wine_dbgstr_w( const WCHAR *s ) { return __wine_dbgstr_wn( s, -1 ); } -extern int wine_dbg_vprintf( const char *format, va_list args ) __WINE_PRINTF_ATTR(1,0); extern int wine_dbg_printf( const char *format, ... ) __WINE_PRINTF_ATTR(1,2); -extern int wine_dbg_log( enum __WINE_DEBUG_CLASS cls, const char *ch, - const char *func, const char *format, ... ) __WINE_PRINTF_ATTR(4,5); - -inline static const char *wine_dbgstr_a( const char *s ) { return wine_dbgstr_an( s, 80 ); } -inline static const char *wine_dbgstr_w( const WCHAR *s ) { return wine_dbgstr_wn( s, 80 ); } +extern int wine_dbg_log( int cls, const char *ch, const char *func, + const char *format, ... ) __WINE_PRINTF_ATTR(4,5); #define WINE_TRACE __WINE_DPRINTF(_TRACE,__wine_dbch___default) #define WINE_TRACE_(ch) __WINE_DPRINTF(_TRACE,__wine_dbch_##ch) @@ -135,13 +140,11 @@ inline static const char *wine_dbgstr_w( const WCHAR *s ) { return wine_dbgstr_w #ifdef __WINE__ /* Wine uses shorter names that are very likely to conflict with other software */ -inline static const char *debugstr_an( const char * s, int n ) { return wine_dbgstr_an( s, n ); } -inline static const char *debugstr_wn( const WCHAR *s, int n ) { return wine_dbgstr_wn( s, n ); } -inline static const char *debugstr_guid( const struct _GUID *id ) { return wine_dbgstr_guid(id); } -inline static const char *debugstr_a( const char *s ) { return wine_dbgstr_an( s, 80 ); } -inline static const char *debugstr_w( const WCHAR *s ) { return wine_dbgstr_wn( s, 80 ); } -inline static const char *debugres_a( const char *s ) { return wine_dbgstr_an( s, 80 ); } -inline static const char *debugres_w( const WCHAR *s ) { return wine_dbgstr_wn( s, 80 ); } +inline static const char *debugstr_an( const char * s, int n ) { return __wine_dbgstr_an( s, n ); } +inline static const char *debugstr_wn( const WCHAR *s, int n ) { return __wine_dbgstr_wn( s, n ); } +inline static const char *debugstr_guid( const struct _GUID *id ) { return __wine_dbgstr_guid(id); } +inline static const char *debugstr_a( const char *s ) { return __wine_dbgstr_an( s, -1 ); } +inline static const char *debugstr_w( const WCHAR *s ) { return __wine_dbgstr_wn( s, -1 ); } #define TRACE WINE_TRACE #define TRACE_(ch) WINE_TRACE_(ch) diff --git a/library/debug.c b/library/debug.c index 0d9f7da0ae4..d8fae8d8ce7 100644 --- a/library/debug.c +++ b/library/debug.c @@ -18,11 +18,20 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include "config.h" +#include "wine/port.h" + #include +#include +#include #include #include #include +#include "wine/debug.h" +#include "wine/library.h" +#include "wine/unicode.h" + struct dll { struct dll *next; /* linked list of dlls */ @@ -130,3 +139,187 @@ void wine_dbg_add_option( const char *name, unsigned char set, unsigned char cle dll = dll->next; } } + + +/* varargs wrapper for __wine_dbg_vprintf */ +int wine_dbg_printf( const char *format, ... ) +{ + int ret; + va_list valist; + + va_start(valist, format); + ret = __wine_dbg_vprintf( format, valist ); + va_end(valist); + return ret; +} + + +/* varargs wrapper for __wine_dbg_vlog */ +int wine_dbg_log( int cls, const char *channel, const char *func, const char *format, ... ) +{ + int ret; + va_list valist; + + va_start(valist, format); + ret = __wine_dbg_vlog( cls, channel, func, format, valist ); + va_end(valist); + return ret; +} + + +/* allocate some tmp string space */ +/* FIXME: this is not 100% thread-safe */ +static char *get_tmp_space( int size ) +{ + static char *list[32]; + static long pos; + char *ret; + int idx; + + idx = interlocked_xchg_add( &pos, 1 ) % (sizeof(list)/sizeof(list[0])); + if ((ret = realloc( list[idx], size ))) list[idx] = ret; + return ret; +} + + +/* default implementation of wine_dbgstr_an */ +static const char *default_dbgstr_an( const char *str, int n ) +{ + char *dst, *res; + + if (n == -1) n = strlen(str); + if (n < 0) n = 0; + else if (n > 200) n = 200; + dst = res = get_tmp_space( n * 4 + 6 ); + *dst++ = '"'; + while (n-- > 0) + { + unsigned char c = *str++; + switch (c) + { + case '\n': *dst++ = '\\'; *dst++ = 'n'; break; + case '\r': *dst++ = '\\'; *dst++ = 'r'; break; + case '\t': *dst++ = '\\'; *dst++ = 't'; break; + case '"': *dst++ = '\\'; *dst++ = '"'; break; + case '\\': *dst++ = '\\'; *dst++ = '\\'; break; + default: + if (c >= ' ' && c <= 126) + *dst++ = c; + else + { + *dst++ = '\\'; + *dst++ = '0' + ((c >> 6) & 7); + *dst++ = '0' + ((c >> 3) & 7); + *dst++ = '0' + ((c >> 0) & 7); + } + } + } + *dst++ = '"'; + if (*str) + { + *dst++ = '.'; + *dst++ = '.'; + *dst++ = '.'; + } + *dst = 0; + return res; +} + + +/* default implementation of wine_dbgstr_wn */ +static const char *default_dbgstr_wn( const WCHAR *str, int n ) +{ + char *dst, *res; + + if (n == -1) n = strlenW(str); + if (n < 0) n = 0; + else if (n > 200) n = 200; + dst = res = get_tmp_space( n * 5 + 7 ); + *dst++ = 'L'; + *dst++ = '"'; + while (n-- > 0) + { + WCHAR c = *str++; + switch (c) + { + case '\n': *dst++ = '\\'; *dst++ = 'n'; break; + case '\r': *dst++ = '\\'; *dst++ = 'r'; break; + case '\t': *dst++ = '\\'; *dst++ = 't'; break; + case '"': *dst++ = '\\'; *dst++ = '"'; break; + case '\\': *dst++ = '\\'; *dst++ = '\\'; break; + default: + if (c >= ' ' && c <= 126) + *dst++ = c; + else + { + *dst++ = '\\'; + sprintf(dst,"%04x",c); + dst+=4; + } + } + } + *dst++ = '"'; + if (*str) + { + *dst++ = '.'; + *dst++ = '.'; + *dst++ = '.'; + } + *dst = 0; + return res; +} + + +/* default implementation of wine_dbgstr_guid */ +static const char *default_dbgstr_guid( const struct _GUID *id ) +{ + char *str; + + if (!id) return "(null)"; + if (!((int)id >> 16)) + { + str = get_tmp_space( 12 ); + sprintf( str, "", (int)id & 0xffff ); + } + else + { + str = get_tmp_space( 40 ); + sprintf( str, "{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", + id->Data1, id->Data2, id->Data3, + id->Data4[0], id->Data4[1], id->Data4[2], id->Data4[3], + id->Data4[4], id->Data4[5], id->Data4[6], id->Data4[7] ); + } + return str; +} + + +/* default implementation of wine_dbg_vprintf */ +static int default_dbg_vprintf( const char *format, va_list args ) +{ + return vfprintf( stderr, format, args ); +} + + +/* default implementation of wine_dbg_vlog */ +static int default_dbg_vlog( int cls, const char *channel, const char *func, + const char *format, va_list args ) +{ + static const char * const classes[] = { "fixme", "err", "warn", "trace" }; + int ret = 0; + + if (cls < sizeof(classes)/sizeof(classes[0])) + ret += wine_dbg_printf( "%s:%s:%s ", classes[cls], channel + 1, func ); + if (format) + ret += __wine_dbg_vprintf( format, args ); + return ret; +} + + +/* exported function pointers so that debugging functions can be redirected at run-time */ + +const char * (*__wine_dbgstr_an)( const char * s, int n ) = default_dbgstr_an; +const char * (*__wine_dbgstr_wn)( const WCHAR *s, int n ) = default_dbgstr_wn; +const char * (*__wine_dbgstr_guid)( const struct _GUID *id ) = default_dbgstr_guid; +int (*__wine_dbg_vprintf)( const char *format, va_list args ) = default_dbg_vprintf; +int (*__wine_dbg_vlog)( int cls, const char *channel, const char *function, + const char *format, va_list args ) = default_dbg_vlog; diff --git a/loader/ne/resource.c b/loader/ne/resource.c index 75ff39e1a0c..735c907f7df 100644 --- a/loader/ne/resource.c +++ b/loader/ne/resource.c @@ -294,7 +294,7 @@ FARPROC16 WINAPI SetResourceHandler16( HMODULE16 hModule, LPCSTR typeId, if (!pModule || !pModule->res_table) return NULL; - TRACE("module=%04x type=%s\n", hModule, debugres_a(typeId) ); + TRACE("module=%04x type=%s\n", hModule, debugstr_a(typeId) ); for (;;) { @@ -319,7 +319,7 @@ HRSRC16 NE_FindResource( NE_MODULE *pModule, LPCSTR name, LPCSTR type ) if (!pModule || !pModule->res_table) return 0; - TRACE("module=%04x name=%s type=%s\n", pModule->self, debugres_a(name), debugres_a(type) ); + TRACE("module=%04x name=%s type=%s\n", pModule->self, debugstr_a(name), debugstr_a(type) ); if (HIWORD(name)) /* Check for '#xxx' name */ { diff --git a/memory/atom.c b/memory/atom.c index f64055bc7d1..67c356f7b07 100644 --- a/memory/atom.c +++ b/memory/atom.c @@ -354,7 +354,7 @@ ATOM WINAPI FindAtom16( LPCSTR str ) if (CURRENT_DS == ATOM_UserDS) return GlobalFindAtomA( str ); - TRACE("%s\n",debugres_a(str)); + TRACE("%s\n",debugstr_a(str)); if (ATOM_IsIntAtomA( str, &iatom )) return iatom; if ((len = strlen( str )) > 255) len = 255; @@ -451,7 +451,7 @@ static ATOM ATOM_AddAtomA( LPCSTR str, BOOL local ) } SERVER_END_REQ; } - TRACE( "(%s) %s -> %x\n", local ? "local" : "global", debugres_a(str), atom ); + TRACE( "(%s) %s -> %x\n", local ? "local" : "global", debugstr_a(str), atom ); return atom; } @@ -506,7 +506,7 @@ static ATOM ATOM_AddAtomW( LPCWSTR str, BOOL local ) } SERVER_END_REQ; } - TRACE( "(%s) %s -> %x\n", local ? "local" : "global", debugres_w(str), atom ); + TRACE( "(%s) %s -> %x\n", local ? "local" : "global", debugstr_w(str), atom ); return atom; } @@ -598,7 +598,7 @@ static ATOM ATOM_FindAtomA( LPCSTR str, BOOL local ) } SERVER_END_REQ; } - TRACE( "(%s) %s -> %x\n", local ? "local" : "global", debugres_a(str), atom ); + TRACE( "(%s) %s -> %x\n", local ? "local" : "global", debugstr_a(str), atom ); return atom; } @@ -652,7 +652,7 @@ static ATOM ATOM_FindAtomW( LPCWSTR str, BOOL local ) } SERVER_END_REQ; } - TRACE( "(%s) %s -> %x\n", local ? "local" : "global", debugres_w(str), atom ); + TRACE( "(%s) %s -> %x\n", local ? "local" : "global", debugstr_w(str), atom ); return atom; } diff --git a/objects/font.c b/objects/font.c index 17ecc9fcce1..f778f592bab 100644 --- a/objects/font.c +++ b/objects/font.c @@ -2290,7 +2290,7 @@ INT16 WINAPI AddFontResource16( LPCSTR filename ) INT WINAPI AddFontResourceA( LPCSTR str ) { FIXME("(%s): stub! Read the Wine User Guide on how to install " - "this font manually.\n", debugres_a(str)); + "this font manually.\n", debugstr_a(str)); return 1; } @@ -2301,7 +2301,7 @@ INT WINAPI AddFontResourceA( LPCSTR str ) INT WINAPI AddFontResourceW( LPCWSTR str ) { FIXME("(%s): stub! Read the Wine User Guide on how to install " - "this font manually.\n", debugres_w(str)); + "this font manually.\n", debugstr_w(str)); return 1; } @@ -2310,7 +2310,7 @@ INT WINAPI AddFontResourceW( LPCWSTR str ) */ BOOL16 WINAPI RemoveFontResource16( LPCSTR str ) { - FIXME("(%s): stub\n", debugres_a(str)); + FIXME("(%s): stub\n", debugstr_a(str)); return TRUE; } @@ -2342,7 +2342,7 @@ BOOL WINAPI RemoveFontResourceA( LPCSTR str ) LeaveCriticalSection( &crtsc_fonts_X11 ); return retVal; */ - FIXME("(%s): stub\n", debugres_a(str)); + FIXME("(%s): stub\n", debugstr_a(str)); return TRUE; } @@ -2352,6 +2352,6 @@ BOOL WINAPI RemoveFontResourceA( LPCSTR str ) */ BOOL WINAPI RemoveFontResourceW( LPCWSTR str ) { - FIXME("(%s): stub\n", debugres_w(str) ); + FIXME("(%s): stub\n", debugstr_w(str) ); return TRUE; } diff --git a/relay32/snoop.c b/relay32/snoop.c index 8d5013bcf93..bd691fb6305 100644 --- a/relay32/snoop.c +++ b/relay32/snoop.c @@ -229,58 +229,41 @@ SNOOP_GetProcAddress(HMODULE hmod,LPCSTR name,DWORD ordinal,FARPROC origfun) { return (FARPROC)&(fun->lcall); } -static char* -SNOOP_PrintArg(DWORD x) { - static char buf[200]; - int i,nostring; - char * volatile ret=0; +static void SNOOP_PrintArg(DWORD x) +{ + int i,nostring; - if ( !HIWORD(x) ) { /* trivial reject to avoid faults */ - sprintf(buf,"%08lx",x); - return buf; - } - __TRY{ - LPBYTE s=(LPBYTE)x; - i=0;nostring=0; - while (i<80) { - if (s[i]==0) break; - if (s[i]<0x20) {nostring=1;break;} - if (s[i]>=0x80) {nostring=1;break;} - i++; - } - if (!nostring) { - if (i>5) { - snprintf(buf,sizeof(buf),"%08lx %s",x,debugstr_an((LPSTR)x,sizeof(buf)-10)); - ret=buf; - } - } - } - __EXCEPT(page_fault){} - __ENDTRY - if (ret) - return ret; - __TRY{ - LPWSTR s=(LPWSTR)x; - i=0;nostring=0; - while (i<80) { - if (s[i]==0) break; - if (s[i]<0x20) {nostring=1;break;} - if (s[i]>0x100) {nostring=1;break;} - i++; - } - if (!nostring) { - if (i>5) { - snprintf(buf,sizeof(buf),"%08lx %s",x,debugstr_wn((LPWSTR)x,sizeof(buf)-10)); - ret=buf; - } - } - } - __EXCEPT(page_fault){} - __ENDTRY - if (ret) - return ret; - sprintf(buf,"%08lx",x); - return buf; + DPRINTF("%08lx",x); + if ( !HIWORD(x) ) return; /* trivial reject to avoid faults */ + __TRY + { + LPBYTE s=(LPBYTE)x; + i=0;nostring=0; + while (i<80) { + if (s[i]==0) break; + if (s[i]<0x20) {nostring=1;break;} + if (s[i]>=0x80) {nostring=1;break;} + i++; + } + if (!nostring && i > 5) + DPRINTF(" %s",debugstr_an((LPSTR)x,i)); + else /* try unicode */ + { + LPWSTR s=(LPWSTR)x; + i=0;nostring=0; + while (i<80) { + if (s[i]==0) break; + if (s[i]<0x20) {nostring=1;break;} + if (s[i]>0x100) {nostring=1;break;} + i++; + } + if (!nostring && i > 5) DPRINTF(" %s",debugstr_wn((LPWSTR)x,i)); + } + } + __EXCEPT(page_fault) + { + } + __ENDTRY } #define CALLER1REF (*(DWORD*)context->Esp) @@ -354,7 +337,10 @@ void WINAPI SNOOP_DoEntry( CONTEXT86 *context ) if (fun->nrofargs>0) { max = fun->nrofargs; if (max>16) max=16; for (i=0;iEsp + 4 + sizeof(DWORD)*i)),(inrofargs-1)?",":""); + { + SNOOP_PrintArg(*(DWORD*)(context->Esp + 4 + sizeof(DWORD)*i)); + if (inrofargs-1) DPRINTF(","); + } if (max!=fun->nrofargs) DPRINTF(" ..."); } else if (fun->nrofargs<0) { @@ -388,7 +374,10 @@ void WINAPI SNOOP_DoReturn( CONTEXT86 *context ) if (max>16) max=16; for (i=0;iargs[i]),(iargs[i]); + if (iEax,(DWORD)ret->origreturn ); HeapFree(GetProcessHeap(),0,ret->args); diff --git a/windows/class.c b/windows/class.c index 613b65577e7..d30b2bce61c 100644 --- a/windows/class.c +++ b/windows/class.c @@ -766,7 +766,7 @@ BOOL16 WINAPI UnregisterClass16( LPCSTR className, HINSTANCE16 hInstance ) */ BOOL WINAPI UnregisterClassA( LPCSTR className, HINSTANCE hInstance ) { - TRACE("%s %x\n",debugres_a(className), hInstance); + TRACE("%s %x\n",debugstr_a(className), hInstance); return CLASS_UnregisterClass( GlobalFindAtomA( className ), hInstance ); } @@ -775,7 +775,7 @@ BOOL WINAPI UnregisterClassA( LPCSTR className, HINSTANCE hInstance ) */ BOOL WINAPI UnregisterClassW( LPCWSTR className, HINSTANCE hInstance ) { - TRACE("%s %x\n",debugres_w(className), hInstance); + TRACE("%s %x\n",debugstr_w(className), hInstance); return CLASS_UnregisterClass( GlobalFindAtomW( className ), hInstance ); } @@ -1111,7 +1111,7 @@ BOOL16 WINAPI GetClassInfo16( HINSTANCE16 hInstance, SEGPTR name, WNDCLASS16 *wc ATOM atom; CLASS *classPtr; - TRACE("%x %s %p\n",hInstance, debugres_a(MapSL(name)), wc); + TRACE("%x %s %p\n",hInstance, debugstr_a(MapSL(name)), wc); hInstance = GetExePtr( hInstance ); if (!(atom = GlobalFindAtomA( MapSL(name) )) || @@ -1223,7 +1223,7 @@ BOOL16 WINAPI GetClassInfoEx16( HINSTANCE16 hInstance, SEGPTR name, WNDCLASSEX16 ATOM atom; CLASS *classPtr; - TRACE("%x %s %p\n",hInstance,debugres_a( MapSL(name) ), wc); + TRACE("%x %s %p\n",hInstance,debugstr_a( MapSL(name) ), wc); hInstance = GetExePtr( hInstance ); if (!(atom = GlobalFindAtomA( MapSL(name) )) || diff --git a/windows/dialog.c b/windows/dialog.c index 54882967dd3..1e31de09660 100644 --- a/windows/dialog.c +++ b/windows/dialog.c @@ -379,7 +379,7 @@ static const WORD *DIALOG_GetControl32( const WORD *p, DLG_CONTROL_INFO *info, TRACE(" %s %s %d, %d, %d, %d, %d, %08lx, %08lx, %08lx\n", debugstr_w( (LPCWSTR)info->className ), - debugres_w( (LPCWSTR)info->windowName ), + debugstr_w( (LPCWSTR)info->windowName ), info->id, info->x, info->y, info->cx, info->cy, info->style, info->exStyle, info->helpId ); @@ -913,7 +913,7 @@ HWND16 WINAPI CreateDialogParam16( HINSTANCE16 hInst, LPCSTR dlgTemplate, LPCVOID data; TRACE("%04x,%s,%04x,%08lx,%ld\n", - hInst, debugres_a(dlgTemplate), owner, (DWORD)dlgProc, param ); + hInst, debugstr_a(dlgTemplate), owner, (DWORD)dlgProc, param ); if (!(hRsrc = FindResource16( hInst, dlgTemplate, RT_DIALOGA ))) return 0; if (!(hmem = LoadResource16( hInst, hRsrc ))) return 0; diff --git a/windows/win.c b/windows/win.c index ca9ab70f826..6cac7a709f7 100644 --- a/windows/win.c +++ b/windows/win.c @@ -999,8 +999,8 @@ static HWND WIN_CreateWindowEx( CREATESTRUCTA *cs, ATOM classAtom, BOOL unicode = (type == WIN_PROC_32W); TRACE("%s %s ex=%08lx style=%08lx %d,%d %dx%d parent=%04x menu=%04x inst=%08x params=%p\n", - (type == WIN_PROC_32W) ? debugres_w((LPWSTR)cs->lpszName) : debugres_a(cs->lpszName), - (type == WIN_PROC_32W) ? debugres_w((LPWSTR)cs->lpszClass) : debugres_a(cs->lpszClass), + (type == WIN_PROC_32W) ? debugstr_w((LPWSTR)cs->lpszName) : debugstr_a(cs->lpszName), + (type == WIN_PROC_32W) ? debugstr_w((LPWSTR)cs->lpszClass) : debugstr_a(cs->lpszClass), cs->dwExStyle, cs->style, cs->x, cs->y, cs->cx, cs->cy, cs->hwndParent, cs->hMenu, cs->hInstance, cs->lpCreateParams ); @@ -1209,7 +1209,7 @@ HWND16 WINAPI CreateWindowEx16( DWORD exStyle, LPCSTR className, { if (!(classAtom = GlobalFindAtomA( className ))) { - ERR( "bad class name %s\n", debugres_a(className) ); + ERR( "bad class name %s\n", debugstr_a(className) ); return 0; } } @@ -1271,7 +1271,7 @@ HWND WINAPI CreateWindowExA( DWORD exStyle, LPCSTR className, { if (!(classAtom = GlobalFindAtomA( className ))) { - ERR( "bad class name %s\n", debugres_a(className) ); + ERR( "bad class name %s\n", debugstr_a(className) ); return 0; } } @@ -1330,7 +1330,7 @@ HWND WINAPI CreateWindowExW( DWORD exStyle, LPCWSTR className, { if (!(classAtom = GlobalFindAtomW( className ))) { - ERR( "bad class name %s\n", debugres_w(className) ); + ERR( "bad class name %s\n", debugstr_w(className) ); return 0; } }