提交 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) ...@@ -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 static int
daemonUnixSocketPaths(struct daemonConfig *config, daemonUnixSocketPaths(struct daemonConfig *config,
bool privileged, bool privileged,
...@@ -1313,8 +1278,10 @@ int main(int argc, char **argv) { ...@@ -1313,8 +1278,10 @@ int main(int argc, char **argv) {
} }
if (!pid_file && if (!pid_file &&
daemonPidFilePath(privileged, virPidFileConstructPath(privileged,
&pid_file) < 0) { LOCALSTATEDIR,
"libvirtd",
&pid_file) < 0) {
VIR_ERROR(_("Can't determine pid file path.")); VIR_ERROR(_("Can't determine pid file path."));
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
......
...@@ -1778,6 +1778,7 @@ virPCIIsVirtualFunction; ...@@ -1778,6 +1778,7 @@ virPCIIsVirtualFunction;
virPidFileAcquire; virPidFileAcquire;
virPidFileAcquirePath; virPidFileAcquirePath;
virPidFileBuildPath; virPidFileBuildPath;
virPidFileConstructPath;
virPidFileDelete; virPidFileDelete;
virPidFileDeletePath; virPidFileDeletePath;
virPidFileRead; virPidFileRead;
......
...@@ -365,42 +365,6 @@ virLockDaemonForkIntoBackground(const char *argv0) ...@@ -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 static int
virLockDaemonUnixSocketPaths(bool privileged, virLockDaemonUnixSocketPaths(bool privileged,
char **sockfile) char **sockfile)
...@@ -1283,8 +1247,10 @@ int main(int argc, char **argv) { ...@@ -1283,8 +1247,10 @@ int main(int argc, char **argv) {
} }
if (!pid_file && if (!pid_file &&
virLockDaemonPidFilePath(privileged, virPidFileConstructPath(privileged,
&pid_file) < 0) { LOCALSTATEDIR,
"virtlockd",
&pid_file) < 0) {
VIR_ERROR(_("Can't determine pid file path.")); VIR_ERROR(_("Can't determine pid file path."));
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
......
/* /*
* virpidfile.c: manipulation of pidfiles * 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, 2007 Binary Karma
* Copyright (C) 2006 Shuveb Hussain * Copyright (C) 2006 Shuveb Hussain
* *
...@@ -521,3 +521,50 @@ int virPidFileRelease(const char *dir, ...@@ -521,3 +521,50 @@ int virPidFileRelease(const char *dir,
VIR_FREE(pidfile); VIR_FREE(pidfile);
return rc; 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 * 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, 2007 Binary Karma
* Copyright (C) 2006 Shuveb Hussain * Copyright (C) 2006 Shuveb Hussain
* *
...@@ -69,4 +69,9 @@ int virPidFileRelease(const char *dir, ...@@ -69,4 +69,9 @@ int virPidFileRelease(const char *dir,
const char *name, const char *name,
int fd); int fd);
int virPidFileConstructPath(bool privileged,
const char *statedir,
const char *progname,
char **pidfile);
#endif /* __VIR_PIDFILE_H__ */ #endif /* __VIR_PIDFILE_H__ */
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册