1/* Checking macros for wchar functions. Declarations only.
2 Copyright (C) 2004-2024 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_WCHAR2_DECL_H
20#define _BITS_WCHAR2_DECL_H 1
21
22#ifndef _WCHAR_H
23# error "Never include <bits/wchar2-decl.h> directly; use <wchar.h> instead."
24#endif
25
26
27extern wchar_t *__wmemcpy_chk (wchar_t *__restrict __s1,
28 const wchar_t *__restrict __s2, size_t __n,
29 size_t __ns1) __THROW;
30extern wchar_t *__REDIRECT_NTH (__wmemcpy_alias,
31 (wchar_t *__restrict __s1,
32 const wchar_t *__restrict __s2, size_t __n),
33 wmemcpy);
34extern wchar_t *__REDIRECT_NTH (__wmemcpy_chk_warn,
35 (wchar_t *__restrict __s1,
36 const wchar_t *__restrict __s2, size_t __n,
37 size_t __ns1), __wmemcpy_chk)
38 __warnattr ("wmemcpy called with length bigger than size of destination "
39 "buffer");
40
41extern wchar_t *__wmemmove_chk (wchar_t *__s1, const wchar_t *__s2,
42 size_t __n, size_t __ns1) __THROW;
43extern wchar_t *__REDIRECT_NTH (__wmemmove_alias, (wchar_t *__s1,
44 const wchar_t *__s2,
45 size_t __n), wmemmove);
46extern wchar_t *__REDIRECT_NTH (__wmemmove_chk_warn,
47 (wchar_t *__s1, const wchar_t *__s2,
48 size_t __n, size_t __ns1), __wmemmove_chk)
49 __warnattr ("wmemmove called with length bigger than size of destination "
50 "buffer");
51
52
53#ifdef __USE_GNU
54
55extern wchar_t *__wmempcpy_chk (wchar_t *__restrict __s1,
56 const wchar_t *__restrict __s2, size_t __n,
57 size_t __ns1) __THROW;
58extern wchar_t *__REDIRECT_NTH (__wmempcpy_alias,
59 (wchar_t *__restrict __s1,
60 const wchar_t *__restrict __s2,
61 size_t __n), wmempcpy);
62extern wchar_t *__REDIRECT_NTH (__wmempcpy_chk_warn,
63 (wchar_t *__restrict __s1,
64 const wchar_t *__restrict __s2, size_t __n,
65 size_t __ns1), __wmempcpy_chk)
66 __warnattr ("wmempcpy called with length bigger than size of destination "
67 "buffer");
68
69#endif
70
71
72extern wchar_t *__wmemset_chk (wchar_t *__s, wchar_t __c, size_t __n,
73 size_t __ns) __THROW;
74extern wchar_t *__REDIRECT_FORTIFY_NTH (__wmemset_alias, (wchar_t *__s, wchar_t __c,
75 size_t __n), wmemset);
76extern wchar_t *__REDIRECT_NTH (__wmemset_chk_warn,
77 (wchar_t *__s, wchar_t __c, size_t __n,
78 size_t __ns), __wmemset_chk)
79 __warnattr ("wmemset called with length bigger than size of destination "
80 "buffer");
81
82extern wchar_t *__wcscpy_chk (wchar_t *__restrict __dest,
83 const wchar_t *__restrict __src,
84 size_t __n) __THROW;
85extern wchar_t *__REDIRECT_NTH (__wcscpy_alias,
86 (wchar_t *__restrict __dest,
87 const wchar_t *__restrict __src), wcscpy);
88
89extern wchar_t *__wcpcpy_chk (wchar_t *__restrict __dest,
90 const wchar_t *__restrict __src,
91 size_t __destlen) __THROW;
92extern wchar_t *__REDIRECT_NTH (__wcpcpy_alias,
93 (wchar_t *__restrict __dest,
94 const wchar_t *__restrict __src), wcpcpy);
95
96extern wchar_t *__wcsncpy_chk (wchar_t *__restrict __dest,
97 const wchar_t *__restrict __src, size_t __n,
98 size_t __destlen) __THROW;
99extern wchar_t *__REDIRECT_NTH (__wcsncpy_alias,
100 (wchar_t *__restrict __dest,
101 const wchar_t *__restrict __src,
102 size_t __n), wcsncpy);
103extern wchar_t *__REDIRECT_NTH (__wcsncpy_chk_warn,
104 (wchar_t *__restrict __dest,
105 const wchar_t *__restrict __src,
106 size_t __n, size_t __destlen), __wcsncpy_chk)
107 __warnattr ("wcsncpy called with length bigger than size of destination "
108 "buffer");
109
110extern wchar_t *__wcpncpy_chk (wchar_t *__restrict __dest,
111 const wchar_t *__restrict __src, size_t __n,
112 size_t __destlen) __THROW;
113
114extern wchar_t *__REDIRECT_NTH (__wcpncpy_alias,
115 (wchar_t *__restrict __dest,
116 const wchar_t *__restrict __src,
117 size_t __n), wcpncpy);
118extern wchar_t *__REDIRECT_NTH (__wcpncpy_chk_warn,
119 (wchar_t *__restrict __dest,
120 const wchar_t *__restrict __src,
121 size_t __n, size_t __destlen), __wcpncpy_chk)
122 __warnattr ("wcpncpy called with length bigger than size of destination "
123 "buffer");
124
125extern wchar_t *__wcscat_chk (wchar_t *__restrict __dest,
126 const wchar_t *__restrict __src,
127 size_t __destlen) __THROW;
128extern wchar_t *__REDIRECT_NTH (__wcscat_alias,
129 (wchar_t *__restrict __dest,
130 const wchar_t *__restrict __src), wcscat);
131
132extern wchar_t *__wcsncat_chk (wchar_t *__restrict __dest,
133 const wchar_t *__restrict __src,
134 size_t __n, size_t __destlen) __THROW;
135extern wchar_t *__REDIRECT_NTH (__wcsncat_alias,
136 (wchar_t *__restrict __dest,
137 const wchar_t *__restrict __src,
138 size_t __n), wcsncat);
139
140extern int __swprintf_chk (wchar_t *__restrict __s, size_t __n,
141 int __flag, size_t __s_len,
142 const wchar_t *__restrict __format, ...)
143 __THROW /* __attribute__ ((__format__ (__wprintf__, 5, 6))) */;
144extern int __REDIRECT_NTH_LDBL (__swprintf_alias,
145 (wchar_t *__restrict __s, size_t __n,
146 const wchar_t *__restrict __fmt, ...),
147 swprintf);
148
149extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n,
150 int __flag, size_t __s_len,
151 const wchar_t *__restrict __format,
152 __gnuc_va_list __arg)
153 __THROW /* __attribute__ ((__format__ (__wprintf__, 5, 0))) */;
154extern int __REDIRECT_NTH_LDBL (__vswprintf_alias,
155 (wchar_t *__restrict __s, size_t __n,
156 const wchar_t *__restrict __fmt,
157 __gnuc_va_list __ap), vswprintf);
158
159
160#if __USE_FORTIFY_LEVEL > 1
161
162extern int __fwprintf_chk (__FILE *__restrict __stream, int __flag,
163 const wchar_t *__restrict __format, ...);
164extern int __wprintf_chk (int __flag, const wchar_t *__restrict __format,
165 ...);
166extern int __vfwprintf_chk (__FILE *__restrict __stream, int __flag,
167 const wchar_t *__restrict __format,
168 __gnuc_va_list __ap);
169extern int __vwprintf_chk (int __flag, const wchar_t *__restrict __format,
170 __gnuc_va_list __ap);
171
172#endif
173
174extern wchar_t *__fgetws_chk (wchar_t *__restrict __s, size_t __size, int __n,
175 __FILE *__restrict __stream) __wur;
176extern wchar_t *__REDIRECT (__fgetws_alias,
177 (wchar_t *__restrict __s, int __n,
178 __FILE *__restrict __stream), fgetws) __wur;
179extern wchar_t *__REDIRECT (__fgetws_chk_warn,
180 (wchar_t *__restrict __s, size_t __size, int __n,
181 __FILE *__restrict __stream), __fgetws_chk)
182 __wur __warnattr ("fgetws called with bigger size than length "
183 "of destination buffer");
184
185#ifdef __USE_GNU
186
187extern wchar_t *__fgetws_unlocked_chk (wchar_t *__restrict __s, size_t __size,
188 int __n, __FILE *__restrict __stream)
189 __wur;
190extern wchar_t *__REDIRECT (__fgetws_unlocked_alias,
191 (wchar_t *__restrict __s, int __n,
192 __FILE *__restrict __stream), fgetws_unlocked)
193 __wur;
194extern wchar_t *__REDIRECT (__fgetws_unlocked_chk_warn,
195 (wchar_t *__restrict __s, size_t __size, int __n,
196 __FILE *__restrict __stream),
197 __fgetws_unlocked_chk)
198 __wur __warnattr ("fgetws_unlocked called with bigger size than length "
199 "of destination buffer");
200
201#endif
202
203extern size_t __wcrtomb_chk (char *__restrict __s, wchar_t __wchar,
204 mbstate_t *__restrict __p,
205 size_t __buflen) __THROW __wur;
206extern size_t __REDIRECT_FORTIFY_NTH (__wcrtomb_alias,
207 (char *__restrict __s, wchar_t __wchar,
208 mbstate_t *__restrict __ps), wcrtomb) __wur;
209
210extern size_t __mbsrtowcs_chk (wchar_t *__restrict __dst,
211 const char **__restrict __src,
212 size_t __len, mbstate_t *__restrict __ps,
213 size_t __dstlen) __THROW;
214extern size_t __REDIRECT_NTH (__mbsrtowcs_alias,
215 (wchar_t *__restrict __dst,
216 const char **__restrict __src,
217 size_t __len, mbstate_t *__restrict __ps),
218 mbsrtowcs);
219extern size_t __REDIRECT_NTH (__mbsrtowcs_chk_warn,
220 (wchar_t *__restrict __dst,
221 const char **__restrict __src,
222 size_t __len, mbstate_t *__restrict __ps,
223 size_t __dstlen), __mbsrtowcs_chk)
224 __warnattr ("mbsrtowcs called with dst buffer smaller than len "
225 "* sizeof (wchar_t)");
226
227extern size_t __wcsrtombs_chk (char *__restrict __dst,
228 const wchar_t **__restrict __src,
229 size_t __len, mbstate_t *__restrict __ps,
230 size_t __dstlen) __THROW;
231extern size_t __REDIRECT_NTH (__wcsrtombs_alias,
232 (char *__restrict __dst,
233 const wchar_t **__restrict __src,
234 size_t __len, mbstate_t *__restrict __ps),
235 wcsrtombs);
236extern size_t __REDIRECT_NTH (__wcsrtombs_chk_warn,
237 (char *__restrict __dst,
238 const wchar_t **__restrict __src,
239 size_t __len, mbstate_t *__restrict __ps,
240 size_t __dstlen), __wcsrtombs_chk)
241 __warnattr ("wcsrtombs called with dst buffer smaller than len");
242
243#ifdef __USE_XOPEN2K8
244
245extern size_t __mbsnrtowcs_chk (wchar_t *__restrict __dst,
246 const char **__restrict __src, size_t __nmc,
247 size_t __len, mbstate_t *__restrict __ps,
248 size_t __dstlen) __THROW;
249extern size_t __REDIRECT_NTH (__mbsnrtowcs_alias,
250 (wchar_t *__restrict __dst,
251 const char **__restrict __src, size_t __nmc,
252 size_t __len, mbstate_t *__restrict __ps),
253 mbsnrtowcs);
254extern size_t __REDIRECT_NTH (__mbsnrtowcs_chk_warn,
255 (wchar_t *__restrict __dst,
256 const char **__restrict __src, size_t __nmc,
257 size_t __len, mbstate_t *__restrict __ps,
258 size_t __dstlen), __mbsnrtowcs_chk)
259 __warnattr ("mbsnrtowcs called with dst buffer smaller than len "
260 "* sizeof (wchar_t)");
261
262extern size_t __wcsnrtombs_chk (char *__restrict __dst,
263 const wchar_t **__restrict __src,
264 size_t __nwc, size_t __len,
265 mbstate_t *__restrict __ps, size_t __dstlen)
266 __THROW;
267extern size_t __REDIRECT_NTH (__wcsnrtombs_alias,
268 (char *__restrict __dst,
269 const wchar_t **__restrict __src,
270 size_t __nwc, size_t __len,
271 mbstate_t *__restrict __ps), wcsnrtombs);
272extern size_t __REDIRECT_NTH (__wcsnrtombs_chk_warn,
273 (char *__restrict __dst,
274 const wchar_t **__restrict __src,
275 size_t __nwc, size_t __len,
276 mbstate_t *__restrict __ps,
277 size_t __dstlen), __wcsnrtombs_chk)
278 __warnattr ("wcsnrtombs called with dst buffer smaller than len");
279
280#endif
281
282#ifdef __USE_MISC
283extern size_t __wcslcpy_chk (wchar_t *__dest, const wchar_t *__src, size_t __n,
284 size_t __destlen) __THROW;
285extern size_t __REDIRECT_NTH (__wcslcpy_alias,
286 (wchar_t *__dest, const wchar_t *__src,
287 size_t __n), wcslcpy);
288
289extern size_t __wcslcat_chk (wchar_t *__dest, const wchar_t *__src, size_t __n,
290 size_t __destlen) __THROW;
291extern size_t __REDIRECT_NTH (__wcslcat_alias,
292 (wchar_t *__dest, const wchar_t *__src,
293 size_t __n), wcslcat);
294#endif /* __USE_MISC */
295
296#endif /* bits/wchar2-decl.h. */
297

source code of glibc/wcsmbs/bits/wchar2-decl.h