Move virshLookupDomainBy, virshCommandOptDomainBy and virshCommandOptDomainBy to the helper file. Additionally turn the virshCommandOptDomainBy macro into a function. --- po/POTFILES.in | 1 + tools/virsh-domain-monitor.c | 1 - tools/virsh-domain.c | 71 ------------------------------------ tools/virsh-domain.h | 12 ------- tools/virsh-host.c | 1 - tools/virsh-snapshot.c | 2 +- tools/virsh-util.c | 86 ++++++++++++++++++++++++++++++++++++++++++++ tools/virsh-util.h | 17 +++++++++ 8 files changed, 105 insertions(+), 86 deletions(-) diff --git a/po/POTFILES.in b/po/POTFILES.in index 064abd5bb..ccef6f3cf 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -310,6 +310,7 @@ tools/virsh-nwfilter.c tools/virsh-pool.c tools/virsh-secret.c tools/virsh-snapshot.c +tools/virsh-util.c tools/virsh-volume.c tools/virsh.c tools/virt-admin.c diff --git a/tools/virsh-domain-monitor.c b/tools/virsh-domain-monitor.c index 4ade5651c..5215ac6f9 100644 --- a/tools/virsh-domain-monitor.c +++ b/tools/virsh-domain-monitor.c @@ -37,7 +37,6 @@ #include "intprops.h" #include "viralloc.h" #include "virmacaddr.h" -#include "virsh-domain.h" #include "virxml.h" #include "virstring.h" diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index 7db74fecf..4e4df5b4f 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -83,77 +83,6 @@ #define VIRSH_COMMON_OPT_DOMAIN_CURRENT \ VIRSH_COMMON_OPT_CURRENT(N_("affect current domain")) \ -static virDomainPtr -virshLookupDomainInternal(vshControl *ctl, - const char *cmdname, - const char *name, - unsigned int flags) -{ - virDomainPtr dom = NULL; - int id; - virCheckFlags(VIRSH_BYID | VIRSH_BYUUID | VIRSH_BYNAME, NULL); - virshControlPtr priv = ctl->privData; - - /* try it by ID */ - if (flags & VIRSH_BYID) { - if (virStrToLong_i(name, NULL, 10, &id) == 0 && id >= 0) { - vshDebug(ctl, VSH_ERR_DEBUG, "%s: <domain> looks like ID\n", - cmdname); - dom = virDomainLookupByID(priv->conn, id); - } - } - - /* try it by UUID */ - if (!dom && (flags & VIRSH_BYUUID) && - strlen(name) == VIR_UUID_STRING_BUFLEN-1) { - vshDebug(ctl, VSH_ERR_DEBUG, "%s: <domain> trying as domain UUID\n", - cmdname); - dom = virDomainLookupByUUIDString(priv->conn, name); - } - - /* try it by NAME */ - if (!dom && (flags & VIRSH_BYNAME)) { - vshDebug(ctl, VSH_ERR_DEBUG, "%s: <domain> trying as domain NAME\n", - cmdname); - dom = virDomainLookupByName(priv->conn, name); - } - - vshResetLibvirtError(); - - if (!dom) - vshError(ctl, _("failed to get domain '%s'"), name); - - return dom; -} - - -virDomainPtr -virshLookupDomainBy(vshControl *ctl, - const char *name, - unsigned int flags) -{ - return virshLookupDomainInternal(ctl, "unknown", name, flags); -} - - -virDomainPtr -virshCommandOptDomainBy(vshControl *ctl, const vshCmd *cmd, - const char **name, unsigned int flags) -{ - const char *n = NULL; - const char *optname = "domain"; - - if (vshCommandOptStringReq(ctl, cmd, optname, &n) < 0) - return NULL; - - vshDebug(ctl, VSH_ERR_INFO, "%s: found option <%s>: %s\n", - cmd->def->name, optname, n); - - if (name) - *name = n; - - return virshLookupDomainInternal(ctl, cmd->def->name, n, flags); -} static virDomainPtr virshDomainDefine(virConnectPtr conn, const char *xml, unsigned int flags) diff --git a/tools/virsh-domain.h b/tools/virsh-domain.h index 462f560f9..3f9d12a5f 100644 --- a/tools/virsh-domain.h +++ b/tools/virsh-domain.h @@ -28,18 +28,6 @@ # include "virsh.h" -virDomainPtr virshLookupDomainBy(vshControl *ctl, - const char *name, - unsigned int flags); - -virDomainPtr virshCommandOptDomainBy(vshControl *ctl, const vshCmd *cmd, - const char **name, unsigned int flags); - -/* default is lookup by Id, Name and UUID */ -# define virshCommandOptDomain(_ctl, _cmd, _name) \ - virshCommandOptDomainBy(_ctl, _cmd, _name, \ - VIRSH_BYID | VIRSH_BYUUID | VIRSH_BYNAME) - extern const vshCmdDef domManagementCmds[]; #endif /* VIRSH_DOMAIN_H */ diff --git a/tools/virsh-host.c b/tools/virsh-host.c index 3b86c75fa..5509065fd 100644 --- a/tools/virsh-host.c +++ b/tools/virsh-host.c @@ -35,7 +35,6 @@ #include "virbitmap.h" #include "virbuffer.h" #include "viralloc.h" -#include "virsh-domain.h" #include "virxml.h" #include "virtypedparam.h" #include "virstring.h" diff --git a/tools/virsh-snapshot.c b/tools/virsh-snapshot.c index 5c844a5ea..46e2cbb24 100644 --- a/tools/virsh-snapshot.c +++ b/tools/virsh-snapshot.c @@ -37,7 +37,7 @@ #include "virbuffer.h" #include "viralloc.h" #include "virfile.h" -#include "virsh-domain.h" +#include "virsh-util.h" #include "virstring.h" #include "virxml.h" #include "conf/snapshot_conf.h" diff --git a/tools/virsh-util.c b/tools/virsh-util.c index 98f16ff1a..5c99655fb 100644 --- a/tools/virsh-util.c +++ b/tools/virsh-util.c @@ -21,6 +21,92 @@ #include "virsh-util.h" #include "virfile.h" +#include "virstring.h" + +static virDomainPtr +virshLookupDomainInternal(vshControl *ctl, + const char *cmdname, + const char *name, + unsigned int flags) +{ + virDomainPtr dom = NULL; + int id; + virCheckFlags(VIRSH_BYID | VIRSH_BYUUID | VIRSH_BYNAME, NULL); + virshControlPtr priv = ctl->privData; + + /* try it by ID */ + if (flags & VIRSH_BYID) { + if (virStrToLong_i(name, NULL, 10, &id) == 0 && id >= 0) { + vshDebug(ctl, VSH_ERR_DEBUG, "%s: <domain> looks like ID\n", + cmdname); + dom = virDomainLookupByID(priv->conn, id); + } + } + + /* try it by UUID */ + if (!dom && (flags & VIRSH_BYUUID) && + strlen(name) == VIR_UUID_STRING_BUFLEN-1) { + vshDebug(ctl, VSH_ERR_DEBUG, "%s: <domain> trying as domain UUID\n", + cmdname); + dom = virDomainLookupByUUIDString(priv->conn, name); + } + + /* try it by NAME */ + if (!dom && (flags & VIRSH_BYNAME)) { + vshDebug(ctl, VSH_ERR_DEBUG, "%s: <domain> trying as domain NAME\n", + cmdname); + dom = virDomainLookupByName(priv->conn, name); + } + + vshResetLibvirtError(); + + if (!dom) + vshError(ctl, _("failed to get domain '%s'"), name); + + return dom; +} + + +virDomainPtr +virshLookupDomainBy(vshControl *ctl, + const char *name, + unsigned int flags) +{ + return virshLookupDomainInternal(ctl, "unknown", name, flags); +} + + +virDomainPtr +virshCommandOptDomainBy(vshControl *ctl, + const vshCmd *cmd, + const char **name, + unsigned int flags) +{ + const char *n = NULL; + const char *optname = "domain"; + + if (vshCommandOptStringReq(ctl, cmd, optname, &n) < 0) + return NULL; + + vshDebug(ctl, VSH_ERR_INFO, "%s: found option <%s>: %s\n", + cmd->def->name, optname, n); + + if (name) + *name = n; + + return virshLookupDomainInternal(ctl, cmd->def->name, n, flags); +} + + +virDomainPtr +virshCommandOptDomain(vshControl *ctl, + const vshCmd *cmd, + const char **name) +{ + return virshCommandOptDomainBy(ctl, cmd, name, + VIRSH_BYID | VIRSH_BYUUID | VIRSH_BYNAME); +} + int virshDomainState(vshControl *ctl, diff --git a/tools/virsh-util.h b/tools/virsh-util.h index 207d57859..132bf0b4b 100644 --- a/tools/virsh-util.h +++ b/tools/virsh-util.h @@ -21,6 +21,23 @@ # include "virsh.h" + +virDomainPtr +virshLookupDomainBy(vshControl *ctl, + const char *name, + unsigned int flags); + +virDomainPtr +virshCommandOptDomainBy(vshControl *ctl, + const vshCmd *cmd, + const char **name, + unsigned int flags); + +virDomainPtr +virshCommandOptDomain(vshControl *ctl, + const vshCmd *cmd, + const char **name); + int virshDomainState(vshControl *ctl, virDomainPtr dom, -- 2.12.2 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list