Cygwin: add wcipcpy and wcipncpy helper functions
wint_t replacements for wcpcpy and wcpncpy Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
parent
77883ac914
commit
b81969345d
|
@ -203,13 +203,10 @@ check_classes_expr(const Char *&cptr, wint_t *classbuf = NULL,
|
||||||
if (classbuf) {
|
if (classbuf) {
|
||||||
const Char *class_p = ctype + 1;
|
const Char *class_p = ctype + 1;
|
||||||
size_t clen = cptr - class_p;
|
size_t clen = cptr - class_p;
|
||||||
size_t idx;
|
|
||||||
|
|
||||||
if (clen < classbufsize) {
|
if (clen < classbufsize)
|
||||||
for (idx = 0; idx < clen; ++idx)
|
*wcipncpy (classbuf, class_p, clen) = '\0';
|
||||||
classbuf[idx] = CHAR(class_p[idx]);
|
else
|
||||||
classbuf[idx] = '\0';
|
|
||||||
} else
|
|
||||||
ctype = NULL;
|
ctype = NULL;
|
||||||
}
|
}
|
||||||
cptr++; /* Advance cptr to closing RBRACKET of class expr */
|
cptr++; /* Advance cptr to closing RBRACKET of class expr */
|
||||||
|
|
|
@ -101,6 +101,36 @@ wcincmp (const wint_t *s1, const wint_t *s2, size_t n)
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* like wcpcpy, just for wint_t */
|
||||||
|
static inline wint_t *
|
||||||
|
wcipcpy (wint_t *s1, const wint_t *s2)
|
||||||
|
{
|
||||||
|
while ((*s1++ = *s2++))
|
||||||
|
;
|
||||||
|
return --s1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* like wcpncpy, just for wint_t */
|
||||||
|
static inline wint_t *
|
||||||
|
wcipncpy (wint_t *dst, const wint_t *src, size_t count)
|
||||||
|
{
|
||||||
|
wint_t *ret = NULL;
|
||||||
|
|
||||||
|
while (count > 0)
|
||||||
|
{
|
||||||
|
--count;
|
||||||
|
if ((*dst++ = *src++) == L'\0')
|
||||||
|
{
|
||||||
|
ret = dst - 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while (count-- > 0)
|
||||||
|
*dst++ = L'\0';
|
||||||
|
|
||||||
|
return ret ? ret : dst;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue