2 # Create, update or delete a mailcap entry
4 require './mailcap-lib.pl';
6 &error_setup($text{'save_err'});
7 @mailcap = &list_mailcap();
10 ($mailcap) = grep { $_->{'index'} == $in{'index'} } @mailcap;
11 $mailcap || &error($text{'edit_egone'});
14 $mailcap = { 'args' => { } };
17 &lock_file($mailcap_file);
20 &delete_mailcap($mailcap);
24 $in{'type'} =~ /([a-z0-9\-]+)\/([a-z0-9\-\*]+)/ ||
25 &error($text{'save_etype'});
26 #if (($in{'new'} || $in{'old'} ne $in{'type'}) && $in{'enabled'}) {
27 # ($clash) = grep { $_->{'type'} eq $in{'type'} &&
28 # $_->{'enabled'} == 1 } @mailcap;
29 # $clash && &error($text{'save_eclash'});
31 $mailcap->{'type'} = $in{'type'};
32 $mailcap->{'enabled'} = $in{'enabled'};
34 &error($text{'save_eprogram'});
35 $mailcap->{'program'} = $in{'program'};
36 $in{'cmt'} =~ s/\r//g;
37 $in{'cmt'} =~ s/\s*$//g;
38 $mailcap->{'cmt'} = $in{'cmt'};
41 $args = $mailcap->{'args'};
42 if ($in{'test_def'}) {
43 delete($args->{'test'});
46 $in{'test'} =~ /\S/ && $in{'test'} !~ /;/ ||
47 &error($text{'save_etest'});
48 $args->{'test'} = $in{'test'};
51 $args->{'needsterminal'} = '';
54 delete($args->{'needsterminal'});
57 $args->{'copiousoutput'} = '';
60 delete($args->{'copiousoutput'});
62 if ($in{'desc_def'}) {
63 delete($args->{'description'});
66 $in{'desc'} !~ /;/ || &error($text{'save_edesc'});
67 $args->{'description'} = $in{'desc'};
72 &create_mailcap($mailcap);
75 &modify_mailcap($mailcap);
78 &unlock_file($mailcap_file);
79 &webmin_log($in{'new'} ? "create" : $in{'delete'} ? "delete" : "modify",
80 "mailcap", $in{'old'} || $in{'type'});