Handle version-indepentend distro man-page redirects
E.g. /man/debian/ncdu As proposed in issue #1.
This commit is contained in:
parent
12f88c0b6f
commit
89fc82f391
1 changed files with 9 additions and 8 deletions
17
www/index.pl
17
www/index.pl
|
|
@ -18,7 +18,7 @@ use ManUtils;
|
|||
TUWF::set(
|
||||
logfile => $ENV{TUWF_LOG},
|
||||
db_login => [undef, undef, undef],
|
||||
debug => 0,
|
||||
debug => $ENV{TUWF_DEBUG},
|
||||
xml_pretty => 0,
|
||||
log_slow_pages => 500,
|
||||
# Cache the system information
|
||||
|
|
@ -571,24 +571,25 @@ sub man_redir {
|
|||
# 2. <category>/<package>/<name>
|
||||
# 3. <category>/<package>/<version>/<name>
|
||||
|
||||
$sys = $self->{sysbyshort}{$sys};
|
||||
return $self->resNotFound if !$sys;
|
||||
my $sysid = $self->{sysbyshort}{$sys};
|
||||
$sysid = $sysid ? [$sysid->{id}] : [ map $self->{sysbyshort}{$_}{id}, grep /^\Q$sys\E-/, keys $self->{sysbyshort}->%* ];
|
||||
return $self->resNotFound if !@$sysid;
|
||||
|
||||
my $man;
|
||||
if($path !~ m{/}) { # (1)
|
||||
($man) = $self->dbManPrefName($path, sysid => $sys->{id});
|
||||
($man) = $self->dbManPrefName($path, sysid => $sysid);
|
||||
|
||||
} else {
|
||||
$path =~ s{/([^/]+)$}{};
|
||||
my $name = $1;
|
||||
|
||||
my($pkg, $ver) = pkg_frompath($self, $sys->{id}, $path); # Handles (2) and (3)
|
||||
my($pkg, $ver) = pkg_frompath($self, $sysid, $path); # Handles (2) and (3)
|
||||
return $self->resNotFound if !$pkg;
|
||||
|
||||
my $verid = $ver && $self->dbPackageVersions($pkg->{id}, $ver)->[0]{id};
|
||||
return $self->resNotFound if $ver && !$verid;
|
||||
|
||||
($man) = $self->dbManPrefName($name, sysid => $sys->{id}, pkgid => $pkg->{id}, pkgver => $verid);
|
||||
($man) = $self->dbManPrefName($name, sysid => $sysid, pkgid => $pkg->{id}, pkgver => $verid);
|
||||
}
|
||||
return $self->resNotFound if !$man;
|
||||
|
||||
|
|
@ -999,7 +1000,7 @@ sub dbManPref {
|
|||
length $o{name} ? ('m.name = ?' => $o{name}) : (),
|
||||
$o{shorthash} ? (q{substring(m.hash from 1 for 4) = decode(?, 'hex')} => $o{shorthash}) : (),
|
||||
length $o{section} ? ('m.section LIKE ?' => escape_like($o{section}).'%') : (),
|
||||
$o{sysid} ? ('p.system = ?' => $o{sysid}) : (),
|
||||
$o{sysid} ? ('p.system IN(!l)' => [ ref $o{sysid} ? $o{sysid} : [$o{sysid}] ]) : (),
|
||||
$o{package} ? ('p.id = ?' => $o{package}) : (),
|
||||
$o{pkgver} ? ('v.id = ?' => $o{pkgver}) : (),
|
||||
$o{language} ? (q{substring(locale from '^[^.]+') = ?} => $o{language}) : (),
|
||||
|
|
@ -1102,7 +1103,7 @@ sub dbPackageGet {
|
|||
my %o = (results => 10, page => 1, @_);
|
||||
|
||||
my @where = (
|
||||
$o{sysid} ? ('system = ?' => $o{sysid} ) : (),
|
||||
$o{sysid} ? ('system IN(!l)' => [ ref $o{sysid} ? $o{sysid} : [$o{sysid}] ]) : (),
|
||||
$o{category} ? ('category = ?' => $o{category}) : (),
|
||||
$o{name} ? ('name = ?' => $o{name} ) : (),
|
||||
# This seems slow, perhaps cache?
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue