summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/exceptions.cc
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2005-04-14 17:34:03 +0000
committerChristopher Faylor <me@cgf.cx>2005-04-14 17:34:03 +0000
commitdda0657380d0383935d80bf62a3d305df849bb6f (patch)
tree1598f34f2910c0f0132a9c9ccb7ca641fd830efb /winsup/cygwin/exceptions.cc
parent3178cfffc8348e980cc1a5c05089b4109dfc8717 (diff)
downloadcygnal-dda0657380d0383935d80bf62a3d305df849bb6f.tar.gz
cygnal-dda0657380d0383935d80bf62a3d305df849bb6f.tar.bz2
cygnal-dda0657380d0383935d80bf62a3d305df849bb6f.zip
* 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.
Diffstat (limited to 'winsup/cygwin/exceptions.cc')
-rw-r--r--winsup/cygwin/exceptions.cc18
1 files changed, 18 insertions, 0 deletions
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 */