aboutsummaryrefslogtreecommitdiff
path: root/compat/mingw.c
diff options
context:
space:
mode:
authorErik Faye-Lund <kusmabite@gmail.com>2010-11-04 02:35:15 +0100
committerJunio C Hamano <gitster@pobox.com>2010-11-04 16:53:50 -0700
commit82fc07b7baa6f9e188025cc06a87ebc60a6f2d5e (patch)
treeb9b6e7623b923eeb6f5e793df493aeb9823b5790 /compat/mingw.c
parentef7108caf3cd200620000921f1b121f8c78d9d3b (diff)
downloadgit-82fc07b7baa6f9e188025cc06a87ebc60a6f2d5e.tar.gz
git-82fc07b7baa6f9e188025cc06a87ebc60a6f2d5e.tar.xz
mingw: add kill emulation
This is a quite limited kill-emulation; it can only handle SIGTERM on positive pids. However, it's enough for git-daemon. Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'compat/mingw.c')
-rw-r--r--compat/mingw.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/compat/mingw.c b/compat/mingw.c
index 47a0e8861..146a6ed79 100644
--- a/compat/mingw.c
+++ b/compat/mingw.c
@@ -936,6 +936,25 @@ void mingw_execv(const char *cmd, char *const *argv)
mingw_execve(cmd, argv, environ);
}
+int mingw_kill(pid_t pid, int sig)
+{
+ if (pid > 0 && sig == SIGTERM) {
+ HANDLE h = OpenProcess(PROCESS_TERMINATE, FALSE, pid);
+
+ if (TerminateProcess(h, -1)) {
+ CloseHandle(h);
+ return 0;
+ }
+
+ errno = err_win_to_posix(GetLastError());
+ CloseHandle(h);
+ return -1;
+ }
+
+ errno = EINVAL;
+ return -1;
+}
+
static char **copy_environ(void)
{
char **env;