#!/bin/sh # Ensure some files have been passed. if [ -z "$*" ]; then echo "Usage: $0 [whitelist_files+]" >&2 exit 1 fi cat << EOF #include const std::vector whitelist = { EOF # Output each row of whitelist vector. # Concatenate all the passed files. # Remove comments and empty lines. # Sort the list [numerically]. # Remove any duplicates. # Turn "a:b //:" -> "{ a, b }, //:" sed "s/#.*//" "$*" | sed '/^$/d' | sort -n | uniq | sed "s/^/ { /" | \ sed "s/\:\(....\)\(.*\)/ , \1 }, \2/" cat << EOF }; EOF