This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Fwd: cannot search for -a in man inside mintty under cygwin-1.7

Andy Koppe schrieb:
moo.tinys wrote:
using mintty
LANG=zh_CN.UTF-8 mintty
inside mintty:
$ man man
Pattern not found (press RETURN)
With UTF-8, hyphen/minus symbols in the man page are displays as the
Unicode codepoints for hyphen or minus. These are different from ASCII
'-', which is why your search didn't turn up anything.

This isn't mintty-specific.

Thomas Wolff:
This was discussed here before but I'm not sure whether a solution was
already outlined.
The problem appeared on Linux too, some years ago, but has been fixed
Differences are:
man calls nroff -mandoc on cygwin, nroff -mandocdb on Linux. The latter
macro package of groff includes the following which is prepended to the
manual page before feeding it to nroff for formatting:
.if '\*[.T]'utf8' \{\
. char \- \N'45'
. char - \N'45'
. char ' \N'39'
. char ` \N'96'

Thanks, glad to hear there is a fix. I'll use this in the mintty manpage, so at least searching will work there.

Question: what's the *[.T] pattern matched against?
I guess the -Tutf8 parameter also showed by procps (with some luck while invoking man...):
troff -mtty-char -mandoc -Tutf8
groff -mtty-char -Tutf8 -P-c -mandoc
I have no idea why both groff and troff appear in the process list or how the -Tutf8 parameter is set there.

Checking the program chain of 'man' with procps, some other macros are added
already (simply using 'echo'), that's where it could also be added without a
complete new macro package (i.e. without changing groff). However, the
auxiliary roff codes are apparently hard-coded in man.exe so that'll have to
be changed.
What are those auxiliary roff codes?
I mean those being echoed into the nroff pipe as revealed by 'procps xww' while running man:
sh -c (cd "/usr/share/man" && (echo ".pl 1100i"; /usr/bin/gunzip -c '/usr/share/man/man1/mintty.1.gz'; echo ".\\\""; echo ".pl \n(nlu+10") | /usr/bin/tbl | /usr/bin/nroff -c -mandoc 2>/dev/null | /usr/bin/less -isrR)

I guess the additional lines as quoted above can simply be added by a few strcat calls inserted before line 572 of man.c.
I couldn't test, though, because the man source package needs some interactive configuration before make works.


Problem reports:
Unsubscribe info:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]