blob: d1647831d4f805cf0204123e23ff1b6b1d3b1aa5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#include "wstring.h"
size_t wcslen(const wchar_t* str) {
size_t len = -1;
wchar_t* p = (wchar_t*)str - 1;
do {
len++;
} while (*++p);
return len;
}
wchar_t* wcsncpy(wchar_t* dest, const wchar_t* src, size_t num) {
const wchar_t* p = (const wchar_t*)src - 1;
wchar_t* q = (wchar_t*)dest - 1;
wchar_t zero = 0;
num++;
while (--num) {
if (!(*++q = *++p)) {
while (--num) {
*++q = 0;
}
break;
}
}
return dest;
}
int wcscmp(const wchar_t* str1, const wchar_t* str2) {
const wchar_t* p1 = (wchar_t*)str1 - 1;
const wchar_t* p2 = (wchar_t*)str2 - 1;
wchar_t c1, c2;
while ((c1 = *++p1) == (c2 = *++p2))
if (!c1)
return 0;
return c1 - c2;
}
|