#!/usr/bin/perl -w

require 5.000;
use lib '/usr/local/bin',"$ENV{HOME}/bin",'/usr/stud/loescher/bin';
use lib 'd:/bin','c:/mydos','c:/bin';
use slutil;
use English;


######################################################################
### Voreinstellungen
######################################################################

$version = '0.4';
$appname = 'ErstelleSuckNewsrc';
$negativZahl = '-10000';

######################################################################
### Hauptprogramm
######################################################################

&Hilfe if ($#ARGV<0);

$zielpfad = shift;
$zielpfad = KillSlashAtEnd($zielpfad);
die "Den Ziel-Pfad gibt es nicht!\n" unless -d $zielpfad;


# Feststellen, welche Gruppen abonniert sind
%gruppen = ();
while($newsrc = shift)
{
  unless (-r $newsrc)
  {
    warn "Datei '$newsrc' ist nicht lesbar!\n";
    next;
  }
  open(NEWSRC, $newsrc);
  while(<NEWSRC>)
  {
    next if /!/;
    /^(.+):.*/;
    $gruppen{$1} = $TRUE;
  }
  close NEWSRC;
}


# Die alte sucknewsrc einlesen
%oldsucknewsrc = ();
if (-r "$zielpfad/sucknewsrc")
{
  open(OLD, "$zielpfad/sucknewsrc") || die "Kann Datei '$zielpfad/sucknewsrc' nicht lesen!\n";
  while (<OLD>)
  {
    # Die sucknewsrc ist so aufgebaut:
    # tum.info.modem 2148
    /(^.+)\s+(-?\d+)/;
    $oldsucknewsrc{$1} = $2;
  }
  close OLD;
}


open(ZIEL, ">$zielpfad/sucknewsrc") || die "Kann Datei '$zielpfad/sucknewsrc' nicht anlegen!\n";
foreach $gruppe (sort keys %gruppen)
{
  if (defined $oldsucknewsrc{$gruppe})
  {
    # Gruppe war bereits abonniert
    print ZIEL "$gruppe $oldsucknewsrc{$gruppe}\n";
  }
  else
  {
    # Gruppe wurde neu abonniert
    print ZIEL "$gruppe $negativZahl\n";
  }
}
close ZIEL;


######################################################################
### Unterprogramme
######################################################################

sub Kopf
{
  my $head = "$appname $version   -   von Stephan Löscher";
  return "\n$head\n" . '~' x length($head) . "\n";
}


sub Hilfe
{
  printumlautepaged
  Kopf().
"Syntax: ErstelleSuckNewsrc zielpfad newsrcs ...

Beispiele:
ErstelleSuckNewsrc /usr/lib/news/suck /home/loescher/.newsrc \
   /home/user2/.newsrc /home/user3/.newsrc

Oder für alle User:
ErstelleSuckNewsrc /usr/lib/news/suck `/bin/ls /home/*/.newsrc`

";
exit;
}
