]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
[contrib] Accept _("") and operator() in check_GNU_style_lib.py
authorTom de Vries <tdevries@suse.de>
Thu, 20 Nov 2025 09:46:54 +0000 (10:46 +0100)
committerTom de Vries <tdevries@suse.de>
Thu, 20 Nov 2025 09:46:54 +0000 (10:46 +0100)
Currently contrib/check_GNU_style_lib.py warns about '_("foo")', expecting
'_ ("foo")' instead:
...
$ cat tmp.patch
  ...
+const char *
+foo (void)
+{
+  return _("foo");
+}
$ ./contrib/check_GNU_style.py tmp.patch
=== ERROR type #1: there should be exactly one space between function name \
  and parenthesis (1 error(s)) ===
test.c:4:10:  return _("foo");
$
...

However '_("")' is an exception [1] to the rule, so skip the ERROR in this
case.

Likewise for 'operator()', which seems common enough:
...
$ find gdb* -type f \
    | egrep -v '/testsuite/|ChangeLog' \
    | xargs grep "::operator()" \
    | wc -l
27
...
for example in gdb/dwarf2/read.c:
...
dwo_file_hash::operator() (const dwo_file_up &file) const noexcept
...

[1] https://sourceware.org/gdb/wiki/Internals%20GDB-C-Coding-Standards#Gettext_macro

contrib/check_GNU_style_lib.py

index faf30c4d9a2ed9549d1cb4f84eeb9e929d228928..b069abe88e8faf7bca45f01b7b350adac9ffac40 100755 (executable)
@@ -164,7 +164,7 @@ class SentenceDotEndCheck:
 class FunctionParenthesisCheck:
     # TODO: filter out GTY stuff
     def __init__(self):
-        self.re = re.compile(r'\w(\s{2,})?(\()')
+        self.re = re.compile(r'\w+(\s{2,})?(\()')
 
     def check(self, filename, lineno, line):
         if '#define' in line:
@@ -172,6 +172,8 @@ class FunctionParenthesisCheck:
 
         m = self.re.search(line)
         if m != None:
+            if m.group() == '_(' or m.group() == 'operator(':
+                return None
             return CheckError(filename, lineno,
                 line[:m.start(2)] + error_string(m.group(2)) + line[m.end(2):],
                 'there should be exactly one space between function name ' \