ccanlint: roughly handle multiple conditions on #if line.
[ccan] / 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;
                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;
 }
 
        return true;
 }