On 11.11.2014 16:35, Conrad Meyer wrote:
--- src/bhyve/bhyve_capabilities.c | 37 +++++++++++++++++++++++++++++++++++++ src/bhyve/bhyve_capabilities.h | 6 ++++++ 2 files changed, 43 insertions(+) diff --git a/src/bhyve/bhyve_capabilities.c b/src/bhyve/bhyve_capabilities.c index 132ce91..6e9a943 100644 --- a/src/bhyve/bhyve_capabilities.c +++ b/src/bhyve/bhyve_capabilities.c @@ -23,6 +23,7 @@ #include <sys/utsname.h> #include "viralloc.h" +#include "virfile.h" #include "virlog.h" #include "virstring.h" #include "cpu/cpu.h" @@ -104,3 +105,39 @@ virBhyveCapsBuild(void) virObjectUnref(caps); return NULL; } + +int +virBhyveProbeGrubCaps(unsigned *caps) +{ + char *binary, *help; + virCommandPtr cmd; + int ret, exit; + + ret = 0; + *caps = 0; + cmd = NULL; + help = NULL; + + binary = virFindFileInPath("grub-bhyve"); + if (binary == NULL) + goto out; + if (!virFileIsExecutable(binary)) + goto out; + + cmd = virCommandNew(binary); + virCommandAddArg(cmd, "--help"); + virCommandSetOutputBuffer(cmd, &help); + if (virCommandRun(cmd, &exit) < 0) { + ret = -1; + goto out; + } + + if (strstr(help, "--cons-dev") != NULL) + *caps |= BHYVE_GRUB_CAP_CONSDEV; + + out: + VIR_FREE(help); + virCommandFree(cmd); + VIR_FREE(binary); + return ret; +} diff --git a/src/bhyve/bhyve_capabilities.h b/src/bhyve/bhyve_capabilities.h index c52e0d0..a559d2a 100644 --- a/src/bhyve/bhyve_capabilities.h +++ b/src/bhyve/bhyve_capabilities.h @@ -26,4 +26,10 @@ virCapsPtr virBhyveCapsBuild(void); +/* These are bit flags: */ +enum { + BHYVE_GRUB_CAP_CONSDEV = 0x00000001, +};
I think this should be rather typedef enum {...} virBhyveGrubCapsFlags;
+int virBhyveProbeGrubCaps(unsigned *caps);
And hence s/unsigned/virBhyveGrubCapsFlags/
+ #endif
I'm fixing this and pushing. ACK. -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list