#!perl

package   leosub;
use       Exporter ();
@ISA    = qw(Exporter);
@EXPORT = qw(
	     ReadLabelFile
	     MoveFilesToMO
	     
	     $labelfile $leadingslash $lwdoppelpkt $LeoAufPlatte

             $dos $linux
	     $loescher $graef
            );

use slutil;
use English;
use File::Find;
use FileHandle;

$labelfile = 'label.dat';

# Betriebssystem
$dos   = ($osname eq 'dos');
$linux = ($osname eq 'linux');
if ( !$dos && !$linux )
{ die "Die Platform '$osname' ist noch nicht unterstuetzt!\n"}

# Slash
$leadingslash = '/';
$lwdoppelpkt = '';
if ($osname eq 'dos')
{
  $leadingslash = '';
  $lwdoppelpkt  = ':';
}

# Anwender
unless (defined $ENV{"ichbin"}) 
{ die "Es ist kein 'ichbin' im Environment definiert!\n" }
$loescher = ($ENV{"ichbin"} eq 'loescher');
$graef    = ($ENV{"ichbin"} eq 'graef');
if ( !$loescher && !$graef )
{
  die "Der Environment-Eintrag '$ENV{ichbin}' für 'ichbin' ist nicht gültig!\n"
}

# Pfade definieren
# Gräf: /d/loescher/leo bzw: d:\loescher\leo
$LeoAufPlatte = "${leadingslash}d$lwdoppelpkt${slash}loescher${slash}leo";
if ($loescher) # Löscher: /home/loescher/2graef/leo
# { $LeoAufPlatte = "${leadingslash}f$lwdoppelpkt${slash}g${slash}leo" }
{ $LeoAufPlatte = "/home/loescher/2graef/leo" }


######################################################################
### ReadLabelFile
######################################################################

sub ReadLabelFile
{
  # Parameter: Pfad zum Labelfile, z.B. "/mnt/mo/label.dat"
  # Return:    Inhalt des Labelfiles oder undef bei Fehler
  #
  my $labelfile = shift;
  my $fh = FileHandle->new();
  open($fh, $labelfile) || do 
  { warn "Kann Labelfile '$labelfile' nicht lesen!\n"; return undef; };
  my $label = <$fh>;
  close $fh;
  $label =~ s/\s//g; # Spaces weg!
  return $label;
}


######################################################################
### MoveFilesToMO
######################################################################

sub MoveFilesToMO
{
  # Parameter: (Quelle, Ziel, realtiver Pfad)
  # Beispiel:  ("/s/midi", "/m/midi", "country")
  #
  my ($quelle,$ziel,$relpath) = @_;
  my $subpath;
  die "Fehlerhafter Aufruf von MoveFilesToMO()!\n" unless defined $relpath;
  chdir("$quelle$slash$relpath$slash") 
       || die "Den Pfad '$quelle$slash$relpath$slash' gibt es nicht!\n";
  @filelist = ();
  find(\&FindAllFiles, ".");
  foreach $file (@filelist)
  {
    $file =~ s/^\.//; # Führenden Punkt weg.
    # Vom Filenamen den Pfad-Teil wegschneiden ("/fast/xxx.mod")
    $file =~ /^(.*?)[^$slashsuch]+$/;
    $subpath = $1;
    # Einzelfileweise 2leo aufrufen:
    system("2leo -nowoall $quelle$slash$relpath$file $ziel$slash$relpath$subpath");
  }
}  


######################################################################
### FindAllFiles
######################################################################

sub FindAllFiles
{
  # In @filelist sind dann alle Files gespeichert
  push @filelist,$File::Find::name if (-f);  
}


1;

