From b40597cb2e915d2703b258a04a45292f2d1ed4ed Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Wed, 13 Feb 2008 17:21:05 +0000 Subject: * syscalls.cc (_isatty): Define as an alias to isatty to override newlib version. * thread.cc (pthread_kill): Deal with signal 0 as per POSIX and also avoid manipulating an invalid thread. --- winsup/cygwin/ChangeLog | 8 ++++++++ winsup/cygwin/syscalls.cc | 1 + winsup/cygwin/thread.cc | 20 ++++++++++++++++++-- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index c1d8353fc..77ed6e567 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,11 @@ +2008-02-13 Christopher Faylor + + * syscalls.cc (_isatty): Define as an alias to isatty to override + newlib version. + + * thread.cc (pthread_kill): Deal with signal 0 as per POSIX and also + avoid manipulating an invalid thread. + 2008-02-13 Corinna Vinschen * posix.sgml: Move llrint, llrintf, llrintl, lrintl, rintl, wcstol, diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 1f5bc5fe5..6e58b6aa7 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -999,6 +999,7 @@ isatty (int fd) syscall_printf ("%d = isatty (%d)", res, fd); return res; } +EXPORT_ALIAS (isatty, _isatty) /* Under NT, try to make a hard link using backup API. If that fails or we are Win 95, just copy the file. diff --git a/winsup/cygwin/thread.cc b/winsup/cygwin/thread.cc index d78bbbb9c..7e52e3be9 100644 --- a/winsup/cygwin/thread.cc +++ b/winsup/cygwin/thread.cc @@ -2640,8 +2640,24 @@ pthread_kill (pthread_t thread, int sig) si.si_code = SI_USER; si.si_pid = myself->pid; si.si_uid = myself->uid; - thread->cygtls->set_threadkill (); - int rval = sig ? sig_send (NULL, si, thread->cygtls) : 0; + int rval; + if (!thread->valid) + rval = ESRCH; + else if (sig) + { + thread->cygtls->set_threadkill (); + rval = sig_send (NULL, si, thread->cygtls); + } + else + switch (WaitForSingleObject (thread->win32_obj_id, 0)) + { + case WAIT_TIMEOUT: + rval = 0; + break; + default: + rval = ESRCH; + break; + } // unlock myself return rval; -- cgit v1.2.3