On 01/10/2013 07:23 AM, Gerd Hoffmann wrote: > Add chardev-add and chardev-remove qmp commands. Hotplugging > a null chardev is supported for now, more will be added later. > > Signed-off-by: Gerd Hoffmann <kra...@redhat.com> > ---
> + > +## > +# @ChardevReturn: > +# > +# Return infos about the chardev backend just created. s/infos/info/ or maybe s/infos/details/ > +ChardevReturn *qmp_chardev_add(const char *id, ChardevBackend *backend, > + Error **errp) > +{ > + ChardevReturn *ret = g_new0(ChardevReturn, 1); > + CharDriverState *chr = NULL; > + Should you add: chr = qemu_chr_find(id); if (chr) { error_setg(errp, "Chardev '%s' already exists", id); return NULL; } > + switch (backend->kind) { > + case CHARDEV_BACKEND_KIND_NULL: > + chr = qemu_chr_open_null(NULL); > + break; > + default: > + error_setg(errp, "unknown chardev backend (%d)", backend->kind); > + break; > + } > + > + if (chr == NULL && !error_is_set(errp)) { > + error_setg(errp, "Failed to create chardev"); > + } > + if (chr) { > + chr->label = g_strdup(id); > + chr->avail_connections = 1; > + QTAILQ_INSERT_TAIL(&chardevs, chr, next); > + } > + return ret; Do you really want to be returning a successful object even when the error is set, or should you start with ret = NULL, and only do the g_new0(ChardevReturn, 1) on success? -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature