lkml.org 
[lkml]   [2020]   [Oct]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v5 06/52] scripts: kernel-doc: fix troubles with line counts
    Date
    There's currently a bug with the way kernel-doc script
    counts line numbers that can be seen with:

    $ ./scripts/kernel-doc -rst -enable-lineno include/linux/math64.h >all && ./scripts/kernel-doc -rst -internal -enable-lineno include/linux/math64.h >int && diff -U0 int all

    --- int 2020-09-28 12:58:08.927486808 +0200
    +++ all 2020-09-28 12:58:08.905486845 +0200
    @@ -1 +1 @@
    -#define LINENO 27
    +#define LINENO 26
    @@ -3 +3 @@
    -#define LINENO 16
    +#define LINENO 15
    @@ -9 +9 @@
    -#define LINENO 17
    +#define LINENO 16
    ...

    This is happening with perl version 5.30.3, but I'm not
    so sure if this is a perl bug, or if this is due to something
    else.

    In any case, fixing it is easy. Basically, when "-internal"
    parameter is used, the process_export_file() function opens the
    handle "IN". This makes the line number to be incremented, as the
    handler for the main open is also "IN".

    Fix the problem by using a different handler for the
    main open().

    While here, add a missing close for it.

    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    ---
    scripts/kernel-doc | 7 ++++---
    1 file changed, 4 insertions(+), 3 deletions(-)

    diff --git a/scripts/kernel-doc b/scripts/kernel-doc
    index d9783c98f33b..bdd2ebb4ac41 100755
    --- a/scripts/kernel-doc
    +++ b/scripts/kernel-doc
    @@ -2268,7 +2268,7 @@ sub process_file($) {

    $file = map_filename($orig_file);

    - if (!open(IN,"<$file")) {
    + if (!open(IN_FILE,"<$file")) {
    print STDERR "Error: Cannot open file $file\n";
    ++$errors;
    return;
    @@ -2277,9 +2277,9 @@ sub process_file($) {
    $. = 1;

    $section_counter = 0;
    - while (<IN>) {
    + while (<IN_FILE>) {
    while (s/\\\s*$//) {
    - $_ .= <IN>;
    + $_ .= <IN_FILE>;
    }
    # Replace tabs by spaces
    while ($_ =~ s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e) {};
    @@ -2311,6 +2311,7 @@ sub process_file($) {
    print STDERR "${file}:1: warning: no structured comments found\n";
    }
    }
    + close IN_FILE;
    }


    --
    2.26.2
    \
     
     \ /
      Last update: 2020-10-06 16:08    [W:4.124 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site