[libvirt] [PATCH 2/3] Move daemonPidFilePath into virutil.c
Daniel P. Berrange
berrange at redhat.com
Thu Apr 18 10:41:15 UTC 2013
On Thu, Apr 18, 2013 at 12:30:55PM +0200, Martin Kletzander wrote:
> Change daemonPidFilePath to virDaemonPidFilePath so it is accessible
> in other parts of the code.
>
> Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
> ---
> daemon/libvirtd.c | 43 +++----------------------------------------
> src/libvirt_private.syms | 1 +
> src/util/virutil.c | 39 +++++++++++++++++++++++++++++++++++++++
> src/util/virutil.h | 4 ++++
> 4 files changed, 47 insertions(+), 40 deletions(-)
>
> diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c
> index 38b7346..0dbe6d4 100644
> --- a/daemon/libvirtd.c
> +++ b/daemon/libvirtd.c
> @@ -1,7 +1,7 @@
> /*
> * libvirtd.c: daemon start of day, guest process & i/o management
> *
> - * Copyright (C) 2006-2012 Red Hat, Inc.
> + * Copyright (C) 2006-2013 Red Hat, Inc.
> * Copyright (C) 2006 Daniel P. Berrange
> *
> * This library is free software; you can redistribute it and/or
> @@ -237,43 +237,6 @@ error:
>
>
> static int
> -daemonPidFilePath(bool privileged,
> - char **pidfile)
> -{
> - if (privileged) {
> - if (!(*pidfile = strdup(LOCALSTATEDIR "/run/libvirtd.pid")))
> - goto no_memory;
> - } 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 no_memory;
> - }
> -
> - VIR_FREE(rundir);
> - }
> -
> - return 0;
> -
> -no_memory:
> - virReportOOMError();
> -error:
> - return -1;
> -}
> -
> -static int
> daemonUnixSocketPaths(struct daemonConfig *config,
> bool privileged,
> char **sockfile,
> @@ -1252,8 +1215,8 @@ int main(int argc, char **argv) {
> }
>
> if (!pid_file &&
> - daemonPidFilePath(privileged,
> - &pid_file) < 0) {
> + virGetDaemonPidFilePath(privileged,
> + &pid_file) < 0) {
> VIR_ERROR(_("Can't determine pid file path."));
> exit(EXIT_FAILURE);
> }
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index 30fdcd7..d1989fd 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -1869,6 +1869,7 @@ virFileWriteStr;
> virFindFCHostCapableVport;
> virFindFileInPath;
> virFormatIntDecimal;
> +virGetDaemonPidFilePath;
> virGetDeviceID;
> virGetDeviceUnprivSGIO;
> virGetFCHostNameByWWN;
> diff --git a/src/util/virutil.c b/src/util/virutil.c
> index 5fd0ce0..8b15894 100644
> --- a/src/util/virutil.c
> +++ b/src/util/virutil.c
> @@ -90,6 +90,7 @@
> #include "nonblocking.h"
> #include "passfd.h"
> #include "virprocess.h"
> +#include "configmake.h"
>
> #ifndef NSIG
> # define NSIG 32
> @@ -2339,6 +2340,44 @@ check_and_return:
> return result;
> }
>
> +
> +int
> +virGetDaemonPidFilePath(bool privileged,
> + char **pidfile)
> +{
> + if (privileged) {
> + if (!(*pidfile = strdup(LOCALSTATEDIR "/run/libvirtd.pid")))
> + goto no_memory;
> + } 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 no_memory;
> + }
> +
> + VIR_FREE(rundir);
> + }
> +
> + return 0;
> +
> +no_memory:
> + virReportOOMError();
> +error:
> + return -1;
> +}
This method is pretending to be generic, but in fact the path is
completely specific to libvirtd, so won't work with virtlockd
for example.
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list