summaryrefslogtreecommitdiff
path: root/lib/stdlib.in.h
Commit message (Collapse)AuthorAgeFilesLines
* Improve support for MSVC 9.Bruno Haible2012-01-151-0/+5
| | | | | | | | * lib/unistd.in.h: Include <io.h> when needed to avoid redefinition clashes on MSVC. * lib/fcntl.in.h: Likewise. * lib/stdlib.in.h: Likewise. * lib/sys_stat.in.h: Likewise.
* New module 'random'.Bruno Haible2012-01-141-0/+61
| | | | | | | | | | | | | | | | * lib/stdlib.in.h (random, srandom, initstate, setstate): New declarations. * lib/random.c: New file, based on glibc/stdlib/random.c. * m4/random.m4: New file. * m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Initialize GNULIB_RANDOM, HAVE_RANDOM. * modules/stdlib (Makefile.am): Substitute GNULIB_RANDOM, HAVE_RANDOM. * modules/random: New file. * config/srclist.txt: Add an entry for random.c. * doc/posix-functions/random.texi: Mention the 'random' module. * doc/posix-functions/initstate.texi: Likewise. * doc/posix-functions/setstate.texi: Likewise. * doc/posix-functions/srandom.texi: Likewise.
* random_r: Override incompatible API on AIX, OSF/1.Bruno Haible2012-01-121-9/+57
| | | | | | | | | | | | | * lib/stdlib.in.h (random_r, srandom_r, initstate_r, setstate_r): Override the system function if REPLACE_RANDOM_R is 1. * m4/random_r.m4 (gl_FUNC_RANDOM_R): Require AC_CANONICAL_HOST. On AIX and OSF/1, set REPLACE_RANDOM_R. * m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Initialize REPLACE_RANDOM_R. * modules/stdlib (Makefile.am): Substitute REPLACE_RANDOM_R. * modules/random_r (configure.ac): Test REPLACE_RANDOM_R. * doc/glibc-functions/initstate_r.texi: Mention the AIX, OSF/1 problem. * doc/glibc-functions/random_r.texi: Likewise. * doc/glibc-functions/setstate_r.texi: Likewise.
* maint: update all copyright year number rangesJim Meyering2012-01-011-1/+1
| | | | Run "make update-copyright".
* ptsname_r: Avoid compilation error on OSF/1 5.1.Bruno Haible2011-11-101-2/+11
| | | | | | | | | | * lib/stdlib.in.h (ptsname_r): Override if REPLACE_PTSNAME_R is 1. * m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Initialize REPLACE_PTSNAME_R. * m4/ptsname_r.m4 (gl_FUNC_PTSNAME_R): Set REPLACE_PTSNAME_R if the function is not declared or incompatibly declared. * modules/stdlib (Makefile.am): Substitute REPLACE_PTSNAME_R. * modules/ptsname_r (Depends-on, configure.ac): Update. * doc/glibc-functions/ptsname_r.texi: Mention the OSF/1 problems.
* ptsname_r: new moduleEric Blake2011-11-091-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | For now, this replacement focuses solely on compilation compatibility, and assumes that isatty() and ttyname_r() work on a master side pty; if this assumption fails, or if thread-safety is also required, then a later patch can follow the lead of strerror_r.c in wrapping the system ptsname() with a lock. * modules/ptsname_r: New module. * m4/ptsname_r.m4 (gl_FUNC_PTSNAME_R): New file. * lib/ptsname.c (__ptsname_r): Split... * lib/ptsname_r.c: ...into new file. * m4/stdlib_h.m4 (gl_STDLIB_H): Check for decl. (gl_STDLIB_H_DEFAULTS): Set witness defaults. * modules/stdlib (Makefile.am): Substitute witnesses. * lib/stdlib.in.h (ptsname_r): Declare it. * doc/glibc-functions/ptsname_r.texi (ptsname_r): Document it. * MODULES.html.sh (Misc): Likewise. * modules/ptsname (Depends-on): Alter dependency. * doc/posix-functions/ptsname.texi (ptsname): Mention new module. Signed-off-by: Eric Blake <eblake@redhat.com>
* grantpt: fix typoEric Blake2011-11-071-1/+1
| | | | | | * lib/stdlib.in.h (grantpt): Check correct function. Signed-off-by: Eric Blake <eblake@redhat.com>
* posix_openpt: new moduleEric Blake2011-10-181-0/+16
| | | | | | | | | | | | | | * modules/posix_openpt: New module. * m4/posix_openpt.m4: New file. * lib/posix_openpt.c: Likewise. * m4/stdlib_h.m4 (gl_STDLIB_H): Check for decl. (gl_STDLIB_H_DEFAULTS): Set defaults. * modules/stdlib (Makefile.am): Substitute macros. * lib/stdlib.in.h (posix_openpt): Declare. * MODULES.html.sh (systems lacking POSIX:2008): Document it. * doc/posix-functions/posix_openpt.texi (posix_openpt): Likewise. * modules/posix_openpt-tests: New test module. * tests/test-posix_openpt.c: New test.
* stdlib: use _NoreturnPaul Eggert2011-07-121-6/+2
| | | | | | | * lib/stdlib.in.h (_GL_ATTRIBUTE_NORETURN): Remove. (_Exit): Use _Noreturn rather than _GL_ATTRIBUTE_NORETURN. * modules/stdlib (Depends-on): Add _Noreturn. (stdlib.h): Depend on $(_NORETURN_H), and copy it in.
* Allow multiple gnulib generated include files to be combined.Bruno Haible2011-05-291-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * gnulib-tool (func_compute_include_guard_prefix): New function. (func_emit_lib_Makefile_am, func_emit_tests_Makefile_am): Resolve also ${gl_include_guard_prefix} references. (func_import, func_create_testdir): Invoke func_compute_include_guard_prefix. * lib/arpa_inet.in.h: Use the @GUARD_PREFIX@ placeholder. * lib/ctype.in.h: Likewise. * lib/dirent.in.h: Likewise. * lib/errno.in.h: Likewise. * lib/fcntl.in.h: Likewise. * lib/float.in.h: Likewise. * lib/getopt.in.h: Likewise. * lib/iconv.in.h: Likewise. * lib/langinfo.in.h: Likewise. * lib/locale.in.h: Likewise. * lib/math.in.h: Likewise. * lib/netdb.in.h: Likewise. * lib/netinet_in.in.h: Likewise. * lib/poll.in.h: Likewise. * lib/pthread.in.h: Likewise. * lib/pty.in.h: Likewise. * lib/sched.in.h: Likewise. * lib/se-selinux.in.h: Likewise. * lib/search.in.h: Likewise. * lib/signal.in.h: Likewise. * lib/spawn.in.h: Likewise. * lib/stdarg.in.h: Likewise. * lib/stddef.in.h: Likewise. * lib/stdint.in.h: Likewise. * lib/stdio.in.h: Likewise. * lib/stdlib.in.h: Likewise. * lib/string.in.h: Likewise. * lib/strings.in.h: Likewise. * lib/sys_file.in.h: Likewise. * lib/sys_ioctl.in.h: Likewise. * lib/sys_select.in.h: Likewise. * lib/sys_socket.in.h: Likewise. * lib/sys_stat.in.h: Likewise. * lib/sys_time.in.h: Likewise. * lib/sys_times.in.h: Likewise. * lib/sys_uio.in.h: Likewise. * lib/sys_utsname.in.h: Likewise. * lib/sys_wait.in.h: Likewise. * lib/sysexits.in.h: Likewise. * lib/termios.in.h: Likewise. * lib/time.in.h: Likewise. * lib/unistd.in.h: Likewise. * lib/wchar.in.h: Likewise. * lib/wctype.in.h: Likewise. * modules/arpa_inet (Makefile.am): Substitute @GUARD_PREFIX@. * modules/ctype (Makefile.am): Likewise. * modules/dirent (Makefile.am): Likewise. * modules/errno (Makefile.am): Likewise. * modules/fcntl-h (Makefile.am): Likewise. * modules/float (Makefile.am): Likewise. * modules/getopt-posix (Makefile.am): Likewise. * modules/iconv-h (Makefile.am): Likewise. * modules/langinfo (Makefile.am): Likewise. * modules/locale (Makefile.am): Likewise. * modules/math (Makefile.am): Likewise. * modules/netdb (Makefile.am): Likewise. * modules/netinet_in (Makefile.am): Likewise. * modules/poll-h (Makefile.am): Likewise. * modules/pthread (Makefile.am): Likewise. * modules/pty (Makefile.am): Likewise. * modules/sched (Makefile.am): Likewise. * modules/search (Makefile.am): Likewise. * modules/selinux-h (Makefile.am): Likewise. * modules/signal (Makefile.am): Likewise. * modules/spawn (Makefile.am): Likewise. * modules/stdarg (Makefile.am): Likewise. * modules/stddef (Makefile.am): Likewise. * modules/stdint (Makefile.am): Likewise. * modules/stdio (Makefile.am): Likewise. * modules/stdlib (Makefile.am): Likewise. * modules/string (Makefile.am): Likewise. * modules/strings (Makefile.am): Likewise. * modules/sys_file (Makefile.am): Likewise. * modules/sys_ioctl (Makefile.am): Likewise. * modules/sys_select (Makefile.am): Likewise. * modules/sys_socket (Makefile.am): Likewise. * modules/sys_stat (Makefile.am): Likewise. * modules/sys_time (Makefile.am): Likewise. * modules/sys_times (Makefile.am): Likewise. * modules/sys_uio (Makefile.am): Likewise. * modules/sys_utsname (Makefile.am): Likewise. * modules/sys_wait (Makefile.am): Likewise. * modules/sysexits (Makefile.am): Likewise. * modules/termios (Makefile.am): Likewise. * modules/time (Makefile.am): Likewise. * modules/unistd (Makefile.am): Likewise. * modules/wchar (Makefile.am): Likewise. * modules/wctype-h (Makefile.am): Likewise. * modules/assert-h (Makefile.am): Replace _GL_VERIFY_H specially.
* mkstemps: Ensure declaration on MacOS X 10.5.Bruno Haible2011-04-281-1/+2
| | | | | | * lib/stdlib.in.h: Include <unistd.h> when mkstemps is requested. * doc/glibc-functions/mkstemps.texi: Document header file problem on MacOS X.
* * lib/stdlib.in.h (malloc, realloc): Limit this change to a smaller scope.Paul Eggert2011-04-081-24/+22
|
* stdlib: let modules use system malloc, reallocPaul Eggert2011-04-081-20/+28
| | | | | * lib/stdlib.in.h (malloc, realloc): Don't #define or add warnings if !_GL_USE_STDLIB_ALLOC.
* New module 'wctomb'.Bruno Haible2011-02-221-0/+15
| | | | | | | | | | | | | | | * lib/stdlib.in.h (wctomb): New declaration. * lib/wctomb.c: New file. * lib/wctomb-impl.h: New file. * m4/wctomb.m4: New file. * m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Initialize GNULIB_WCTOMB, REPLACE_WCTOMB. * modules/stdlib (Makefile.am): Substitute GNULIB_WCTOMB, REPLACE_WCTOMB. * modules/wctomb: New file. * tests/test-stdlib-c++.cc: Test signature of wctomb. * doc/posix-functions/wctomb.texi: Mention the new module. * modules/wctob (Depends-on): Add wctomb.
* New module 'mbtowc'.Bruno Haible2011-02-221-0/+15
| | | | | | | | | | | | | | | * lib/stdlib.in.h (mbtowc): New declaration. * lib/mbtowc.c: New file. * lib/mbtowc-impl.h: New file, from libutf8 with modifications * m4/mbtowc.m4: New file. * m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Initialize GNULIB_MBTOWC, REPLACE_MBTOWC. * modules/stdlib (Makefile.am): Substitute GNULIB_MBTOWC, REPLACE_MBTOWC. * modules/mbtowc: New file. * tests/test-stdlib-c++.cc: Test signature of mbtowc. * doc/posix-functions/mbtowc.texi: Mention the new module. * modules/btowc (Depends-on): Add mbtowc.
* stdlib: don't get in the way of non-GCC __attribute__Paul Eggert2011-02-121-6/+7
|
* stdlib: support non-GCC __attribute__Paul Eggert2011-02-121-7/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix a serious and tricky problem encountered when attempting to add the getloadavg module to Emacs. Emacs worked fine on RHEL 5.5, but it crashed due to memory corruption on Solaris 10 with Sun C 5.11. Emacs normally ORs 3-bit tags into their low-order bits that are otherwise zero. This tagging is optional inside Emacs but is preferred and is used when __attribute__ ((__aligned (8))) works, as it does with both recent-enough GCC and with Sun C 5.11. However, Sun C 5.11 is not GCC and does not #define __GNUC__ and __GNUC_MINOR__. When I added the getloadavg module to Emacs, it brought in stdlib.in.h, which contained this fragment: #ifndef __attribute__ # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) # define __attribute__(Spec) /* empty */ # endif #endif When files that include <stdlib.h> were compiled with Sun C 5.11, the above code disabled __attribute__ ((__aligned (8))), which caused variables to not be properly aligned, which eventually led to the pointer corruption mentioned above. (This was a bit hard to diagnose, unfortunately.) Several "#define __attribute__(X) /* empty */" code snippets need to be eradicated from Gnulib to work with non-GCC compilers that support __attribute__. The Autoconf way to do this is to test for each kind of attribute that we want support for, and selectively enable that in source code. Fix this problem just for stdlib.h, by adding a test for the __noreturn__ attribute, and change stdlib.in.h to use that test when needed. This technique can be easily generalized to the other *.in.h files and attributes, and a similar technique can be used for *.h and *.c files. This patch is enough to solve the problem for Emacs + getloadavg, and I thought I'd publish it for feedback before undertaking further, similar fixes in other modules. This patch does not arrange to #define HAVE_ATTRIBUTE_NORETURN because it's not needed for stdlib.h. It merely substitutes the value directly into stdlib.h. We may well need to #define it, or similar symbols, for other modules, but it's nice to also have an option to not #define it for applications like Emacs that do not need it. * lib/stdlib.in.h (__attribute__): Do not #define. (_GL_ATTRIBUTE_NORETURN): New macro, which in stdlib.h needs to be defined only if the _Exit module is also used. * m4/_Exit.m4 (gl_FUNC__EXIT): Require gl_ATTRIBUTE_NORETURN. * m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Subst HAVE_ATTRIBUTE_NORETURN and default it to 1, its value on GNU platforms. * modules/_Exit (Files): Add m4/attribute.m4. * modules/stdlib (Makefile.am): Substitute HAVE_ATTRIBUTE_NORETURN. * m4/attribute.m4: New file.
* stdlib: improve random_r modularizationPaul Eggert2011-02-081-10/+14
|
* stdlib: don't depend on stdintPaul Eggert2011-02-081-2/+1
| | | | | | | | | | | | | * lib/stdlib.in.h: Don't include <stdint.h> merely because GNULIB_POSIXCHECK is defined. GNULIB_POSIXCHECK seems to be independent of whether stdint.h is needed. * m4/random_r.m4 (gl_FUNC_RANDOM_R): Check for struct random_data here, instead of ... * m4/stdlib_h.m4 (gl_STDLIB_H): ... here. Applications that need struct random_data should be using the random_r module, not just the stdlib module (which wouldn't make sense: what package needs just struct random_data without also needing random_r?). * modules/stdlib (Depends-on): Remove stdint.
* maint: update almost all copyright ranges to include 2011Jim Meyering2011-01-011-1/+1
| | | | Run the new "make update-copyright" rule.
* unsetenv: Add missing declaration on OSF/1 5.1.Bruno Haible2010-12-191-1/+3
| | | | | | | | | | | * lib/stdlib.in.h (setenv): Test HAVE_DECL_UNSETENV, not HAVE_UNSETENV. * m4/setenv.m4 (gl_FUNC_UNSETENV): Test whether unsetenv is declared. Don't set HAVE_UNSETENV. In the test program, set _BSD. * m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Initialize HAVE_DECL_UNSETENV, not HAVE_UNSETENV. * modules/stdlib (Makefile.am): Substitute HAVE_DECL_UNSETENV, not HAVE_UNSETENV. * doc/posix-functions/unsetenv.texi: Mention the OSF/1 5.1 problem.
* setenv: Add missing declaration on OSF/1 5.1.Bruno Haible2010-12-191-1/+3
| | | | | | | | | | | * lib/stdlib.in.h (setenv): Test HAVE_DECL_SETENV, not HAVE_SETENV. * m4/setenv.m4 (gl_FUNC_SETENV_SEPARATE): Test whether setenv is declared. Don't set HAVE_SETENV. * m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Initialize HAVE_DECL_SETENV, not HAVE_SETENV. * modules/stdlib (Makefile.am): Substitute HAVE_DECL_SETENV, not HAVE_SETENV. * doc/posix-functions/setenv.texi: Mention the OSF/1 5.1 problem.
* stdlib: Allow multiple gnulib generated replacements to coexist.Bruno Haible2010-10-121-0/+5
| | | | | * lib/stdlib.in.h (struct random_data): Avoid identical redefinition. Reported by Sam Steingold <sds@gnu.org>.
* Avoid line length limitation from HP NonStop system header files.Bruno Haible2010-10-041-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * m4/include_next.m4 (gl_INCLUDE_NEXT): Define also PRAGMA_COLUMNS. * lib/arpa_inet.in.h: Use PRAGMA_COLUMNS. * lib/ctype.in.h: Likewise. * lib/dirent.in.h: Likewise. * lib/errno.in.h: Likewise. * lib/fcntl.in.h: Likewise. * lib/float.in.h: Likewise. * lib/getopt.in.h: Likewise. * lib/iconv.in.h: Likewise. * lib/inttypes.in.h: Likewise. * lib/langinfo.in.h: Likewise. * lib/locale.in.h: Likewise. * lib/math.in.h: Likewise. * lib/netdb.in.h: Likewise. * lib/netinet_in.in.h: Likewise. * lib/poll.in.h: Likewise. * lib/pthread.in.h: Likewise. * lib/pty.in.h: Likewise. * lib/sched.in.h: Likewise. * lib/se-selinux.in.h: Likewise. * lib/search.in.h: Likewise. * lib/signal.in.h: Likewise. * lib/spawn.in.h: Likewise. * lib/stdarg.in.h: Likewise. * lib/stddef.in.h: Likewise. * lib/stdint.in.h: Likewise. * lib/stdio.in.h: Likewise. * lib/stdlib.in.h: Likewise. * lib/string.in.h: Likewise. * lib/strings.in.h: Likewise. * lib/sys_file.in.h: Likewise. * lib/sys_ioctl.in.h: Likewise. * lib/sys_select.in.h: Likewise. * lib/sys_socket.in.h: Likewise. * lib/sys_stat.in.h: Likewise. * lib/sys_time.in.h: Likewise. * lib/sys_times.in.h: Likewise. * lib/sys_utsname.in.h: Likewise. * lib/sys_wait.in.h: Likewise. * lib/sysexits.in.h: Likewise. * lib/termios.in.h: Likewise. * lib/time.in.h: Likewise. * lib/unistd.in.h: Likewise. * lib/wchar.in.h: Likewise. * lib/wctype.in.h: Likewise. * modules/arpa_inet (Makefile.am): Substitute PRAGMA_COLUMNS. * modules/ctype (Makefile.am): Likewise. * modules/dirent (Makefile.am): Likewise. * modules/errno (Makefile.am): Likewise. * modules/fcntl-h (Makefile.am): Likewise. * modules/float (Makefile.am): Likewise. * modules/getopt-posix (Makefile.am): Likewise. * modules/iconv-h (Makefile.am): Likewise. * modules/inttypes (Makefile.am): Likewise. * modules/langinfo (Makefile.am): Likewise. * modules/locale (Makefile.am): Likewise. * modules/math (Makefile.am): Likewise. * modules/netdb (Makefile.am): Likewise. * modules/netinet_in (Makefile.am): Likewise. * modules/poll-h (Makefile.am): Likewise. * modules/pthread (Makefile.am): Likewise. * modules/pty (Makefile.am): Likewise. * modules/sched (Makefile.am): Likewise. * modules/search (Makefile.am): Likewise. * modules/selinux-h (Makefile.am): Likewise. * modules/signal (Makefile.am): Likewise. * modules/spawn (Makefile.am): Likewise. * modules/stdarg (Makefile.am): Likewise. * modules/stddef (Makefile.am): Likewise. * modules/stdint (Makefile.am): Likewise. * modules/stdio (Makefile.am): Likewise. * modules/stdlib (Makefile.am): Likewise. * modules/string (Makefile.am): Likewise. * modules/strings (Makefile.am): Likewise. * modules/sys_file (Makefile.am): Likewise. * modules/sys_ioctl (Makefile.am): Likewise. * modules/sys_select (Makefile.am): Likewise. * modules/sys_socket (Makefile.am): Likewise. * modules/sys_stat (Makefile.am): Likewise. * modules/sys_time (Makefile.am): Likewise. * modules/sys_times (Makefile.am): Likewise. * modules/sys_utsname (Makefile.am): Likewise. * modules/sys_wait (Makefile.am): Likewise. * modules/sysexits (Makefile.am): Likewise. * modules/termios (Makefile.am): Likewise. * modules/time (Makefile.am): Likewise. * modules/unistd (Makefile.am): Likewise. * modules/wchar (Makefile.am): Likewise. * modules/wctype (Makefile.am): Likewise.
* Avoid some lines longer than 80 characters.Paul Eggert2010-10-031-1/+2
| | | | | | | | | | | | * lib/stdint.in.h: Break long comment lines. * lib/math.in.h: Likewise. (_GL_NUM_UINT_WORDS): New macro, for readability. (gl_signbitf, gl_signbitd, gl_signbitl): Use it. * lib/stdio.in.h: Break lines in _GL_WARN_ON_USE calls. * lib/stdlib.in.h: Likewise. * lib/spawn.in.h: Likewise. * lib/sys_socket.in.h: Update an URL. * lib/sys_stat.in.h: Break long line.
* New module 'system-posix'.Bruno Haible2010-10-021-1/+1
| | | | | | | | | | | | | | | * modules/system-posix: New file. * lib/stdlib.in.h: Include <sys/wait.h> only when the 'system-posix' module is present. * m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Initialize GNULIB_SYSTEM_POSIX. * modules/stdlib (Depends-on): Remove sys_wait. (Makefile.am): Substitute GNULIB_SYSTEM_POSIX. * doc/posix-functions/system.texi: Mention the new module. * doc/posix-headers/stdlib.texi: Likewise. * tests/test-stdlib.c: If GNULIB_TEST_SYSTEM_POSIX is not defined, define test_sys_wait_macros to a no-op. Reported by Sam Steingold <sds@gnu.org>.
* unlockpt: Fix declaration within GNULIB_POSIXCHECK.Bruno Haible2010-09-171-1/+1
| | | | * lib/stdlib.in.h (unlockpt): Fix warning declaration.
* stdlib: clarify MirBSD WEXITSTATUS bugBruno Haible2010-09-161-1/+1
| | | | | * lib/stdlib.in.h: Clarify the MirBSD bug regarding WEXITSTATUS. * doc/posix-headers/stdlib.texi (stdlib.h): Likewise.
* stdlib: work around MirBSD WEXITSTATUS bugEric Blake2010-09-151-0/+5
| | | | | | | | | | * lib/stdlib.in.h (includes): Guarantee WEXITSTATUS. * modules/stdlib (Depends-on): Add sys_wait. * tests/test-sys_wait.c (main): Enhance test. * tests/test-stdlib.c (main): Likewise. * doc/posix-headers/stdlib.texi (stdlib.h): Document the bug. Signed-off-by: Eric Blake <eblake@redhat.com>
* New module '_Exit'.Bruno Haible2010-07-121-0/+23
|
* Fix HAVE_CALLOC_POSIX misnomer.Bruno Haible2010-06-221-1/+1
|
* Fix HAVE_REALLOC_POSIX misnomer.Bruno Haible2010-06-221-1/+1
|
* Fix HAVE_MALLOC_POSIX misnomer.Bruno Haible2010-06-221-1/+1
|
* mkstemp: Fix C++ test error on mingw.Bruno Haible2010-04-031-0/+3
|
* stdlib: Avoid compilation failure of c-strtold on mingw.Bruno Haible2010-04-031-2/+2
|
* New module 'unlockpt'.Bruno Haible2010-03-211-0/+16
|
* New module 'grantpt'.Bruno Haible2010-03-211-0/+16
|
* New module 'ptsname'.Bruno Haible2010-03-211-0/+16
|
* stdlib: Avoid #define replacements in C++ mode.Bruno Haible2010-03-081-86/+225
|
* warn-on-use: use instead of link-warningEric Blake2010-01-201-94/+91
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Each *.in.h file serves two purposes - provide enough self-contained content to serve as a replacement for the system header regardless of the user's compiler, and offer the developer the ability to detect any gnulib modules that might have been inadvertantly excluded. The former requires independence from config.h, and routes everything through a Makefile.am snippet that uses @@ substitution specific to the modules that were in use, with details learned at configure time. The latter works by poisoning anything that gnulib did not replace, but which the developer had natively available, explaining why their tests passed during development. Poisoning relies on gcc features, and requires manual triggering by adding -DGNULIB_POSIXCHECK to CFLAGS; it assumes that <config.h> is properly included. In fact, we do not want to use @@ substitution for HAVE_DECL_* during poisoning, because the warning is only relevant for the gnulib modules which were not included, and thus where the m4 macros to set proper @@ values have not been run. Furthermore, we only need to poison interfaces that already have a declaration; if something is not declared, then the developer wouldn't have been able to link, so their code won't be using the problematic interface in the first place. * modules/stdio (Depends-on, Makefile.am): Drop link-warning. * modules/unistd (Depends-on, Makefile.am): Likewise. * modules/arpa_inet (Depends-on): Replace link-warning with warn-on-use. (Makefile.am): Update rules accordingly. * modules/ctype (Depends-on, Makefile.am): Likewise. * modules/dirent (Depends-on, Makefile.am): Likewise. * modules/fcntl-h (Depends-on, Makefile.am): Likewise. * modules/inttypes (Depends-on, Makefile.am): Likewise. * modules/langinfo (Depends-on, Makefile.am): Likewise. * modules/locale (Depends-on, Makefile.am): Likewise. * modules/math (Depends-on, Makefile.am): Likewise. * modules/search (Depends-on, Makefile.am): Likewise. * modules/signal (Depends-on, Makefile.am): Likewise. * modules/spawn (Depends-on, Makefile.am): Likewise. * modules/stdlib (Depends-on, Makefile.am): Likewise. * modules/string (Depends-on, Makefile.am): Likewise. * modules/strings (Depends-on, Makefile.am): Likewise. * modules/sys_file (Depends-on, Makefile.am): Likewise. * modules/sys_ioctl (Depends-on, Makefile.am): Likewise. * modules/sys_select (Depends-on, Makefile.am): Likewise. * modules/sys_socket (Depends-on, Makefile.am): Likewise. * modules/sys_stat (Depends-on, Makefile.am): Likewise. * modules/sys_times (Depends-on, Makefile.am): Likewise. * modules/sys_utsname (Depends-on, Makefile.am): Likewise. * modules/wchar (Depends-on, Makefile.am): Likewise. * m4/arpa_inet_h.m4 (gl_HEADER_ARPA_INET): Check which functions should be poisoned. * m4/ctype.m4 (gl_CTYPE_H): Likewise. * m4/dirent_h.m4 (gl_DIRENT_H): Likewise. * m4/fcntl_h.m4 (gl_FCNTL_H): Likewise. * m4/inttypes.m4 (gl_INTTYPES_H): Likewise. * m4/langinfo_h.m4 (gl_LANGINFO_H): Likewise. * m4/locale_h.m4 (gl_LOCALE_H): Likewise. * m4/math_h.m4 (gl_MATH_H): Likewise. * m4/search_h.m4 (gl_SEARCH_H): Likewise. * m4/signal_h.m4 (gl_SIGNAL_H): Likewise. * m4/spawn_h.m4 (gl_SPAWN_H): Likewise. * m4/stdio_h.m4 (gl_STDIO_H): Likewise. * m4/stdlib_h.m4 (gl_STDLIB_H): Likewise. * m4/string_h.m4 (gl_HEADER_STRING_H_BODY): Likewise. * m4/strings_h.m4 (gl_HEADER_STRINGS_H_BODY): Likewise. * m4/sys_file_h.m4 (gl_HEADER_SYS_FILE_H_DEFAULTS): Likewise. * m4/sys_ioctl_h.m4 (gl_SYS_IOCTL_H): Likewise. * m4/sys_select_h.m4 (gl_HEADER_SYS_SELECT): Likewise. * m4/sys_socket_h.m4 (gl_HEADER_SYS_SOCKET): Likewise. * m4/sys_stat_h.m4 (gl_HEADER_SYS_STAT_H): Likewise. * m4/sys_times_h.m4 (gl_SYS_TIMES_H): Likewise. * m4/sys_utsname_h.m4 (gl_SYS_UTSNAME_H): Likewise. * m4/unistd_h.m4 (gl_UNISTD_H): Likewise. * m4/wchar.m4 (gl_WCHAR_H): Likewise. * lib/arpa_inet.in.h: Use _GL_WARN_ON_USE instead of GL_LINK_WARNING. * lib/ctype.in.h: Likewise. * lib/dirent.in.h: Likewise. * lib/fcntl.in.h: Likewise. * lib/inttypes.in.h: Likewise. * lib/langinfo.in.h: Likewise. * lib/locale.in.h: Likewise. * lib/math.in.h: Likewise. * lib/search.in.h: Likewise. * lib/signal.in.h: Likewise. * lib/spawn.in.h: Likewise. * lib/stdio.in.h: Likewise. * lib/stdlib.in.h: Likewise. * lib/string.in.h: Likewise. * lib/strings.in.h: Likewise. * lib/sys_file.in.h: Likewise. * lib/sys_ioctl.in.h: Likewise. * lib/sys_select.in.h: Likewise. * lib/sys_socket.in.h: Likewise. * lib/sys_stat.in.h: Likewise. * lib/sys_times.in.h: Likewise. * lib/sys_utsname.in.h: Likewise. * lib/unistd.in.h: Likewise. * lib/wchar.in.h: Likewise. Signed-off-by: Eric Blake <ebb9@byu.net>
* update nearly all FSF copyright year lists to include 2010Jim Meyering2010-01-011-1/+1
| | | | | Use the same procedure as for 2009, outlined in http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/20081
* Reduce namespace pollution on glibc systems.Bruno Haible2009-12-241-3/+4
|
* Fix typo in today's commit.Bruno Haible2009-12-241-1/+1
|
* build: pull in conditional headers during GNULIB_POSIXCHECKEric Blake2009-12-241-2/+3
| | | | | | | | | | | | | | | | Any time we conditionally include a header in order to satisfy prerequisites of one module, we must also include that header under GNULIB_POSIXCHECK to avoid compilation errors if that module is not in use. If this is not done, then our link warning override can occur before the system's declaration, which causes a syntax error when the system header is finally included. * lib/stdio.in.h (includes): Using GNULIB_POSIXCHECK also requires definitions from any conditionally-included headers. * lib/stdlib.in.h (includes): Likewise. * lib/unistd.in.h (includes): Likewise. Signed-off-by: Eric Blake <ebb9@byu.net>
* getsubopt: work around cygwin bugEric Blake2009-12-221-3/+6
| | | | | | | | | | | | | | | On cygwin, compiling with -DGNULIB_POSIXCHECK failed because the getsubopt link warning definition interfered with the inclusion of the system header. The fix, as always in these types of problems, is to ensure that system headers are completely included before doing any overrides. * lib/stdlib.in.h (includes): Move unistd inclusion sooner, to avoid conflicting with system getsubopt. * doc/posix-functions/getsubopt.texi (getsubopt): Document the bug. Signed-off-by: Eric Blake <ebb9@byu.net>
* New module 'arg-nonnull'. Declare which arguments expect non-NULL values.Bruno Haible2009-12-111-21/+33
|
* Use spaces for indentation, not tabs.Bruno Haible2009-12-101-12/+12
|
* setenv, unsetenv: work around various bugsEric Blake2009-11-161-8/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | POSIX requires setenv(NULL,"",0), setenv("a=b","",0), unsetenv(NULL), and unsetenv("a=b") to fail with EINVAL, but many BSD implementations lack validation. The gnulib replacement for void unsetenv did not do validation, and the replacement for setenv was out of sync with glibc. Also, some BSD implementations of setenv("a","==",1) eat the leading '='. See also some recent Austin Group interpretations on environ: http://austingroupbugs.net/view.php?id=167 http://austingroupbugs.net/view.php?id=185 * lib/setenv.c (setenv) [!HAVE_SETENV]: Resync from glibc. (setenv) [HAVE_SETENV]: Work around bugs. * lib/unsetenv.c (unsetenv) [HAVE_UNSETENV]: Work around bugs. * m4/setenv.m4 (gl_FUNC_SETENV_SEPARATE, gl_FUNC_UNSETENV): Check for bugs. (gl_FUNC_SETENV): Write in terms of gl_FUNC_SETENV_SEPARATE. * m4/environ.m4 (gl_ENVIRON): Avoid expand-before-require. * m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Update defaults. * modules/stdlib (Makefile.am): Update substitutions. * lib/stdlib.in.h (setenv, unsetenv): Update prototypes. * doc/posix-functions/setenv.texi (setenv): Document the bugs. * doc/posix-functions/unsetenv.texi (unsetenv): Likewise. * modules/setenv-tests: New test. * modules/unsetenv-tests: Likewise. * tests/test-setenv.c: New file. * tests/test-unsetenv.c: Likewise. Signed-off-by: Eric Blake <ebb9@byu.net>
* mkstemps, mkostemps: new modulesEric Blake2009-11-041-0/+47
| | | | | | | | | | | | | | | | | | * modules/mkostemps: New module. * modules/mkstemps: Likewise. * lib/mkostemps.c (mkostemps): New file. * lib/mkstemps.c (mkstemps): Likewise. * m4/mkostemps.m4 (gl_FUNC_MKOSTEMPS): Likewise. * m4/mkstemps.m4 (gl_FUNC_MKSTEMPS): Likewise. * m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Add witnesses. * modules/stdlib (Makefile.am): Substitute them. * lib/stdlib.in.h (mkostemps, mkstemps): Declare them. * doc/glibc-functions/mkstemps.texi (mkstemps): New file. * doc/glibc-functions/mkostemps.texi (mkostemps): Likewise. * doc/gnulib.texi (Glibc stdlib.h): Include them. * MODULES.html.sh (File system functions): Mention them. Signed-off-by: Eric Blake <ebb9@byu.net>
* canonicalize-lgpl: fix glibc bug with trailing slashEric Blake2009-09-171-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Consolidate the m4 macros into a single file, since both modules now have to worry about replacing canonicalize_file_name on buggy glibc. * m4/canonicalize-lgpl.m4: Move contents... * m4/canonicalize.m4: ...here. (gl_CANONICALIZE_LGPL): Factor realpath check... (gl_FUNC_REALPATH_WORKS): ...into new macro. Enhance to catch glibc 2.3.5 bug, fixed 2005-04-27. (gl_FUNC_CANONICALIZE_FILENAME_MODE): Use it. (gl_PREREQ_CANONICALIZE_LGPL): Inline... (gl_CANONICALIZE_LGPL_SEPARATE): ...into this macro. * modules/canonicalize-lgpl (Files): Manage file rename. * m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Provide default. * modules/stdlib (Makefile.am): Substitute witness. * lib/stdlib.in.h (canonicalize_file_name): Declare if replacement is needed. * lib/canonicalize-lgpl.c: Also compile if canonicalize_file_name replacement is required. * lib/canonicalize.c (canonicalize_file_name): Likewise. * doc/glibc-functions/canonicalize_file_name.texi (canonicalize_file_name): Document this. * doc/posix-functions/realpath.texi (realpath): Likewise. Signed-off-by: Eric Blake <ebb9@byu.net>