diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c index f144e9fa11f..1040a0c6dd0 100644 --- a/dlls/msvcrt/mbcs.c +++ b/dlls/msvcrt/mbcs.c @@ -650,3 +650,23 @@ char *_mbsrev(char *str) return str; } +/********************************************************************* + * _mbspbrk (MSVCRT.@) + */ +const char *_mbspbrk(const char *str, const char *accept) +{ + const char *p; + + while(*str) + { + for(p = accept; *p; p += (MSVCRT_isleadbyte(*p)?2:1) ) + { + if (*p == *str) + if( !MSVCRT_isleadbyte(*p) || ( *(p+1) == *(str+1) ) ) + return str; + } + str += (MSVCRT_isleadbyte(*str)?2:1); + } + return NULL; +} + diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index 3994add2fda..3c4d57def68 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -383,7 +383,7 @@ debug_channels (msvcrt) @ stub _mbsnicoll #(str str long) @ cdecl _mbsninc(str long) _mbsninc @ cdecl _mbsnset(str long long) _mbsnset -@ stub _mbspbrk #(str str) +@ cdecl _mbspbrk(str str) _mbspbrk @ cdecl _mbsrchr(str long) _mbsrchr @ cdecl _mbsrev(str) _mbsrev @ cdecl _mbsset(str long) _mbsset