#/bin/sh # Ensure some files have been passed. if [ "x$*" == "x" ]; 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 }, //:" cat $* | sed "s/#.*//" | sed '/^$/d' | sort -n | uniq | sed "s/^/ { /" | \ sed "s/\:\(....\)\(.*\)/ , \1 }, \2/" cat << EOF }; EOF