Commit 3d9bfb19 authored by Sakari Ailus's avatar Sakari Ailus Committed by Jonathan Corbet
Browse files

scripts/kernel-doc: Fix struct and struct field attribute processing



The kernel-doc attempts to clear the struct and struct member attributes
from the API documentation it produces. It falls short of the job in the
following respects:

- extra whitespaces are left where __attribute__((...)) was removed,

- only a single attribute is removed per struct,

- attributes (such as aligned) containing numbers were not removed,

- attributes are only cleared from struct fields, not structs themselves.

This patch addresses these issues by removing the attributes.

Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: default avatarJonathan Corbet <corbet@lwn.net>
parent 32ddfe8b
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -1062,7 +1062,7 @@ sub dump_struct($$) {
    my $x = shift;
    my $file = shift;

    if ($x =~ /(struct|union)\s+(\w+)\s*\{(.*)\}/) {
    if ($x =~ /(struct|union)\s+(\w+)\s*\{(.*)\}(\s*(__packed|__aligned|__attribute__\s*\(\([a-z0-9,_\s\(\)]*\)\)))*/) {
	my $decl_type = $1;
	$declaration_name = $2;
	my $members = $3;
@@ -1073,8 +1073,9 @@ sub dump_struct($$) {
	# strip comments:
	$members =~ s/\/\*.*?\*\///gos;
	# strip attributes
	$members =~ s/__attribute__\s*\(\([a-z,_\*\s\(\)]*\)\)//i;
	$members =~ s/__aligned\s*\([^;]*\)//gos;
	$members =~ s/\s*__attribute__\s*\(\([a-z0-9,_\*\s\(\)]*\)\)//gi;
	$members =~ s/\s*__aligned\s*\([^;]*\)//gos;
	$members =~ s/\s*__packed\s*//gos;
	$members =~ s/\s*CRYPTO_MINALIGN_ATTR//gos;
	# replace DECLARE_BITMAP
	$members =~ s/DECLARE_BITMAP\s*\(([^,)]+),\s*([^,)]+)\)/unsigned long $1\[BITS_TO_LONGS($2)\]/gos;