summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/utils/ChangeLog6
-rw-r--r--winsup/utils/kill.cc76
2 files changed, 42 insertions, 40 deletions
diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog
index 1a6bf8a49..a02f2a460 100644
--- a/winsup/utils/ChangeLog
+++ b/winsup/utils/ChangeLog
@@ -1,3 +1,9 @@
+2001-03-11 Joshua Daniel Franklin <joshuadfranklin@yahoo.com>
+
+ * kill.cc (usage): Move to top of file.
+ (getsig): Ditto.
+ (forcekill): Ditto.
+
2002-03-06 Christopher Faylor <cgf@redhat.com>
* cygcheck.cc: Reformat.
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);
-}