summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarius Halden <marius.h@lden.org>2016-12-19 16:50:00 +0100
committerMarius Halden <marius.h@lden.org>2016-12-19 16:50:00 +0100
commit4fd2ef35b3ad98bd5553bd33f692c5ca18daba5a (patch)
tree88fe22459ee9db525b03f9ff1869c97c12a15155
parent081bfb97d97b3775f88b4988c6fadd9a363a846c (diff)
downloadlistadmin-4fd2ef35b3ad98bd5553bd33f692c5ca18daba5a.tar.gz
listadmin-4fd2ef35b3ad98bd5553bd33f692c5ca18daba5a.tar.bz2
listadmin-4fd2ef35b3ad98bd5553bd33f692c5ca18daba5a.tar.xz
Try to handle servers only showing one hr when there are no
subscriptions Imported from Debian
-rwxr-xr-xlistadmin.pl24
1 files changed, 18 insertions, 6 deletions
diff --git a/listadmin.pl b/listadmin.pl
index 434f84d..ce20b1b 100755
--- a/listadmin.pl
+++ b/listadmin.pl
@@ -722,7 +722,7 @@ sub get_list {
}
my $data;
- if ($mmver eq "2.1") {
+ if ($mmver ge "2.1") {
my $parse_appr = HTML::TokeParser->new(\$page_appr) || die;
$data = parse_pages_mm_2_1($mmver, $config, $parse, $parse_appr);
} else {
@@ -768,14 +768,26 @@ sub parse_pages_mm_2_1 {
my %data = ();
my $headline;
+ # some (newer?) servers show only 1 <hr> tag when there is no subscriptions
+ # Try resolve first seen <hr> as subscription, and fall back to approvals
$parse_subs->get_tag ("hr");
if ($parse_subs->get_tag ("h2")) {
- parse_subscriptions ($mmver, $config, $parse_subs, \%data);
- }
+ my $title = $parse_subs->get_trimmed_text ("/h2") || die;
+ if ($title =~ get_trans_re("subscriptions")) {
+ parse_subscriptions ($mmver, $config, $parse_subs, \%data);
- $parse_appr->get_tag ("hr");
- if ($parse_appr->get_tag ("h2")) {
- parse_approvals ($mmver, $config, $parse_appr, \%data);
+ $parse_appr->get_tag ("hr");
+ if ($parse_appr->get_tag ("h2")) {
+ parse_approvals ($mmver, $config, $parse_appr, \%data);
+ }
+ } else {
+ parse_approvals ($mmver, $config, $parse_appr, \%data);
+ }
+ } else {
+ $parse_appr->get_tag ("hr");
+ if ($parse_appr->get_tag ("h2")) {
+ parse_approvals ($mmver, $config, $parse_appr, \%data);
+ }
}
return (\%data);
}