From dda0657380d0383935d80bf62a3d305df849bb6f Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Thu, 14 Apr 2005 17:34:03 +0000 Subject: * dcrt0.cc (do_global_dtors): Run DLL dtors. (__main): Don't rely on atexit to run dtors. (do_exit): Specifically call do_global_dtors here. (cygwin_exit): Ditto. * dll_init.cc (dll_global_dtors): Make global. Only run dtors once. (dll_list::init): Just set flag that dtors should be run. Don't rely on atexit. * dll_init.h (dll_global_dtors): Declare. * exceptions.cc (sigrelse): Define. * path.h (is_fs_device): New method. (is_lnk_special): Ditto. * fhandler_disk_file.cc (fhandler_disk_file::link): Use "is_lnk_special" rather than "is_lnk_symlink". * syscalls.cc (rename): Ditto. * hookapi.cc (ld_preload): Use colon as a separator rather than space. --- winsup/cygwin/exceptions.cc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'winsup/cygwin/exceptions.cc') diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index 96702b1de..fb4e0e91f 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -909,6 +909,24 @@ sighold (int sig) return 0; } +extern "C" int +sigrelse (int sig) +{ + /* check that sig is in right range */ + if (sig < 0 || sig >= NSIG) + { + set_errno (EINVAL); + syscall_printf ("signal %d out of range", sig); + return -1; + } + mask_sync.acquire (INFINITE); + sigset_t mask = myself->getsigmask (); + sigdelset (&mask, sig); + set_signal_mask (mask); + mask_sync.release (); + return 0; +} + /* Update the signal mask for this process and return the old mask. Called from sigdelayed */ -- cgit v1.2.3