[1/2] msvcrt: Implement _mbsupr_s (try2).

Konrad Rzepecki hannibal at astral.lodz.pl
Thu Mar 17 15:31:36 CDT 2011


 Split previous patch to sepratare each function implementation.
 Sugested by Austin English.

 ---
  dlls/msvcr100/msvcr100.spec |    2 +-
  dlls/msvcr80/msvcr80.spec   |    2 +-
  dlls/msvcr90/msvcr90.spec   |    2 +-
  dlls/msvcrt/mbcs.c          |   36 
 ++++++++++++++++++++++++++++++++++++
  dlls/msvcrt/msvcrt.spec     |    2 +-
  5 files changed, 40 insertions(+), 4 deletions(-)

 diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec
 index 473f663..a4589e1 100644
 --- a/dlls/msvcr100/msvcr100.spec
 +++ b/dlls/msvcr100/msvcr100.spec
 @@ -1001,7 +1001,7 @@
  @ stub _mbstrnlen_l
  @ cdecl _mbsupr(str) msvcrt._mbsupr
  @ stub _mbsupr_l
 -@ stub _mbsupr_s
 +@ cdecl _mbsupr_s(str long) msvcrt._mbsupr_s
  @ stub _mbsupr_s_l
  @ stub _mbtowc_l
  @ cdecl _memccpy(ptr ptr long long) msvcrt._memccpy
 diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec
 index 9da91db..b491d87 100644
 --- a/dlls/msvcr80/msvcr80.spec
 +++ b/dlls/msvcr80/msvcr80.spec
 @@ -847,7 +847,7 @@
  @ stub _mbstrnlen_l
  @ cdecl _mbsupr(str) msvcrt._mbsupr
  @ stub _mbsupr_l
 -@ stub _mbsupr_s
 +@ cdecl _mbsupr_s(str long) msvcrt._mbsupr_s
  @ stub _mbsupr_s_l
  @ stub _mbtowc_l
  @ cdecl _memccpy(ptr ptr long long) msvcrt._memccpy
 diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
 index 96d4589..d1cae36 100644
 --- a/dlls/msvcr90/msvcr90.spec
 +++ b/dlls/msvcr90/msvcr90.spec
 @@ -835,7 +835,7 @@
  @ stub _mbstrnlen_l
  @ cdecl _mbsupr(str) msvcrt._mbsupr
  @ stub _mbsupr_l
 -@ stub _mbsupr_s
 +@ cdecl _mbsupr_s(str long) msvcrt._mbsupr_s
  @ stub _mbsupr_s_l
  @ stub _mbtowc_l
  @ cdecl _memccpy(ptr ptr long long) msvcrt._memccpy
 diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c
 index 5767242..e2ea820 100644
 --- a/dlls/msvcrt/mbcs.c
 +++ b/dlls/msvcrt/mbcs.c
 @@ -1572,6 +1572,42 @@ unsigned char* CDECL _mbsupr(unsigned char* s)
 
 
  /*********************************************************************
 + *              _mbsupr_s(MSVCRT.@)
 + */
 +int CDECL _mbsupr_s(unsigned char* s, MSVCRT_size_t len)
 +{
 +  if (!s)
 +  {
 +    *MSVCRT__errno() = MSVCRT_EINVAL;
 +    return MSVCRT_EINVAL;
 +  }
 +  if (get_locale()->locinfo->mb_cur_max > 1)
 +  {
 +    unsigned int c;
 +    for ( ; *s && len > 0; len--)
 +    {
 +      c = _mbctoupper(_mbsnextc(s));
 +      /* Note that I assume that the size of the character is 
 unchanged */
 +      if (c > 255)
 +      {
 +          *s++=(c>>8);
 +          c=c & 0xff;
 +      }
 +      *s++=c;
 +    }
 +  }
 +  else for ( ; *s && len > 0; s++, len--) *s = toupper(*s);
 +  if (*s)
 +  {
 +    *s = '\0';
 +    *MSVCRT__errno() = MSVCRT_ERANGE;
 +    return MSVCRT_ERANGE;
 +  }
 +  return 0;
 +}
 +
 +
 +/*********************************************************************
   *              _mbsspn (MSVCRT.@)
   */
  MSVCRT_size_t CDECL _mbsspn(const unsigned char* string, const 
 unsigned char* set)
 diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
 index c324dea..e43c3f5 100644
 --- a/dlls/msvcrt/msvcrt.spec
 +++ b/dlls/msvcrt/msvcrt.spec
 @@ -783,7 +783,7 @@
  # stub _mbstrnlen_l
  @ cdecl _mbsupr(str)
  # stub _mbsupr_l
 -# stub _mbsupr_s
 +@ cdecl _mbsupr_s(str long)
  # stub _mbsupr_s_l
  # stub _mbtowc_l
  @ cdecl _memccpy(ptr ptr long long) ntdll._memccpy
-- 
 1.7.4.1





More information about the wine-patches mailing list