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(
|
TUWF::set(
|
||||||
logfile => $ENV{TUWF_LOG},
|
logfile => $ENV{TUWF_LOG},
|
||||||
db_login => [undef, undef, undef],
|
db_login => [undef, undef, undef],
|
||||||
debug => 0,
|
debug => $ENV{TUWF_DEBUG},
|
||||||
xml_pretty => 0,
|
xml_pretty => 0,
|
||||||
log_slow_pages => 500,
|
log_slow_pages => 500,
|
||||||
# Cache the system information
|
# Cache the system information
|
||||||
|
|
@ -571,24 +571,25 @@ sub man_redir {
|
||||||
# 2. <category>/<package>/<name>
|
# 2. <category>/<package>/<name>
|
||||||
# 3. <category>/<package>/<version>/<name>
|
# 3. <category>/<package>/<version>/<name>
|
||||||
|
|
||||||
$sys = $self->{sysbyshort}{$sys};
|
my $sysid = $self->{sysbyshort}{$sys};
|
||||||
return $self->resNotFound if !$sys;
|
$sysid = $sysid ? [$sysid->{id}] : [ map $self->{sysbyshort}{$_}{id}, grep /^\Q$sys\E-/, keys $self->{sysbyshort}->%* ];
|
||||||
|
return $self->resNotFound if !@$sysid;
|
||||||
|
|
||||||
my $man;
|
my $man;
|
||||||
if($path !~ m{/}) { # (1)
|
if($path !~ m{/}) { # (1)
|
||||||
($man) = $self->dbManPrefName($path, sysid => $sys->{id});
|
($man) = $self->dbManPrefName($path, sysid => $sysid);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$path =~ s{/([^/]+)$}{};
|
$path =~ s{/([^/]+)$}{};
|
||||||
my $name = $1;
|
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;
|
return $self->resNotFound if !$pkg;
|
||||||
|
|
||||||
my $verid = $ver && $self->dbPackageVersions($pkg->{id}, $ver)->[0]{id};
|
my $verid = $ver && $self->dbPackageVersions($pkg->{id}, $ver)->[0]{id};
|
||||||
return $self->resNotFound if $ver && !$verid;
|
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;
|
return $self->resNotFound if !$man;
|
||||||
|
|
||||||
|
|
@ -999,7 +1000,7 @@ sub dbManPref {
|
||||||
length $o{name} ? ('m.name = ?' => $o{name}) : (),
|
length $o{name} ? ('m.name = ?' => $o{name}) : (),
|
||||||
$o{shorthash} ? (q{substring(m.hash from 1 for 4) = decode(?, 'hex')} => $o{shorthash}) : (),
|
$o{shorthash} ? (q{substring(m.hash from 1 for 4) = decode(?, 'hex')} => $o{shorthash}) : (),
|
||||||
length $o{section} ? ('m.section LIKE ?' => escape_like($o{section}).'%') : (),
|
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{package} ? ('p.id = ?' => $o{package}) : (),
|
||||||
$o{pkgver} ? ('v.id = ?' => $o{pkgver}) : (),
|
$o{pkgver} ? ('v.id = ?' => $o{pkgver}) : (),
|
||||||
$o{language} ? (q{substring(locale from '^[^.]+') = ?} => $o{language}) : (),
|
$o{language} ? (q{substring(locale from '^[^.]+') = ?} => $o{language}) : (),
|
||||||
|
|
@ -1102,7 +1103,7 @@ sub dbPackageGet {
|
||||||
my %o = (results => 10, page => 1, @_);
|
my %o = (results => 10, page => 1, @_);
|
||||||
|
|
||||||
my @where = (
|
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{category} ? ('category = ?' => $o{category}) : (),
|
||||||
$o{name} ? ('name = ?' => $o{name} ) : (),
|
$o{name} ? ('name = ?' => $o{name} ) : (),
|
||||||
# This seems slow, perhaps cache?
|
# This seems slow, perhaps cache?
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue