From 4fd2ef35b3ad98bd5553bd33f692c5ca18daba5a Mon Sep 17 00:00:00 2001 From: Marius Halden Date: Mon, 19 Dec 2016 16:50:00 +0100 Subject: Try to handle servers only showing one hr when there are no subscriptions Imported from Debian --- listadmin.pl | 24 ++++++++++++++++++------ 1 file 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
tag when there is no subscriptions + # Try resolve first seen
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); } -- cgit v1.2.3