37be2754ffc76057ac055b845d25b4fa4e539abc
[reactos.git] / lib / msvcrt / mbstring / mbsnset.c
1 /*
2  * COPYRIGHT:   See COPYING in the top level directory
3  * PROJECT:     ReactOS system libraries
4  * FILE:        lib/msvcrt/mbstring/mbsnset.c 
5  * PURPOSE:     Fills a string with a multibyte character
6  * PROGRAMER:   Boudewijn Dekker
7  * UPDATE HISTORY:
8  *              12/04/99: Created
9  */
10 #include <msvcrt/mbstring.h>
11
12 size_t _mbclen2(const unsigned int s);
13
14 /*
15  * @implemented
16  */
17 unsigned char * _mbsnset(unsigned char *src, unsigned int val, size_t count)
18 {
19         unsigned char *char_src = (unsigned char *)src;
20         unsigned short *short_src = (unsigned short *)src;
21
22         if ( _mbclen2(val) == 1 ) {
23         
24                 while(count > 0) {
25                         *char_src = val;
26                         char_src++;
27                         count--;
28                 }
29                 *char_src = 0;
30         }
31         else {
32                 while(count > 0) {
33                         *short_src = val;
34                         short_src++;
35                         count-=2;
36                 }
37                 *short_src = 0;
38         }
39
40         return src;
41 }
42
43 /*
44  * @implemented
45  */
46 unsigned char * _mbsnbset(unsigned char *src, unsigned int val, size_t count)
47 {
48         unsigned char *char_src = (unsigned char *)src;
49         unsigned short *short_src = (unsigned short *)src;
50
51         if ( _mbclen2(val) == 1 ) {
52         
53                 while(count > 0) {
54                         *char_src = val;
55                         char_src++;
56                         count--;
57                 }
58                 *char_src = 0;
59         }
60         else {
61                 while(count > 0) {
62                         *short_src = val;
63                         short_src++;
64                         count-=2;
65                 }
66                 *short_src = 0;
67         }
68
69         return src;
70 }