After fiddling around a bit with the FreeBSD man.cgi interface, I came up with a small heuristic (argl!) for specifying the OS and a Perl program that created the table below. It shall provide an impression of what the results might look like and summarise the feedback, I've got so far (thanks).
My assumptions:
- the vast majority of users (of the minority that requires UNIX Man Pages anyhow) will need something like [man://program] only
- a section is rarely necessary, e.g. for passwd (1+5)
- someone requiring a special manual section for a distinct version of a given OS should use a direct link - as offered at the bottom of a FreeBSD manpage: e.g http://www.freebsd.org/cgi/man.cgi?query=env&manpath=Darwin+1.3.1%2fx86
- maintenance overhead at PM should be close to nothing, thus the release of an OS is not processed
- format: [man://PROG (opt. SECTION) (opt. OS)], order of OS and SECTION insignificant
- optional (\d+) is a hint for a SECTION
- optional (\D+) is a hint for an OS plus optional release (latter: ignored!); The FreeBSD site is quite good at guessing the current OS for a given manpath-attribute without a release number.
- currently, the OS is simply uppercased (e.g. SUSE instead of SuSE)
- [manX://abc] is offered as convenience shortcut for [man://abc (X)]
- whitespace-tolerant, case-tolerant
- class="man", class="mskb" for individual styling
- using the format [man://prog (section) (os rel)] or [man://prog/section/os/rel] is mainly a matter of taste..., so I started with my favourite pattern
- personally, I think the reference should contain no whitespaces
- restriction of current implementation: no nested (...(..)..) or [..[..]..] allowed
- handling of MSKB entries is trivial
- ....
Some testcases (including ill. formatted entries) below.
Some very simple heuristics are applied to find the
manpath
attribute for a given Unix flavour keeping the maintenance overhead small at PerlMonks. If the heuristic fails, the FreeBSD site will fallback to the default OS (FreeBSD) - which is OK for me.
Although, abandoning the requirement to identify a certain OS would simplify the maintenance burden significantly.
The lookup-table is:
my %patch = ('hp-ux' => 'hpux', x => 'x11', plan => 'plan9',
osf => 'osf1', xfree => 'xfree86', minix => 'Minix+2.0',
opensuse => 'suse', rhel => 'redhat',
);
So, how shall we proceed?
Update: Right, RHEL is not identical to RedHat Linux, but the intention was to come close to the family, which is rather RedHat than FreeBSD... However, it can be corrected by removing the rhel => 'redhat' entry from the hash above (see: mr_mischief's comment).
Update2: If you like to experiment with the effect of the man and mskb styles, go to your Display Settings and add something to the
On-Site CSS Markup - section, e.g. (nobody says it has to look good!)
.man { border: 1px solid #ff0000; background-color: #e6e6e6; }
.mskb { border: 1px dotted #0000ff; background-color: #e6e6e6; }
Input | Rendered | Link-Layout |
shell
|
shell |
<a class="man" href="http://www.freebsd.org/cgi/man.cgi?query=sh&format=html&manpath=Minix+2.0">shell</a> |
env
|
man:env |
<a class="man" href="http://www.freebsd.org/cgi/man.cgi?query=env&format=html">man:env</a> |
env(1)
|
man:env(1) |
<a class="man" href="http://www.freebsd.org/cgi/man.cgi?query=env&format=html&sektion=1">man:env(1)</a> |
env (1)
|
man:env(1) |
<a class="man" href="http://www.freebsd.org/cgi/man.cgi?query=env&format=html&sektion=1">man:env(1)</a> |
[man1://env]
|
man:env(1) |
<a class="man" href="http://www.freebsd.org/cgi/man.cgi?query=env&format=html&sektion=1">man:env(1)</a> |
env (sunos)
|
SUNOS:env |
<a class="man" href="http://www.freebsd.org/cgi/man.cgi?query=env&format=html&manpath=sunos">SUNOS:env</a> |
env (sunos)
|
SUNOS:env |
<a class="man" href="http://www.freebsd.org/cgi/man.cgi?query=env&format=html&manpath=sunos">SUNOS:env</a> |
env (sOlarIS 77)
|
SOLARIS_77:env |
<a class="man" href="http://www.freebsd.org/cgi/man.cgi?query=env&format=html&manpath=solaris">SOLARIS_77:env</a> |
env(1)(susE 55.11)
|
SUSE_55.11:env(1) |
<a class="man" href="http://www.freebsd.org/cgi/man.cgi?query=env&format=html&sektion=1&manpath=suse">SUSE_55.11:env(1)</a> |
passwd (hp-ux) (5)
|
HP-UX:passwd(5) |
<a class="man" href="http://www.freebsd.org/cgi/man.cgi?query=passwd&format=html&sektion=5&manpath=hpux">HP-UX:passwd(5)</a> |
[man1://passwd(5) (redhat)| should override section 1 by 5]
|
should override section 1 by 5 |
<a class="man" href="http://www.freebsd.org/cgi/man.cgi?query=passwd&format=html&sektion=5&manpath=redhat">should override section 1 by 5</a> |
man page of env section(1)
|
man page of env section(1) |
<a class="man" href="http://www.freebsd.org/cgi/man.cgi?query=env&format=html&sektion=1">man page of env section(1)</a> |
man page of env section(1)|blah
|
man page of env section(1)|blah |
<a class="man" href="http://www.freebsd.org/cgi/man.cgi?query=env&format=html&sektion=1">man page of env section(1)|blah</a> |
passwd ( 1 ) ( Solaris)
|
SOLARIS:passwd(1) |
<a class="man" href="http://www.freebsd.org/cgi/man.cgi?query=passwd&format=html&sektion=1&manpath=solaris">SOLARIS:passwd(1)</a> |
passwd(5)(suse)
|
SUSE:passwd(5) |
<a class="man" href="http://www.freebsd.org/cgi/man.cgi?query=passwd&format=html&sektion=5&manpath=suse">SUSE:passwd(5)</a> |
passwd(5)(rhel)
|
RHEL:passwd(5) |
<a class="man" href="http://www.freebsd.org/cgi/man.cgi?query=passwd&format=html&sektion=5&manpath=redhat">RHEL:passwd(5)</a> |
passwd (5) (opensuse)
|
OPENSUSE:passwd(5) |
<a class="man" href="http://www.freebsd.org/cgi/man.cgi?query=passwd&format=html&sektion=5&manpath=suse">OPENSUSE:passwd(5)</a> |
passwd (5) (openSuSE) (11)
|
OPENSUSE:passwd(11)(5) |
<a class="man" href="http://www.freebsd.org/cgi/man.cgi?query=passwd(11)&format=html&sektion=5&manpath=suse">OPENSUSE:passwd(11)(5)</a> |
[mskb://245225]
|
MSKB:245225 |
<a class="mskb" href="http://support.microsoft.com/=kb/245225">MSKB:245225</a> |
[mskb:// 24 5 225 ]
|
MSKB:245225 |
<a class="mskb" href="http://support.microsoft.com/=kb/245225">MSKB:245225</a> |
[msKB:// 24 5225| ]
|
MSKB:245225 |
<a class="mskb" href="http://support.microsoft.com/=kb/245225">MSKB:245225</a> |
[mskb://245225 | Perl and IE ]
|
Perl and IE |
<a class="mskb" href="http://support.microsoft.com/=kb/245225">Perl and IE</a> |