2007-05-24 03:55:32

by Randy Dunlap

[permalink] [raw]
Subject: [PATCH] kernel-doc: fix leading dot in man-mode output

From: Randy Dunlap <[email protected]>

If a parameter description begins with a '.', this indicates a
"request" for "man" mode output (*roff), so it needs special
handling.

Problem case is in include/asm-i386/atomic.h for function
atomic_add_unless():
* @u: ...unless v is equal to u.
This parameter description is currently not printed in man mode output.

Signed-off-by: Randy Dunlap <[email protected]>
---
scripts/kernel-doc | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)

--- linux-2.6.21-rc2-git4.orig/scripts/kernel-doc
+++ linux-2.6.21-rc2-git4/scripts/kernel-doc
@@ -384,8 +384,13 @@ sub output_highlight {
if ($line eq ""){
print $lineprefix, $blankline;
} else {
- $line =~ s/\\\\\\/\&/g;
- print $lineprefix, $line;
+ $line =~ s/\\\\\\/\&/g;
+ if ($output_mode eq "man" && substr($line, 0, 1) eq ".") {
+ print "\\{$line";
+ }
+ else {
+ print $lineprefix, $line;
+ }
}
print "\n";
}


2007-05-24 08:23:16

by Colin Watson

[permalink] [raw]
Subject: Re: [PATCH] kernel-doc: fix leading dot in man-mode output

In article <[email protected]>, you wrote:
>From: Randy Dunlap <[email protected]>
>
>If a parameter description begins with a '.', this indicates a
>"request" for "man" mode output (*roff), so it needs special
>handling.
>
>Problem case is in include/asm-i386/atomic.h for function
>atomic_add_unless():
> * @u: ...unless v is equal to u.
>This parameter description is currently not printed in man mode output.
>
>Signed-off-by: Randy Dunlap <[email protected]>
>---
> scripts/kernel-doc | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
>--- linux-2.6.21-rc2-git4.orig/scripts/kernel-doc
>+++ linux-2.6.21-rc2-git4/scripts/kernel-doc
>@@ -384,8 +384,13 @@ sub output_highlight {
> if ($line eq ""){
> print $lineprefix, $blankline;
> } else {
>- $line =~ s/\\\\\\/\&/g;
>- print $lineprefix, $line;
>+ $line =~ s/\\\\\\/\&/g;
>+ if ($output_mode eq "man" && substr($line, 0, 1) eq ".") {
>+ print "\\{$line";

This is a very unusual way to escape leading "." in *roff, and I'm not
entirely sure the result is defined given that \{ is normally supposed
to be paired with \} and used to construct blocks. The more conventional
method would be:

print "\\&$line";

(\& is a zero-width space.)

--
Colin Watson (Debian groff maintainer) [[email protected]]

2007-05-24 15:07:10

by Randy Dunlap

[permalink] [raw]
Subject: [PATCH v2] kernel-doc: fix leading dot in man-mode output

On Thu, 24 May 2007 08:59:28 +0100 Colin Watson wrote:

> This is a very unusual way to escape leading "." in *roff, and I'm not
> entirely sure the result is defined given that \{ is normally supposed
> to be paired with \} and used to construct blocks. The more conventional
> method would be:
>
> print "\\&$line";
>
> (\& is a zero-width space.)

Hi, and thanks. That's a good change. I appreciate it.

---
From: Randy Dunlap <[email protected]>

If a parameter description begins with a '.', this indicates a
"request" for "man" mode output (*roff), so it needs special
handling.

Problem case is in include/asm-i386/atomic.h for function
atomic_add_unless():
* @u: ...unless v is equal to u.
This parameter description is currently not printed in man mode output.

Signed-off-by: Randy Dunlap <[email protected]>
---
scripts/kernel-doc | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)

--- linux-2.6.21-rc2-git4.orig/scripts/kernel-doc
+++ linux-2.6.21-rc2-git4/scripts/kernel-doc
@@ -384,8 +384,13 @@ sub output_highlight {
if ($line eq ""){
print $lineprefix, $blankline;
} else {
- $line =~ s/\\\\\\/\&/g;
- print $lineprefix, $line;
+ $line =~ s/\\\\\\/\&/g;
+ if ($output_mode eq "man" && substr($line, 0, 1) eq ".") {
+ print "\\&$line";
+ }
+ else {
+ print $lineprefix, $line;
+ }
}
print "\n";
}