ccanlint: roughly handle multiple conditions on #if line.
authorRusty Russell <rusty@rustcorp.com.au>
Tue, 22 Mar 2011 01:13:00 +0000 (11:43 +1030)
committerRusty Russell <rusty@rustcorp.com.au>
Tue, 22 Mar 2011 01:13:00 +0000 (11:43 +1030)
Just grab the tokens for the simple case: this allows the ccanlint
reduce_features test to work on eg. ccan/cast.

tools/ccanlint/file_analysis.c

index 530416e368cb1fd17a48f93fa7c9bc220b0f1a20..d8d2d3e936378218b0491a9cec940d203e8d09a5 100644 (file)
@@ -404,6 +404,17 @@ static bool parse_hash_if(struct pp_conditions *cond, const char **line)
                return false;
        if (!defined)
                cond->type = PP_COND_IF;
+
+       /* FIXME: We just chain them, ignoring operators. */
+       if (get_token(line, "||") || get_token(line, "&&")) {
+               struct pp_conditions *sub = talloc(cond, struct pp_conditions);
+
+               sub->parent = cond->parent;
+               sub->type = PP_COND_IFDEF;
+               if (parse_hash_if(sub, line))
+                       cond->parent = sub;
+       }
+
        return true;
 }