ReactOS 0.4.16-dev-1946-g52006dd
mbsncat.c File Reference
#include <precomp.h>
#include <mbstring.h>
#include <string.h>
Include dependency graph for mbsncat.c:

Go to the source code of this file.

Functions

static unsigned charu_strncat (unsigned char *dst, const unsigned char *src, size_t len)
 
size_t _mbclen2 (const unsigned int s)
 
unsigned char_mbset (unsigned char *string, int c)
 
unsigned char_mbsncat (unsigned char *dst, const unsigned char *src, size_t n)
 
unsigned char_mbsnbcat (unsigned char *dst, const unsigned char *src, size_t n)
 

Function Documentation

◆ _mbclen2()

size_t _mbclen2 ( const unsigned int  s)

Definition at line 23 of file mbclen.c.

24{
25 return (_ismbblead(s>>8) && _ismbbtrail(s&0x00FF)) ? 2 : 1;
26}
_Check_return_ _CRTIMP int __cdecl _ismbbtrail(_In_ unsigned int _C)
GLdouble s
Definition: gl.h:2039
int __cdecl _ismbblead(unsigned int)
Definition: ismblead.c:20

◆ _mbset()

unsigned char * _mbset ( unsigned char string,
int  c 
)

Definition at line 31 of file mbsupr.c.

32{
33 unsigned char *save = string;
34
35 if (_MBIS16 (c)) {
36
37 if (_MBLMASK (c) == 0) {
38 *string++ = '\0';
39 *string++ = '\0';
40 }
41 else {
42 *string++ = _MBGETH (c);
43 *string++ = _MBGETL (c);
44 }
45
46 }
47 else {
48
49 *string++ = c;
50
51 }
52
53 return save;
54}
const GLubyte * c
Definition: glext.h:8905
#define c
Definition: ke_i.h:80
#define _MBLMASK(c)
Definition: mbstring.h:20
#define _MBGETH(c)
Definition: mbstring.h:23
#define _MBGETL(c)
Definition: mbstring.h:22
#define _MBIS16(c)
Definition: mbstring.h:25
char string[160]
Definition: util.h:11

Referenced by _mbsupr().

◆ _mbsnbcat()

unsigned char * _mbsnbcat ( unsigned char dst,
const unsigned char src,
size_t  n 
)

Definition at line 59 of file mbsncat.c.

60{
62 unsigned char *s;
63
64 /* replace TRACE with ERR for debug output */
65 TRACE("Src %s\n", wine_dbgstr_an((const char*)src, n));
66
67 if (!dst || !src) ERR("Bad Parameter\n");
68
69 if (!src && !dst && !n && !MSVCRT_CHECK_PMT(dst && src))
70 return NULL;
71
72 if (mbcinfo->ismbcodepage)
73 {
74 unsigned char *res = dst;
75 while (*dst)
76 {
77 if (_ismbblead(*dst++))
78 {
79 if (*dst)
80 {
81 dst++;
82 }
83 else
84 {
85 /* as per msdn overwrite the lead byte in front of '\0' */
86 dst--;
87 break;
88 }
89 }
90 }
91 while (*src && n--) *dst++ = *src++;
92 *dst = '\0';
93 return res;
94 }
95 s = u_strncat(dst, src, n); /* ASCII CP */
96 /* replace TRACE with ERR for debug output */
97 TRACE("Dst %s\n", wine_dbgstr_an((const char*)dst, _mbslen(dst)));
98 return s;
99}
#define ERR(fmt,...)
Definition: precomp.h:57
#define NULL
Definition: types.h:112
const char * wine_dbgstr_an(const char *str, int n)
Definition: compat.c:313
GLdouble n
Definition: glext.h:7729
GLuint res
Definition: glext.h:9613
GLenum src
Definition: glext.h:6340
GLenum GLenum dst
Definition: glext.h:6340
_Check_return_ _CRTIMP size_t __cdecl _mbslen(_In_z_ const unsigned char *_Str)
static unsigned char * u_strncat(unsigned char *dst, const unsigned char *src, size_t len)
Definition: mbsncat.c:16
#define MSVCRT_CHECK_PMT(x)
Definition: mbstowcs_s.c:26
MSVCRT_pthreadmbcinfo get_mbcinfo(void)
Definition: locale.c:366
#define TRACE(s)
Definition: solgame.cpp:4

◆ _mbsncat()

unsigned char * _mbsncat ( unsigned char dst,
const unsigned char src,
size_t  n 
)

Definition at line 27 of file mbsncat.c.

28{
30
31 if (!n)
32 return dst;
33
34 if (!dst || !src) ERR("Bad Parameter\n");
35
36 if (mbcinfo->ismbcodepage)
37 {
38 unsigned char *res = dst;
39 while (*dst)
40 {
41 if (_ismbblead(*dst++))
42 dst++;
43 }
44 while (*src && n--)
45 {
46 *dst++ = *src;
47 if (_ismbblead(*src++))
48 *dst++ = *src++;
49 }
50 *dst = '\0';
51 return res;
52 }
53 return u_strncat(dst, src, n); /* ASCII CP */
54}

◆ u_strncat()

static unsigned char * u_strncat ( unsigned char dst,
const unsigned char src,
size_t  len 
)
inlinestatic

Definition at line 16 of file mbsncat.c.

17{
18 return (unsigned char*)strncat( (char*)dst, (const char*)src, len);
19}
GLenum GLsizei len
Definition: glext.h:6722
_In_opt_ _Locale strncat
Definition: string.h:263

Referenced by _mbsnbcat(), and _mbsncat().