PIPS
string.in.h
Go to the documentation of this file.
1 /* A GNU-like <string.h>.
2 
3  Copyright (C) 1995-1996, 2001-2014 Free Software Foundation, Inc.
4 
5  This program is free software; you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation; either version 3, or (at your option)
8  any later version.
9 
10  This program 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
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with this program; if not, see <http://www.gnu.org/licenses/>. */
17 
18 #ifndef _@GUARD_PREFIX@_STRING_H
19 
20 #if __GNUC__ >= 3
21 @PRAGMA_SYSTEM_HEADER@
22 #endif
23 @PRAGMA_COLUMNS@
24 
25 /* The include_next requires a split double-inclusion guard. */
26 #@INCLUDE_NEXT@ @NEXT_STRING_H@
27 
28 #ifndef _@GUARD_PREFIX@_STRING_H
29 #define _@GUARD_PREFIX@_STRING_H
30 
31 /* NetBSD 5.0 mis-defines NULL. */
32 #include <stddef.h>
33 
34 /* MirBSD defines mbslen as a macro. */
35 #if @GNULIB_MBSLEN@ && defined __MirBSD__
36 # include <wchar.h>
37 #endif
38 
39 /* The __attribute__ feature is available in gcc versions 2.5 and later.
40  The attribute __pure__ was added in gcc 2.96. */
41 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
42 # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
43 #else
44 # define _GL_ATTRIBUTE_PURE /* empty */
45 #endif
46 
47 /* NetBSD 5.0 declares strsignal in <unistd.h>, not in <string.h>. */
48 /* But in any case avoid namespace pollution on glibc systems. */
49 #if (@GNULIB_STRSIGNAL@ || defined GNULIB_POSIXCHECK) && defined __NetBSD__ \
50  && ! defined __GLIBC__
51 # include <unistd.h>
52 #endif
53 
54 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
55 
56 /* The definition of _GL_ARG_NONNULL is copied here. */
57 
58 /* The definition of _GL_WARN_ON_USE is copied here. */
59 
60 
61 /* Find the index of the least-significant set bit. */
62 #if @GNULIB_FFSL@
63 # if !@HAVE_FFSL@
64 _GL_FUNCDECL_SYS (ffsl, int, (long int i));
65 # endif
66 _GL_CXXALIAS_SYS (ffsl, int, (long int i));
67 _GL_CXXALIASWARN (ffsl);
68 #elif defined GNULIB_POSIXCHECK
69 # undef ffsl
70 # if HAVE_RAW_DECL_FFSL
71 _GL_WARN_ON_USE (ffsl, "ffsl is not portable - use the ffsl module");
72 # endif
73 #endif
74 
75 
76 /* Find the index of the least-significant set bit. */
77 #if @GNULIB_FFSLL@
78 # if !@HAVE_FFSLL@
79 _GL_FUNCDECL_SYS (ffsll, int, (long long int i));
80 # endif
81 _GL_CXXALIAS_SYS (ffsll, int, (long long int i));
82 _GL_CXXALIASWARN (ffsll);
83 #elif defined GNULIB_POSIXCHECK
84 # undef ffsll
85 # if HAVE_RAW_DECL_FFSLL
86 _GL_WARN_ON_USE (ffsll, "ffsll is not portable - use the ffsll module");
87 # endif
88 #endif
89 
90 
91 /* Return the first instance of C within N bytes of S, or NULL. */
92 #if @GNULIB_MEMCHR@
93 # if @REPLACE_MEMCHR@
94 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
95 # define memchr rpl_memchr
96 # endif
97 _GL_FUNCDECL_RPL (memchr, void *, (void const *__s, int __c, size_t __n)
99  _GL_ARG_NONNULL ((1)));
100 _GL_CXXALIAS_RPL (memchr, void *, (void const *__s, int __c, size_t __n));
101 # else
102 # if ! @HAVE_MEMCHR@
103 _GL_FUNCDECL_SYS (memchr, void *, (void const *__s, int __c, size_t __n)
105  _GL_ARG_NONNULL ((1)));
106 # endif
107  /* On some systems, this function is defined as an overloaded function:
108  extern "C" { const void * std::memchr (const void *, int, size_t); }
109  extern "C++" { void * std::memchr (void *, int, size_t); } */
110 _GL_CXXALIAS_SYS_CAST2 (memchr,
111  void *, (void const *__s, int __c, size_t __n),
112  void const *, (void const *__s, int __c, size_t __n));
113 # endif
114 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
115  && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
116 _GL_CXXALIASWARN1 (memchr, void *, (void *__s, int __c, size_t __n));
117 _GL_CXXALIASWARN1 (memchr, void const *,
118  (void const *__s, int __c, size_t __n));
119 # else
120 _GL_CXXALIASWARN (memchr);
121 # endif
122 #elif defined GNULIB_POSIXCHECK
123 # undef memchr
124 /* Assume memchr is always declared. */
125 _GL_WARN_ON_USE (memchr, "memchr has platform-specific bugs - "
126  "use gnulib module memchr for portability" );
127 #endif
128 
129 /* Return the first occurrence of NEEDLE in HAYSTACK. */
130 #if @GNULIB_MEMMEM@
131 # if @REPLACE_MEMMEM@
132 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
133 # define memmem rpl_memmem
134 # endif
135 _GL_FUNCDECL_RPL (memmem, void *,
136  (void const *__haystack, size_t __haystack_len,
137  void const *__needle, size_t __needle_len)
139  _GL_ARG_NONNULL ((1, 3)));
140 _GL_CXXALIAS_RPL (memmem, void *,
141  (void const *__haystack, size_t __haystack_len,
142  void const *__needle, size_t __needle_len));
143 # else
144 # if ! @HAVE_DECL_MEMMEM@
145 _GL_FUNCDECL_SYS (memmem, void *,
146  (void const *__haystack, size_t __haystack_len,
147  void const *__needle, size_t __needle_len)
149  _GL_ARG_NONNULL ((1, 3)));
150 # endif
151 _GL_CXXALIAS_SYS (memmem, void *,
152  (void const *__haystack, size_t __haystack_len,
153  void const *__needle, size_t __needle_len));
154 # endif
155 _GL_CXXALIASWARN (memmem);
156 #elif defined GNULIB_POSIXCHECK
157 # undef memmem
158 # if HAVE_RAW_DECL_MEMMEM
159 _GL_WARN_ON_USE (memmem, "memmem is unportable and often quadratic - "
160  "use gnulib module memmem-simple for portability, "
161  "and module memmem for speed" );
162 # endif
163 #endif
164 
165 /* Copy N bytes of SRC to DEST, return pointer to bytes after the
166  last written byte. */
167 #if @GNULIB_MEMPCPY@
168 # if ! @HAVE_MEMPCPY@
169 _GL_FUNCDECL_SYS (mempcpy, void *,
170  (void *restrict __dest, void const *restrict __src,
171  size_t __n)
172  _GL_ARG_NONNULL ((1, 2)));
173 # endif
174 _GL_CXXALIAS_SYS (mempcpy, void *,
175  (void *restrict __dest, void const *restrict __src,
176  size_t __n));
177 _GL_CXXALIASWARN (mempcpy);
178 #elif defined GNULIB_POSIXCHECK
179 # undef mempcpy
180 # if HAVE_RAW_DECL_MEMPCPY
181 _GL_WARN_ON_USE (mempcpy, "mempcpy is unportable - "
182  "use gnulib module mempcpy for portability");
183 # endif
184 #endif
185 
186 /* Search backwards through a block for a byte (specified as an int). */
187 #if @GNULIB_MEMRCHR@
188 # if ! @HAVE_DECL_MEMRCHR@
189 _GL_FUNCDECL_SYS (memrchr, void *, (void const *, int, size_t)
191  _GL_ARG_NONNULL ((1)));
192 # endif
193  /* On some systems, this function is defined as an overloaded function:
194  extern "C++" { const void * std::memrchr (const void *, int, size_t); }
195  extern "C++" { void * std::memrchr (void *, int, size_t); } */
196 _GL_CXXALIAS_SYS_CAST2 (memrchr,
197  void *, (void const *, int, size_t),
198  void const *, (void const *, int, size_t));
199 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
200  && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
201 _GL_CXXALIASWARN1 (memrchr, void *, (void *, int, size_t));
202 _GL_CXXALIASWARN1 (memrchr, void const *, (void const *, int, size_t));
203 # else
204 _GL_CXXALIASWARN (memrchr);
205 # endif
206 #elif defined GNULIB_POSIXCHECK
207 # undef memrchr
208 # if HAVE_RAW_DECL_MEMRCHR
209 _GL_WARN_ON_USE (memrchr, "memrchr is unportable - "
210  "use gnulib module memrchr for portability");
211 # endif
212 #endif
213 
214 /* Find the first occurrence of C in S. More efficient than
215  memchr(S,C,N), at the expense of undefined behavior if C does not
216  occur within N bytes. */
217 #if @GNULIB_RAWMEMCHR@
218 # if ! @HAVE_RAWMEMCHR@
219 _GL_FUNCDECL_SYS (rawmemchr, void *, (void const *__s, int __c_in)
221  _GL_ARG_NONNULL ((1)));
222 # endif
223  /* On some systems, this function is defined as an overloaded function:
224  extern "C++" { const void * std::rawmemchr (const void *, int); }
225  extern "C++" { void * std::rawmemchr (void *, int); } */
227  void *, (void const *__s, int __c_in),
228  void const *, (void const *__s, int __c_in));
229 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
230  && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
231 _GL_CXXALIASWARN1 (rawmemchr, void *, (void *__s, int __c_in));
232 _GL_CXXALIASWARN1 (rawmemchr, void const *, (void const *__s, int __c_in));
233 # else
235 # endif
236 #elif defined GNULIB_POSIXCHECK
237 # undef rawmemchr
238 # if HAVE_RAW_DECL_RAWMEMCHR
239 _GL_WARN_ON_USE (rawmemchr, "rawmemchr is unportable - "
240  "use gnulib module rawmemchr for portability");
241 # endif
242 #endif
243 
244 /* Copy SRC to DST, returning the address of the terminating '\0' in DST. */
245 #if @GNULIB_STPCPY@
246 # if ! @HAVE_STPCPY@
247 _GL_FUNCDECL_SYS (stpcpy, char *,
248  (char *restrict __dst, char const *restrict __src)
249  _GL_ARG_NONNULL ((1, 2)));
250 # endif
251 _GL_CXXALIAS_SYS (stpcpy, char *,
252  (char *restrict __dst, char const *restrict __src));
253 _GL_CXXALIASWARN (stpcpy);
254 #elif defined GNULIB_POSIXCHECK
255 # undef stpcpy
256 # if HAVE_RAW_DECL_STPCPY
257 _GL_WARN_ON_USE (stpcpy, "stpcpy is unportable - "
258  "use gnulib module stpcpy for portability");
259 # endif
260 #endif
261 
262 /* Copy no more than N bytes of SRC to DST, returning a pointer past the
263  last non-NUL byte written into DST. */
264 #if @GNULIB_STPNCPY@
265 # if @REPLACE_STPNCPY@
266 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
267 # undef stpncpy
268 # define stpncpy rpl_stpncpy
269 # endif
270 _GL_FUNCDECL_RPL (stpncpy, char *,
271  (char *restrict __dst, char const *restrict __src,
272  size_t __n)
273  _GL_ARG_NONNULL ((1, 2)));
274 _GL_CXXALIAS_RPL (stpncpy, char *,
275  (char *restrict __dst, char const *restrict __src,
276  size_t __n));
277 # else
278 # if ! @HAVE_STPNCPY@
279 _GL_FUNCDECL_SYS (stpncpy, char *,
280  (char *restrict __dst, char const *restrict __src,
281  size_t __n)
282  _GL_ARG_NONNULL ((1, 2)));
283 # endif
284 _GL_CXXALIAS_SYS (stpncpy, char *,
285  (char *restrict __dst, char const *restrict __src,
286  size_t __n));
287 # endif
288 _GL_CXXALIASWARN (stpncpy);
289 #elif defined GNULIB_POSIXCHECK
290 # undef stpncpy
291 # if HAVE_RAW_DECL_STPNCPY
292 _GL_WARN_ON_USE (stpncpy, "stpncpy is unportable - "
293  "use gnulib module stpncpy for portability");
294 # endif
295 #endif
296 
297 #if defined GNULIB_POSIXCHECK
298 /* strchr() does not work with multibyte strings if the locale encoding is
299  GB18030 and the character to be searched is a digit. */
300 # undef strchr
301 /* Assume strchr is always declared. */
302 _GL_WARN_ON_USE (strchr, "strchr cannot work correctly on character strings "
303  "in some multibyte locales - "
304  "use mbschr if you care about internationalization");
305 #endif
306 
307 /* Find the first occurrence of C in S or the final NUL byte. */
308 #if @GNULIB_STRCHRNUL@
309 # if @REPLACE_STRCHRNUL@
310 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
311 # define strchrnul rpl_strchrnul
312 # endif
313 _GL_FUNCDECL_RPL (strchrnul, char *, (const char *__s, int __c_in)
315  _GL_ARG_NONNULL ((1)));
316 _GL_CXXALIAS_RPL (strchrnul, char *,
317  (const char *str, int ch));
318 # else
319 # if ! @HAVE_STRCHRNUL@
320 _GL_FUNCDECL_SYS (strchrnul, char *, (char const *__s, int __c_in)
322  _GL_ARG_NONNULL ((1)));
323 # endif
324  /* On some systems, this function is defined as an overloaded function:
325  extern "C++" { const char * std::strchrnul (const char *, int); }
326  extern "C++" { char * std::strchrnul (char *, int); } */
328  char *, (char const *__s, int __c_in),
329  char const *, (char const *__s, int __c_in));
330 # endif
331 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
332  && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
333 _GL_CXXALIASWARN1 (strchrnul, char *, (char *__s, int __c_in));
334 _GL_CXXALIASWARN1 (strchrnul, char const *, (char const *__s, int __c_in));
335 # else
337 # endif
338 #elif defined GNULIB_POSIXCHECK
339 # undef strchrnul
340 # if HAVE_RAW_DECL_STRCHRNUL
341 _GL_WARN_ON_USE (strchrnul, "strchrnul is unportable - "
342  "use gnulib module strchrnul for portability");
343 # endif
344 #endif
345 
346 /* Duplicate S, returning an identical malloc'd string. */
347 #if @GNULIB_STRDUP@
348 # if @REPLACE_STRDUP@
349 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
350 # undef strdup
351 # define strdup rpl_strdup
352 # endif
353 _GL_FUNCDECL_RPL (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1)));
354 _GL_CXXALIAS_RPL (strdup, char *, (char const *__s));
355 # else
356 # if defined __cplusplus && defined GNULIB_NAMESPACE && defined strdup
357  /* strdup exists as a function and as a macro. Get rid of the macro. */
358 # undef strdup
359 # endif
360 # if !(@HAVE_DECL_STRDUP@ || defined strdup)
361 _GL_FUNCDECL_SYS (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1)));
362 # endif
363 _GL_CXXALIAS_SYS (strdup, char *, (char const *__s));
364 # endif
366 #elif defined GNULIB_POSIXCHECK
367 # undef strdup
368 # if HAVE_RAW_DECL_STRDUP
369 _GL_WARN_ON_USE (strdup, "strdup is unportable - "
370  "use gnulib module strdup for portability");
371 # endif
372 #endif
373 
374 /* Append no more than N characters from SRC onto DEST. */
375 #if @GNULIB_STRNCAT@
376 # if @REPLACE_STRNCAT@
377 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
378 # undef strncat
379 # define strncat rpl_strncat
380 # endif
381 _GL_FUNCDECL_RPL (strncat, char *, (char *dest, const char *src, size_t n)
382  _GL_ARG_NONNULL ((1, 2)));
383 _GL_CXXALIAS_RPL (strncat, char *, (char *dest, const char *src, size_t n));
384 # else
385 _GL_CXXALIAS_SYS (strncat, char *, (char *dest, const char *src, size_t n));
386 # endif
387 _GL_CXXALIASWARN (strncat);
388 #elif defined GNULIB_POSIXCHECK
389 # undef strncat
390 # if HAVE_RAW_DECL_STRNCAT
391 _GL_WARN_ON_USE (strncat, "strncat is unportable - "
392  "use gnulib module strncat for portability");
393 # endif
394 #endif
395 
396 /* Return a newly allocated copy of at most N bytes of STRING. */
397 #if @GNULIB_STRNDUP@
398 # if @REPLACE_STRNDUP@
399 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
400 # undef strndup
401 # define strndup rpl_strndup
402 # endif
403 _GL_FUNCDECL_RPL (strndup, char *, (char const *__string, size_t __n)
404  _GL_ARG_NONNULL ((1)));
405 _GL_CXXALIAS_RPL (strndup, char *, (char const *__string, size_t __n));
406 # else
407 # if ! @HAVE_DECL_STRNDUP@
408 _GL_FUNCDECL_SYS (strndup, char *, (char const *__string, size_t __n)
409  _GL_ARG_NONNULL ((1)));
410 # endif
411 _GL_CXXALIAS_SYS (strndup, char *, (char const *__string, size_t __n));
412 # endif
414 #elif defined GNULIB_POSIXCHECK
415 # undef strndup
416 # if HAVE_RAW_DECL_STRNDUP
417 _GL_WARN_ON_USE (strndup, "strndup is unportable - "
418  "use gnulib module strndup for portability");
419 # endif
420 #endif
421 
422 /* Find the length (number of bytes) of STRING, but scan at most
423  MAXLEN bytes. If no '\0' terminator is found in that many bytes,
424  return MAXLEN. */
425 #if @GNULIB_STRNLEN@
426 # if @REPLACE_STRNLEN@
427 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
428 # undef strnlen
429 # define strnlen rpl_strnlen
430 # endif
431 _GL_FUNCDECL_RPL (strnlen, size_t, (char const *__string, size_t __maxlen)
433  _GL_ARG_NONNULL ((1)));
434 _GL_CXXALIAS_RPL (strnlen, size_t, (char const *__string, size_t __maxlen));
435 # else
436 # if ! @HAVE_DECL_STRNLEN@
437 _GL_FUNCDECL_SYS (strnlen, size_t, (char const *__string, size_t __maxlen)
439  _GL_ARG_NONNULL ((1)));
440 # endif
441 _GL_CXXALIAS_SYS (strnlen, size_t, (char const *__string, size_t __maxlen));
442 # endif
444 #elif defined GNULIB_POSIXCHECK
445 # undef strnlen
446 # if HAVE_RAW_DECL_STRNLEN
447 _GL_WARN_ON_USE (strnlen, "strnlen is unportable - "
448  "use gnulib module strnlen for portability");
449 # endif
450 #endif
451 
452 #if defined GNULIB_POSIXCHECK
453 /* strcspn() assumes the second argument is a list of single-byte characters.
454  Even in this simple case, it does not work with multibyte strings if the
455  locale encoding is GB18030 and one of the characters to be searched is a
456  digit. */
457 # undef strcspn
458 /* Assume strcspn is always declared. */
459 _GL_WARN_ON_USE (strcspn, "strcspn cannot work correctly on character strings "
460  "in multibyte locales - "
461  "use mbscspn if you care about internationalization");
462 #endif
463 
464 /* Find the first occurrence in S of any character in ACCEPT. */
465 #if @GNULIB_STRPBRK@
466 # if ! @HAVE_STRPBRK@
467 _GL_FUNCDECL_SYS (strpbrk, char *, (char const *__s, char const *__accept)
469  _GL_ARG_NONNULL ((1, 2)));
470 # endif
471  /* On some systems, this function is defined as an overloaded function:
472  extern "C" { const char * strpbrk (const char *, const char *); }
473  extern "C++" { char * strpbrk (char *, const char *); } */
474 _GL_CXXALIAS_SYS_CAST2 (strpbrk,
475  char *, (char const *__s, char const *__accept),
476  const char *, (char const *__s, char const *__accept));
477 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
478  && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
479 _GL_CXXALIASWARN1 (strpbrk, char *, (char *__s, char const *__accept));
480 _GL_CXXALIASWARN1 (strpbrk, char const *,
481  (char const *__s, char const *__accept));
482 # else
483 _GL_CXXALIASWARN (strpbrk);
484 # endif
485 # if defined GNULIB_POSIXCHECK
486 /* strpbrk() assumes the second argument is a list of single-byte characters.
487  Even in this simple case, it does not work with multibyte strings if the
488  locale encoding is GB18030 and one of the characters to be searched is a
489  digit. */
490 # undef strpbrk
491 _GL_WARN_ON_USE (strpbrk, "strpbrk cannot work correctly on character strings "
492  "in multibyte locales - "
493  "use mbspbrk if you care about internationalization");
494 # endif
495 #elif defined GNULIB_POSIXCHECK
496 # undef strpbrk
497 # if HAVE_RAW_DECL_STRPBRK
498 _GL_WARN_ON_USE (strpbrk, "strpbrk is unportable - "
499  "use gnulib module strpbrk for portability");
500 # endif
501 #endif
502 
503 #if defined GNULIB_POSIXCHECK
504 /* strspn() assumes the second argument is a list of single-byte characters.
505  Even in this simple case, it cannot work with multibyte strings. */
506 # undef strspn
507 /* Assume strspn is always declared. */
508 _GL_WARN_ON_USE (strspn, "strspn cannot work correctly on character strings "
509  "in multibyte locales - "
510  "use mbsspn if you care about internationalization");
511 #endif
512 
513 #if defined GNULIB_POSIXCHECK
514 /* strrchr() does not work with multibyte strings if the locale encoding is
515  GB18030 and the character to be searched is a digit. */
516 # undef strrchr
517 /* Assume strrchr is always declared. */
518 _GL_WARN_ON_USE (strrchr, "strrchr cannot work correctly on character strings "
519  "in some multibyte locales - "
520  "use mbsrchr if you care about internationalization");
521 #endif
522 
523 /* Search the next delimiter (char listed in DELIM) starting at *STRINGP.
524  If one is found, overwrite it with a NUL, and advance *STRINGP
525  to point to the next char after it. Otherwise, set *STRINGP to NULL.
526  If *STRINGP was already NULL, nothing happens.
527  Return the old value of *STRINGP.
528 
529  This is a variant of strtok() that is multithread-safe and supports
530  empty fields.
531 
532  Caveat: It modifies the original string.
533  Caveat: These functions cannot be used on constant strings.
534  Caveat: The identity of the delimiting character is lost.
535  Caveat: It doesn't work with multibyte strings unless all of the delimiter
536  characters are ASCII characters < 0x30.
537 
538  See also strtok_r(). */
539 #if @GNULIB_STRSEP@
540 # if ! @HAVE_STRSEP@
541 _GL_FUNCDECL_SYS (strsep, char *,
542  (char **restrict __stringp, char const *restrict __delim)
543  _GL_ARG_NONNULL ((1, 2)));
544 # endif
545 _GL_CXXALIAS_SYS (strsep, char *,
546  (char **restrict __stringp, char const *restrict __delim));
547 _GL_CXXALIASWARN (strsep);
548 # if defined GNULIB_POSIXCHECK
549 # undef strsep
550 _GL_WARN_ON_USE (strsep, "strsep cannot work correctly on character strings "
551  "in multibyte locales - "
552  "use mbssep if you care about internationalization");
553 # endif
554 #elif defined GNULIB_POSIXCHECK
555 # undef strsep
556 # if HAVE_RAW_DECL_STRSEP
557 _GL_WARN_ON_USE (strsep, "strsep is unportable - "
558  "use gnulib module strsep for portability");
559 # endif
560 #endif
561 
562 #if @GNULIB_STRSTR@
563 # if @REPLACE_STRSTR@
564 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
565 # define strstr rpl_strstr
566 # endif
567 _GL_FUNCDECL_RPL (strstr, char *, (const char *haystack, const char *needle)
569  _GL_ARG_NONNULL ((1, 2)));
570 _GL_CXXALIAS_RPL (strstr, char *, (const char *haystack, const char *needle));
571 # else
572  /* On some systems, this function is defined as an overloaded function:
573  extern "C++" { const char * strstr (const char *, const char *); }
574  extern "C++" { char * strstr (char *, const char *); } */
575 _GL_CXXALIAS_SYS_CAST2 (strstr,
576  char *, (const char *haystack, const char *needle),
577  const char *, (const char *haystack, const char *needle));
578 # endif
579 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
580  && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
581 _GL_CXXALIASWARN1 (strstr, char *, (char *haystack, const char *needle));
582 _GL_CXXALIASWARN1 (strstr, const char *,
583  (const char *haystack, const char *needle));
584 # else
585 _GL_CXXALIASWARN (strstr);
586 # endif
587 #elif defined GNULIB_POSIXCHECK
588 /* strstr() does not work with multibyte strings if the locale encoding is
589  different from UTF-8:
590  POSIX says that it operates on "strings", and "string" in POSIX is defined
591  as a sequence of bytes, not of characters. */
592 # undef strstr
593 /* Assume strstr is always declared. */
594 _GL_WARN_ON_USE (strstr, "strstr is quadratic on many systems, and cannot "
595  "work correctly on character strings in most "
596  "multibyte locales - "
597  "use mbsstr if you care about internationalization, "
598  "or use strstr if you care about speed");
599 #endif
600 
601 /* Find the first occurrence of NEEDLE in HAYSTACK, using case-insensitive
602  comparison. */
603 #if @GNULIB_STRCASESTR@
604 # if @REPLACE_STRCASESTR@
605 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
606 # define strcasestr rpl_strcasestr
607 # endif
608 _GL_FUNCDECL_RPL (strcasestr, char *,
609  (const char *haystack, const char *needle)
611  _GL_ARG_NONNULL ((1, 2)));
612 _GL_CXXALIAS_RPL (strcasestr, char *,
613  (const char *haystack, const char *needle));
614 # else
615 # if ! @HAVE_STRCASESTR@
616 _GL_FUNCDECL_SYS (strcasestr, char *,
617  (const char *haystack, const char *needle)
619  _GL_ARG_NONNULL ((1, 2)));
620 # endif
621  /* On some systems, this function is defined as an overloaded function:
622  extern "C++" { const char * strcasestr (const char *, const char *); }
623  extern "C++" { char * strcasestr (char *, const char *); } */
624 _GL_CXXALIAS_SYS_CAST2 (strcasestr,
625  char *, (const char *haystack, const char *needle),
626  const char *, (const char *haystack, const char *needle));
627 # endif
628 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
629  && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
630 _GL_CXXALIASWARN1 (strcasestr, char *, (char *haystack, const char *needle));
631 _GL_CXXALIASWARN1 (strcasestr, const char *,
632  (const char *haystack, const char *needle));
633 # else
634 _GL_CXXALIASWARN (strcasestr);
635 # endif
636 #elif defined GNULIB_POSIXCHECK
637 /* strcasestr() does not work with multibyte strings:
638  It is a glibc extension, and glibc implements it only for unibyte
639  locales. */
640 # undef strcasestr
641 # if HAVE_RAW_DECL_STRCASESTR
642 _GL_WARN_ON_USE (strcasestr, "strcasestr does work correctly on character "
643  "strings in multibyte locales - "
644  "use mbscasestr if you care about "
645  "internationalization, or use c-strcasestr if you want "
646  "a locale independent function");
647 # endif
648 #endif
649 
650 /* Parse S into tokens separated by characters in DELIM.
651  If S is NULL, the saved pointer in SAVE_PTR is used as
652  the next starting point. For example:
653  char s[] = "-abc-=-def";
654  char *sp;
655  x = strtok_r(s, "-", &sp); // x = "abc", sp = "=-def"
656  x = strtok_r(NULL, "-=", &sp); // x = "def", sp = NULL
657  x = strtok_r(NULL, "=", &sp); // x = NULL
658  // s = "abc\0-def\0"
659 
660  This is a variant of strtok() that is multithread-safe.
661 
662  For the POSIX documentation for this function, see:
663  http://www.opengroup.org/susv3xsh/strtok.html
664 
665  Caveat: It modifies the original string.
666  Caveat: These functions cannot be used on constant strings.
667  Caveat: The identity of the delimiting character is lost.
668  Caveat: It doesn't work with multibyte strings unless all of the delimiter
669  characters are ASCII characters < 0x30.
670 
671  See also strsep(). */
672 #if @GNULIB_STRTOK_R@
673 # if @REPLACE_STRTOK_R@
674 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
675 # undef strtok_r
676 # define strtok_r rpl_strtok_r
677 # endif
678 _GL_FUNCDECL_RPL (strtok_r, char *,
679  (char *restrict s, char const *restrict delim,
680  char **restrict save_ptr)
681  _GL_ARG_NONNULL ((2, 3)));
682 _GL_CXXALIAS_RPL (strtok_r, char *,
683  (char *restrict s, char const *restrict delim,
684  char **restrict save_ptr));
685 # else
686 # if @UNDEFINE_STRTOK_R@ || defined GNULIB_POSIXCHECK
687 # undef strtok_r
688 # endif
689 # if ! @HAVE_DECL_STRTOK_R@
690 _GL_FUNCDECL_SYS (strtok_r, char *,
691  (char *restrict s, char const *restrict delim,
692  char **restrict save_ptr)
693  _GL_ARG_NONNULL ((2, 3)));
694 # endif
695 _GL_CXXALIAS_SYS (strtok_r, char *,
696  (char *restrict s, char const *restrict delim,
697  char **restrict save_ptr));
698 # endif
699 _GL_CXXALIASWARN (strtok_r);
700 # if defined GNULIB_POSIXCHECK
701 _GL_WARN_ON_USE (strtok_r, "strtok_r cannot work correctly on character "
702  "strings in multibyte locales - "
703  "use mbstok_r if you care about internationalization");
704 # endif
705 #elif defined GNULIB_POSIXCHECK
706 # undef strtok_r
707 # if HAVE_RAW_DECL_STRTOK_R
708 _GL_WARN_ON_USE (strtok_r, "strtok_r is unportable - "
709  "use gnulib module strtok_r for portability");
710 # endif
711 #endif
712 
713 
714 /* The following functions are not specified by POSIX. They are gnulib
715  extensions. */
716 
717 #if @GNULIB_MBSLEN@
718 /* Return the number of multibyte characters in the character string STRING.
719  This considers multibyte characters, unlike strlen, which counts bytes. */
720 # ifdef __MirBSD__ /* MirBSD defines mbslen as a macro. Override it. */
721 # undef mbslen
722 # endif
723 # if @HAVE_MBSLEN@ /* AIX, OSF/1, MirBSD define mbslen already in libc. */
724 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
725 # define mbslen rpl_mbslen
726 # endif
727 _GL_FUNCDECL_RPL (mbslen, size_t, (const char *string)
729  _GL_ARG_NONNULL ((1)));
730 _GL_CXXALIAS_RPL (mbslen, size_t, (const char *string));
731 # else
732 _GL_FUNCDECL_SYS (mbslen, size_t, (const char *string)
734  _GL_ARG_NONNULL ((1)));
735 _GL_CXXALIAS_SYS (mbslen, size_t, (const char *string));
736 # endif
737 _GL_CXXALIASWARN (mbslen);
738 #endif
739 
740 #if @GNULIB_MBSNLEN@
741 /* Return the number of multibyte characters in the character string starting
742  at STRING and ending at STRING + LEN. */
743 _GL_EXTERN_C size_t mbsnlen (const char *string, size_t len)
745  _GL_ARG_NONNULL ((1));
746 #endif
747 
748 #if @GNULIB_MBSCHR@
749 /* Locate the first single-byte character C in the character string STRING,
750  and return a pointer to it. Return NULL if C is not found in STRING.
751  Unlike strchr(), this function works correctly in multibyte locales with
752  encodings such as GB18030. */
753 # if defined __hpux
754 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
755 # define mbschr rpl_mbschr /* avoid collision with HP-UX function */
756 # endif
757 _GL_FUNCDECL_RPL (mbschr, char *, (const char *string, int c)
759  _GL_ARG_NONNULL ((1)));
760 _GL_CXXALIAS_RPL (mbschr, char *, (const char *string, int c));
761 # else
762 _GL_FUNCDECL_SYS (mbschr, char *, (const char *string, int c)
764  _GL_ARG_NONNULL ((1)));
765 _GL_CXXALIAS_SYS (mbschr, char *, (const char *string, int c));
766 # endif
767 _GL_CXXALIASWARN (mbschr);
768 #endif
769 
770 #if @GNULIB_MBSRCHR@
771 /* Locate the last single-byte character C in the character string STRING,
772  and return a pointer to it. Return NULL if C is not found in STRING.
773  Unlike strrchr(), this function works correctly in multibyte locales with
774  encodings such as GB18030. */
775 # if defined __hpux || defined __INTERIX
776 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
777 # define mbsrchr rpl_mbsrchr /* avoid collision with system function */
778 # endif
779 _GL_FUNCDECL_RPL (mbsrchr, char *, (const char *string, int c)
781  _GL_ARG_NONNULL ((1)));
782 _GL_CXXALIAS_RPL (mbsrchr, char *, (const char *string, int c));
783 # else
784 _GL_FUNCDECL_SYS (mbsrchr, char *, (const char *string, int c)
786  _GL_ARG_NONNULL ((1)));
787 _GL_CXXALIAS_SYS (mbsrchr, char *, (const char *string, int c));
788 # endif
789 _GL_CXXALIASWARN (mbsrchr);
790 #endif
791 
792 #if @GNULIB_MBSSTR@
793 /* Find the first occurrence of the character string NEEDLE in the character
794  string HAYSTACK. Return NULL if NEEDLE is not found in HAYSTACK.
795  Unlike strstr(), this function works correctly in multibyte locales with
796  encodings different from UTF-8. */
797 _GL_EXTERN_C char * mbsstr (const char *haystack, const char *needle)
799  _GL_ARG_NONNULL ((1, 2));
800 #endif
801 
802 #if @GNULIB_MBSCASECMP@
803 /* Compare the character strings S1 and S2, ignoring case, returning less than,
804  equal to or greater than zero if S1 is lexicographically less than, equal to
805  or greater than S2.
806  Note: This function may, in multibyte locales, return 0 for strings of
807  different lengths!
808  Unlike strcasecmp(), this function works correctly in multibyte locales. */
809 _GL_EXTERN_C int mbscasecmp (const char *s1, const char *s2)
811  _GL_ARG_NONNULL ((1, 2));
812 #endif
813 
814 #if @GNULIB_MBSNCASECMP@
815 /* Compare the initial segment of the character string S1 consisting of at most
816  N characters with the initial segment of the character string S2 consisting
817  of at most N characters, ignoring case, returning less than, equal to or
818  greater than zero if the initial segment of S1 is lexicographically less
819  than, equal to or greater than the initial segment of S2.
820  Note: This function may, in multibyte locales, return 0 for initial segments
821  of different lengths!
822  Unlike strncasecmp(), this function works correctly in multibyte locales.
823  But beware that N is not a byte count but a character count! */
824 _GL_EXTERN_C int mbsncasecmp (const char *s1, const char *s2, size_t n)
826  _GL_ARG_NONNULL ((1, 2));
827 #endif
828 
829 #if @GNULIB_MBSPCASECMP@
830 /* Compare the initial segment of the character string STRING consisting of
831  at most mbslen (PREFIX) characters with the character string PREFIX,
832  ignoring case. If the two match, return a pointer to the first byte
833  after this prefix in STRING. Otherwise, return NULL.
834  Note: This function may, in multibyte locales, return non-NULL if STRING
835  is of smaller length than PREFIX!
836  Unlike strncasecmp(), this function works correctly in multibyte
837  locales. */
838 _GL_EXTERN_C char * mbspcasecmp (const char *string, const char *prefix)
840  _GL_ARG_NONNULL ((1, 2));
841 #endif
842 
843 #if @GNULIB_MBSCASESTR@
844 /* Find the first occurrence of the character string NEEDLE in the character
845  string HAYSTACK, using case-insensitive comparison.
846  Note: This function may, in multibyte locales, return success even if
847  strlen (haystack) < strlen (needle) !
848  Unlike strcasestr(), this function works correctly in multibyte locales. */
849 _GL_EXTERN_C char * mbscasestr (const char *haystack, const char *needle)
851  _GL_ARG_NONNULL ((1, 2));
852 #endif
853 
854 #if @GNULIB_MBSCSPN@
855 /* Find the first occurrence in the character string STRING of any character
856  in the character string ACCEPT. Return the number of bytes from the
857  beginning of the string to this occurrence, or to the end of the string
858  if none exists.
859  Unlike strcspn(), this function works correctly in multibyte locales. */
860 _GL_EXTERN_C size_t mbscspn (const char *string, const char *accept)
862  _GL_ARG_NONNULL ((1, 2));
863 #endif
864 
865 #if @GNULIB_MBSPBRK@
866 /* Find the first occurrence in the character string STRING of any character
867  in the character string ACCEPT. Return the pointer to it, or NULL if none
868  exists.
869  Unlike strpbrk(), this function works correctly in multibyte locales. */
870 # if defined __hpux
871 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
872 # define mbspbrk rpl_mbspbrk /* avoid collision with HP-UX function */
873 # endif
874 _GL_FUNCDECL_RPL (mbspbrk, char *, (const char *string, const char *accept)
876  _GL_ARG_NONNULL ((1, 2)));
877 _GL_CXXALIAS_RPL (mbspbrk, char *, (const char *string, const char *accept));
878 # else
879 _GL_FUNCDECL_SYS (mbspbrk, char *, (const char *string, const char *accept)
881  _GL_ARG_NONNULL ((1, 2)));
882 _GL_CXXALIAS_SYS (mbspbrk, char *, (const char *string, const char *accept));
883 # endif
884 _GL_CXXALIASWARN (mbspbrk);
885 #endif
886 
887 #if @GNULIB_MBSSPN@
888 /* Find the first occurrence in the character string STRING of any character
889  not in the character string REJECT. Return the number of bytes from the
890  beginning of the string to this occurrence, or to the end of the string
891  if none exists.
892  Unlike strspn(), this function works correctly in multibyte locales. */
893 _GL_EXTERN_C size_t mbsspn (const char *string, const char *reject)
895  _GL_ARG_NONNULL ((1, 2));
896 #endif
897 
898 #if @GNULIB_MBSSEP@
899 /* Search the next delimiter (multibyte character listed in the character
900  string DELIM) starting at the character string *STRINGP.
901  If one is found, overwrite it with a NUL, and advance *STRINGP to point
902  to the next multibyte character after it. Otherwise, set *STRINGP to NULL.
903  If *STRINGP was already NULL, nothing happens.
904  Return the old value of *STRINGP.
905 
906  This is a variant of mbstok_r() that supports empty fields.
907 
908  Caveat: It modifies the original string.
909  Caveat: These functions cannot be used on constant strings.
910  Caveat: The identity of the delimiting character is lost.
911 
912  See also mbstok_r(). */
913 _GL_EXTERN_C char * mbssep (char **stringp, const char *delim)
914  _GL_ARG_NONNULL ((1, 2));
915 #endif
916 
917 #if @GNULIB_MBSTOK_R@
918 /* Parse the character string STRING into tokens separated by characters in
919  the character string DELIM.
920  If STRING is NULL, the saved pointer in SAVE_PTR is used as
921  the next starting point. For example:
922  char s[] = "-abc-=-def";
923  char *sp;
924  x = mbstok_r(s, "-", &sp); // x = "abc", sp = "=-def"
925  x = mbstok_r(NULL, "-=", &sp); // x = "def", sp = NULL
926  x = mbstok_r(NULL, "=", &sp); // x = NULL
927  // s = "abc\0-def\0"
928 
929  Caveat: It modifies the original string.
930  Caveat: These functions cannot be used on constant strings.
931  Caveat: The identity of the delimiting character is lost.
932 
933  See also mbssep(). */
934 _GL_EXTERN_C char * mbstok_r (char *string, const char *delim, char **save_ptr)
935  _GL_ARG_NONNULL ((2, 3));
936 #endif
937 
938 /* Map any int, typically from errno, into an error message. */
939 #if @GNULIB_STRERROR@
940 # if @REPLACE_STRERROR@
941 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
942 # undef strerror
943 # define strerror rpl_strerror
944 # endif
945 _GL_FUNCDECL_RPL (strerror, char *, (int));
946 _GL_CXXALIAS_RPL (strerror, char *, (int));
947 # else
948 _GL_CXXALIAS_SYS (strerror, char *, (int));
949 # endif
950 _GL_CXXALIASWARN (strerror);
951 #elif defined GNULIB_POSIXCHECK
952 # undef strerror
953 /* Assume strerror is always declared. */
954 _GL_WARN_ON_USE (strerror, "strerror is unportable - "
955  "use gnulib module strerror to guarantee non-NULL result");
956 #endif
957 
958 /* Map any int, typically from errno, into an error message. Multithread-safe.
959  Uses the POSIX declaration, not the glibc declaration. */
960 #if @GNULIB_STRERROR_R@
961 # if @REPLACE_STRERROR_R@
962 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
963 # undef strerror_r
964 # define strerror_r rpl_strerror_r
965 # endif
966 _GL_FUNCDECL_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen)
967  _GL_ARG_NONNULL ((2)));
968 _GL_CXXALIAS_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen));
969 # else
970 # if !@HAVE_DECL_STRERROR_R@
971 _GL_FUNCDECL_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen)
972  _GL_ARG_NONNULL ((2)));
973 # endif
974 _GL_CXXALIAS_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen));
975 # endif
976 # if @HAVE_DECL_STRERROR_R@
977 _GL_CXXALIASWARN (strerror_r);
978 # endif
979 #elif defined GNULIB_POSIXCHECK
980 # undef strerror_r
981 # if HAVE_RAW_DECL_STRERROR_R
982 _GL_WARN_ON_USE (strerror_r, "strerror_r is unportable - "
983  "use gnulib module strerror_r-posix for portability");
984 # endif
985 #endif
986 
987 #if @GNULIB_STRSIGNAL@
988 # if @REPLACE_STRSIGNAL@
989 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
990 # define strsignal rpl_strsignal
991 # endif
992 _GL_FUNCDECL_RPL (strsignal, char *, (int __sig));
993 _GL_CXXALIAS_RPL (strsignal, char *, (int __sig));
994 # else
995 # if ! @HAVE_DECL_STRSIGNAL@
996 _GL_FUNCDECL_SYS (strsignal, char *, (int __sig));
997 # endif
998 /* Need to cast, because on Cygwin 1.5.x systems, the return type is
999  'const char *'. */
1000 _GL_CXXALIAS_SYS_CAST (strsignal, char *, (int __sig));
1001 # endif
1002 _GL_CXXALIASWARN (strsignal);
1003 #elif defined GNULIB_POSIXCHECK
1004 # undef strsignal
1005 # if HAVE_RAW_DECL_STRSIGNAL
1006 _GL_WARN_ON_USE (strsignal, "strsignal is unportable - "
1007  "use gnulib module strsignal for portability");
1008 # endif
1009 #endif
1010 
1011 #if @GNULIB_STRVERSCMP@
1012 # if !@HAVE_STRVERSCMP@
1013 _GL_FUNCDECL_SYS (strverscmp, int, (const char *, const char *)
1015  _GL_ARG_NONNULL ((1, 2)));
1016 # endif
1017 _GL_CXXALIAS_SYS (strverscmp, int, (const char *, const char *));
1018 _GL_CXXALIASWARN (strverscmp);
1019 #elif defined GNULIB_POSIXCHECK
1020 # undef strverscmp
1021 # if HAVE_RAW_DECL_STRVERSCMP
1022 _GL_WARN_ON_USE (strverscmp, "strverscmp is unportable - "
1023  "use gnulib module strverscmp for portability");
1024 # endif
1025 #endif
1026 
1027 
1028 #endif /* _@GUARD_PREFIX@_STRING_H */
1029 #endif /* _@GUARD_PREFIX@_STRING_H */
#define src(name, suf)
HPFC by Fabien Coelho, May 1993 and later...
Definition: compile.c:41
#define _GL_ARG_NONNULL(params)
A C macro for declaring that specific arguments must not be NULL.
Definition: arg-nonnull.h:24
#define _GL_EXTERN_C
C++ compatible function declaration macros.
Definition: cPPdefs.h:84
#define _GL_CXXALIAS_RPL(func, rettype, parameters)
_GL_CXXALIAS_RPL (func, rettype, parameters); declares a C++ alias called GNULIB_NAMESPACE::func that...
Definition: cPPdefs.h:115
#define _GL_FUNCDECL_RPL(func, rettype, parameters_and_attributes)
_GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); declares a replacement function,...
Definition: cPPdefs.h:94
#define _GL_CXXALIAS_SYS_CAST2(func, rettype, parameters, rettype2, parameters2)
_GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); is like _GL_CXXALIAS_SYS (...
Definition: cPPdefs.h:211
#define _GL_CXXALIAS_SYS_CAST(func, rettype, parameters)
_GL_CXXALIAS_SYS_CAST (func, rettype, parameters); is like _GL_CXXALIAS_SYS (func,...
Definition: cPPdefs.h:186
#define _GL_CXXALIASWARN(func)
_GL_CXXALIASWARN (func); causes a warning to be emitted when ::func is used but not when GNULIB_NAMES...
Definition: cPPdefs.h:239
#define _GL_CXXALIAS_SYS(func, rettype, parameters)
_GL_CXXALIAS_SYS (func, rettype, parameters); declares a C++ alias called GNULIB_NAMESPACE::func that...
Definition: cPPdefs.h:168
#define _GL_CXXALIASWARN1(func, rettype, parameters_and_attributes)
_GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); causes a warning to be emitted when the...
Definition: cPPdefs.h:267
#define _GL_FUNCDECL_SYS(func, rettype, parameters_and_attributes)
_GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); declares the system function,...
Definition: cPPdefs.h:106
#define _GL_WARN_ON_USE(function, message)
A C macro for emitting warnings if a function is used.
Definition: warn-on-use.h:75
#define _GL_ATTRIBUTE_PURE
NetBSD 5.0 mis-defines NULL.
Definition: string.in.h:44
void * rawmemchr(const void *s, int c_in)
Searching in a string.
Definition: rawmemchr.c:24
static const char * prefix
char * strdup()
s1
Definition: set.c:247
static char buf[BSZ]
Definition: split_file.c:157
char * strchrnul(const char *s, int c_in)
Searching in a string.
Definition: strchrnul.c:24
char * strndup(char const *s, size_t n)
A replacement function, for systems that lack strndup.
Definition: strndup.c:26
size_t strnlen(const char *string, size_t maxlen)
Find the length of STRING, but scan at most MAXLEN characters.
Definition: strnlen.c:26