From 0f23429126f2d869fddb4e92a390c6520b1570ee Mon Sep 17 00:00:00 2001 From: "Kelvin M. Klann" Date: Wed, 27 Nov 2024 11:56:40 -0300 Subject: [PATCH] build: sort.py: strip whitespace in commands Currently whitespace is left as is within an entry. In a `protocol` entry, if there is whitespace between the command and its argument or around an item, the item in question is dropped from the output. Changes: * `protocol`: Strip all whitespace after `protocol ` * Other commands: Strip leading/trailing whitespace around each item, including any extra whitespace between a command and its argument Note: Whitespace characters inside paths are left as is, as some paths (such as `Foo Bar` may contain spaces. Before: $ printf 'private-bin a,b\nprivate-bin a,b\nprivate-bin b,a\nprivate-bin C,A B\nprotocol unix,net\nprotocol inet,unix\n' >foo.profile $ ./contrib/sort.py -n foo.profile sort.py: checking 1 profile(s)... foo.profile:5:-protocol unix,net foo.profile:5:+protocol foo.profile:6:-protocol inet,unix foo.profile:6:+protocol unix After: $ printf 'private-bin a,b\nprivate-bin a,b\nprivate-bin b,a\nprivate-bin C,A B\nprotocol unix,net\nprotocol inet,unix\n' >foo.profile $ ./contrib/sort.py -n foo.profile sort.py: checking 1 profile(s)... foo.profile:2:-private-bin a,b foo.profile:2:+private-bin a,b foo.profile:3:-private-bin b,a foo.profile:3:+private-bin a,b foo.profile:4:-private-bin C,A B foo.profile:4:+private-bin A B,C foo.profile:5:-protocol unix,net foo.profile:5:+protocol unix foo.profile:6:-protocol inet,unix foo.profile:6:+protocol unix,inet --- contrib/sort.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/contrib/sort.py b/contrib/sort.py index 9422b746f7..60f752725b 100755 --- a/contrib/sort.py +++ b/contrib/sort.py @@ -21,7 +21,8 @@ Note that this is only applicable to commands that support multiple arguments. Leading/trailing whitespace is removed in all lines (that is, not just in lines -containing supported commands). +containing supported commands) and other whitespace is stripped depending on +the command. Options: -h Print this message. @@ -45,7 +46,8 @@ def sort_alphabetical(original_items): items = original_items.split(",") - items = filter(None, set(items)) + items = set(map(str.strip, items)) + items = filter(None, items) items = sorted(items) return ",".join(items) @@ -57,6 +59,9 @@ def sort_protocol(original_protocols): unix,inet,inet6,netlink,packet,bluetooth """ + # remove all whitespace + original_protocols = "".join(original_protocols.split()) + # shortcut for common protocol lines if original_protocols in ("unix", "unix,inet,inet6"): return original_protocols