From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=34410 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PpeZ0-0005rq-H8 for qemu-devel@nongnu.org; Wed, 16 Feb 2011 05:24:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PpeYz-0006zJ-2n for qemu-devel@nongnu.org; Wed, 16 Feb 2011 05:24:50 -0500 Received: from mx1.redhat.com ([209.132.183.28]:60390) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PpeYy-0006zD-Rg for qemu-devel@nongnu.org; Wed, 16 Feb 2011 05:24:49 -0500 Message-ID: <4D5BA5E9.90307@redhat.com> Date: Wed, 16 Feb 2011 12:24:41 +0200 From: Avi Kivity MIME-Version: 1.0 Subject: Re: [Qemu-devel] KVM call minutes for Feb 15 References: <20110215162629.GN21720@x200.localdomain> <4D5B0889.4030303@codemonkey.ws> In-Reply-To: <4D5B0889.4030303@codemonkey.ws> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: Chris Wright , qemu-devel@nongnu.org, kvm@vger.kernel.org On 02/16/2011 01:13 AM, Anthony Liguori wrote: > On 02/15/2011 10:26 AM, Chris Wright wrote: >> QAPI and QMP >> - Anthony adding a new wiki page to describe all of this > > http://wiki.qemu.org/Features/QAPI > [ 'change', {'device': 'str', 'target': 'str'}, {'arg': 'str'}, 'none' ] -> void qmp_change(const char *device, const char *target, bool has_arg, const char *arg, Error **errp); AFAICT a json-string allows embedded NULs ('\0000'). There translate to UTF-8 as '\0', terminating your char *s. Either we use some length/pointer structure, or the parser has to look for them and kill them, and we have to specify them as verboten. BlockDeviceInfo *qmp_query_block_device_info(const char *device, Error **errp) { BlockDeviceInfo *info; BlockDriverState *bs; Error *local_err = NULL; bs = bdrv_find(device,&local_err); if (local_err) { error_propagate(errp, local_err); return NULL; } info->file = qemu_strdup(bs->filename); info->ro = bs->readonly; info->drv = qemu_strdup(bs->drv); info->encrypted = bs->encrypted; if (bs->backing_file[0]) { info->has_backing_file = true; info->backing_file = qemu_strdup(info->backing_file); } return info; } So, info and all its pointer-typed members are required to be qemu_free() compatible, with just a single pointer pointing to an object, and generated code will qemu_free() everything? Recommend translating '-' in identifiers to '_' so we can use '-' in the schema as a word separator. -- error compiling committee.c: too many arguments to function