]> git.lyx.org Git - lyx.git/blobdiff - src/support/kill.C
Fix several filename and environment variable encoding problems
[lyx.git] / src / support / kill.C
index 830978a2c04031c71e556109e288916c4c871f1d..3d100969a776f25d843d81d44f98f8c025acda12 100644 (file)
 
 #include <config.h>
 
-#include "lyxlib.h"
+#include "support/lyxlib.h"
 
-#include <sys/types.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
 #include <csignal>
 
-int lyx::support::kill(int pid, int sig)
+#ifdef _WIN32
+#include "debug.h"
+#include "os.h"
+
+#include <windows.h>
+#include <cerrno>
+#endif //_WIN32
+
+namespace lyx {
+
+int support::kill(int pid, int sig)
 {
+#ifdef _WIN32
+       if (pid == (int)GetCurrentProcessId()) 
+               return -raise(sig);
+       HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid);
+       if (!hProcess) {
+               lyxerr << "kill OpenProcess failed!" << std::endl;
+               return -1;
+       }
+       if (!TerminateProcess(hProcess, sig)) {
+               lyxerr << "kill process failed!" << std::endl;
+               CloseHandle(hProcess);
+               return -1;
+       }
+       CloseHandle(hProcess);
+       return 0;
+#else
        return ::kill(pid, sig);
+#endif
 }
+
+
+} // namespace lyx