Print this page
5187 missing functions in stdlib.h : mkostemp, mkostemps & mkdtemp
Split |
Close |
Expand all |
Collapse all |
--- old/usr/src/head/stdlib.h
+++ new/usr/src/head/stdlib.h
1 1 /*
2 2 * CDDL HEADER START
3 3 *
4 4 * The contents of this file are subject to the terms of the
5 5 * Common Development and Distribution License (the "License").
6 6 * You may not use this file except in compliance with the License.
7 7 *
8 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 9 * or http://www.opensolaris.org/os/licensing.
10 10 * See the License for the specific language governing permissions
11 11 * and limitations under the License.
12 12 *
13 13 * When distributing Covered Code, include this CDDL HEADER in each
14 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 15 * If applicable, add the following below this CDDL HEADER, with the
16 16 * fields enclosed by brackets "[]" replaced with your own identifying
17 17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 18 *
19 19 * CDDL HEADER END
20 20 */
21 21
22 22 /*
23 23 * Copyright 2014 Garrett D'Amore <garrett@damore.org>
24 24 * Copyright (c) 2013 Gary Mills
25 25 *
26 26 * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
27 27 */
28 28
29 29 /* Copyright (c) 2013, OmniTI Computer Consulting, Inc. All rights reserved. */
30 30
31 31 /* Copyright (c) 1988 AT&T */
32 32 /* All Rights Reserved */
33 33
34 34 #ifndef _STDLIB_H
35 35 #define _STDLIB_H
36 36
37 37 #include <iso/stdlib_iso.h>
38 38 #include <iso/stdlib_c99.h>
39 39
40 40 #if defined(__EXTENSIONS__) || defined(_XPG4)
41 41 #include <sys/wait.h>
42 42 #endif
43 43
44 44 /*
45 45 * Allow global visibility for symbols defined in
46 46 * C++ "std" namespace in <iso/stdlib_iso.h>.
47 47 */
48 48 #if __cplusplus >= 199711L
49 49 using std::div_t;
50 50 using std::ldiv_t;
51 51 using std::size_t;
52 52 using std::abort;
53 53 using std::abs;
54 54 using std::atexit;
55 55 using std::atof;
56 56 using std::atoi;
57 57 using std::atol;
58 58 using std::bsearch;
59 59 using std::calloc;
60 60 using std::div;
61 61 using std::exit;
62 62 using std::free;
63 63 using std::getenv;
64 64 using std::labs;
65 65 using std::ldiv;
66 66 using std::malloc;
67 67 using std::mblen;
68 68 using std::mbstowcs;
69 69 using std::mbtowc;
70 70 using std::qsort;
71 71 using std::rand;
72 72 using std::realloc;
73 73 using std::srand;
74 74 using std::strtod;
75 75 using std::strtol;
76 76 using std::strtoul;
77 77 using std::system;
78 78 using std::wcstombs;
79 79 using std::wctomb;
80 80 #endif
81 81
82 82 #ifdef __cplusplus
83 83 extern "C" {
84 84 #endif
85 85
86 86 #ifndef _UID_T
↓ open down ↓ |
86 lines elided |
↑ open up ↑ |
87 87 #define _UID_T
88 88 typedef unsigned int uid_t; /* UID type */
89 89 #endif /* !_UID_T */
90 90
91 91 /* large file compilation environment setup */
92 92 #if !defined(_LP64) && _FILE_OFFSET_BITS == 64
93 93
94 94 #ifdef __PRAGMA_REDEFINE_EXTNAME
95 95 #pragma redefine_extname mkstemp mkstemp64
96 96 #pragma redefine_extname mkstemps mkstemps64
97 +#pragma redefine_extname mkostemp mkostemp64
98 +#pragma redefine_extname mkostemps mkostemps64
97 99 #else /* __PRAGMA_REDEFINE_EXTNAME */
98 100 #define mkstemp mkstemp64
99 101 #define mkstemps mkstemps64
102 +#define mkostemp mkostemp64
103 +#define mkostemps mkostemps64
100 104 #endif /* __PRAGMA_REDEFINE_EXTNAME */
101 105
102 106 #endif /* _FILE_OFFSET_BITS == 64 */
103 107
104 108 /* In the LP64 compilation environment, all APIs are already large file */
105 109 #if defined(_LP64) && defined(_LARGEFILE64_SOURCE)
106 110
107 111 #ifdef __PRAGMA_REDEFINE_EXTNAME
108 112 #pragma redefine_extname mkstemp64 mkstemp
109 113 #pragma redefine_extname mkstemps64 mkstemps
114 +#pragma redefine_extname mkostemp64 mkostemp
115 +#pragma redefine_extname mkostemps64 mkostemps
110 116 #else /* __PRAGMA_REDEFINE_EXTNAME */
111 117 #define mkstemp64 mkstemp
112 118 #define mkstemps64 mkstemps
119 +#define mkostemp64 mkostemp
120 +#define mkostemps64 mkostemps
113 121 #endif /* __PRAGMA_REDEFINE_EXTNAME */
114 122
115 123 #endif /* _LP64 && _LARGEFILE64_SOURCE */
116 124
117 125 #if defined(__EXTENSIONS__) || \
118 126 (!defined(_STRICT_STDC) && !defined(__XOPEN_OR_POSIX)) || \
119 127 (_POSIX_C_SOURCE - 0 >= 199506L) || defined(_REENTRANT)
120 128 extern int rand_r(unsigned int *);
121 129 #endif
122 130
123 131 extern void _exithandle(void);
124 132
125 133 #if defined(__EXTENSIONS__) || \
126 134 (!defined(_STRICT_STDC) && !defined(_POSIX_C_SOURCE)) || \
127 135 defined(_XPG4)
128 136 extern double drand48(void);
129 137 extern double erand48(unsigned short *);
130 138 extern long jrand48(unsigned short *);
131 139 extern void lcong48(unsigned short *);
132 140 extern long lrand48(void);
133 141 extern long mrand48(void);
134 142 extern long nrand48(unsigned short *);
135 143 extern unsigned short *seed48(unsigned short *);
136 144 extern void srand48(long);
137 145 extern int putenv(char *);
138 146 extern void setkey(const char *);
139 147 #endif /* defined(__EXTENSIONS__) || !defined(_STRICT_STDC) ... */
140 148
141 149 /*
142 150 * swab() has historically been in <stdlib.h> as delivered from AT&T
143 151 * and continues to be visible in the default compilation environment.
144 152 * As of Issue 4 of the X/Open Portability Guides, swab() was declared
145 153 * in <unistd.h>. As a result, with respect to X/Open namespace the
146 154 * swab() declaration in this header is only visible for the XPG3
147 155 * environment.
148 156 */
149 157 #if (defined(__EXTENSIONS__) || \
150 158 (!defined(_STRICT_STDC__) && !defined(_POSIX_C_SOURCE))) && \
151 159 (!defined(_XOPEN_SOURCE) || (defined(_XPG3) && !defined(_XPG4)))
152 160 #ifndef _SSIZE_T
153 161 #define _SSIZE_T
154 162 #if defined(_LP64) || defined(_I32LPx)
155 163 typedef long ssize_t; /* size of something in bytes or -1 */
156 164 #else
157 165 typedef int ssize_t; /* (historical version) */
158 166 #endif
159 167 #endif /* !_SSIZE_T */
160 168
161 169 extern void swab(const char *, char *, ssize_t);
162 170 #endif /* defined(__EXTENSIONS__) || !defined(_STRICT_STDC) ... */
163 171
164 172 #if defined(__EXTENSIONS__) || \
165 173 !defined(__XOPEN_OR_POSIX) || defined(_XPG4_2) || \
166 174 (defined(_LARGEFILE_SOURCE) && _FILE_OFFSET_BITS == 64)
167 175 extern int mkstemp(char *);
168 176 #if !defined(_XPG4_2) || defined(__EXTENSIONS__)
169 177 extern int mkstemps(char *, int);
↓ open down ↓ |
47 lines elided |
↑ open up ↑ |
170 178 #endif
171 179 #endif /* defined(__EXTENSIONS__) ... */
172 180
173 181 #if defined(_LARGEFILE64_SOURCE) && !((_FILE_OFFSET_BITS == 64) && \
174 182 !defined(__PRAGMA_REDEFINE_EXTNAME))
175 183 extern int mkstemp64(char *);
176 184 #if !defined(_XPG4_2) || defined(__EXTENSIONS__)
177 185 extern int mkstemps64(char *, int);
178 186 #endif
179 187 #endif /* _LARGEFILE64_SOURCE... */
188 +
189 +#if !defined(_STRICT_SYMBOLS) || defined(_XPG7)
190 +extern int mkostemp(char *template, int flags);
191 +extern int mkostemps(char *template, int slen, int flags);
192 +#if defined(_LARGEFILE64_SOURCE) && !((_FILE_OFFSET_BITS == 64) && \
193 + !defined(__PRAGMA_REDEFINE_EXTNAME))
194 +extern int mkostemp64(char *template, int flags);
195 +extern int mkostemps64(char *template, int slen, int flags);
196 +#endif /* defined(_LARGEFILE64_SOURCE) || !((_FILE_OFFSET_BITS == 64) ... */
197 +#endif /* !defined(_STRICT_SYMBOLS) || defined(_XPG7) */
180 198
181 199 #if defined(__EXTENSIONS__) || \
182 200 (!defined(_STRICT_STDC) && !defined(__XOPEN_OR_POSIX)) || \
183 201 defined(_XPG4_2)
184 202 extern long a64l(const char *);
185 203 extern char *ecvt(double, int, int *_RESTRICT_KYWD, int *_RESTRICT_KYWD);
186 204 extern char *fcvt(double, int, int *_RESTRICT_KYWD, int *_RESTRICT_KYWD);
187 205 extern char *gcvt(double, int, char *);
188 206 extern int getsubopt(char **, char *const *, char **);
189 207 extern int grantpt(int);
190 208 extern char *initstate(unsigned, char *, size_t);
191 209 extern char *l64a(long);
192 210 extern char *mktemp(char *);
193 211 extern char *ptsname(int);
194 212 extern long random(void);
195 213 extern char *realpath(const char *_RESTRICT_KYWD, char *_RESTRICT_KYWD);
196 214 extern char *setstate(const char *);
197 215 extern void srandom(unsigned);
198 216 extern int unlockpt(int);
199 217 /* Marked LEGACY in SUSv2 and removed in SUSv3 */
200 218 #if !defined(_XPG6) || defined(__EXTENSIONS__)
201 219 extern int ttyslot(void);
202 220 extern void *valloc(size_t);
203 221 #endif /* !defined(_XPG6) || defined(__EXTENSIONS__) */
204 222 #endif /* defined(__EXTENSIONS__) || ... || defined(_XPG4_2) */
205 223
206 224 #if defined(__EXTENSIONS__) || \
207 225 (!defined(_STRICT_STDC) && !defined(__XOPEN_OR_POSIX)) || \
208 226 defined(_XPG6)
209 227 extern int posix_memalign(void **, size_t, size_t);
210 228 extern int posix_openpt(int);
211 229 extern int setenv(const char *, const char *, int);
212 230 extern int unsetenv(const char *);
213 231 #endif
214 232
215 233 #if defined(__EXTENSIONS__) || \
216 234 (!defined(_STRICT_STDC) && !defined(__XOPEN_OR_POSIX))
217 235 extern char *canonicalize_file_name(const char *);
218 236 extern int clearenv(void);
219 237 extern void closefrom(int);
220 238 extern int daemon(int, int);
221 239 extern int dup2(int, int);
222 240 extern int dup3(int, int, int);
223 241 extern int fdwalk(int (*)(void *, int), void *);
224 242 extern char *qecvt(long double, int, int *, int *);
225 243 extern char *qfcvt(long double, int, int *, int *);
226 244 extern char *qgcvt(long double, int, char *);
227 245 extern char *getcwd(char *, size_t);
228 246 extern const char *getexecname(void);
229 247
230 248 #ifndef __GETLOGIN_DEFINED /* Avoid duplicate in unistd.h */
231 249 #define __GETLOGIN_DEFINED
232 250 #ifndef __USE_LEGACY_LOGNAME__
233 251 #ifdef __PRAGMA_REDEFINE_EXTNAME
234 252 #pragma redefine_extname getlogin getloginx
235 253 #else /* __PRAGMA_REDEFINE_EXTNAME */
236 254 extern char *getloginx(void);
237 255 #define getlogin getloginx
238 256 #endif /* __PRAGMA_REDEFINE_EXTNAME */
239 257 #endif /* __USE_LEGACY_LOGNAME__ */
240 258 extern char *getlogin(void);
241 259 #endif /* __GETLOGIN_DEFINED */
242 260
243 261 extern int getopt(int, char *const *, const char *);
244 262 extern char *optarg;
245 263 extern int optind, opterr, optopt;
246 264 extern char *getpass(const char *);
247 265 extern char *getpassphrase(const char *);
248 266 extern int getpw(uid_t, char *);
249 267 extern int isatty(int);
250 268 extern void *memalign(size_t, size_t);
251 269 extern char *ttyname(int);
252 270 extern char *mkdtemp(char *);
253 271 extern const char *getprogname(void);
254 272 extern void setprogname(const char *);
255 273
256 274 #if !defined(_STRICT_STDC) && defined(_LONGLONG_TYPE)
257 275 extern char *lltostr(long long, char *);
258 276 extern char *ulltostr(unsigned long long, char *);
259 277 #endif /* !defined(_STRICT_STDC) && defined(_LONGLONG_TYPE) */
260 278
261 279 #endif /* defined(__EXTENSIONS__) || !defined(_STRICT_STDC) ... */
262 280
263 281 #ifdef __cplusplus
264 282 }
265 283 #endif
266 284
267 285 #endif /* _STDLIB_H */
↓ open down ↓ |
78 lines elided |
↑ open up ↑ |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX