chiark / gitweb /
As found on chiark in /usr/local/lib/news/feed+read/newsrc-listgroups
[userv-utils.git] / newsrc-lg / newsrc-listgroups
1 #!/usr/bin/perl
2
3 $minreaddays= 21;
4 $maxperuser= 250;
5
6 open(CONF,"$ARGV[0]") or die $!;
7 while(<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";
20 exit 0 if -l $newsrc || ! -f _ || -M _ > $minreaddays;
21
22 @g= ();
23
24 open NEWSRC, $newsrc or die $!;
25 while (<NEWSRC>) {
26     next unless s/:.*\n$//;
27     next unless m/^[-a-z0-9+]+\.[-a-z0-9+._]+$/i;
28     push @g, "$_\n";
29 }
30 close NEWSRC or die $!;
31
32 exit 0 if @g > $maxperuser;
33
34 print sort @g or die $!;
35 close STDOUT or die $!;
36
37 exit 0;