OSDN Git Service

* syscalls.cc (_isatty): Define as an alias to isatty to override newlib
authorcgf <cgf>
Wed, 13 Feb 2008 17:21:04 +0000 (17:21 +0000)
committercgf <cgf>
Wed, 13 Feb 2008 17:21:04 +0000 (17:21 +0000)
version.
* thread.cc (pthread_kill): Deal with signal 0 as per POSIX and also avoid
manipulating an invalid thread.

winsup/cygwin/ChangeLog
winsup/cygwin/syscalls.cc
winsup/cygwin/thread.cc

index c1d8353..77ed6e5 100644 (file)
@@ -1,3 +1,11 @@
+2008-02-13  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * 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  <corinna@vinschen.de>
 
        * posix.sgml: Move llrint, llrintf, llrintl, lrintl, rintl, wcstol,
index 1f5bc5f..6e58b6a 100644 (file)
@@ -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.
index d78bbbb..7e52e3b 100644 (file)
@@ -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;