> Am 06.06.2017 um 15:28 schrieb Johannes Berg <johan...@sipsolutions.net>:
> 
> Hi,
> 
> Apologies for the long CC list, wasn't sure who really feels like they
> understand this script anymore ... Markus, I think you had a rewrite of
> the script in python?

Hi Johannes, hi Mauro, (Jon)

sorry for my late reply. Yes I have a rewrite, its a part of my LinuxDoc
project: https://return42.github.io/linuxdoc/ 

The parser part is same state machine as the the perl one … with same
problems ;)

Problem here; function process_proto_type() concatenates the striped
lines of declaration without any whitespace. A one-liner of::

  struct something {
        struct foo
        bar;
        };

has to be::

  struct something {struct foo bar;};

Without the patch, the result missed the space between ‚foo' and 'bar'::

  struct something {struct foobar;};

Here is my fix for the Perl script:

diff --git a/scripts/kernel-doc b/scripts/kernel-doc
index a26a5f2..6aa52cc 100755
--- a/scripts/kernel-doc
+++ b/scripts/kernel-doc
@@ -2763,6 +2763,9 @@ sub process_proto_type($$) {
 
     while (1) {
        if ( $x =~ /([^{};]*)([{};])(.*)/ ) {
+            if( length $prototype ) {
+                $prototype .= " "
+            }
            $prototype .= $1 . $2;
            ($2 eq '{') && $brcount++;
            ($2 eq '}') && $brcount--;

Can you test it?

To be complete, here is the patch of the parser from LinuxDoc:

  https://github.com/return42/linuxdoc/commit/f11bbd5

and here the impact on the whole parsed source tree:

  https://github.com/return42/sphkerneldoc/commit/56554

Mostly spaces are added to function’s arguments, but there are
also some real bugs fixed e.g.:

 
https://github.com/return42/sphkerneldoc/commit/56554e5f16c68d46d9c361e46540ce48ec1a9f27#diff-523d26ea9da1bb7b97d2b763c75367e9

Thanks for the hint!

- Markus -

--
To unsubscribe from this list: send the line "unsubscribe linux-doc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to