5 $fetchdir= "/var/lib/news/fetch";
6 chdir("/etc/news") || die $!;
8 open(CONF
,"nntp-merge.conf") || die $!;
10 next if m/^\#/ || !m/^\S/;
11 next if m/^(myfqdn|xref|server|server-nosearch|fetch|read|post|permit|believe|minreaddays)\s/;
12 if (m/^maxperuser\s+(\d+)\s+$/) {
14 } elsif (m/^extrarc\s+(\S+)\s+$/) {
21 open IGN
,"</etc/news/newsrc-ignoredusers" or die $!;
30 open PASS
,"</etc/userlist" or die $!;
36 open GL
,"userv -t 30 $user newsrc-listgroups |" or die $!;
38 close GL
; $?
and warn "getgroups: error getting groups for $user (code $?)";
43 open GL
,"< $f" or die $!;
48 chdir($fetchdir) || die $!;
49 open(NG
,">all-read-groups.new") || die $!;
50 print(NG
join("\n",sort keys %yes)."\n") || die $!;
52 rename("all-read-groups.new","all-read-groups") || die $!;
54 printf "total %d groups\n",scalar(keys %yes);
58 my ($where,$toomanyenf) = @_;
61 die "bad group in $where" unless m/^[-a-z0-9+]+\.[-a-z0-9+._]+$/i;
64 warn("too many from $where"), return if $toomanyenf && @g > $maxperuser;
65 map { $yes{$_}=1; } @g;
66 printf "%-20s - %4d groups\n",$where,scalar(@g);