Source code

Revision control

Copy as Markdown

Other Tools

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
# You can obtain one at
import json
FIRST_LINE = "// This file was generated by DO NOT EDIT."
def generate_allows(input_paths):
This script reads in the ThreadAllows.txt and ThreadFileAllows.txt lists
and generates a header file containing a two arrays of allowed threads.
These can be the following formats:
-Files which the checker should ignore
These files either contain definitions of NS_NewNamedThread or
use args which the plugin can't cast (such as func args).
-Thread names which the checker should ignore
Specifies which individual thread names to ignore.
file_list = []
name_list = []
lines = set()
for path in input_paths:
with open(path) as file:
for line in sorted(lines):
We are assuming lines ending in .cpp, .h are files. Threads should
NOT have names containing filenames. Please don't do that.
line = line.strip()
if line.endswith(".cpp") or line.endswith(".h"):
file_list_s = ",\n ".join(json.dumps(elem) for elem in file_list)
name_list_s = ",\n ".join(json.dumps(elem) for elem in name_list)
output_string = (
+ """
static const char *allow_thread_files[] = {
static const char *allow_thread_names[] = {
% (file_list_s, name_list_s)
return output_string
def generate_file(output, *input_paths):