On Thu, Feb 11, 2010 at 09:37:58PM +0100, Daniel Veillard wrote: > On Thu, Feb 11, 2010 at 08:49:54PM +0100, Jiri Denemark wrote: > > > > + if (virFileReadAll(from, VIRSH_MAX_XML_FILE, &buffer) < 0) > > > > + return FALSE; > > > > + > > > > + p = buffer; > > > > + while ((p = strstr(p, "<cpu>"))) { > > > > + list = vshRealloc(ctl, list, sizeof(char *) * (count + 1)); > > > > + list[count++] = p; > > > > + > > > > + if ((p = strstr(p, "</cpu>"))) { > > > > + p += strlen("</cpu>"); > > > > + if (*p != '\0') { > > > > + *p = '\0'; > > > > + p++; > > > > + } > > > > + } > > > > + } > > > > > > Aye aye aye ... I understand what you're trying to do but I think > > > this is a bit weird ... I think we should be able to come with an > > > alternative, cleaner based on parsing the content as an XML well > > > balanced fragment and then reserialize all cpu elements found. > > > Your scheme would explode for example if we tried to add a <cpu> > > > element as one possible child of <cpu> or if we added attributes to > > > <cpu>, it's too fragile. I can think the other parts can be commited > > > independantly anyway. > > > > Yeah, it's ugly but I wanted to avoid the complexity of parsing XML and > > formating back to a string. And I still don't think it is a good idea. Maybe I > > Not that hard. The harder is to get libvirt to accept something like a > concatenation > > ---------------- > <cpu> > ... > </cpu> > <cpu> > ... > </cpu> > ---------------- > > But I know how to do it (nut never pretend it's XML :-) Isn't there anyway to get the XML parser to stop processing input once it has parsed one complete document, without consuming the rest of the data in the file. eg > <cpu> > ... > </cpu> Make it stop here ^^^ Then, invoke it again to parse the next document in the file > <cpu> > ... > </cpu> And so on.... Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list