
On Thu, Jan 30, 2014 at 10:55:49AM +0100, Cédric Bosdonnat wrote:
virConf now honours a VIR_CONF_FLAG_LXC_FORMAT flag to handle LXC configuration files. The differences are that property names can contain '.' character and values are all strings without any bounding quotes.
Provide a new virConfWalk function calling a handler on all non-comment values. This function will be used by the LXC conversion code to loop over LXC configuration lines.
+/** + * virConfWalk: + * @conf: a configuration file handle + * @callback: the function to call to process each entry + * @data: obscure data passed to callback + * + * Walk over all entries of the configuration file and run the callback + * for each with entry name, value and the obscure data. + * + * Returns 0 on success, or -1 on failure. + */ +int virConfWalk(virConfPtr conf, + virConfWalkCallback callback, + void *data)
Nit-pick: s/data/opaque/ for more common naming convention here and in the header file decl later too.
+{ + virConfEntryPtr cur; + + if (!conf) + return 0; + + cur = conf->entries; + while (cur != NULL) { + if (cur->name && cur->value && + callback(cur->name, cur->value, data) < 0) + return -1; + cur = cur->next; + } + return 0; +}
/** * virConfWriteFile:
+typedef int (*virConfWalkCallback)(const char* name, + virConfValuePtr value, + void *data);
s/data/opaque/
+ virConfPtr virConfNew (void); virConfPtr virConfReadFile (const char *filename, unsigned int flags); virConfPtr virConfReadMem (const char *memory, @@ -91,6 +98,9 @@ virConfValuePtr virConfGetValue (virConfPtr conf, int virConfSetValue (virConfPtr conf, const char *setting, virConfValuePtr value); +int virConfWalk(virConfPtr conf, + virConfWalkCallback callback, + void *data);
s/data/opaque/ ACK with the nit-pick fixed. 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 :|