--- wine/dlls/ntdll/relay.c 2003-10-09 08:33:20.000000000 +0200 +++ mywine/dlls/ntdll/relay.c 2003-10-15 16:45:52.000000000 +0200 @@ -784,8 +784,16 @@ for(; *listitem; listitem++) { itemlen = strlenW(*listitem); - if((itemlen == len && !strncmpiAW( buf, *listitem, len)) || + /* item specified as .* */ + if( (itemlen == len + 2 && !strcmpAW( ".*",*listitem + len) && + !strncmpiAW( dll, *listitem, len)) || + /* specified as .nnn */ (itemlen == len2 && !strncmpiAW(buf, *listitem, len2)) || + /* specified as . */ + (fname && itemlen > len + 1 && !strncmpiAW(dll, *listitem, len) && + (*listitem)[len] == (WCHAR) '.' && + !strcmpAW(fname, *listitem + len + 1)) || + /* specified as */ (fname && !strcmpAW(fname, *listitem))) return !show; } --- wine/dlls/kernel/relay16.c 2003-10-09 08:33:11.000000000 +0200 +++ mywine/dlls/kernel/relay16.c 2003-10-15 17:03:52.000000000 +0200 @@ -48,6 +48,13 @@ static const WCHAR **debug_snoop_includelist; /* compare an ASCII and a Unicode string without depending on the current codepage */ +inline static int strcmpAW( const char *strA, const WCHAR *strW ) +{ + while (*strA && ((unsigned char)*strA == *strW)) { strA++; strW++; } + return (unsigned char)*strA - *strW; +} + +/* compare an ASCII and a Unicode string without depending on the current codepage */ inline static int strncmpiAW( const char *strA, const WCHAR *strW, int n ) { int ret = 0; @@ -221,9 +228,18 @@ for(; *listitem; listitem++) { itemlen = strlenW(*listitem); - if (itemlen == len && !strncmpiAW( buf, *listitem, len)) return !show; - if (itemlen == len2 && !strncmpiAW(buf, *listitem, len2)) return !show; - if (fname && !strncmpiAW(fname, *listitem, itemlen) && !fname[itemlen]) return !show; + /* item specified as .* */ + if( (itemlen == len + 2 && !strcmpAW( ".*",*listitem + len) && + !strncmpiAW( dll, *listitem, len)) || + /* specified as .nnn */ + (itemlen == len2 && !strncmpiAW(buf, *listitem, len2)) || + /* specified as . */ + (fname && itemlen > len + 1 && !strncmpiAW(dll, *listitem, len) && + (*listitem)[len] == (WCHAR) '.' && + !strcmpAW(fname, *listitem + len + 1)) || + /* specified as */ + (fname && !strcmpAW(fname, *listitem))) + return !show; } return show; }