/usr/local/CPAN/ec/EC/ECConfig.pm


package EC::ECConfig;

use EC::Utilities;
use Tk::Dialog;

$VERSION=0.11;

                     # Default option settings when config file not found
my $defaults =       # config file; see ~/.ec/.ecconfig for description
  {                  # of each option and valid parameters
   maildomain => 'localhost',
   debug => 0,
   verbose => 0,
   smtpport => 25,
   usesendmail => 0,
   useqmail => 0,
   useexim => 0,
   sendmailprog => '/usr/sbin/sendmail',
   sendmailsetfrom => 0,
   qmailinjectpath => '',
   sigfile => '.signature',
   usesig => 1,
   mailspooldir => '/var/spool/mail',
   maildir => "$ENV{HOME}/Mail",
   qmailbox => "Mailbox",
   incomingdir => 'incoming',
   trashdir => 'trash',
   helpfile => 'EC/ec.help',
   trashdays => 2,
   pollinterval => 600000,
   senderwidth => 40,
   datewidth => 20,
   fccfile => '',
   quotestring => '> ',
   senderlen => 25,
   datelen => 21,
   weekdayindate => 1,
   sortfield => 1,
   sortdescending => 0,
   servertimeout => 10,
   headerview => 'brief',
   ccsender => 1,
   browser => '',
   timezone => '-0400',
   gmtoutgoing => 0,
   xterm => 'xterm',
   offline => '',
   };

sub new {
  ($cfgfilename) = @_;
  my $self = readconfig ($cfgfilename);
  bless $self, 'EC::Config';
  return $self;
}

sub readconfig {
  my ($file) = @_;
  my ($l, @tmpfolders, @cfgfile,$topmaildir);
  @cfgfile = content ($file);
  my %userconfig;
  foreach $l (@cfgfile) {
    if( $l !~ /^\#/) {
      my ($opt, $val) = ($l =~ /^(\S+)\s(.*)$/);
      $val =~ s/[\'\"]//g;
      if( $opt =~ /folder/ ) {
	push @tmpfolders, ($val);
      } elsif ( $opt =~ /filter/ ) {
	push @{$userconfig{'filter'}}, ($val);
      } else {
	$userconfig{$opt} = $val;
      }
      print "config: $opt = ".$userconfig{$opt}."\n" if $debug;
    }
  }
  push @{$userconfig{'folder'}}, ($userconfig{incomingdir});
  push @{$userconfig{'folder'}}, ($userconfig{trashdir});
  push @{$userconfig{'folder'}}, ($_)  foreach( @tmpfolders );
  foreach my $k ( keys %$defaults ) {
    if (! exists $userconfig{$k}) {
      print "Using default value ".$defaults -> {$k}." for $k\n." if $debug;
      $userconfig{$k} = $defaults -> {$k};
    }
  }
  if( ! $cfgfile[0] ) {
    print "Could not open $cfgfilename: using defaults.\n".
	"Refer to the file README for installation instructions.\n";
    foreach (keys %{$defaults}) {
      $userconfig{$_} = $defaults -> {$_};
      print "config: $_ = ".$userconfig{$_}." from defaults\n" if $debug;
    }
  }
  $userconfig{maildir} = expand_path ($userconfig{maildir});
  verify_path ($userconfig{maildir});
  $userconfig{'helpfile'} = $ENV{HOME}.'/'.$userconfig{'helpfile'};
  $userconfig{'sigfile'} = $ENV{HOME}.'/'.$userconfig{'sigfile'};
  foreach( @{$userconfig{folder}} ) {
    $_ = $userconfig{maildir}.'/'.$_;
    verify_path ($_);
  }
  $userconfig{'incomingdir'} =
    $userconfig{maildir} .'/'.$userconfig{'incomingdir'};
  verify_path ($userconfig{incomingdir});
  $userconfig{'trashdir'}
    = $userconfig{maildir} .'/'.$userconfig{'trashdir'};
  verify_path ($userconfig{trashdir});
  $textfont = $userconfig{'textfont'};
  $headerfont = $userconfig{'headerfont'};
  $menufont = $userconfig{'menufont'};
  return \%userconfig;
}

sub direrrortext {
    return "The program could not locate your $ENV{HOME}./ec\n".
	"configuration directory.  Should I create one now?"
}

1;