On 10/23/2015 08:47 AM, Markus Armbruster wrote:
> Eric Blake <ebl...@redhat.com> writes:
> 
>> On 10/23/2015 07:05 AM, Markus Armbruster wrote:
>>> Eric Blake <ebl...@redhat.com> writes:
>>>
>>>> c_name() produces names starting with 'q_' when protecting
>>>> a QMP member name that would fail to directly compile, but
>>>> in doing so can cause clashes with any QMP name already
>>>> beginning with 'q-' or 'q_'.  Likewise, we create a C name
>>>> 'has_' for any optional member, that can clash with any QMP
>>>> name beginning with 'has-' or 'has_'.
>>>>

>>>> -    if not valid_name.match(membername):
>>>> +    # Reserve the entire 'q_' namespace for c_name()
>>>> +    if not valid_name.match(membername) or \
>>>> +       membername.replace('-', '_').startswith('q_'):
>>>
>>> Why not c_name(membername).startswith('q_')?
>>
>> Recursion.  c_name('unix') is 'q_unix', which would be rejected, even
>> though we want to accept it. (And yes, that was my first try, before the
>> approach you see here)
> 
> c_name(membername, False).startswith('q_')?

Oh, I forgot about the optional bool.  I'll try it.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to