scripts/kernel-doc.py: fix handling of doc output check

The filtering logic was seeking for the DOC name to check for
symbols, but such data is stored only inside a section. Add it
to the output_declaration, as it is quicker/easier to check
the declaration name than to check inside each section.

While here, make sure that the output for both ReST and man
after filtering will be similar to what kernel-doc Perl
version does.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Link: https://lore.kernel.org/r/6d8b77af85295452c0191863ea1041f4195aeaaf.1744106242.git.mchehab+huawei@kernel.org
This commit is contained in:
Mauro Carvalho Chehab
2025-04-08 18:09:18 +08:00
committed by Jonathan Corbet
parent c3597ab27b
commit 408269ae35
2 changed files with 14 additions and 18 deletions

View File

@@ -122,13 +122,13 @@ class OutputFormat:
if self.no_doc_sections:
return False
if name in self.nosymbol:
return False
if self.out_mode == self.OUTPUT_ALL:
return True
if self.out_mode == self.OUTPUT_INCLUDE:
if name in self.nosymbol:
return False
if name in self.function_table:
return True
@@ -154,15 +154,6 @@ class OutputFormat:
return False
def check_function(self, fname, name, args):
return True
def check_enum(self, fname, name, args):
return True
def check_typedef(self, fname, name, args):
return True
def msg(self, fname, name, args):
self.data = ""
@@ -306,7 +297,7 @@ class RestFormat(OutputFormat):
for line in output.strip("\n").split("\n"):
self.data += self.lineprefix + line + "\n"
def out_section(self, args, out_reference=False):
def out_section(self, args, out_docblock=False):
"""
Outputs a block section.
@@ -325,7 +316,7 @@ class RestFormat(OutputFormat):
continue
if not self.out_mode == self.OUTPUT_INCLUDE:
if out_reference:
if out_docblock:
self.data += f".. _{section}:\n\n"
if not self.symbol:
@@ -339,8 +330,7 @@ class RestFormat(OutputFormat):
def out_doc(self, fname, name, args):
if not self.check_doc(name):
return
self.out_section(args, out_reference=True)
self.out_section(args, out_docblock=True)
def out_function(self, fname, name, args):
@@ -583,8 +573,10 @@ class ManFormat(OutputFormat):
for line in contents.strip("\n").split("\n"):
line = Re(r"^\s*").sub("", line)
if not line:
continue
if line and line[0] == ".":
if line[0] == ".":
self.data += "\\&" + line + "\n"
else:
self.data += line + "\n"
@@ -594,6 +586,9 @@ class ManFormat(OutputFormat):
sectionlist = args.get('sectionlist', [])
sections = args.get('sections', {})
if not self.check_doc(name):
return
self.data += f'.TH "{module}" 9 "{module}" "{self.man_date}" "API Manual" LINUX' + "\n"
for section in sectionlist: