diff options
| author | Daniel Kolesa | 2022-10-26 00:30:00 +0200 |
|---|---|---|
| committer | jvoisin | 2025-10-31 22:16:21 +0100 |
| commit | f46714c2f9eb13c12c8218f1b7c045182041fdc9 (patch) | |
| tree | b1285c57cd600790ce86890927504e59f1cbd7d7 /include/wchar.h | |
| parent | 8915dc13de44fed3a076a9fd51eb1ab2b5502d7b (diff) | |
add initial clang support
Co-Authored-By: jvoisin <julien.voisin@dustri.org>
Diffstat (limited to 'include/wchar.h')
| -rw-r--r-- | include/wchar.h | 50 |
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 | ||
