1 |
james |
16 |
/* wstring.c */ |
2 |
|
|
|
3 |
|
|
#include "wstring.h" |
4 |
|
|
|
5 |
|
|
/* |
6 |
|
|
wchar_t *wstrchr(wchar_t const *str, wchar_t c) |
7 |
|
|
{ |
8 |
|
|
for (; *str != c; str++) |
9 |
|
|
if (*str == 0) |
10 |
|
|
return NULL; |
11 |
|
|
return str; |
12 |
|
|
} |
13 |
|
|
|
14 |
|
|
|
15 |
|
|
int wstrcmp(wchar_t const *str1, wchar_t const *str2) |
16 |
|
|
{ |
17 |
|
|
for (; *str1 == *str2; str1++, str2++) |
18 |
|
|
if (*str1 == 0) |
19 |
|
|
return 0; |
20 |
|
|
return *str1 - *str2; |
21 |
|
|
} |
22 |
|
|
|
23 |
|
|
|
24 |
|
|
wchar_t *wstrcpy(wchar_t *str1, wchar_t const *str2) |
25 |
|
|
{ |
26 |
|
|
wchar_t *p = str1; |
27 |
|
|
|
28 |
|
|
while (*str1++ = *str2++) |
29 |
|
|
; |
30 |
|
|
return p; |
31 |
|
|
} |
32 |
|
|
|
33 |
|
|
|
34 |
|
|
size_t wstrlen(wchar_t *str) |
35 |
|
|
{ |
36 |
|
|
wchar_t *p = str; |
37 |
|
|
|
38 |
|
|
while (*p != 0) |
39 |
|
|
p++; |
40 |
|
|
return p - str; |
41 |
|
|
} |
42 |
|
|
|
43 |
|
|
|
44 |
|
|
wchar_t *wstrncpy(wchar_t *str1, wchar_t const *str2, unsigned int count) |
45 |
|
|
{ |
46 |
|
|
wchar_t *p = str1; |
47 |
|
|
|
48 |
|
|
while ((count--) && (*str1++ = *str2++)) |
49 |
|
|
; |
50 |
|
|
return p; |
51 |
|
|
} |
52 |
|
|
*/ |
53 |
|
|
|
54 |
|
|
int wfputc(wchar_t c, FILE *stream) |
55 |
|
|
{ |
56 |
|
|
if (fputc(c & 0xff, stream) == EOF) return EOF; |
57 |
|
|
if (fputc((c >> 8) & 0xff, stream) == EOF) return EOF; |
58 |
|
|
if (fputc((c >> 16) & 0xff, stream) == EOF) return EOF; |
59 |
|
|
if (fputc((c >> 24) & 0xff, stream) == EOF) return EOF; |
60 |
|
|
return c; |
61 |
|
|
} |
62 |
|
|
|
63 |
|
|
|
64 |
|
|
int wfputs(wchar_t *str, FILE *stream) |
65 |
|
|
{ |
66 |
|
|
while (*str != 0) |
67 |
|
|
{ |
68 |
|
|
wfputc(*str, stream); |
69 |
|
|
str++; |
70 |
|
|
} |
71 |
|
|
return 0; |
72 |
|
|
} |