• E
    qapi: Don't let implicit enum MAX member collide · 7fb1cf16
    Eric Blake 提交于
    Now that we guarantee the user doesn't have any enum values
    beginning with a single underscore, we can use that for our
    own purposes.  Renaming ENUM_MAX to ENUM__MAX makes it obvious
    that the sentinel is generated.
    
    This patch was mostly generated by applying a temporary patch:
    
    |diff --git a/scripts/qapi.py b/scripts/qapi.py
    |index e6d014b..b862ec9 100644
    |--- a/scripts/qapi.py
    |+++ b/scripts/qapi.py
    |@@ -1570,6 +1570,7 @@ const char *const %(c_name)s_lookup[] = {
    |     max_index = c_enum_const(name, 'MAX', prefix)
    |     ret += mcgen('''
    |     [%(max_index)s] = NULL,
    |+// %(max_index)s
    | };
    | ''',
    |                max_index=max_index)
    
    then running:
    
    $ cat qapi-{types,event}.c tests/test-qapi-types.c |
        sed -n 's,^// \(.*\)MAX,s|\1MAX|\1_MAX|g,p' > list
    $ git grep -l _MAX | xargs sed -i -f list
    
    The only things not generated are the changes in scripts/qapi.py.
    
    Rejecting enum members named 'MAX' is now useless, and will be dropped
    in the next patch.
    Signed-off-by: NEric Blake <eblake@redhat.com>
    Message-Id: <1447836791-369-23-git-send-email-eblake@redhat.com>
    Reviewed-by: NJuan Quintela <quintela@redhat.com>
    [Rebased to current master, commit message tweaked]
    Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
    7fb1cf16
blockdev.c 118.2 KB