Browse Source

ccanlint: roughly handle multiple conditions on #if line.

Just grab the tokens for the simple case: this allows the ccanlint
reduce_features test to work on eg. ccan/cast.
Rusty Russell 15 years ago
parent
commit
061e359bfc
1 changed files with 11 additions and 0 deletions
  1. 11 0
      tools/ccanlint/file_analysis.c

+ 11 - 0
tools/ccanlint/file_analysis.c

@@ -404,6 +404,17 @@ static bool parse_hash_if(struct pp_conditions *cond, const char **line)
 		return false;
 		return false;
 	if (!defined)
 	if (!defined)
 		cond->type = PP_COND_IF;
 		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;
 }
 }