mingw: add kill emulation
[gitweb.git] / compat / mingw.c
index 47a0e8861dd5d55a77b3476119ee5504fc922126..146a6ed79c848cd5dab31b24ee3a4ff635de63a3 100644 (file)
@@ -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;