1: /* A GNU-like <stdlib.h>.
2:
3: Copyright (C) 1995, 2001-2004, 2006-2011 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 of the License, or
8: (at your option) 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: #if __GNUC__ >= 3
19: @PRAGMA_SYSTEM_HEADER@
20: #endif
21: @PRAGMA_COLUMNS@
22:
23: #if defined __need_malloc_and_calloc
24: /* Special invocation convention inside glibc header files. */
25:
26: #@INCLUDE_NEXT@ @NEXT_STDLIB_H@
27:
28: #else
29: /* Normal invocation convention. */
30:
31: #ifndef _@GUARD_PREFIX@_STDLIB_H
32:
33: /* The include_next requires a split double-inclusion guard. */
34: #@INCLUDE_NEXT@ @NEXT_STDLIB_H@
35:
36: #ifndef _@GUARD_PREFIX@_STDLIB_H
37: #define _@GUARD_PREFIX@_STDLIB_H
38:
39: /* NetBSD 5.0 mis-defines NULL. */
40: #include <stddef.h>
41:
42: /* MirBSD 10 defines WEXITSTATUS in <sys/wait.h>, not in <stdlib.h>. */
43: #if @GNULIB_SYSTEM_POSIX@ && !defined WEXITSTATUS
44: # include <sys/wait.h>
45: #endif
46:
47: /* Solaris declares getloadavg() in <sys/loadavg.h>. */
48: #if (@GNULIB_GETLOADAVG@ || defined GNULIB_POSIXCHECK) && @HAVE_SYS_LOADAVG_H@
49: # include <sys/loadavg.h>
50: #endif
51:
52: #if @GNULIB_RANDOM_R@
53:
54: /* OSF/1 5.1 declares 'struct random_data' in <random.h>, which is included
55: from <stdlib.h> if _REENTRANT is defined. Include it whenever we need
56: 'struct random_data'. */
57: # if @HAVE_RANDOM_H@
58: # include <random.h>
59: # endif
60:
61: # if !@HAVE_STRUCT_RANDOM_DATA@ || !@HAVE_RANDOM_R@
62: # include <stdint.h>
63: # endif
64:
65: # if !@HAVE_STRUCT_RANDOM_DATA@
66: /* Define 'struct random_data'.
67: But allow multiple gnulib generated <stdlib.h> replacements to coexist. */
68: # if !GNULIB_defined_struct_random_data
69: struct random_data
70: {
71: int32_t *fptr; /* Front pointer. */
72: int32_t *rptr; /* Rear pointer. */
73: int32_t *state; /* Array of state values. */
74: int rand_type; /* Type of random number generator. */
75: int rand_deg; /* Degree of random number generator. */
76: int rand_sep; /* Distance between front and rear. */
77: int32_t *end_ptr; /* Pointer behind state table. */
78: };
79: # define GNULIB_defined_struct_random_data 1
80: # endif
81: # endif
82: #endif
83:
84: #if (@GNULIB_MKSTEMP@ || @GNULIB_MKSTEMPS@ || @GNULIB_GETSUBOPT@ || defined GNULIB_POSIXCHECK) && ! defined __GLIBC__ && !((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)
85: /* On MacOS X 10.3, only <unistd.h> declares mkstemp. */
86: /* On MacOS X 10.5, only <unistd.h> declares mkstemps. */
87: /* On Cygwin 1.7.1, only <unistd.h> declares getsubopt. */
88: /* But avoid namespace pollution on glibc systems and native Windows. */
89: # include <unistd.h>
90: #endif
91:
92: /* The definition of _Noreturn is copied here. */
93:
94: /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
95:
96: /* The definition of _GL_ARG_NONNULL is copied here. */
97:
98: /* The definition of _GL_WARN_ON_USE is copied here. */
99:
100:
101: /* Some systems do not define EXIT_*, despite otherwise supporting C89. */
102: #ifndef EXIT_SUCCESS
103: # define EXIT_SUCCESS 0
104: #endif
105: /* Tandem/NSK and other platforms that define EXIT_FAILURE as -1 interfere
106: with proper operation of xargs. */
107: #ifndef EXIT_FAILURE
108: # define EXIT_FAILURE 1
109: #elif EXIT_FAILURE != 1
110: # undef EXIT_FAILURE
111: # define EXIT_FAILURE 1
112: #endif
113:
114:
115: #if @GNULIB__EXIT@
116: /* Terminate the current process with the given return code, without running
117: the 'atexit' handlers. */
118: # if !@HAVE__EXIT@
119: _GL_FUNCDECL_SYS (_Exit, _Noreturn void, (int status));
120: # endif
121: _GL_CXXALIAS_SYS (_Exit, void, (int status));
122: _GL_CXXALIASWARN (_Exit);
123: #elif defined GNULIB_POSIXCHECK
124: # undef _Exit
125: # if HAVE_RAW_DECL__EXIT
126: _GL_WARN_ON_USE (_Exit, "_Exit is unportable - "
127: "use gnulib module _Exit for portability");
128: # endif
129: #endif
130:
131:
132: #if @GNULIB_ATOLL@
133: /* Parse a signed decimal integer.
134: Returns the value of the integer. Errors are not detected. */
135: # if !@HAVE_ATOLL@
136: _GL_FUNCDECL_SYS (atoll, long long, (const char *string) _GL_ARG_NONNULL ((1)));
137: # endif
138: _GL_CXXALIAS_SYS (atoll, long long, (const char *string));
139: _GL_CXXALIASWARN (atoll);
140: #elif defined GNULIB_POSIXCHECK
141: # undef atoll
142: # if HAVE_RAW_DECL_ATOLL
143: _GL_WARN_ON_USE (atoll, "atoll is unportable - "
144: "use gnulib module atoll for portability");
145: # endif
146: #endif
147:
148: #if @GNULIB_CALLOC_POSIX@
149: # if @REPLACE_CALLOC@
150: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
151: # undef calloc
152: # define calloc rpl_calloc
153: # endif
154: _GL_FUNCDECL_RPL (calloc, void *, (size_t nmemb, size_t size));
155: _GL_CXXALIAS_RPL (calloc, void *, (size_t nmemb, size_t size));
156: # else
157: _GL_CXXALIAS_SYS (calloc, void *, (size_t nmemb, size_t size));
158: # endif
159: _GL_CXXALIASWARN (calloc);
160: #elif defined GNULIB_POSIXCHECK
161: # undef calloc
162: /* Assume calloc is always declared. */
163: _GL_WARN_ON_USE (calloc, "calloc is not POSIX compliant everywhere - "
164: "use gnulib module calloc-posix for portability");
165: #endif
166:
167: #if @GNULIB_CANONICALIZE_FILE_NAME@
168: # if @REPLACE_CANONICALIZE_FILE_NAME@
169: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
170: # define canonicalize_file_name rpl_canonicalize_file_name
171: # endif
172: _GL_FUNCDECL_RPL (canonicalize_file_name, char *, (const char *name)
173: _GL_ARG_NONNULL ((1)));
174: _GL_CXXALIAS_RPL (canonicalize_file_name, char *, (const char *name));
175: # else
176: # if !@HAVE_CANONICALIZE_FILE_NAME@
177: _GL_FUNCDECL_SYS (canonicalize_file_name, char *, (const char *name)
178: _GL_ARG_NONNULL ((1)));
179: # endif
180: _GL_CXXALIAS_SYS (canonicalize_file_name, char *, (const char *name));
181: # endif
182: _GL_CXXALIASWARN (canonicalize_file_name);
183: #elif defined GNULIB_POSIXCHECK
184: # undef canonicalize_file_name
185: # if HAVE_RAW_DECL_CANONICALIZE_FILE_NAME
186: _GL_WARN_ON_USE (canonicalize_file_name,
187: "canonicalize_file_name is unportable - "
188: "use gnulib module canonicalize-lgpl for portability");
189: # endif
190: #endif
191:
192: #if @GNULIB_GETLOADAVG@
193: /* Store max(NELEM,3) load average numbers in LOADAVG[].
194: The three numbers are the load average of the last 1 minute, the last 5
195: minutes, and the last 15 minutes, respectively.
196: LOADAVG is an array of NELEM numbers. */
197: # if !@HAVE_DECL_GETLOADAVG@
198: _GL_FUNCDECL_SYS (getloadavg, int, (double loadavg[], int nelem)
199: _GL_ARG_NONNULL ((1)));
200: # endif
201: _GL_CXXALIAS_SYS (getloadavg, int, (double loadavg[], int nelem));
202: _GL_CXXALIASWARN (getloadavg);
203: #elif defined GNULIB_POSIXCHECK
204: # undef getloadavg
205: # if HAVE_RAW_DECL_GETLOADAVG
206: _GL_WARN_ON_USE (getloadavg, "getloadavg is not portable - "
207: "use gnulib module getloadavg for portability");
208: # endif
209: #endif
210:
211: #if @GNULIB_GETSUBOPT@
212: /* Assuming *OPTIONP is a comma separated list of elements of the form
213: "token" or "token=value", getsubopt parses the first of these elements.
214: If the first element refers to a "token" that is member of the given
215: NULL-terminated array of tokens:
216: - It replaces the comma with a NUL byte, updates *OPTIONP to point past
217: the first option and the comma, sets *VALUEP to the value of the
218: element (or NULL if it doesn't contain an "=" sign),
219: - It returns the index of the "token" in the given array of tokens.
220: Otherwise it returns -1, and *OPTIONP and *VALUEP are undefined.
221: For more details see the POSIX:2001 specification.
222: http://www.opengroup.org/susv3xsh/getsubopt.html */
223: # if !@HAVE_GETSUBOPT@
224: _GL_FUNCDECL_SYS (getsubopt, int,
225: (char **optionp, char *const *tokens, char **valuep)
226: _GL_ARG_NONNULL ((1, 2, 3)));
227: # endif
228: _GL_CXXALIAS_SYS (getsubopt, int,
229: (char **optionp, char *const *tokens, char **valuep));
230: _GL_CXXALIASWARN (getsubopt);
231: #elif defined GNULIB_POSIXCHECK
232: # undef getsubopt
233: # if HAVE_RAW_DECL_GETSUBOPT
234: _GL_WARN_ON_USE (getsubopt, "getsubopt is unportable - "
235: "use gnulib module getsubopt for portability");
236: # endif
237: #endif
238:
239: #if @GNULIB_GRANTPT@
240: /* Change the ownership and access permission of the slave side of the
241: pseudo-terminal whose master side is specified by FD. */
242: # if !@HAVE_GRANTPT@
243: _GL_FUNCDECL_SYS (grantpt, int, (int fd));
244: # endif
245: _GL_CXXALIAS_SYS (grantpt, int, (int fd));
246: _GL_CXXALIASWARN (grantpt);
247: #elif defined GNULIB_POSIXCHECK
248: # undef grantpt
249: # if HAVE_RAW_DECL_GRANTPT
250: _GL_WARN_ON_USE (ptsname, "grantpt is not portable - "
251: "use gnulib module grantpt for portability");
252: # endif
253: #endif
254:
255: /* If _GL_USE_STDLIB_ALLOC is nonzero, the including module does not
256: rely on GNU or POSIX semantics for malloc and realloc (for example,
257: by never specifying a zero size), so it does not need malloc or
258: realloc to be redefined. */
259: #if @GNULIB_MALLOC_POSIX@
260: # if @REPLACE_MALLOC@
261: # if !((defined __cplusplus && defined GNULIB_NAMESPACE) \
262: || _GL_USE_STDLIB_ALLOC)
263: # undef malloc
264: # define malloc rpl_malloc
265: # endif
266: _GL_FUNCDECL_RPL (malloc, void *, (size_t size));
267: _GL_CXXALIAS_RPL (malloc, void *, (size_t size));
268: # else
269: _GL_CXXALIAS_SYS (malloc, void *, (size_t size));
270: # endif
271: _GL_CXXALIASWARN (malloc);
272: #elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC
273: # undef malloc
274: /* Assume malloc is always declared. */
275: _GL_WARN_ON_USE (malloc, "malloc is not POSIX compliant everywhere - "
276: "use gnulib module malloc-posix for portability");
277: #endif
278:
279: /* Convert a multibyte character to a wide character. */
280: #if @GNULIB_MBTOWC@
281: # if @REPLACE_MBTOWC@
282: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
283: # undef mbtowc
284: # define mbtowc rpl_mbtowc
285: # endif
286: _GL_FUNCDECL_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n));
287: _GL_CXXALIAS_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n));
288: # else
289: _GL_CXXALIAS_SYS (mbtowc, int, (wchar_t *pwc, const char *s, size_t n));
290: # endif
291: _GL_CXXALIASWARN (mbtowc);
292: #endif
293:
294: #if @GNULIB_MKDTEMP@
295: /* Create a unique temporary directory from TEMPLATE.
296: The last six characters of TEMPLATE must be "XXXXXX";
297: they are replaced with a string that makes the directory name unique.
298: Returns TEMPLATE, or a null pointer if it cannot get a unique name.
299: The directory is created mode 700. */
300: # if !@HAVE_MKDTEMP@
301: _GL_FUNCDECL_SYS (mkdtemp, char *, (char * /*template*/) _GL_ARG_NONNULL ((1)));
302: # endif
303: _GL_CXXALIAS_SYS (mkdtemp, char *, (char * /*template*/));
304: _GL_CXXALIASWARN (mkdtemp);
305: #elif defined GNULIB_POSIXCHECK
306: # undef mkdtemp
307: # if HAVE_RAW_DECL_MKDTEMP
308: _GL_WARN_ON_USE (mkdtemp, "mkdtemp is unportable - "
309: "use gnulib module mkdtemp for portability");
310: # endif
311: #endif
312:
313: #if @GNULIB_MKOSTEMP@
314: /* Create a unique temporary file from TEMPLATE.
315: The last six characters of TEMPLATE must be "XXXXXX";
316: they are replaced with a string that makes the file name unique.
317: The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
318: and O_TEXT, O_BINARY (defined in "binary-io.h").
319: The file is then created, with the specified flags, ensuring it didn't exist
320: before.
321: The file is created read-write (mask at least 0600 & ~umask), but it may be
322: world-readable and world-writable (mask 0666 & ~umask), depending on the
323: implementation.
324: Returns the open file descriptor if successful, otherwise -1 and errno
325: set. */
326: # if !@HAVE_MKOSTEMP@
327: _GL_FUNCDECL_SYS (mkostemp, int, (char * /*template*/, int /*flags*/)
328: _GL_ARG_NONNULL ((1)));
329: # endif
330: _GL_CXXALIAS_SYS (mkostemp, int, (char * /*template*/, int /*flags*/));
331: _GL_CXXALIASWARN (mkostemp);
332: #elif defined GNULIB_POSIXCHECK
333: # undef mkostemp
334: # if HAVE_RAW_DECL_MKOSTEMP
335: _GL_WARN_ON_USE (mkostemp, "mkostemp is unportable - "
336: "use gnulib module mkostemp for portability");
337: # endif
338: #endif
339:
340: #if @GNULIB_MKOSTEMPS@
341: /* Create a unique temporary file from TEMPLATE.
342: The last six characters of TEMPLATE before a suffix of length
343: SUFFIXLEN must be "XXXXXX";
344: they are replaced with a string that makes the file name unique.
345: The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
346: and O_TEXT, O_BINARY (defined in "binary-io.h").
347: The file is then created, with the specified flags, ensuring it didn't exist
348: before.
349: The file is created read-write (mask at least 0600 & ~umask), but it may be
350: world-readable and world-writable (mask 0666 & ~umask), depending on the
351: implementation.
352: Returns the open file descriptor if successful, otherwise -1 and errno
353: set. */
354: # if !@HAVE_MKOSTEMPS@
355: _GL_FUNCDECL_SYS (mkostemps, int,
356: (char * /*template*/, int /*suffixlen*/, int /*flags*/)
357: _GL_ARG_NONNULL ((1)));
358: # endif
359: _GL_CXXALIAS_SYS (mkostemps, int,
360: (char * /*template*/, int /*suffixlen*/, int /*flags*/));
361: _GL_CXXALIASWARN (mkostemps);
362: #elif defined GNULIB_POSIXCHECK
363: # undef mkostemps
364: # if HAVE_RAW_DECL_MKOSTEMPS
365: _GL_WARN_ON_USE (mkostemps, "mkostemps is unportable - "
366: "use gnulib module mkostemps for portability");
367: # endif
368: #endif
369:
370: #if @GNULIB_MKSTEMP@
371: /* Create a unique temporary file from TEMPLATE.
372: The last six characters of TEMPLATE must be "XXXXXX";
373: they are replaced with a string that makes the file name unique.
374: The file is then created, ensuring it didn't exist before.
375: The file is created read-write (mask at least 0600 & ~umask), but it may be
376: world-readable and world-writable (mask 0666 & ~umask), depending on the
377: implementation.
378: Returns the open file descriptor if successful, otherwise -1 and errno
379: set. */
380: # if @REPLACE_MKSTEMP@
381: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
382: # define mkstemp rpl_mkstemp
383: # endif
384: _GL_FUNCDECL_RPL (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1)));
385: _GL_CXXALIAS_RPL (mkstemp, int, (char * /*template*/));
386: # else
387: # if ! @HAVE_MKSTEMP@
388: _GL_FUNCDECL_SYS (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1)));
389: # endif
390: _GL_CXXALIAS_SYS (mkstemp, int, (char * /*template*/));
391: # endif
392: _GL_CXXALIASWARN (mkstemp);
393: #elif defined GNULIB_POSIXCHECK
394: # undef mkstemp
395: # if HAVE_RAW_DECL_MKSTEMP
396: _GL_WARN_ON_USE (mkstemp, "mkstemp is unportable - "
397: "use gnulib module mkstemp for portability");
398: # endif
399: #endif
400:
401: #if @GNULIB_MKSTEMPS@
402: /* Create a unique temporary file from TEMPLATE.
403: The last six characters of TEMPLATE prior to a suffix of length
404: SUFFIXLEN must be "XXXXXX";
405: they are replaced with a string that makes the file name unique.
406: The file is then created, ensuring it didn't exist before.
407: The file is created read-write (mask at least 0600 & ~umask), but it may be
408: world-readable and world-writable (mask 0666 & ~umask), depending on the
409: implementation.
410: Returns the open file descriptor if successful, otherwise -1 and errno
411: set. */
412: # if !@HAVE_MKSTEMPS@
413: _GL_FUNCDECL_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/)
414: _GL_ARG_NONNULL ((1)));
415: # endif
416: _GL_CXXALIAS_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/));
417: _GL_CXXALIASWARN (mkstemps);
418: #elif defined GNULIB_POSIXCHECK
419: # undef mkstemps
420: # if HAVE_RAW_DECL_MKSTEMPS
421: _GL_WARN_ON_USE (mkstemps, "mkstemps is unportable - "
422: "use gnulib module mkstemps for portability");
423: # endif
424: #endif
425:
426: #if @GNULIB_PTSNAME@
427: /* Return the pathname of the pseudo-terminal slave associated with
428: the master FD is open on, or NULL on errors. */
429: # if !@HAVE_PTSNAME@
430: _GL_FUNCDECL_SYS (ptsname, char *, (int fd));
431: # endif
432: _GL_CXXALIAS_SYS (ptsname, char *, (int fd));
433: _GL_CXXALIASWARN (ptsname);
434: #elif defined GNULIB_POSIXCHECK
435: # undef ptsname
436: # if HAVE_RAW_DECL_PTSNAME
437: _GL_WARN_ON_USE (ptsname, "ptsname is not portable - "
438: "use gnulib module ptsname for portability");
439: # endif
440: #endif
441:
442: #if @GNULIB_PUTENV@
443: # if @REPLACE_PUTENV@
444: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
445: # undef putenv
446: # define putenv rpl_putenv
447: # endif
448: _GL_FUNCDECL_RPL (putenv, int, (char *string) _GL_ARG_NONNULL ((1)));
449: _GL_CXXALIAS_RPL (putenv, int, (char *string));
450: # else
451: _GL_CXXALIAS_SYS (putenv, int, (char *string));
452: # endif
453: _GL_CXXALIASWARN (putenv);
454: #endif
455:
456:
457: #if @GNULIB_RANDOM_R@
458: # if !@HAVE_RANDOM_R@
459: # ifndef RAND_MAX
460: # define RAND_MAX 2147483647
461: # endif
462: # endif
463: #endif
464:
465: #if @GNULIB_RANDOM_R@
466: # if !@HAVE_RANDOM_R@
467: _GL_FUNCDECL_SYS (random_r, int, (struct random_data *buf, int32_t *result)
468: _GL_ARG_NONNULL ((1, 2)));
469: # endif
470: _GL_CXXALIAS_SYS (random_r, int, (struct random_data *buf, int32_t *result));
471: _GL_CXXALIASWARN (random_r);
472: #elif defined GNULIB_POSIXCHECK
473: # undef random_r
474: # if HAVE_RAW_DECL_RANDOM_R
475: _GL_WARN_ON_USE (random_r, "random_r is unportable - "
476: "use gnulib module random_r for portability");
477: # endif
478: #endif
479:
480: #if @GNULIB_RANDOM_R@
481: # if !@HAVE_RANDOM_R@
482: _GL_FUNCDECL_SYS (srandom_r, int,
483: (unsigned int seed, struct random_data *rand_state)
484: _GL_ARG_NONNULL ((2)));
485: # endif
486: _GL_CXXALIAS_SYS (srandom_r, int,
487: (unsigned int seed, struct random_data *rand_state));
488: _GL_CXXALIASWARN (srandom_r);
489: #elif defined GNULIB_POSIXCHECK
490: # undef srandom_r
491: # if HAVE_RAW_DECL_SRANDOM_R
492: _GL_WARN_ON_USE (srandom_r, "srandom_r is unportable - "
493: "use gnulib module random_r for portability");
494: # endif
495: #endif
496:
497: #if @GNULIB_RANDOM_R@
498: # if !@HAVE_RANDOM_R@
499: _GL_FUNCDECL_SYS (initstate_r, int,
500: (unsigned int seed, char *buf, size_t buf_size,
501: struct random_data *rand_state)
502: _GL_ARG_NONNULL ((2, 4)));
503: # endif
504: _GL_CXXALIAS_SYS (initstate_r, int,
505: (unsigned int seed, char *buf, size_t buf_size,
506: struct random_data *rand_state));
507: _GL_CXXALIASWARN (initstate_r);
508: #elif defined GNULIB_POSIXCHECK
509: # undef initstate_r
510: # if HAVE_RAW_DECL_INITSTATE_R
511: _GL_WARN_ON_USE (initstate_r, "initstate_r is unportable - "
512: "use gnulib module random_r for portability");
513: # endif
514: #endif
515:
516: #if @GNULIB_RANDOM_R@
517: # if !@HAVE_RANDOM_R@
518: _GL_FUNCDECL_SYS (setstate_r, int,
519: (char *arg_state, struct random_data *rand_state)
520: _GL_ARG_NONNULL ((1, 2)));
521: # endif
522: _GL_CXXALIAS_SYS (setstate_r, int,
523: (char *arg_state, struct random_data *rand_state));
524: _GL_CXXALIASWARN (setstate_r);
525: #elif defined GNULIB_POSIXCHECK
526: # undef setstate_r
527: # if HAVE_RAW_DECL_SETSTATE_R
528: _GL_WARN_ON_USE (setstate_r, "setstate_r is unportable - "
529: "use gnulib module random_r for portability");
530: # endif
531: #endif
532:
533:
534: #if @GNULIB_REALLOC_POSIX@
535: # if @REPLACE_REALLOC@
536: # if !((defined __cplusplus && defined GNULIB_NAMESPACE) \
537: || _GL_USE_STDLIB_ALLOC)
538: # undef realloc
539: # define realloc rpl_realloc
540: # endif
541: _GL_FUNCDECL_RPL (realloc, void *, (void *ptr, size_t size));
542: _GL_CXXALIAS_RPL (realloc, void *, (void *ptr, size_t size));
543: # else
544: _GL_CXXALIAS_SYS (realloc, void *, (void *ptr, size_t size));
545: # endif
546: _GL_CXXALIASWARN (realloc);
547: #elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC
548: # undef realloc
549: /* Assume realloc is always declared. */
550: _GL_WARN_ON_USE (realloc, "realloc is not POSIX compliant everywhere - "
551: "use gnulib module realloc-posix for portability");
552: #endif
553:
554: #if @GNULIB_REALPATH@
555: # if @REPLACE_REALPATH@
556: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
557: # define realpath rpl_realpath
558: # endif
559: _GL_FUNCDECL_RPL (realpath, char *, (const char *name, char *resolved)
560: _GL_ARG_NONNULL ((1)));
561: _GL_CXXALIAS_RPL (realpath, char *, (const char *name, char *resolved));
562: # else
563: # if !@HAVE_REALPATH@
564: _GL_FUNCDECL_SYS (realpath, char *, (const char *name, char *resolved)
565: _GL_ARG_NONNULL ((1)));
566: # endif
567: _GL_CXXALIAS_SYS (realpath, char *, (const char *name, char *resolved));
568: # endif
569: _GL_CXXALIASWARN (realpath);
570: #elif defined GNULIB_POSIXCHECK
571: # undef realpath
572: # if HAVE_RAW_DECL_REALPATH
573: _GL_WARN_ON_USE (realpath, "realpath is unportable - use gnulib module "
574: "canonicalize or canonicalize-lgpl for portability");
575: # endif
576: #endif
577:
578: #if @GNULIB_RPMATCH@
579: /* Test a user response to a question.
580: Return 1 if it is affirmative, 0 if it is negative, or -1 if not clear. */
581: # if !@HAVE_RPMATCH@
582: _GL_FUNCDECL_SYS (rpmatch, int, (const char *response) _GL_ARG_NONNULL ((1)));
583: # endif
584: _GL_CXXALIAS_SYS (rpmatch, int, (const char *response));
585: _GL_CXXALIASWARN (rpmatch);
586: #elif defined GNULIB_POSIXCHECK
587: # undef rpmatch
588: # if HAVE_RAW_DECL_RPMATCH
589: _GL_WARN_ON_USE (rpmatch, "rpmatch is unportable - "
590: "use gnulib module rpmatch for portability");
591: # endif
592: #endif
593:
594: #if @GNULIB_SETENV@
595: /* Set NAME to VALUE in the environment.
596: If REPLACE is nonzero, overwrite an existing value. */
597: # if @REPLACE_SETENV@
598: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
599: # undef setenv
600: # define setenv rpl_setenv
601: # endif
602: _GL_FUNCDECL_RPL (setenv, int,
603: (const char *name, const char *value, int replace)
604: _GL_ARG_NONNULL ((1)));
605: _GL_CXXALIAS_RPL (setenv, int,
606: (const char *name, const char *value, int replace));
607: # else
608: # if !@HAVE_DECL_SETENV@
609: _GL_FUNCDECL_SYS (setenv, int,
610: (const char *name, const char *value, int replace)
611: _GL_ARG_NONNULL ((1)));
612: # endif
613: _GL_CXXALIAS_SYS (setenv, int,
614: (const char *name, const char *value, int replace));
615: # endif
616: # if !(@REPLACE_SETENV@ && !@HAVE_DECL_SETENV@)
617: _GL_CXXALIASWARN (setenv);
618: # endif
619: #elif defined GNULIB_POSIXCHECK
620: # undef setenv
621: # if HAVE_RAW_DECL_SETENV
622: _GL_WARN_ON_USE (setenv, "setenv is unportable - "
623: "use gnulib module setenv for portability");
624: # endif
625: #endif
626:
627: #if @GNULIB_STRTOD@
628: /* Parse a double from STRING, updating ENDP if appropriate. */
629: # if @REPLACE_STRTOD@
630: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
631: # define strtod rpl_strtod
632: # endif
633: _GL_FUNCDECL_RPL (strtod, double, (const char *str, char **endp)
634: _GL_ARG_NONNULL ((1)));
635: _GL_CXXALIAS_RPL (strtod, double, (const char *str, char **endp));
636: # else
637: # if !@HAVE_STRTOD@
638: _GL_FUNCDECL_SYS (strtod, double, (const char *str, char **endp)
639: _GL_ARG_NONNULL ((1)));
640: # endif
641: _GL_CXXALIAS_SYS (strtod, double, (const char *str, char **endp));
642: # endif
643: _GL_CXXALIASWARN (strtod);
644: #elif defined GNULIB_POSIXCHECK
645: # undef strtod
646: # if HAVE_RAW_DECL_STRTOD
647: _GL_WARN_ON_USE (strtod, "strtod is unportable - "
648: "use gnulib module strtod for portability");
649: # endif
650: #endif
651:
652: #if @GNULIB_STRTOLL@
653: /* Parse a signed integer whose textual representation starts at STRING.
654: The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0,
655: it may be decimal or octal (with prefix "0") or hexadecimal (with prefix
656: "0x").
657: If ENDPTR is not NULL, the address of the first byte after the integer is
658: stored in *ENDPTR.
659: Upon overflow, the return value is LLONG_MAX or LLONG_MIN, and errno is set
660: to ERANGE. */
661: # if !@HAVE_STRTOLL@
662: _GL_FUNCDECL_SYS (strtoll, long long,
663: (const char *string, char **endptr, int base)
664: _GL_ARG_NONNULL ((1)));
665: # endif
666: _GL_CXXALIAS_SYS (strtoll, long long,
667: (const char *string, char **endptr, int base));
668: _GL_CXXALIASWARN (strtoll);
669: #elif defined GNULIB_POSIXCHECK
670: # undef strtoll
671: # if HAVE_RAW_DECL_STRTOLL
672: _GL_WARN_ON_USE (strtoll, "strtoll is unportable - "
673: "use gnulib module strtoll for portability");
674: # endif
675: #endif
676:
677: #if @GNULIB_STRTOULL@
678: /* Parse an unsigned integer whose textual representation starts at STRING.
679: The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0,
680: it may be decimal or octal (with prefix "0") or hexadecimal (with prefix
681: "0x").
682: If ENDPTR is not NULL, the address of the first byte after the integer is
683: stored in *ENDPTR.
684: Upon overflow, the return value is ULLONG_MAX, and errno is set to
685: ERANGE. */
686: # if !@HAVE_STRTOULL@
687: _GL_FUNCDECL_SYS (strtoull, unsigned long long,
688: (const char *string, char **endptr, int base)
689: _GL_ARG_NONNULL ((1)));
690: # endif
691: _GL_CXXALIAS_SYS (strtoull, unsigned long long,
692: (const char *string, char **endptr, int base));
693: _GL_CXXALIASWARN (strtoull);
694: #elif defined GNULIB_POSIXCHECK
695: # undef strtoull
696: # if HAVE_RAW_DECL_STRTOULL
697: _GL_WARN_ON_USE (strtoull, "strtoull is unportable - "
698: "use gnulib module strtoull for portability");
699: # endif
700: #endif
701:
702: #if @GNULIB_UNLOCKPT@
703: /* Unlock the slave side of the pseudo-terminal whose master side is specified
704: by FD, so that it can be opened. */
705: # if !@HAVE_UNLOCKPT@
706: _GL_FUNCDECL_SYS (unlockpt, int, (int fd));
707: # endif
708: _GL_CXXALIAS_SYS (unlockpt, int, (int fd));
709: _GL_CXXALIASWARN (unlockpt);
710: #elif defined GNULIB_POSIXCHECK
711: # undef unlockpt
712: # if HAVE_RAW_DECL_UNLOCKPT
713: _GL_WARN_ON_USE (unlockpt, "unlockpt is not portable - "
714: "use gnulib module unlockpt for portability");
715: # endif
716: #endif
717:
718: #if @GNULIB_UNSETENV@
719: /* Remove the variable NAME from the environment. */
720: # if @REPLACE_UNSETENV@
721: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
722: # undef unsetenv
723: # define unsetenv rpl_unsetenv
724: # endif
725: _GL_FUNCDECL_RPL (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1)));
726: _GL_CXXALIAS_RPL (unsetenv, int, (const char *name));
727: # else
728: # if !@HAVE_DECL_UNSETENV@
729: _GL_FUNCDECL_SYS (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1)));
730: # endif
731: _GL_CXXALIAS_SYS (unsetenv, int, (const char *name));
732: # endif
733: # if !(@REPLACE_UNSETENV@ && !@HAVE_DECL_UNSETENV@)
734: _GL_CXXALIASWARN (unsetenv);
735: # endif
736: #elif defined GNULIB_POSIXCHECK
737: # undef unsetenv
738: # if HAVE_RAW_DECL_UNSETENV
739: _GL_WARN_ON_USE (unsetenv, "unsetenv is unportable - "
740: "use gnulib module unsetenv for portability");
741: # endif
742: #endif
743:
744: /* Convert a wide character to a multibyte character. */
745: #if @GNULIB_WCTOMB@
746: # if @REPLACE_WCTOMB@
747: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
748: # undef wctomb
749: # define wctomb rpl_wctomb
750: # endif
751: _GL_FUNCDECL_RPL (wctomb, int, (char *s, wchar_t wc));
752: _GL_CXXALIAS_RPL (wctomb, int, (char *s, wchar_t wc));
753: # else
754: _GL_CXXALIAS_SYS (wctomb, int, (char *s, wchar_t wc));
755: # endif
756: _GL_CXXALIASWARN (wctomb);
757: #endif
758:
759:
760: #endif /* _@GUARD_PREFIX@_STDLIB_H */
761: #endif /* _@GUARD_PREFIX@_STDLIB_H */
762: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>