--- trunk/Nos.pm 2005/07/08 17:00:20 67 +++ trunk/Nos.pm 2005/08/01 08:59:36 68 @@ -694,7 +694,7 @@ =head2 _add_aliases -Add new list to C (or equivavlent) file +Add or update alias in C (or equivavlent) file for selected list my $ok = $nos->add_aliases( list => 'My list', @@ -715,9 +715,13 @@ my $arg = {@_}; - croak "need list and email options" unless ($arg->{'list'} && $arg->{'email'}); + foreach my $o (qw/list email aliases/) { + croak "need $o option" unless ($arg->{$o}); + } - my $aliases = $arg->{'aliases'} || croak "need aliases"; + my $aliases = $arg->{'aliases'}; + my $email = $arg->{'email'}; + my $list = $arg->{'list'}; unless (-e $aliases) { warn "aliases file $aliases doesn't exist, creating empty\n"; @@ -747,10 +751,12 @@ $self_path =~ s#/[^/]+$##; $self_path =~ s#/t/*$#/#; - $target .= qq#| cd $self_path && ./sender.pl --inbox="$arg->{'list'}"#; + $target .= qq#| cd $self_path && ./sender.pl --inbox="$list"#; - unless ($a->append($arg->{'email'}, $target)) { - croak "can't add alias ".$a->error_check; + if ($a->exists($email)) { + $a->update($email, $target) or croak "can't update alias ".$a->error_check; + } else { + $a->append($email, $target) or croak "can't add alias ".$a->error_check; } return 1; @@ -793,7 +799,7 @@ list => $name, email => $email, aliases => $aliases, - ) || croak "can't add alias $email for list $name"; + ) || warn "can't add alias $email for list $name"; my $l = $lists->find_or_create({ name => $name, @@ -903,9 +909,7 @@ sub NewList { my $self = shift; - croak "self is not Nos::SOAP object" unless (ref($self) eq 'Nos::SOAP'); - - my $aliases = $self->{'aliases'} || croak "need 'aliases' argument to new constructor"; + my $aliases = $nos->{'aliases'} || croak "need 'aliases' argument to new constructor"; if ($_[0] !~ m/^HASH/) { return $nos->new_list(