string.h
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024: #ifndef _STRING_H
025: #define _STRING_H 1
026:
027: #include <features.h>
028:
029: __BEGIN_DECLS
030:
031:
032: #define __need_size_t
033: #define __need_NULL
034: #include <stddef.h>
035:
036:
037: #if defined __cplusplus && __GNUC_PREREQ (4, 4)
038: # define __CORRECT_ISO_CPP_STRING_H_PROTO
039: #endif
040:
041:
042: __BEGIN_NAMESPACE_STD
043:
044: extern void *memcpy (void *__restrict __dest,
045: __const void *__restrict __src, size_t __n)
046: __THROW __nonnull ((1, 2));
047:
048:
049: extern void *memmove (void *__dest, __const void *__src, size_t __n)
050: __THROW __nonnull ((1, 2));
051: __END_NAMESPACE_STD
052:
053:
054:
055:
056: #if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN
057: extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
058: int __c, size_t __n)
059: __THROW __nonnull ((1, 2));
060: #endif
061:
062:
063: __BEGIN_NAMESPACE_STD
064:
065: extern void *memset (void *__s, int __c, size_t __n) __THROW __nonnull ((1));
066:
067:
068: extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
069: __THROW __attribute_pure__ __nonnull ((1, 2));
070:
071:
072: #ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
073: extern "C++"
074: {
075: extern void *memchr (void *__s, int __c, size_t __n)
076: __THROW __asm ("memchr") __attribute_pure__ __nonnull ((1));
077: extern __const void *memchr (__const void *__s, int __c, size_t __n)
078: __THROW __asm ("memchr") __attribute_pure__ __nonnull ((1));
079:
080: # ifdef __OPTIMIZE__
081: __extern_always_inline void *
082: memchr (void *__s, int __c, size_t __n) __THROW
083: {
084: return __builtin_memchr (__s, __c, __n);
085: }
086:
087: __extern_always_inline __const void *
088: memchr (__const void *__s, int __c, size_t __n) __THROW
089: {
090: return __builtin_memchr (__s, __c, __n);
091: }
092: # endif
093: }
094: #else
095: extern void *memchr (__const void *__s, int __c, size_t __n)
096: __THROW __attribute_pure__ __nonnull ((1));
097: #endif
098: __END_NAMESPACE_STD
099:
100: #ifdef __USE_GNU
101:
102:
103: # ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
104: extern "C++" void *rawmemchr (void *__s, int __c)
105: __THROW __asm ("rawmemchr") __attribute_pure__ __nonnull ((1));
106: extern "C++" __const void *rawmemchr (__const void *__s, int __c)
107: __THROW __asm ("rawmemchr") __attribute_pure__ __nonnull ((1));
108: # else
109: extern void *rawmemchr (__const void *__s, int __c)
110: __THROW __attribute_pure__ __nonnull ((1));
111: # endif
112:
113:
114: # ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
115: extern "C++" void *memrchr (void *__s, int __c, size_t __n)
116: __THROW __asm ("memrchr") __attribute_pure__ __nonnull ((1));
117: extern "C++" __const void *memrchr (__const void *__s, int __c, size_t __n)
118: __THROW __asm ("memrchr") __attribute_pure__ __nonnull ((1));
119: # else
120: extern void *memrchr (__const void *__s, int __c, size_t __n)
121: __THROW __attribute_pure__ __nonnull ((1));
122: # endif
123: #endif
124:
125:
126: __BEGIN_NAMESPACE_STD
127:
128: extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
129: __THROW __nonnull ((1, 2));
130:
131: extern char *strncpy (char *__restrict __dest,
132: __const char *__restrict __src, size_t __n)
133: __THROW __nonnull ((1, 2));
134:
135:
136: extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
137: __THROW __nonnull ((1, 2));
138:
139: extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
140: size_t __n) __THROW __nonnull ((1, 2));
141:
142:
143: extern int strcmp (__const char *__s1, __const char *__s2)
144: __THROW __attribute_pure__ __nonnull ((1, 2));
145:
146: extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
147: __THROW __attribute_pure__ __nonnull ((1, 2));
148:
149:
150: extern int strcoll (__const char *__s1, __const char *__s2)
151: __THROW __attribute_pure__ __nonnull ((1, 2));
152:
153: extern size_t strxfrm (char *__restrict __dest,
154: __const char *__restrict __src, size_t __n)
155: __THROW __nonnull ((2));
156: __END_NAMESPACE_STD
157:
158: #ifdef __USE_XOPEN2K8
159:
160:
161:
162: # include <xlocale.h>
163:
164:
165: extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)
166: __THROW __attribute_pure__ __nonnull ((1, 2, 3));
167:
168: extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n,
169: __locale_t __l) __THROW __nonnull ((2, 4));
170: #endif
171:
172: #if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED \
173: || defined __USE_XOPEN2K8
174:
175: extern char *strdup (__const char *__s)
176: __THROW __attribute_malloc__ __nonnull ((1));
177: #endif
178:
179:
180:
181:
182: #if defined __USE_XOPEN2K8
183: extern char *strndup (__const char *__string, size_t __n)
184: __THROW __attribute_malloc__ __nonnull ((1));
185: #endif
186:
187: #if defined __USE_GNU && defined __GNUC__
188:
189: # define strdupa(s) \
190: (__extension__ \
191: ({ \
192: __const char *__old = (s); \
193: size_t __len = strlen (__old) + 1; \
194: char *__new = (char *) __builtin_alloca (__len); \
195: (char *) memcpy (__new, __old, __len); \
196: }))
197:
198:
199: # define strndupa(s, n) \
200: (__extension__ \
201: ({ \
202: __const char *__old = (s); \
203: size_t __len = strnlen (__old, (n)); \
204: char *__new = (char *) __builtin_alloca (__len + 1); \
205: __new[__len] = '\0'; \
206: (char *) memcpy (__new, __old, __len); \
207: }))
208: #endif
209:
210: __BEGIN_NAMESPACE_STD
211:
212: #ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
213: extern "C++"
214: {
215: extern char *strchr (char *__s, int __c)
216: __THROW __asm ("strchr") __attribute_pure__ __nonnull ((1));
217: extern __const char *strchr (__const char *__s, int __c)
218: __THROW __asm ("strchr") __attribute_pure__ __nonnull ((1));
219:
220: # ifdef __OPTIMIZE__
221: __extern_always_inline char *
222: strchr (char *__s, int __c) __THROW
223: {
224: return __builtin_strchr (__s, __c);
225: }
226:
227: __extern_always_inline __const char *
228: strchr (__const char *__s, int __c) __THROW
229: {
230: return __builtin_strchr (__s, __c);
231: }
232: # endif
233: }
234: #else
235: extern char *strchr (__const char *__s, int __c)
236: __THROW __attribute_pure__ __nonnull ((1));
237: #endif
238:
239: #ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
240: extern "C++"
241: {
242: extern char *strrchr (char *__s, int __c)
243: __THROW __asm ("strrchr") __attribute_pure__ __nonnull ((1));
244: extern __const char *strrchr (__const char *__s, int __c)
245: __THROW __asm ("strrchr") __attribute_pure__ __nonnull ((1));
246:
247: # ifdef __OPTIMIZE__
248: __extern_always_inline char *
249: strrchr (char *__s, int __c) __THROW
250: {
251: return __builtin_strrchr (__s, __c);
252: }
253:
254: __extern_always_inline __const char *
255: strrchr (__const char *__s, int __c) __THROW
256: {
257: return __builtin_strrchr (__s, __c);
258: }
259: # endif
260: }
261: #else
262: extern char *strrchr (__const char *__s, int __c)
263: __THROW __attribute_pure__ __nonnull ((1));
264: #endif
265: __END_NAMESPACE_STD
266:
267: #ifdef __USE_GNU
268:
269:
270: # ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
271: extern "C++" char *strchrnul (char *__s, int __c)
272: __THROW __asm ("strchrnul") __attribute_pure__ __nonnull ((1));
273: extern "C++" __const char *strchrnul (__const char *__s, int __c)
274: __THROW __asm ("strchrnul") __attribute_pure__ __nonnull ((1));
275: # else
276: extern char *strchrnul (__const char *__s, int __c)
277: __THROW __attribute_pure__ __nonnull ((1));
278: # endif
279: #endif
280:
281: __BEGIN_NAMESPACE_STD
282:
283:
284: extern size_t strcspn (__const char *__s, __const char *__reject)
285: __THROW __attribute_pure__ __nonnull ((1, 2));
286:
287:
288: extern size_t strspn (__const char *__s, __const char *__accept)
289: __THROW __attribute_pure__ __nonnull ((1, 2));
290:
291: #ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
292: extern "C++"
293: {
294: extern char *strpbrk (char *__s, __const char *__accept)
295: __THROW __asm ("strpbrk") __attribute_pure__ __nonnull ((1, 2));
296: extern __const char *strpbrk (__const char *__s, __const char *__accept)
297: __THROW __asm ("strpbrk") __attribute_pure__ __nonnull ((1, 2));
298:
299: # ifdef __OPTIMIZE__
300: __extern_always_inline char *
301: strpbrk (char *__s, __const char *__accept) __THROW
302: {
303: return __builtin_strpbrk (__s, __accept);
304: }
305:
306: __extern_always_inline __const char *
307: strpbrk (__const char *__s, __const char *__accept) __THROW
308: {
309: return __builtin_strpbrk (__s, __accept);
310: }
311: # endif
312: }
313: #else
314: extern char *strpbrk (__const char *__s, __const char *__accept)
315: __THROW __attribute_pure__ __nonnull ((1, 2));
316: #endif
317:
318: #ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
319: extern "C++"
320: {
321: extern char *strstr (char *__haystack, __const char *__needle)
322: __THROW __asm ("strstr") __attribute_pure__ __nonnull ((1, 2));
323: extern __const char *strstr (__const char *__haystack,
324: __const char *__needle)
325: __THROW __asm ("strstr") __attribute_pure__ __nonnull ((1, 2));
326:
327: # ifdef __OPTIMIZE__
328: __extern_always_inline char *
329: strstr (char *__haystack, __const char *__needle) __THROW
330: {
331: return __builtin_strstr (__haystack, __needle);
332: }
333:
334: __extern_always_inline __const char *
335: strstr (__const char *__haystack, __const char *__needle) __THROW
336: {
337: return __builtin_strstr (__haystack, __needle);
338: }
339: # endif
340: }
341: #else
342: extern char *strstr (__const char *__haystack, __const char *__needle)
343: __THROW __attribute_pure__ __nonnull ((1, 2));
344: #endif
345:
346:
347:
348: extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
349: __THROW __nonnull ((2));
350: __END_NAMESPACE_STD
351:
352:
353:
354: extern char *__strtok_r (char *__restrict __s,
355: __const char *__restrict __delim,
356: char **__restrict __save_ptr)
357: __THROW __nonnull ((2, 3));
358: #if defined __USE_POSIX || defined __USE_MISC
359: extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
360: char **__restrict __save_ptr)
361: __THROW __nonnull ((2, 3));
362: #endif
363:
364: #ifdef __USE_GNU
365:
366: # ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
367: extern "C++" char *strcasestr (char *__haystack, __const char *__needle)
368: __THROW __asm ("strcasestr") __attribute_pure__ __nonnull ((1, 2));
369: extern "C++" __const char *strcasestr (__const char *__haystack,
370: __const char *__needle)
371: __THROW __asm ("strcasestr") __attribute_pure__ __nonnull ((1, 2));
372: # else
373: extern char *strcasestr (__const char *__haystack, __const char *__needle)
374: __THROW __attribute_pure__ __nonnull ((1, 2));
375: # endif
376: #endif
377:
378: #ifdef __USE_GNU
379:
380:
381:
382: extern void *memmem (__const void *__haystack, size_t __haystacklen,
383: __const void *__needle, size_t __needlelen)
384: __THROW __attribute_pure__ __nonnull ((1, 3));
385:
386:
387:
388: extern void *__mempcpy (void *__restrict __dest,
389: __const void *__restrict __src, size_t __n)
390: __THROW __nonnull ((1, 2));
391: extern void *mempcpy (void *__restrict __dest,
392: __const void *__restrict __src, size_t __n)
393: __THROW __nonnull ((1, 2));
394: #endif
395:
396:
397: __BEGIN_NAMESPACE_STD
398:
399: extern size_t strlen (__const char *__s)
400: __THROW __attribute_pure__ __nonnull ((1));
401: __END_NAMESPACE_STD
402:
403: #ifdef __USE_XOPEN2K8
404:
405:
406: extern size_t strnlen (__const char *__string, size_t __maxlen)
407: __THROW __attribute_pure__ __nonnull ((1));
408: #endif
409:
410:
411: __BEGIN_NAMESPACE_STD
412:
413: extern char *strerror (int __errnum) __THROW;
414: __END_NAMESPACE_STD
415: #if defined __USE_XOPEN2K || defined __USE_MISC
416:
417:
418:
419:
420:
421:
422:
423: # if defined __USE_XOPEN2K && !defined __USE_GNU
424:
425:
426: # ifdef __REDIRECT_NTH
427: extern int __REDIRECT_NTH (strerror_r,
428: (int __errnum, char *__buf, size_t __buflen),
429: __xpg_strerror_r) __nonnull ((2));
430: # else
431: extern int __xpg_strerror_r (int __errnum, char *__buf, size_t __buflen)
432: __THROW __nonnull ((2));
433: # define strerror_r __xpg_strerror_r
434: # endif
435: # else
436:
437:
438: extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
439: __THROW __nonnull ((2));
440: # endif
441: #endif
442:
443: #ifdef __USE_XOPEN2K8
444:
445: extern char *strerror_l (int __errnum, __locale_t __l) __THROW;
446: #endif
447:
448:
449:
450:
451: extern void __bzero (void *__s, size_t __n) __THROW __nonnull ((1));
452:
453: #ifdef __USE_BSD
454:
455: extern void bcopy (__const void *__src, void *__dest, size_t __n)
456: __THROW __nonnull ((1, 2));
457:
458:
459: extern void bzero (void *__s, size_t __n) __THROW __nonnull ((1));
460:
461:
462: extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
463: __THROW __attribute_pure__ __nonnull ((1, 2));
464:
465:
466: # ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
467: extern "C++"
468: {
469: extern char *index (char *__s, int __c)
470: __THROW __asm ("index") __attribute_pure__ __nonnull ((1));
471: extern __const char *index (__const char *__s, int __c)
472: __THROW __asm ("index") __attribute_pure__ __nonnull ((1));
473:
474: # if defined __OPTIMIZE__ && !defined __CORRECT_ISO_CPP_STRINGS_H_PROTO
475: __extern_always_inline char *
476: index (char *__s, int __c) __THROW
477: {
478: return __builtin_index (__s, __c);
479: }
480:
481: __extern_always_inline __const char *
482: index (__const char *__s, int __c) __THROW
483: {
484: return __builtin_index (__s, __c);
485: }
486: # endif
487: }
488: # else
489: extern char *index (__const char *__s, int __c)
490: __THROW __attribute_pure__ __nonnull ((1));
491: # endif
492:
493:
494: # ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
495: extern "C++"
496: {
497: extern char *rindex (char *__s, int __c)
498: __THROW __asm ("rindex") __attribute_pure__ __nonnull ((1));
499: extern __const char *rindex (__const char *__s, int __c)
500: __THROW __asm ("rindex") __attribute_pure__ __nonnull ((1));
501:
502: # if defined __OPTIMIZE__ && !defined __CORRECT_ISO_CPP_STRINGS_H_PROTO
503: __extern_always_inline char *
504: rindex (char *__s, int __c) __THROW
505: {
506: return __builtin_rindex (__s, __c);
507: }
508:
509: __extern_always_inline __const char *
510: rindex (__const char *__s, int __c) __THROW
511: {
512: return __builtin_rindex (__s, __c);
513: }
514: #endif
515: }
516: # else
517: extern char *rindex (__const char *__s, int __c)
518: __THROW __attribute_pure__ __nonnull ((1));
519: # endif
520:
521:
522:
523: extern int ffs (int __i) __THROW __attribute__ ((__const__));
524:
525:
526:
527: # ifdef __USE_GNU
528: extern int ffsl (long int __l) __THROW __attribute__ ((__const__));
529: # ifdef __GNUC__
530: __extension__ extern int ffsll (long long int __ll)
531: __THROW __attribute__ ((__const__));
532: # endif
533: # endif
534:
535:
536: extern int strcasecmp (__const char *__s1, __const char *__s2)
537: __THROW __attribute_pure__ __nonnull ((1, 2));
538:
539:
540: extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
541: __THROW __attribute_pure__ __nonnull ((1, 2));
542: #endif
543:
544: #ifdef __USE_GNU
545:
546:
547: extern int strcasecmp_l (__const char *__s1, __const char *__s2,
548: __locale_t __loc)
549: __THROW __attribute_pure__ __nonnull ((1, 2, 3));
550:
551: extern int strncasecmp_l (__const char *__s1, __const char *__s2,
552: size_t __n, __locale_t __loc)
553: __THROW __attribute_pure__ __nonnull ((1, 2, 4));
554: #endif
555:
556: #ifdef __USE_BSD
557:
558:
559: extern char *strsep (char **__restrict __stringp,
560: __const char *__restrict __delim)
561: __THROW __nonnull ((1, 2));
562: #endif
563:
564: #ifdef __USE_XOPEN2K8
565:
566: extern char *strsignal (int __sig) __THROW;
567:
568:
569: extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src)
570: __THROW __nonnull ((1, 2));
571: extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
572: __THROW __nonnull ((1, 2));
573:
574:
575:
576: extern char *__stpncpy (char *__restrict __dest,
577: __const char *__restrict __src, size_t __n)
578: __THROW __nonnull ((1, 2));
579: extern char *stpncpy (char *__restrict __dest,
580: __const char *__restrict __src, size_t __n)
581: __THROW __nonnull ((1, 2));
582: #endif
583:
584: #ifdef __USE_GNU
585:
586: extern int strverscmp (__const char *__s1, __const char *__s2)
587: __THROW __attribute_pure__ __nonnull ((1, 2));
588:
589:
590: extern char *strfry (char *__string) __THROW __nonnull ((1));
591:
592:
593: extern void *memfrob (void *__s, size_t __n) __THROW __nonnull ((1));
594:
595: # ifndef basename
596:
597:
598:
599:
600: # ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
601: extern "C++" char *basename (char *__filename)
602: __THROW __asm ("basename") __nonnull ((1));
603: extern "C++" __const char *basename (__const char *__filename)
604: __THROW __asm ("basename") __nonnull ((1));
605: # else
606: extern char *basename (__const char *__filename) __THROW __nonnull ((1));
607: # endif
608: # endif
609: #endif
610:
611:
612: #if defined __GNUC__ && __GNUC__ >= 2
613: # if defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ \
614: && !defined __NO_INLINE__ && !defined __cplusplus
615:
616:
617:
618:
619:
620:
621:
622:
623:
624:
625:
626:
627:
628:
629:
630:
631:
632:
633:
634: # include <bits/string.h>
635:
636:
637: # include <bits/string2.h>
638: # endif
639:
640: # if __USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline
641:
642: # include <bits/string3.h>
643: # endif
644: #endif
645:
646: __END_DECLS
647:
648: #endif
649:
for client
18.222.119.148
© Andrew Scott 2006 -
2024,
All Rights Reserved