scripts: kernel-doc: replace tabs by spaces
authorMauro Carvalho Chehab <mchehab@s-opensource.com>
Mon, 18 Dec 2017 12:30:12 +0000 (10:30 -0200)
committerJonathan Corbet <corbet@lwn.net>
Thu, 21 Dec 2017 20:41:46 +0000 (13:41 -0700)
Sphinx has a hard time dealing with tabs, causing it to
misinterpret paragraph continuation.

As we're now mainly focused on supporting ReST output,
replace tabs by spaces, in order to avoid troubles when
the output is parsed by Sphinx.

Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
scripts/kernel-doc

index e417d93..05aadac 100755 (executable)
@@ -1579,7 +1579,7 @@ sub tracepoint_munge($) {
 sub syscall_munge() {
        my $void = 0;
 
-       $prototype =~ s@[\r\n\t]+@ @gos; # strip newlines/CR's/tabs
+       $prototype =~ s@[\r\n]+@ @gos; # strip newlines/CR's
 ##     if ($prototype =~ m/SYSCALL_DEFINE0\s*\(\s*(a-zA-Z0-9_)*\s*\)/) {
        if ($prototype =~ m/SYSCALL_DEFINE0/) {
                $void = 1;
@@ -1778,6 +1778,8 @@ sub process_file($) {
        while (s/\\\s*$//) {
            $_ .= <IN>;
        }
+       # Replace tabs by spaces
+        while ($_ =~ s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e) {};
        if ($state == STATE_NORMAL) {
            if (/$doc_start/o) {
                $state = STATE_NAME;    # next line is always the function name
@@ -1877,8 +1879,7 @@ sub process_file($) {
                $in_purpose = 0;
                $contents = $newcontents;
                 $new_start_line = $.;
-               while ((substr($contents, 0, 1) eq " ") ||
-                      substr($contents, 0, 1) eq "\t") {
+               while (substr($contents, 0, 1) eq " ") {
                    $contents = substr($contents, 1);
                }
                if ($contents ne "") {
@@ -1947,8 +1948,7 @@ sub process_file($) {
                $contents = $2;
                 $new_start_line = $.;
                if ($contents ne "") {
-                   while ((substr($contents, 0, 1) eq " ") ||
-                          substr($contents, 0, 1) eq "\t") {
+                   while (substr($contents, 0, 1) eq " ") {
                        $contents = substr($contents, 1);
                    }
                    $contents .= "\n";