import sys #cppclean src/*.h | grep "does not need to be #included" retcode = 0 for l in sys.stdin: includer = l.split(':')[0] included = l.split("'")[1] if included == "rust.h" or included == "suricata-common.h": continue if includer == "src/suricata-common.h" or includer == "src/rust-context.h" or includer == "src/rust.h" or includer == "src/threads.h": continue if included == "util-file.h" and includer == "src/detect.h": # SigTableElmt structure field FileMatch being a function pointer using a parameter File defined in util-file.h continue if included == "conf.h" and includer == "src/suricata-plugin.h": # SCEveFileType structure field Init being a function pointer using a parameter ConfNode defined in conf.h continue if included == "util-prefilter.h" and includer == "src/util-mpm.h": # MpmTableElmt_ structure field Search being a function pointer using a parameter PrefilterRuleStore continue if included == "flow.h" and includer == "src/output-tx.h": # TxLogger type being a function pointer using a parameter Flow continue if included == "util-debug-filters.h" and includer == "src/util-debug.h": # Macro SCEnter using SCLogCheckFDFilterEntry defined in util-debug-filters.h continue if included == "util-spm-bs.h" and includer == "src/util-spm.h": # Macro SpmSearch using BasicSearch defined in util-spm-bs.h continue if included == "util-cpu.h" and includer == "src/threads-profile.h": # Macro SCSpinLock_profile using UtilCpuGetTicks continue if included == "util-profiling-locks.h" and includer == "src/util-profiling.h": # Macro SCSpinLock_profile using SCProfilingAddPacketLocks continue if included == "threads.h" and includer == "src/util-debug-filters.h": # pthread_t needed on Windows continue print("Unnecessary include from %s for %s" % (includer, included)) retcode = 1 sys.exit(retcode)