summaryrefslogtreecommitdiff
path: root/include/wchar.h
diff options
context:
space:
mode:
authorDaniel Kolesa2022-10-26 00:30:00 +0200
committerjvoisin2023-06-25 18:26:45 +0200
commitfe149628eaae9748be08815d726cc56e8e492c73 (patch)
tree252ed41ea13504b67b3c03e648113015b8f85dda /include/wchar.h
parentadae76af26e498af6c3004a52a4b1de2c6fd91c3 (diff)
add initial clang support
Diffstat (limited to 'include/wchar.h')
-rw-r--r--include/wchar.h50
1 files changed, 34 insertions, 16 deletions
diff --git a/include/wchar.h b/include/wchar.h
index 4f25b0c..d031397 100644
--- a/include/wchar.h
+++ b/include/wchar.h
@@ -1,5 +1,6 @@
1/* 1/*
2 * Copyright (C) 2015-2017 Dimitris Papastamos <sin@2f30.org> 2 * Copyright (C) 2015-2017 Dimitris Papastamos <sin@2f30.org>
3 * Copyright (C) 2022 q66 <q66@chimera-linux.org>
3 * 4 *
4 * Permission to use, copy, modify, and/or distribute this software for any 5 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted. 6 * purpose with or without fee is hereby granted.
@@ -55,7 +56,8 @@ extern "C" {
55#undef wmemmove 56#undef wmemmove
56#undef wmemset 57#undef wmemset
57 58
58_FORTIFY_FN(fgetws) wchar_t *fgetws(wchar_t *__s, int __n, FILE *__f) 59_FORTIFY_FN(fgetws) wchar_t *fgetws(wchar_t * _FORTIFY_POS0 __s,
60 int __n, FILE *__f)
59{ 61{
60 size_t __b = __bos(__s, 0); 62 size_t __b = __bos(__s, 0);
61 63
@@ -67,7 +69,8 @@ _FORTIFY_FN(fgetws) wchar_t *fgetws(wchar_t *__s, int __n, FILE *__f)
67#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ 69#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
68 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 70 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
69#undef mbsnrtowcs 71#undef mbsnrtowcs
70_FORTIFY_FN(mbsnrtowcs) size_t mbsnrtowcs(wchar_t *__d, const char **__s, size_t __n, 72_FORTIFY_FN(mbsnrtowcs) size_t mbsnrtowcs(wchar_t * _FORTIFY_POS0 __d,
73 const char **__s, size_t __n,
71 size_t __wn, mbstate_t *__st) 74 size_t __wn, mbstate_t *__st)
72{ 75{
73 size_t __b = __bos(__d, 0); 76 size_t __b = __bos(__d, 0);
@@ -87,7 +90,8 @@ _FORTIFY_FN(mbsnrtowcs) size_t mbsnrtowcs(wchar_t *__d, const char **__s, size_t
87} 90}
88#endif 91#endif
89 92
90_FORTIFY_FN(mbsrtowcs) size_t mbsrtowcs(wchar_t *__d, const char **__s, size_t __wn, 93_FORTIFY_FN(mbsrtowcs) size_t mbsrtowcs(wchar_t * _FORTIFY_POS0 __d,
94 const char **__s, size_t __wn,
91 mbstate_t *__st) 95 mbstate_t *__st)
92{ 96{
93 size_t __b = __bos(__d, 0); 97 size_t __b = __bos(__d, 0);
@@ -100,7 +104,8 @@ _FORTIFY_FN(mbsrtowcs) size_t mbsrtowcs(wchar_t *__d, const char **__s, size_t _
100 return __r; 104 return __r;
101} 105}
102 106
103_FORTIFY_FN(mbstowcs) size_t mbstowcs(wchar_t *__ws, const char *__s, size_t __wn) 107_FORTIFY_FN(mbstowcs) size_t mbstowcs(wchar_t * _FORTIFY_POS0 __ws,
108 const char *__s, size_t __wn)
104{ 109{
105 size_t __b = __bos(__ws, 0); 110 size_t __b = __bos(__ws, 0);
106 111
@@ -109,7 +114,9 @@ _FORTIFY_FN(mbstowcs) size_t mbstowcs(wchar_t *__ws, const char *__s, size_t __w
109 return __orig_mbstowcs(__ws, __s, __wn); 114 return __orig_mbstowcs(__ws, __s, __wn);
110} 115}
111 116
112_FORTIFY_FN(wcrtomb) size_t wcrtomb(char *__s, wchar_t __w, mbstate_t *__st) 117/* FIXME clang */
118#ifndef __clang__
119_FORTIFY_FN(wcrtomb) size_t wcrtomb(char * __s, wchar_t __w, mbstate_t *__st)
113{ 120{
114 if (__s && MB_LEN_MAX > __bos(__s, 2)) { 121 if (__s && MB_LEN_MAX > __bos(__s, 2)) {
115 char __buf[MB_LEN_MAX]; 122 char __buf[MB_LEN_MAX];
@@ -125,8 +132,10 @@ _FORTIFY_FN(wcrtomb) size_t wcrtomb(char *__s, wchar_t __w, mbstate_t *__st)
125 } 132 }
126 return __orig_wcrtomb(__s, __w, __st); 133 return __orig_wcrtomb(__s, __w, __st);
127} 134}
135#endif
128 136
129_FORTIFY_FN(wcscat) wchar_t *wcscat(wchar_t *__d, const wchar_t *__s) 137_FORTIFY_FN(wcscat) wchar_t *wcscat(wchar_t * _FORTIFY_POS0 __d,
138 const wchar_t *__s)
130{ 139{
131 size_t __b = __bos(__d, 0); 140 size_t __b = __bos(__d, 0);
132 141
@@ -135,7 +144,8 @@ _FORTIFY_FN(wcscat) wchar_t *wcscat(wchar_t *__d, const wchar_t *__s)
135 return __orig_wcscat(__d, __s); 144 return __orig_wcscat(__d, __s);
136} 145}
137 146
138_FORTIFY_FN(wcscpy) wchar_t *wcscpy(wchar_t *__d, const wchar_t *__s) 147_FORTIFY_FN(wcscpy) wchar_t *wcscpy(wchar_t * _FORTIFY_POS0 __d,
148 const wchar_t *__s)
139{ 149{
140 size_t __b = __bos(__d, 0); 150 size_t __b = __bos(__d, 0);
141 151
@@ -144,7 +154,8 @@ _FORTIFY_FN(wcscpy) wchar_t *wcscpy(wchar_t *__d, const wchar_t *__s)
144 return __orig_wcscpy(__d, __s); 154 return __orig_wcscpy(__d, __s);
145} 155}
146 156
147_FORTIFY_FN(wcsncat) wchar_t *wcsncat(wchar_t *__d, const wchar_t *__s, size_t __n) 157_FORTIFY_FN(wcsncat) wchar_t *wcsncat(wchar_t * _FORTIFY_POS0 __d,
158 const wchar_t *__s, size_t __n)
148{ 159{
149 size_t __b = __bos(__d, 0); 160 size_t __b = __bos(__d, 0);
150 size_t __sl, __dl; 161 size_t __sl, __dl;
@@ -160,7 +171,8 @@ _FORTIFY_FN(wcsncat) wchar_t *wcsncat(wchar_t *__d, const wchar_t *__s, size_t _
160 return __orig_wcsncat(__d, __s, __n); 171 return __orig_wcsncat(__d, __s, __n);
161} 172}
162 173
163_FORTIFY_FN(wcsncpy) wchar_t *wcsncpy(wchar_t *__d, const wchar_t *__s, size_t __n) 174_FORTIFY_FN(wcsncpy) wchar_t *wcsncpy(wchar_t * _FORTIFY_POS0 __d,
175 const wchar_t *__s, size_t __n)
164{ 176{
165 size_t __b = __bos(__d, 0); 177 size_t __b = __bos(__d, 0);
166 178
@@ -172,7 +184,8 @@ _FORTIFY_FN(wcsncpy) wchar_t *wcsncpy(wchar_t *__d, const wchar_t *__s, size_t _
172#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ 184#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
173 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 185 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
174#undef wcsnrtombs 186#undef wcsnrtombs
175_FORTIFY_FN(wcsnrtombs) size_t wcsnrtombs(char *__d, const wchar_t **__s, size_t __wn, 187_FORTIFY_FN(wcsnrtombs) size_t wcsnrtombs(char * _FORTIFY_POS0 __d,
188 const wchar_t **__s, size_t __wn,
176 size_t __n, mbstate_t *__st) 189 size_t __n, mbstate_t *__st)
177{ 190{
178 size_t __b = __bos(__d, 0); 191 size_t __b = __bos(__d, 0);
@@ -192,7 +205,8 @@ _FORTIFY_FN(wcsnrtombs) size_t wcsnrtombs(char *__d, const wchar_t **__s, size_t
192} 205}
193#endif 206#endif
194 207
195_FORTIFY_FN(wcsrtombs) size_t wcsrtombs(char *__d, const wchar_t **__s, size_t __n, 208_FORTIFY_FN(wcsrtombs) size_t wcsrtombs(char * _FORTIFY_POS0 __d,
209 const wchar_t **__s, size_t __n,
196 mbstate_t *__st) 210 mbstate_t *__st)
197{ 211{
198 size_t __b = __bos(__d, 0); 212 size_t __b = __bos(__d, 0);
@@ -204,7 +218,8 @@ _FORTIFY_FN(wcsrtombs) size_t wcsrtombs(char *__d, const wchar_t **__s, size_t _
204 return __r; 218 return __r;
205} 219}
206 220
207_FORTIFY_FN(wcstombs) size_t wcstombs(char *__s, const wchar_t *__ws, size_t __n) 221_FORTIFY_FN(wcstombs) size_t wcstombs(char * _FORTIFY_POS0 __s,
222 const wchar_t *__ws, size_t __n)
208{ 223{
209 size_t __b = __bos(__s, 0); 224 size_t __b = __bos(__s, 0);
210 225
@@ -213,7 +228,7 @@ _FORTIFY_FN(wcstombs) size_t wcstombs(char *__s, const wchar_t *__ws, size_t __n
213 return __orig_wcstombs(__s, __ws, __n); 228 return __orig_wcstombs(__s, __ws, __n);
214} 229}
215 230
216_FORTIFY_FN(wctomb) int wctomb(char *__s, wchar_t __w) 231_FORTIFY_FN(wctomb) int wctomb(char * _FORTIFY_POS0 __s, wchar_t __w)
217{ 232{
218 size_t __b = __bos(__s, 0); 233 size_t __b = __bos(__s, 0);
219 234
@@ -222,7 +237,8 @@ _FORTIFY_FN(wctomb) int wctomb(char *__s, wchar_t __w)
222 return __orig_wctomb(__s, __w); 237 return __orig_wctomb(__s, __w);
223} 238}
224 239
225_FORTIFY_FN(wmemcpy) wchar_t *wmemcpy(wchar_t *__d, const wchar_t *__s, size_t __n) 240_FORTIFY_FN(wmemcpy) wchar_t *wmemcpy(wchar_t * _FORTIFY_POS0 __d,
241 const wchar_t *__s, size_t __n)
226{ 242{
227 size_t __b = __bos(__d, 0); 243 size_t __b = __bos(__d, 0);
228 244
@@ -231,7 +247,8 @@ _FORTIFY_FN(wmemcpy) wchar_t *wmemcpy(wchar_t *__d, const wchar_t *__s, size_t _
231 return __orig_wmemcpy(__d, __s, __n); 247 return __orig_wmemcpy(__d, __s, __n);
232} 248}
233 249
234_FORTIFY_FN(wmemmove) wchar_t *wmemmove(wchar_t *__d, const wchar_t *__s, size_t __n) 250_FORTIFY_FN(wmemmove) wchar_t *wmemmove(wchar_t * _FORTIFY_POS0 __d,
251 const wchar_t *__s, size_t __n)
235{ 252{
236 size_t __b = __bos(__d, 0); 253 size_t __b = __bos(__d, 0);
237 254
@@ -240,7 +257,8 @@ _FORTIFY_FN(wmemmove) wchar_t *wmemmove(wchar_t *__d, const wchar_t *__s, size_t
240 return __orig_wmemmove(__d, __s, __n); 257 return __orig_wmemmove(__d, __s, __n);
241} 258}
242 259
243_FORTIFY_FN(wmemset) wchar_t *wmemset(wchar_t *__s, wchar_t __c, size_t __n) 260_FORTIFY_FN(wmemset) wchar_t *wmemset(wchar_t * _FORTIFY_POS0 __s,
261 wchar_t __c, size_t __n)
244{ 262{
245 size_t __b = __bos(__s, 0); 263 size_t __b = __bos(__s, 0);
246 264