Don't assume pid_t is the same size as an int

virPidFileReadPathIfAlive passed in an 'int *' where a 'pid_t *'
was expected, which breaks on Mingw64 targets. Also a few places
were using '%d' for formatting pid_t, change them to '%lld' and
force a cast to the longer type as done elsewhere in the same
file.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
Daniel P. Berrange 2012-10-31 17:00:50 +00:00
parent eb0b42d80a
commit 6bf55a9752
2 changed files with 9 additions and 8 deletions

View File

@ -206,7 +206,7 @@ int virPidFileReadPathIfAlive(const char *path,
pid_t *pid, pid_t *pid,
const char *binPath) const char *binPath)
{ {
int ret, retPid; int ret;
bool isLink; bool isLink;
char *procPath = NULL; char *procPath = NULL;
char *procLink = NULL; char *procLink = NULL;
@ -215,7 +215,7 @@ int virPidFileReadPathIfAlive(const char *path,
char *resolvedProcLink = NULL; char *resolvedProcLink = NULL;
const char deletedText[] = " (deleted)"; const char deletedText[] = " (deleted)";
size_t deletedTextLen = strlen(deletedText); size_t deletedTextLen = strlen(deletedText);
pid_t retPid;
/* only set this at the very end on success */ /* only set this at the very end on success */
*pid = -1; *pid = -1;

View File

@ -250,7 +250,7 @@ virProcessKillPainfully(pid_t pid, bool force)
int i, ret = -1; int i, ret = -1;
const char *signame = "TERM"; const char *signame = "TERM";
VIR_DEBUG("vpid=%d force=%d", pid, force); VIR_DEBUG("vpid=%lld force=%d", (long long)pid, force);
/* This loop sends SIGTERM, then waits a few iterations (10 seconds) /* This loop sends SIGTERM, then waits a few iterations (10 seconds)
* to see if it dies. If the process still hasn't exited, and * to see if it dies. If the process still hasn't exited, and
@ -265,8 +265,8 @@ virProcessKillPainfully(pid_t pid, bool force)
if (i == 0) { if (i == 0) {
signum = SIGTERM; /* kindly suggest it should exit */ signum = SIGTERM; /* kindly suggest it should exit */
} else if ((i == 50) & force) { } else if ((i == 50) & force) {
VIR_DEBUG("Timed out waiting after SIGTERM to process %d, " VIR_DEBUG("Timed out waiting after SIGTERM to process %lld, "
"sending SIGKILL", pid); "sending SIGKILL", (long long)pid);
/* No SIGKILL kill on Win32 ! Use SIGABRT instead which our /* No SIGKILL kill on Win32 ! Use SIGABRT instead which our
* virProcessKill proc will handle more or less like SIGKILL */ * virProcessKill proc will handle more or less like SIGKILL */
#ifdef WIN32 #ifdef WIN32
@ -283,8 +283,8 @@ virProcessKillPainfully(pid_t pid, bool force)
if (virProcessKill(pid, signum) < 0) { if (virProcessKill(pid, signum) < 0) {
if (errno != ESRCH) { if (errno != ESRCH) {
virReportSystemError(errno, virReportSystemError(errno,
_("Failed to terminate process %d with SIG%s"), _("Failed to terminate process %lld with SIG%s"),
pid, signame); (long long)pid, signame);
goto cleanup; goto cleanup;
} }
ret = signum == SIGTERM ? 0 : 1; ret = signum == SIGTERM ? 0 : 1;
@ -294,7 +294,8 @@ virProcessKillPainfully(pid_t pid, bool force)
usleep(200 * 1000); usleep(200 * 1000);
} }
VIR_DEBUG("Timed out waiting after SIGKILL to process %d", pid); VIR_DEBUG("Timed out waiting after SIGKILL to process %lld",
(long long)pid);
cleanup: cleanup:
return ret; return ret;