提交 8035f2e6 编写于 作者: M Martin Kletzander

remove redundant pidfile path constructions

Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
上级 3951d4a6
......@@ -250,41 +250,6 @@ static int daemonForkIntoBackground(const char *argv0)
}
static int
daemonPidFilePath(bool privileged,
char **pidfile)
{
if (privileged) {
if (VIR_STRDUP(*pidfile, LOCALSTATEDIR "/run/libvirtd.pid") < 0)
goto error;
} else {
char *rundir = NULL;
mode_t old_umask;
if (!(rundir = virGetUserRuntimeDirectory()))
goto error;
old_umask = umask(077);
if (virFileMakePath(rundir) < 0) {
umask(old_umask);
goto error;
}
umask(old_umask);
if (virAsprintf(pidfile, "%s/libvirtd.pid", rundir) < 0) {
VIR_FREE(rundir);
goto error;
}
VIR_FREE(rundir);
}
return 0;
error:
return -1;
}
static int
daemonUnixSocketPaths(struct daemonConfig *config,
bool privileged,
......@@ -1313,8 +1278,10 @@ int main(int argc, char **argv) {
}
if (!pid_file &&
daemonPidFilePath(privileged,
&pid_file) < 0) {
virPidFileConstructPath(privileged,
LOCALSTATEDIR,
"libvirtd",
&pid_file) < 0) {
VIR_ERROR(_("Can't determine pid file path."));
exit(EXIT_FAILURE);
}
......
......@@ -1778,6 +1778,7 @@ virPCIIsVirtualFunction;
virPidFileAcquire;
virPidFileAcquirePath;
virPidFileBuildPath;
virPidFileConstructPath;
virPidFileDelete;
virPidFileDeletePath;
virPidFileRead;
......
......@@ -365,42 +365,6 @@ virLockDaemonForkIntoBackground(const char *argv0)
}
static int
virLockDaemonPidFilePath(bool privileged,
char **pidfile)
{
if (privileged) {
if (VIR_STRDUP(*pidfile, LOCALSTATEDIR "/run/virtlockd.pid") < 0)
goto error;
} else {
char *rundir = NULL;
mode_t old_umask;
if (!(rundir = virGetUserRuntimeDirectory()))
goto error;
old_umask = umask(077);
if (virFileMakePath(rundir) < 0) {
umask(old_umask);
goto error;
}
umask(old_umask);
if (virAsprintf(pidfile, "%s/virtlockd.pid", rundir) < 0) {
VIR_FREE(rundir);
goto error;
}
VIR_FREE(rundir);
}
return 0;
error:
return -1;
}
static int
virLockDaemonUnixSocketPaths(bool privileged,
char **sockfile)
......@@ -1283,8 +1247,10 @@ int main(int argc, char **argv) {
}
if (!pid_file &&
virLockDaemonPidFilePath(privileged,
&pid_file) < 0) {
virPidFileConstructPath(privileged,
LOCALSTATEDIR,
"virtlockd",
&pid_file) < 0) {
VIR_ERROR(_("Can't determine pid file path."));
exit(EXIT_FAILURE);
}
......
/*
* virpidfile.c: manipulation of pidfiles
*
* Copyright (C) 2010-2012 Red Hat, Inc.
* Copyright (C) 2010-2012, 2014 Red Hat, Inc.
* Copyright (C) 2006, 2007 Binary Karma
* Copyright (C) 2006 Shuveb Hussain
*
......@@ -521,3 +521,50 @@ int virPidFileRelease(const char *dir,
VIR_FREE(pidfile);
return rc;
}
int
virPidFileConstructPath(bool privileged,
const char *statedir,
const char *progname,
char **pidfile)
{
if (privileged) {
/*
* This is here just to allow calling this function with
* statedir == NULL; of course only when !privileged.
*/
if (!statedir) {
virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("No statedir specified"));
goto cleanup;
}
if (virAsprintf(pidfile, "%s/run/%s.pid", statedir, progname) < 0)
goto cleanup;
} else {
char *rundir = NULL;
mode_t old_umask;
if (!(rundir = virGetUserRuntimeDirectory()))
goto error;
old_umask = umask(077);
if (virFileMakePath(rundir) < 0) {
umask(old_umask);
goto error;
}
umask(old_umask);
if (virAsprintf(pidfile, "%s/%s.pid", rundir, progname) < 0) {
VIR_FREE(rundir);
goto error;
}
VIR_FREE(rundir);
}
return 0;
error:
return -1;
}
/*
* virpidfile.h: manipulation of pidfiles
*
* Copyright (C) 2010-2011 Red Hat, Inc.
* Copyright (C) 2010-2011, 2014 Red Hat, Inc.
* Copyright (C) 2006, 2007 Binary Karma
* Copyright (C) 2006 Shuveb Hussain
*
......@@ -69,4 +69,9 @@ int virPidFileRelease(const char *dir,
const char *name,
int fd);
int virPidFileConstructPath(bool privileged,
const char *statedir,
const char *progname,
char **pidfile);
#endif /* __VIR_PIDFILE_H__ */
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册