[2/2] msvcrt: Implement _mbslwr_s (try2).

Konrad Rzepecki hannibal at astral.lodz.pl
Thu Mar 17 15:32:33 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 a4589e1..1812407 100644
 --- a/dlls/msvcr100/msvcr100.spec
 +++ b/dlls/msvcr100/msvcr100.spec
 @@ -921,7 +921,7 @@
  @ stub _mbslen_l
  @ cdecl _mbslwr(str) msvcrt._mbslwr
  @ stub _mbslwr_l
 -@ stub _mbslwr_s
 +@ cdecl _mbslwr_s(str long) msvcrt._mbslwr_s
  @ stub _mbslwr_s_l
  @ cdecl _mbsnbcat(str str long) msvcrt._mbsnbcat
  @ stub _mbsnbcat_l
 diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec
 index b491d87..8b58e7d 100644
 --- a/dlls/msvcr80/msvcr80.spec
 +++ b/dlls/msvcr80/msvcr80.spec
 @@ -767,7 +767,7 @@
  @ stub _mbslen_l
  @ cdecl _mbslwr(str) msvcrt._mbslwr
  @ stub _mbslwr_l
 -@ stub _mbslwr_s
 +@ cdecl _mbslwr_s(str long) msvcrt._mbslwr_s
  @ stub _mbslwr_s_l
  @ cdecl _mbsnbcat(str str long) msvcrt._mbsnbcat
  @ stub _mbsnbcat_l
 diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
 index d1cae36..d18651d 100644
 --- a/dlls/msvcr90/msvcr90.spec
 +++ b/dlls/msvcr90/msvcr90.spec
 @@ -755,7 +755,7 @@
  @ stub _mbslen_l
  @ cdecl _mbslwr(str) msvcrt._mbslwr
  @ stub _mbslwr_l
 -@ stub _mbslwr_s
 +@ cdecl _mbslwr_s(str long) msvcrt._mbslwr_s
  @ stub _mbslwr_s_l
  @ cdecl _mbsnbcat(str str long) msvcrt._mbsnbcat
  @ stub _mbsnbcat_l
 diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c
 index e2ea820..4c8a8d5 100644
 --- a/dlls/msvcrt/mbcs.c
 +++ b/dlls/msvcrt/mbcs.c
 @@ -1544,6 +1544,42 @@ unsigned char* CDECL _mbslwr(unsigned char* s)
 
 
  /*********************************************************************
 + *              _mbslwr_s(MSVCRT.@)
 + */
 +int CDECL _mbslwr_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 = _mbctolower(_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 = tolower(*s);
 +  if (*s)
 +  {
 +    *s = '\0';
 +    *MSVCRT__errno() = MSVCRT_ERANGE;
 +    return MSVCRT_ERANGE;
 +  }
 +  return 0;
 +}
 +
 +
 +/*********************************************************************
   *              _mbsupr(MSVCRT.@)
   */
  unsigned char* CDECL _mbsupr(unsigned char* s)
 diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
 index e43c3f5..103142e 100644
 --- a/dlls/msvcrt/msvcrt.spec
 +++ b/dlls/msvcrt/msvcrt.spec
 @@ -703,7 +703,7 @@
  # stub _mbslen_l
  @ cdecl _mbslwr(str)
  # stub _mbslwr_l
 -# stub _mbslwr_s
 +@ cdecl _mbslwr_s(str long)
  # stub _mbslwr_s_l
  @ cdecl _mbsnbcat(str str long)
  # stub _mbsnbcat_l
-- 
 1.7.4.1





More information about the wine-patches mailing list