diff options
author | Christopher Faylor <me@cgf.cx> | 2002-03-11 18:33:02 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2002-03-11 18:33:02 +0000 |
commit | af53a09c707a8fd0bd8eaf218d9625e0c7fe09e9 (patch) | |
tree | d339191f908402b21143b99e9165709aa17926a2 /winsup/utils/kill.cc | |
parent | 713fb38b7c3f6bcf1d0c1bd845d2264b19a82439 (diff) | |
download | cygnal-af53a09c707a8fd0bd8eaf218d9625e0c7fe09e9.tar.gz cygnal-af53a09c707a8fd0bd8eaf218d9625e0c7fe09e9.tar.bz2 cygnal-af53a09c707a8fd0bd8eaf218d9625e0c7fe09e9.zip |
* kill.cc (usage): Move to top of file.
(getsig): Ditto.
(forcekill): Ditto.
Diffstat (limited to 'winsup/utils/kill.cc')
-rw-r--r-- | winsup/utils/kill.cc | 76 |
1 files changed, 36 insertions, 40 deletions
diff --git a/winsup/utils/kill.cc b/winsup/utils/kill.cc index 626b07156..2f538ea49 100644 --- a/winsup/utils/kill.cc +++ b/winsup/utils/kill.cc @@ -17,9 +17,42 @@ details. */ #include <windows.h> #include <sys/cygwin.h> -static void usage (void); -static int __stdcall getsig (char *); -static void __stdcall forcekill (int, int, int); +static void +usage (void) +{ + fprintf (stderr, "Usage: kill [-sigN] pid1 [pid2 ...]\n"); + exit (1); +} + +static int +getsig (char *in_sig) +{ + char *sig; + char buf[80]; + + if (strncmp (in_sig, "SIG", 3) == 0) + sig = in_sig; + else + { + sprintf (buf, "SIG%s", in_sig); + sig = buf; + } + return (strtosigno (sig) ?: atoi (in_sig)); +} + +static void __stdcall +forcekill (int pid, int sig, int wait) +{ + external_pinfo *p = (external_pinfo *) cygwin_internal (CW_GETPINFO_FULL, pid); + if (!p) + return; + HANDLE h = OpenProcess (PROCESS_TERMINATE, FALSE, (DWORD) p->dwProcessId); + if (!h) + return; + if (!wait || WaitForSingleObject (h, 200) != WAIT_OBJECT_0) + TerminateProcess (h, sig << 8); + CloseHandle (h); +} int main (int argc, char **argv) @@ -83,40 +116,3 @@ sig0: } return ret; } - -static void -usage (void) -{ - fprintf (stderr, "Usage: kill [-sigN] pid1 [pid2 ...]\n"); - exit (1); -} - -static int -getsig (char *in_sig) -{ - char *sig; - char buf[80]; - - if (strncmp (in_sig, "SIG", 3) == 0) - sig = in_sig; - else - { - sprintf (buf, "SIG%s", in_sig); - sig = buf; - } - return (strtosigno (sig) ?: atoi (in_sig)); -} - -static void __stdcall -forcekill (int pid, int sig, int wait) -{ - external_pinfo *p = (external_pinfo *) cygwin_internal (CW_GETPINFO_FULL, pid); - if (!p) - return; - HANDLE h = OpenProcess (PROCESS_TERMINATE, FALSE, (DWORD) p->dwProcessId); - if (!h) - return; - if (!wait || WaitForSingleObject (h, 200) != WAIT_OBJECT_0) - TerminateProcess (h, sig << 8); - CloseHandle (h); -} |