As found on chiark in /usr/local/lib/news/feed+read/newsrc-listgroups
[userv-utils] / newsrc-lg / newsrc-listgroups
CommitLineData
45e019f4 1#!/usr/bin/perl
2
3$minreaddays= 21;
4$maxperuser= 250;
5
6open(CONF,"$ARGV[0]") or die $!;
7while(<CONF>) {
8 next if m/^\#/ || !m/^\S/;
9 next if m/^(myfqdn|xref|server|server-nosearch|fetch|read|post|permit|believe|extrarc)\s/;
10 if (m/^minreaddays\s+(\d+)\s+$/) {
11 $minreaddays= $1;
12 } elsif (m/^maxperuser\s+(\d+)\s+$/) {
13 $maxperuser= $1;
14 } else {
15 die "$_ ?";
16 }
17}
18
19$newsrc= ".newsrc";
20exit 0 if -l $newsrc || ! -f _ || -M _ > $minreaddays;
21
22@g= ();
23
24open NEWSRC, $newsrc or die $!;
25while (<NEWSRC>) {
26 next unless s/:.*\n$//;
27 next unless m/^[-a-z0-9+]+\.[-a-z0-9+._]+$/i;
28 push @g, "$_\n";
29}
30close NEWSRC or die $!;
31
32exit 0 if @g > $maxperuser;
33
34print sort @g or die $!;
35close STDOUT or die $!;
36
37exit 0;