From ed52685dd7ea5c54e7a5e6caa789293d76f10b15 Mon Sep 17 00:00:00 2001 From: KWSys Robot Date: Mon, 19 May 2014 10:53:51 -0400 Subject: [PATCH] KWSys 2014-05-19 (c282e64f) Extract upstream KWSys using the following shell commands. $ git archive --prefix=upstream-kwsys/ c282e64f | tar x $ git shortlog --no-merges --abbrev=8 --format='%h %s' 6074f33f..c282e64f Brad King (2): 2e00d252 SystemTools: Port cygwin path conversion to modern API c282e64f Process: Workaround child kill trouble on Cygwin Change-Id: I39a3ca47fbb4065eff922d94e6d7019c417ed75c --- ProcessUNIX.c | 6 ++++++ SystemTools.cxx | 7 +++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ProcessUNIX.c b/ProcessUNIX.c index faeb96793..241e29573 100644 --- a/ProcessUNIX.c +++ b/ProcessUNIX.c @@ -2413,6 +2413,12 @@ static void kwsysProcessKill(pid_t process_id) /* Suspend the process to be sure it will not create more children. */ kill(process_id, SIGSTOP); +#if defined(__CYGWIN__) + /* Some Cygwin versions seem to need help here. Give up our time slice + so that the child can process SIGSTOP before we send SIGKILL. */ + usleep(1); +#endif + /* Kill all children if we can find them. */ #if defined(__linux__) || defined(__CYGWIN__) /* First try using the /proc filesystem. */ diff --git a/SystemTools.cxx b/SystemTools.cxx index a2681c162..704cbbc1b 100644 --- a/SystemTools.cxx +++ b/SystemTools.cxx @@ -92,7 +92,7 @@ extern char **environ; #endif #ifdef __CYGWIN__ -extern "C" void cygwin_conv_to_win32_path(const char *path, char *win32_path); +# include #endif // getpwnam doesn't exist on Windows and Cray Xt3/Catamount @@ -1113,7 +1113,10 @@ bool SystemTools::PathCygwinToWin32(const char *path, char *win32_path) } else { - cygwin_conv_to_win32_path(path, win32_path); + if(cygwin_conv_path(CCP_POSIX_TO_WIN_A, path, win32_path, MAX_PATH) != 0) + { + win32_path[0] = 0; + } SystemToolsTranslationMap::value_type entry(path, win32_path); SystemTools::Cyg2Win32Map->insert(entry); }