
Hi, Daniel Thank you for your review. On Fri, 24 Jun 2011 15:21:36 +0100 "Daniel P. Berrange" <berrange@redhat.com> wrote:
On Tue, Jun 21, 2011 at 01:19:17PM +0900, Minoru Usui wrote:
[Cleanup] Separate BIOSInfo and SystemInfo part from virSysinfoRead()
Signed-off-by: Minoru Usui <usui@mxm.nes.nec.co.jp> --- src/util/sysinfo.c | 210 ++++++++++++++++++++++++++++++++-------------------- 1 files changed, 130 insertions(+), 80 deletions(-)
diff --git a/src/util/sysinfo.c b/src/util/sysinfo.c index 40ec2e3..53122f7 100644 --- a/src/util/sysinfo.c +++ b/src/util/sysinfo.c @@ -96,37 +96,10 @@ virSysinfoRead(void) {
#else /* !WIN32 */
-virSysinfoDefPtr -virSysinfoRead(void) { - char *path, *cur, *eol, *base; - virSysinfoDefPtr ret = NULL; - char *outbuf = NULL; - virCommandPtr cmd; - - path = virFindFileInPath(SYSINFO_SMBIOS_DECODER); - if (path == NULL) { - virSmbiosReportError(VIR_ERR_INTERNAL_ERROR, - _("Failed to find path for %s binary"), - SYSINFO_SMBIOS_DECODER); - return NULL; - } - - cmd = virCommandNewArgList(path, "-q", "-t", "0,1", NULL); - VIR_FREE(path); - virCommandSetOutputBuffer(cmd, &outbuf); - if (virCommandRun(cmd, NULL) < 0) { - virSmbiosReportError(VIR_ERR_INTERNAL_ERROR, - _("Failed to execute command %s"), - path); - goto cleanup; - } - - if (VIR_ALLOC(ret) < 0) - goto no_memory; - - ret->type = VIR_SYSINFO_SMBIOS; - - base = outbuf; +static char * +parseBIOSInfo(char *base, virSysinfoDefPtr ret)
Can you make sure this method, and all other ones added to this file have the "virSysinfo" prefix on their name
Because of static functions, I didn't add prefixes. I will add prefixes to all functions.
+static char * +parseSystemInfo(char *base, virSysinfoDefPtr ret) +{ +static void +BIOSInfoFormat(virSysinfoDefPtr def, const char *prefix, virBufferPtr buf)
+static void +SystemInfoFormat(virSysinfoDefPtr def, const char *prefix, virBufferPtr buf)
+{ +/** + * virSysinfoFormat: + * @def: structure to convert to xml string + * @prefix: string to prefix before each line of xml + * + * This returns the XML description of the sysinfo, or NULL after + * generating an error message. + */ +char * +virSysinfoFormat(virSysinfoDefPtr def, const char *prefix) +{ + const char *type = virSysinfoTypeToString(def->type); + virBuffer buf = VIR_BUFFER_INITIALIZER; + + if (!type) { + virSmbiosReportError(VIR_ERR_INTERNAL_ERROR, + _("unexpected sysinfo type model %d"), + def->type); + return NULL; }
+ virBufferAsprintf(&buf, "%s<sysinfo type='%s'>\n", prefix, type); + + BIOSInfoFormat(def, prefix, &buf); + SystemInfoFormat(def, prefix, &buf); + virBufferAsprintf(&buf, "%s</sysinfo>\n", prefix);
return virBufferContentAndReset(&buf);
An existing bug here that needs fixing. There should be a call to
if (virBufferError(&buf)) { virReportOOMError(); return NULL; }
just before the virBufferContentAndReset() usage.
OK. I'll fix it.
Regards, 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 :|
-- Minoru Usui <usui@mxm.nes.nec.co.jp>