xref: /reactos/sdk/lib/crt/mbstring/mbsnset.c (revision 84ccccab)
1 /*
2  * COPYRIGHT:   See COPYING in the top level directory
3  * PROJECT:     ReactOS system libraries
4  * FILE:        lib/sdk/crt/mbstring/mbsnset.c
5  * PURPOSE:     Fills a string with a multibyte character
6  * PROGRAMER:   Ariadne
7  * UPDATE HISTORY:
8  *              12/04/99: Created
9  */
10 #include <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 }
71