[libvirt] [PATCH v2 9/9] cpu-baseline command for virsh

Jiri Denemark jdenemar at redhat.com
Thu Feb 11 19:49:54 UTC 2010


> > +    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
could extend virsh to support variable number of arguments and take each CPU
definition from its own file.

Jirka




More information about the libvir-list mailing list