xref: /illumos-gate/usr/src/head/string.h (revision 65d61b8c5bb0da98e137e8d74245d8f53d690237)
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License (the "License").
6  * You may not use this file except in compliance with the License.
7  *
8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9  * or http://www.opensolaris.org/os/licensing.
10  * See the License for the specific language governing permissions
11  * and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL HEADER in each
14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15  * If applicable, add the following below this CDDL HEADER, with the
16  * fields enclosed by brackets "[]" replaced with your own identifying
17  * information: Portions Copyright [yyyy] [name of copyright owner]
18  *
19  * CDDL HEADER END
20  */
21 /*	Copyright (c) 1988 AT&T	*/
22 /*	  All Rights Reserved  	*/
23 
24 
25 /*
26  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
27  * Use is subject to license terms.
28  */
29 
30 #ifndef _STRING_H
31 #define	_STRING_H
32 
33 #pragma ident	"%Z%%M%	%I%	%E% SMI"	/* SVr4.0 1.7.1.12 */
34 
35 #include <iso/string_iso.h>
36 
37 /*
38  * Allow global visibility for symbols defined in
39  * C++ "std" namespace in <iso/string_iso.h>.
40  */
41 #if __cplusplus >= 199711L
42 using std::size_t;
43 using std::memchr;
44 using std::memcmp;
45 using std::memcpy;
46 using std::memmove;
47 using std::memset;
48 using std::strcat;
49 using std::strchr;
50 using std::strcmp;
51 using std::strcoll;
52 using std::strcpy;
53 using std::strcspn;
54 using std::strerror;
55 using std::strlen;
56 using std::strncat;
57 using std::strncmp;
58 using std::strncpy;
59 using std::strpbrk;
60 using std::strrchr;
61 using std::strspn;
62 using std::strstr;
63 using std::strtok;
64 using std::strxfrm;
65 #endif
66 
67 #ifdef	__cplusplus
68 extern "C" {
69 #endif
70 
71 #if defined(__STDC__)
72 
73 #if defined(__EXTENSIONS__) || \
74 	(!defined(_STRICT_STDC) && !defined(__XOPEN_OR_POSIX)) || \
75 	defined(_XPG6) || defined(_REENTRANT)
76 extern int strerror_r(int, char *, size_t);
77 #endif
78 
79 #if defined(__EXTENSIONS__) || \
80 	(!defined(_STRICT_STDC) && !defined(__XOPEN_OR_POSIX)) || \
81 	(_POSIX_C_SOURCE - 0 >= 199506L) || defined(_REENTRANT)
82 extern char *strtok_r(char *_RESTRICT_KYWD, const char *_RESTRICT_KYWD,
83 	char **_RESTRICT_KYWD);
84 #endif
85 
86 #if defined(__EXTENSIONS__) || !defined(_STRICT_STDC) || \
87 	defined(__XOPEN_OR_POSIX)
88 extern void *memccpy(void *_RESTRICT_KYWD, const void *_RESTRICT_KYWD,
89 		int, size_t);
90 #endif
91 
92 #if defined(__EXTENSIONS__) || \
93 	(!defined(_STRICT_STDC) && !defined(__XOPEN_OR_POSIX))
94 extern int uucopy(const void *_RESTRICT_KYWD, void *_RESTRICT_KYWD, size_t);
95 extern int uucopystr(const void *_RESTRICT_KYWD, void *_RESTRICT_KYWD, size_t);
96 extern char *strsignal(int);
97 extern size_t strnlen(const char *, size_t);
98 extern int ffs(int);
99 extern int strcasecmp(const char *, const char *);
100 extern int strncasecmp(const char *, const char *, size_t);
101 extern size_t strlcpy(char *, const char *, size_t);
102 extern size_t strlcat(char *, const char *, size_t);
103 #endif /* defined(__EXTENSIONS__)... */
104 
105 #if defined(__EXTENSIONS__) || \
106 	(!defined(_STRICT_STDC) && !defined(__XOPEN_OR_POSIX)) || \
107 	defined(_XPG4_2)
108 extern char *strdup(const char *);
109 #endif
110 
111 #else	/* __STDC__ */
112 
113 #if defined(__EXTENSIONS__) || !defined(__XOPEN_OR_POSIX) || \
114 	defined(_XPG6) || defined(_REENTRANT)
115 extern int strerror_r();
116 #endif
117 
118 #if defined(__EXTENSIONS__) || !defined(__XOPEN_OR_POSIX) || \
119 	(_POSIX_C_SOURCE - 0 >= 199506L) || defined(_REENTRANT)
120 extern char *strtok_r();
121 #endif
122 
123 #if defined(__EXTENSIONS__) || !defined(_STRICT_STDC) || \
124 	defined(__XOPEN_OR_POSIX)
125 extern void *memccpy();
126 #endif
127 
128 #if defined(__EXTENSIONS__) || !defined(__XOPEN_OR_POSIX)
129 extern int uucopy();
130 extern int uucopystr();
131 extern char *strsignal();
132 extern size_t strnlen();
133 extern int ffs();
134 extern int strcasecmp();
135 extern int strncasecmp();
136 extern size_t strlcpy();
137 extern size_t strlcat();
138 #endif /* defined(__EXTENSIONS__) ... */
139 
140 #if defined(__EXTENSIONS__) || !defined(__XOPEN_OR_POSIX) || defined(_XPG4_2)
141 extern char *strdup();
142 #endif
143 
144 #endif	/* __STDC__ */
145 
146 #ifdef	__cplusplus
147 }
148 #endif
149 
150 #endif	/* _STRING_H */
151