diff options
author | Bruno Haible <bruno@clisp.org> | 2011-09-23 21:38:44 +0200 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2011-09-23 21:38:44 +0200 |
commit | 9b604b4cbfad7422bacc1c723df1d027b6a7c738 (patch) | |
tree | 8299ebfd0839d14f62eb4c89e650d9623eeba157 /modules | |
parent | feb7da5e51db75738e91cce135c1906f7dc10948 (diff) | |
download | gnulib-9b604b4cbfad7422bacc1c723df1d027b6a7c738.tar.gz |
New module 'msvc-nothrow'. Makes _get_osfhandle safe on MSVC 9.
* lib/msvc-nothrow.h: New file.
* lib/msvc-nothrow.c: New file.
* m4/msvc-nothrow.m4: New file.
* modules/msvc-nothrow: New file.
* lib/dup2.c: Include msvc-nothrow.h.
(rpl_dup2): No need to protect _get_osfhandle call here.
* lib/accept4.c: Include msvc-nothrow.h.
* lib/error.c: Likewise.
* lib/fcntl.c: Likewise.
* lib/lseek.c: Likewise.
* lib/nonblocking.c: Likewise.
* lib/poll.c: Likewise.
* lib/read.c: Likewise.
* lib/select.c: Likewise.
* lib/sockets.h: Likewise.
* lib/sockets.c: Likewise.
* lib/stdio-read.c: Likewise.
* lib/stdio-write.c: Likewise.
* lib/write.c: Likewise.
* lib/w32sock.h: Likewise.
* lib/w32spawn.h: Likewise.
* lib/flock.c: Include msvc-nothrow.h instead of <io.h>.
* lib/fsync.c: Likewise.
* lib/isapipe.c: Likewise.
* modules/dup2 (Depends-on): Add msvc-nothrow.
* modules/accept4 (Depends-on): Likewise.
* modules/error (Depends-on): Likewise.
* modules/fcntl (Depends-on): Likewise.
* modules/lseek (Depends-on): Likewise.
* modules/nonblocking (Depends-on): Likewise.
* modules/poll (Depends-on): Likewise.
* modules/read (Depends-on): Likewise.
* modules/select (Depends-on): Likewise.
* modules/sockets (Depends-on): Likewise.
* modules/sigpipe (Depends-on): Likewise.
* modules/write (Depends-on): Likewise.
* modules/accept (Depends-on): Likewise.
* modules/bind (Depends-on): Likewise.
* modules/connect (Depends-on): Likewise.
* modules/gethostname (Depends-on): Likewise.
* modules/getpeername (Depends-on): Likewise.
* modules/getsockname (Depends-on): Likewise.
* modules/getsockopt (Depends-on): Likewise.
* modules/ioctl (Depends-on): Likewise.
* modules/listen (Depends-on): Likewise.
* modules/recv (Depends-on): Likewise.
* modules/recvfrom (Depends-on): Likewise.
* modules/send (Depends-on): Likewise.
* modules/sendto (Depends-on): Likewise.
* modules/setsockopt (Depends-on): Likewise.
* modules/shutdown (Depends-on): Likewise.
* modules/socket (Depends-on): Likewise.
* modules/execute (Depends-on): Likewise.
* modules/spawn-pipe (Depends-on): Likewise.
* modules/flock (Depends-on): Likewise.
* modules/fsync (Depends-on): Likewise.
* modules/isapipe (Depends-on): Likewise.
* tests/test-cloexec.c: Include msvc-nothrow.h.
* tests/test-dup-safer.c: Likewise.
* tests/test-dup2.c: Likewise.
* tests/test-dup3.c: Likewise.
* tests/test-fcntl.c: Likewise.
* tests/test-pipe.c: Likewise.
* tests/test-pipe2.c: Likewise.
* modules/cloexec-tests (Depends-on): Add msvc-nothrow.
* modules/unistd-safer-tests (Depends-on): Likewise.
* modules/dup2-tests (Depends-on): Likewise.
* modules/dup3-tests (Depends-on): Likewise.
* modules/fcntl-tests (Depends-on): Likewise.
* modules/pipe-posix-tests (Depends-on): Likewise.
* modules/pipe2-tests (Depends-on): Likewise.
Diffstat (limited to 'modules')
41 files changed, 68 insertions, 0 deletions
diff --git a/modules/accept b/modules/accept index 6421e92d5e..059a56d299 100644 --- a/modules/accept +++ b/modules/accept @@ -9,6 +9,7 @@ Depends-on: sys_socket socketlib errno [test "$ac_cv_header_winsock2_h" = yes] +msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes] configure.ac: AC_REQUIRE([gl_HEADER_SYS_SOCKET]) diff --git a/modules/accept4 b/modules/accept4 index e6b9994152..e9319763cb 100644 --- a/modules/accept4 +++ b/modules/accept4 @@ -12,6 +12,7 @@ accept fcntl-h binary-io extensions +msvc-nothrow configure.ac: gl_FUNC_ACCEPT4 diff --git a/modules/bind b/modules/bind index dd211d45a1..e46bd267a7 100644 --- a/modules/bind +++ b/modules/bind @@ -9,6 +9,7 @@ Depends-on: sys_socket socketlib errno [test "$ac_cv_header_winsock2_h" = yes] +msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes] configure.ac: AC_REQUIRE([gl_HEADER_SYS_SOCKET]) diff --git a/modules/cloexec-tests b/modules/cloexec-tests index 3a76b9e9a3..524716c92e 100644 --- a/modules/cloexec-tests +++ b/modules/cloexec-tests @@ -4,6 +4,7 @@ tests/macros.h Depends-on: binary-io +msvc-nothrow configure.ac: diff --git a/modules/connect b/modules/connect index d5958434e2..c77632ca61 100644 --- a/modules/connect +++ b/modules/connect @@ -9,6 +9,7 @@ Depends-on: sys_socket socketlib errno [test "$ac_cv_header_winsock2_h" = yes] +msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes] configure.ac: AC_REQUIRE([gl_HEADER_SYS_SOCKET]) diff --git a/modules/dup2 b/modules/dup2 index 2317db3cdf..2ad65d1dc1 100644 --- a/modules/dup2 +++ b/modules/dup2 @@ -9,6 +9,7 @@ Depends-on: unistd dup2-obsolete msvc-inval [test $HAVE_DUP2 = 0 || test $REPLACE_DUP2 = 1] +msvc-nothrow [test $HAVE_DUP2 = 0 || test $REPLACE_DUP2 = 1] configure.ac: gl_FUNC_DUP2 diff --git a/modules/dup2-tests b/modules/dup2-tests index a973fd75e5..8277e3b170 100644 --- a/modules/dup2-tests +++ b/modules/dup2-tests @@ -5,6 +5,7 @@ tests/macros.h Depends-on: binary-io +msvc-nothrow open configure.ac: diff --git a/modules/dup3-tests b/modules/dup3-tests index 26dd5d89aa..02f422e845 100644 --- a/modules/dup3-tests +++ b/modules/dup3-tests @@ -4,6 +4,7 @@ tests/signature.h tests/macros.h Depends-on: +msvc-nothrow open configure.ac: diff --git a/modules/error b/modules/error index ae12b45ad4..f8676176b1 100644 --- a/modules/error +++ b/modules/error @@ -14,6 +14,7 @@ m4/error.m4 Depends-on: strerror [test $ac_cv_lib_error_at_line = no] unistd [test $ac_cv_lib_error_at_line = no] +msvc-nothrow [test $ac_cv_lib_error_at_line = no] configure.ac: gl_ERROR diff --git a/modules/execute b/modules/execute index a65696bb53..f4584ab1a9 100644 --- a/modules/execute +++ b/modules/execute @@ -14,6 +14,7 @@ error fatal-signal wait-process gettext-h +msvc-nothrow spawn posix_spawnp posix_spawn_file_actions_init diff --git a/modules/fcntl b/modules/fcntl index 4c30e9e4ab..ab7c8ad6b9 100644 --- a/modules/fcntl +++ b/modules/fcntl @@ -10,6 +10,7 @@ fcntl-h extensions dup2 [test $HAVE_FCNTL = 0 || test $REPLACE_FCNTL = 1] getdtablesize [test $HAVE_FCNTL = 0 || test $REPLACE_FCNTL = 1] +msvc-nothrow [test $HAVE_FCNTL = 0 || test $REPLACE_FCNTL = 1] configure.ac: gl_FUNC_FCNTL diff --git a/modules/fcntl-tests b/modules/fcntl-tests index 44b040c251..72705801e5 100644 --- a/modules/fcntl-tests +++ b/modules/fcntl-tests @@ -6,6 +6,7 @@ tests/macros.h Depends-on: binary-io getdtablesize +msvc-nothrow stdbool configure.ac: diff --git a/modules/flock b/modules/flock index 56ef9b2645..73d27c6221 100644 --- a/modules/flock +++ b/modules/flock @@ -7,6 +7,7 @@ m4/flock.m4 Depends-on: sys_file +msvc-nothrow [test $HAVE_FLOCK = 0] configure.ac: gl_FUNC_FLOCK diff --git a/modules/fsync b/modules/fsync index 0f5b3fc793..660eb59bc0 100644 --- a/modules/fsync +++ b/modules/fsync @@ -7,6 +7,7 @@ m4/fsync.m4 Depends-on: unistd +msvc-nothrow [test $HAVE_FSYNC = 0] configure.ac: gl_FUNC_FSYNC diff --git a/modules/gethostname b/modules/gethostname index 42ee838e09..b41dfad9a7 100644 --- a/modules/gethostname +++ b/modules/gethostname @@ -11,6 +11,7 @@ unistd sys_socket [test $HAVE_GETHOSTNAME = 0] errno [test $HAVE_GETHOSTNAME = 0] sockets [test $HAVE_GETHOSTNAME = 0] +msvc-nothrow [test $HAVE_GETHOSTNAME = 0] configure.ac: gl_FUNC_GETHOSTNAME diff --git a/modules/getpeername b/modules/getpeername index b7f04ee28f..d1ef822724 100644 --- a/modules/getpeername +++ b/modules/getpeername @@ -10,6 +10,7 @@ Depends-on: sys_socket socketlib errno [test "$ac_cv_header_winsock2_h" = yes] +msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes] configure.ac: AC_REQUIRE([gl_HEADER_SYS_SOCKET]) diff --git a/modules/getsockname b/modules/getsockname index 033c170820..15cf490ca7 100644 --- a/modules/getsockname +++ b/modules/getsockname @@ -10,6 +10,7 @@ Depends-on: sys_socket socketlib errno [test "$ac_cv_header_winsock2_h" = yes] +msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes] configure.ac: AC_REQUIRE([gl_HEADER_SYS_SOCKET]) diff --git a/modules/getsockopt b/modules/getsockopt index d13e064edb..1cd1f2e12b 100644 --- a/modules/getsockopt +++ b/modules/getsockopt @@ -10,6 +10,7 @@ sys_socket socketlib sys_time [test "$ac_cv_header_winsock2_h" = yes] errno [test "$ac_cv_header_winsock2_h" = yes] +msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes] configure.ac: AC_REQUIRE([gl_HEADER_SYS_SOCKET]) diff --git a/modules/ioctl b/modules/ioctl index 9842a53f97..ba4a85a32e 100644 --- a/modules/ioctl +++ b/modules/ioctl @@ -11,6 +11,7 @@ sys_ioctl sys_socket [test $HAVE_IOCTL = 0 || test $REPLACE_IOCTL = 1] errno [test $HAVE_IOCTL = 0 || test $REPLACE_IOCTL = 1] fd-hook [test $HAVE_IOCTL = 0 || test $REPLACE_IOCTL = 1] +msvc-nothrow [test $HAVE_IOCTL = 0 || test $REPLACE_IOCTL = 1] configure.ac: gl_FUNC_IOCTL diff --git a/modules/isapipe b/modules/isapipe index cc62ea8ce7..945df3ed8a 100644 --- a/modules/isapipe +++ b/modules/isapipe @@ -10,6 +10,7 @@ Depends-on: stdbool [test $HAVE_ISAPIPE = 0] sys_stat [test $HAVE_ISAPIPE = 0] unistd [test $HAVE_ISAPIPE = 0] +msvc-nothrow [test $HAVE_ISAPIPE = 0] configure.ac: gl_ISAPIPE diff --git a/modules/listen b/modules/listen index 8aff376c32..baaadc21ad 100644 --- a/modules/listen +++ b/modules/listen @@ -9,6 +9,7 @@ Depends-on: sys_socket socketlib errno [test "$ac_cv_header_winsock2_h" = yes] +msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes] configure.ac: AC_REQUIRE([gl_HEADER_SYS_SOCKET]) diff --git a/modules/lseek b/modules/lseek index 0fc7923f65..c43027354c 100644 --- a/modules/lseek +++ b/modules/lseek @@ -8,6 +8,7 @@ m4/lseek.m4 Depends-on: unistd largefile +msvc-nothrow [test $REPLACE_LSEEK = 1] configure.ac: gl_FUNC_LSEEK diff --git a/modules/msvc-nothrow b/modules/msvc-nothrow new file mode 100644 index 0000000000..46d71aae48 --- /dev/null +++ b/modules/msvc-nothrow @@ -0,0 +1,28 @@ +Description: +wrappers that don't throw invalid parameter notifications with MSVC runtime +libraries + +Files: +lib/msvc-nothrow.h +lib/msvc-nothrow.c +m4/msvc-nothrow.m4 + +Depends-on: +msvc-inval + +configure.ac: +gl_MSVC_NOTHROW +if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then + AC_LIBOBJ([msvc-nothrow]) +fi + +Makefile.am: + +Include: +"msvc-nothrow.h" + +License: +LGPLv2+ + +Maintainer: +Bruno Haible diff --git a/modules/nonblocking b/modules/nonblocking index 2d469ebaa4..96881f5b58 100644 --- a/modules/nonblocking +++ b/modules/nonblocking @@ -12,6 +12,7 @@ m4/asm-underscore.m4 Depends-on: fcntl-h ioctl +msvc-nothrow stdbool stdio sys_socket diff --git a/modules/pipe-posix-tests b/modules/pipe-posix-tests index 7afafdc504..3f428a0613 100644 --- a/modules/pipe-posix-tests +++ b/modules/pipe-posix-tests @@ -6,6 +6,7 @@ tests/macros.h Depends-on: stdbool binary-io +msvc-nothrow configure.ac: diff --git a/modules/pipe2-tests b/modules/pipe2-tests index 2e6c3f78a7..74f9d5f3e3 100644 --- a/modules/pipe2-tests +++ b/modules/pipe2-tests @@ -5,6 +5,7 @@ tests/macros.h Depends-on: stdbool +msvc-nothrow configure.ac: diff --git a/modules/poll b/modules/poll index f1f22bfd81..37143320ea 100644 --- a/modules/poll +++ b/modules/poll @@ -12,6 +12,7 @@ select [test $HAVE_POLL = 0 || test $REPLACE_POLL = 1] sys_select [test $HAVE_POLL = 0 || test $REPLACE_POLL = 1] sys_time [test $HAVE_POLL = 0 || test $REPLACE_POLL = 1] errno [test $HAVE_POLL = 0 || test $REPLACE_POLL = 1] +msvc-nothrow [test $HAVE_POLL = 0 || test $REPLACE_POLL = 1] configure.ac: gl_FUNC_POLL diff --git a/modules/read b/modules/read index 12d97c75fb..d725955837 100644 --- a/modules/read +++ b/modules/read @@ -7,6 +7,7 @@ m4/read.m4 Depends-on: unistd +msvc-nothrow [test $REPLACE_READ = 1] configure.ac: gl_FUNC_READ diff --git a/modules/recv b/modules/recv index 731717bc3a..b47d8f532f 100644 --- a/modules/recv +++ b/modules/recv @@ -9,6 +9,7 @@ Depends-on: sys_socket socketlib errno [test "$ac_cv_header_winsock2_h" = yes] +msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes] configure.ac: AC_REQUIRE([gl_HEADER_SYS_SOCKET]) diff --git a/modules/recvfrom b/modules/recvfrom index c4749ae45d..2b051b461d 100644 --- a/modules/recvfrom +++ b/modules/recvfrom @@ -10,6 +10,7 @@ sys_socket socketlib errno [test "$ac_cv_header_winsock2_h" = yes] getpeername [test "$ac_cv_header_winsock2_h" = yes] +msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes] configure.ac: AC_REQUIRE([gl_HEADER_SYS_SOCKET]) diff --git a/modules/select b/modules/select index f665740b03..7b25a8bc9c 100644 --- a/modules/select +++ b/modules/select @@ -9,6 +9,7 @@ Depends-on: sys_select alloca [test $REPLACE_SELECT = 1] sockets [test $REPLACE_SELECT = 1] +msvc-nothrow [test $REPLACE_SELECT = 1] configure.ac: gl_FUNC_SELECT diff --git a/modules/send b/modules/send index 18d6c0d14f..5e115c3f85 100644 --- a/modules/send +++ b/modules/send @@ -9,6 +9,7 @@ Depends-on: sys_socket socketlib errno [test "$ac_cv_header_winsock2_h" = yes] +msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes] configure.ac: AC_REQUIRE([gl_HEADER_SYS_SOCKET]) diff --git a/modules/sendto b/modules/sendto index 847699de42..924818e313 100644 --- a/modules/sendto +++ b/modules/sendto @@ -9,6 +9,7 @@ Depends-on: sys_socket socketlib errno [test "$ac_cv_header_winsock2_h" = yes] +msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes] configure.ac: AC_REQUIRE([gl_HEADER_SYS_SOCKET]) diff --git a/modules/setsockopt b/modules/setsockopt index 0b4ae49550..bfe8acdae9 100644 --- a/modules/setsockopt +++ b/modules/setsockopt @@ -10,6 +10,7 @@ sys_socket socketlib sys_time [test "$ac_cv_header_winsock2_h" = yes] errno [test "$ac_cv_header_winsock2_h" = yes] +msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes] configure.ac: AC_REQUIRE([gl_HEADER_SYS_SOCKET]) diff --git a/modules/shutdown b/modules/shutdown index 7c76ba5319..32845dbc87 100644 --- a/modules/shutdown +++ b/modules/shutdown @@ -9,6 +9,7 @@ Depends-on: sys_socket socketlib errno [test "$ac_cv_header_winsock2_h" = yes] +msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes] configure.ac: AC_REQUIRE([gl_HEADER_SYS_SOCKET]) diff --git a/modules/sigpipe b/modules/sigpipe index 4f03c9e14a..d28a562afe 100644 --- a/modules/sigpipe +++ b/modules/sigpipe @@ -12,6 +12,7 @@ lib/stdio-write.c m4/asm-underscore.m4 Depends-on: +msvc-nothrow raise signal sigprocmask diff --git a/modules/socket b/modules/socket index 6a056e423c..49625494ab 100644 --- a/modules/socket +++ b/modules/socket @@ -10,6 +10,7 @@ sys_socket socketlib errno [test "$ac_cv_header_winsock2_h" = yes] sockets [test "$ac_cv_header_winsock2_h" = yes] +msvc-nothrow [test "$ac_cv_header_winsock2_h" = yes] configure.ac: AC_REQUIRE([gl_HEADER_SYS_SOCKET]) diff --git a/modules/sockets b/modules/sockets index fe9292631c..b6dffabc1d 100644 --- a/modules/sockets +++ b/modules/sockets @@ -11,6 +11,7 @@ Depends-on: socketlib sys_socket fd-hook +msvc-nothrow configure.ac: gl_SOCKETS diff --git a/modules/spawn-pipe b/modules/spawn-pipe index 9898b37598..bcb0c9d253 100644 --- a/modules/spawn-pipe +++ b/modules/spawn-pipe @@ -14,6 +14,7 @@ environ error fatal-signal gettext-h +msvc-nothrow open pipe2 pipe2-safer diff --git a/modules/unistd-safer-tests b/modules/unistd-safer-tests index cc4b97ab3b..d8519a6562 100644 --- a/modules/unistd-safer-tests +++ b/modules/unistd-safer-tests @@ -6,6 +6,7 @@ Depends-on: binary-io cloexec fd-safer-flag +msvc-nothrow stdbool configure.ac: diff --git a/modules/write b/modules/write index d60b5a7f67..c19f73b7ed 100644 --- a/modules/write +++ b/modules/write @@ -8,6 +8,7 @@ m4/write.m4 Depends-on: unistd raise [test $REPLACE_WRITE = 1] +msvc-nothrow [test $REPLACE_WRITE = 1] configure.ac: gl_FUNC_WRITE |