From: Zbigniew Jędrzejewski-Szmek Date: Fri, 5 May 2023 07:03:12 +0000 (+0200) Subject: Rewrite check-includes.pl in python X-Git-Tag: v254-rc1~529^2~15 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c4a090d60e09cd85a56ff91c46ca0f7b22dcd1a8;p=thirdparty%2Fsystemd.git Rewrite check-includes.pl in python --- diff --git a/LICENSES/README.md b/LICENSES/README.md index d235b319d85..6174b8edc71 100644 --- a/LICENSES/README.md +++ b/LICENSES/README.md @@ -45,7 +45,6 @@ The following exceptions apply: * the following sources are licensed under the **CC0-1.0** license: - src/basic/siphash24.c - src/basic/siphash24.h - - tools/check-includes.pl * the following sources are licensed under the **MIT-0** license: - all examples under man/ - src/systemctl/systemd-sysv-install.SKELETON diff --git a/tools/check-includes.pl b/tools/check-includes.pl deleted file mode 100755 index c8bfcba8c0f..00000000000 --- a/tools/check-includes.pl +++ /dev/null @@ -1,23 +0,0 @@ -# SPDX-License-Identifier: CC0-1.0 -#!/usr/bin/env perl -# -# checkincludes: Find files included more than once in (other) files. - -foreach $file (@ARGV) { - open(FILE, $file) or die "Cannot open $file: $!.\n"; - - my %includedfiles = (); - - while () { - if (m/^\s*#\s*include\s*[<"](\S*)[>"]/o) { - ++$includedfiles{$1}; - } - } - foreach $filename (keys %includedfiles) { - if ($includedfiles{$filename} > 1) { - print "$file: $filename is included more than once.\n"; - } - } - - close(FILE); -} diff --git a/tools/check-includes.py b/tools/check-includes.py new file mode 100755 index 00000000000..27d11b9d0a9 --- /dev/null +++ b/tools/check-includes.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: LGPL-2.1-or-later + +# pylint: disable=missing-docstring,invalid-name,unspecified-encoding,consider-using-with + +import re +import sys + +def check_file(filename): + seen = set() + good = True + for n, line in enumerate(open(filename)): + if m := re.match(r'^\s*#\s*include\s*[<"](\S*)[>"]', line): + include = m.group(1) + if include in seen: + print(f'{filename}:{n}: {line.strip()}') + good = False + seen.add(include) + return good + +if __name__ == '__main__': + good = all(check_file(name) for name in sys.argv[1:]) + sys.exit(0 if good else 1)