Don't accumulate helpers in virsh.c --- tools/Makefile.am | 1 + tools/virsh-domain-monitor.c | 1 + tools/virsh-domain.c | 1 + tools/virsh-util.c | 66 ++++++++++++++++++++++++++++++++++++++++++++ tools/virsh-util.h | 35 +++++++++++++++++++++++ tools/virsh-volume.c | 1 + tools/virsh.c | 41 --------------------------- tools/virsh.h | 4 --- 8 files changed, 105 insertions(+), 45 deletions(-) create mode 100644 tools/virsh-util.c create mode 100644 tools/virsh-util.h diff --git a/tools/Makefile.am b/tools/Makefile.am index bfacaf214..56691c289 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -226,6 +226,7 @@ virsh_SOURCES = \ virsh-pool.c virsh-pool.h \ virsh-secret.c virsh-secret.h \ virsh-snapshot.c virsh-snapshot.h \ + virsh-util.c virsh-util.h \ virsh-volume.c virsh-volume.h \ $(NULL) diff --git a/tools/virsh-domain-monitor.c b/tools/virsh-domain-monitor.c index 901a6ebef..4ade5651c 100644 --- a/tools/virsh-domain-monitor.c +++ b/tools/virsh-domain-monitor.c @@ -25,6 +25,7 @@ #include <config.h> #include "virsh-domain-monitor.h" +#include "virsh-util.h" #include <libxml/parser.h> #include <libxml/tree.h> diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index 4b6c13ce4..7db74fecf 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -25,6 +25,7 @@ #include <config.h> #include "virsh-domain.h" +#include "virsh-util.h" #include <fcntl.h> #include <poll.h> diff --git a/tools/virsh-util.c b/tools/virsh-util.c new file mode 100644 index 000000000..98f16ff1a --- /dev/null +++ b/tools/virsh-util.c @@ -0,0 +1,66 @@ +/* + * virsh-util.c: helpers for virsh + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * <http://www.gnu.org/licenses/>. + */ + +#include <config.h> + +#include "virsh-util.h" + +#include "virfile.h" + +int +virshDomainState(vshControl *ctl, + virDomainPtr dom, + int *reason) +{ + virDomainInfo info; + virshControlPtr priv = ctl->privData; + + if (reason) + *reason = -1; + + if (!priv->useGetInfo) { + int state; + if (virDomainGetState(dom, &state, reason, 0) < 0) { + virErrorPtr err = virGetLastError(); + if (err && err->code == VIR_ERR_NO_SUPPORT) + priv->useGetInfo = true; + else + return -1; + } else { + return state; + } + } + + /* fall back to virDomainGetInfo if virDomainGetState is not supported */ + if (virDomainGetInfo(dom, &info) < 0) + return -1; + else + return info.state; +} + + +int +virshStreamSink(virStreamPtr st ATTRIBUTE_UNUSED, + const char *bytes, + size_t nbytes, + void *opaque) +{ + int *fd = opaque; + + return safewrite(*fd, bytes, nbytes); +} diff --git a/tools/virsh-util.h b/tools/virsh-util.h new file mode 100644 index 000000000..207d57859 --- /dev/null +++ b/tools/virsh-util.h @@ -0,0 +1,35 @@ +/* + * virsh-util.h: helpers for virsh + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * <http://www.gnu.org/licenses/>. + */ + +#ifndef VIRSH_UTIL_H +# define VIRSH_UTIL_H + +# include "virsh.h" + +int +virshDomainState(vshControl *ctl, + virDomainPtr dom, + int *reason); + +int +virshStreamSink(virStreamPtr st, + const char *bytes, + size_t nbytes, + void *opaque); + +#endif /* VIRSH_UTIL_H */ diff --git a/tools/virsh-volume.c b/tools/virsh-volume.c index 32ffb8149..ddd41d229 100644 --- a/tools/virsh-volume.c +++ b/tools/virsh-volume.c @@ -25,6 +25,7 @@ #include <config.h> #include "virsh-volume.h" +#include "virsh-util.h" #include <fcntl.h> diff --git a/tools/virsh.c b/tools/virsh.c index 7eb51ab7d..31e23bd27 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -257,14 +257,6 @@ virshReconnect(vshControl *ctl, const char *name, bool readonly, bool force) return 0; } -int virshStreamSink(virStreamPtr st ATTRIBUTE_UNUSED, - const char *bytes, size_t nbytes, void *opaque) -{ - int *fd = opaque; - - return safewrite(*fd, bytes, nbytes); -} - /* --------------- * Command Connect * --------------- @@ -347,39 +339,6 @@ virshConnectionHandler(vshControl *ctl) } -/* --------------- - * Misc utils - * --------------- - */ -int -virshDomainState(vshControl *ctl, virDomainPtr dom, int *reason) -{ - virDomainInfo info; - virshControlPtr priv = ctl->privData; - - if (reason) - *reason = -1; - - if (!priv->useGetInfo) { - int state; - if (virDomainGetState(dom, &state, reason, 0) < 0) { - virErrorPtr err = virGetLastError(); - if (err && err->code == VIR_ERR_NO_SUPPORT) - priv->useGetInfo = true; - else - return -1; - } else { - return state; - } - } - - /* fall back to virDomainGetInfo if virDomainGetState is not supported */ - if (virDomainGetInfo(dom, &info) < 0) - return -1; - else - return info.state; -} - /* * Initialize connection. */ diff --git a/tools/virsh.h b/tools/virsh.h index fd552bb3a..9e42ef9bb 100644 --- a/tools/virsh.h +++ b/tools/virsh.h @@ -145,9 +145,5 @@ typedef enum { } virshLookupByFlags; virConnectPtr virshConnect(vshControl *ctl, const char *uri, bool readonly); -int virshDomainState(vshControl *ctl, virDomainPtr dom, int *reason); - -int virshStreamSink(virStreamPtr st, const char *bytes, size_t nbytes, - void *opaque); #endif /* VIRSH_H */ -- 2.12.2 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list