-sub squote_maybe ($) {
- my ($val) = @_;
- if ($val =~ m{([^\w@\./,\%\+\-])}) {
- $val =~ s/(['!])/'\\$1'/g; # '!' for csh
- return "'$val'";
- }
- $val;
-}
-
-sub mailto_arg_link {
- my ($hdr) = @_;
- my %cc; # everyone else
- my $to; # this is the From address
-
- foreach my $h (qw(From To Cc)) {
- my $v = $hdr->header($h);
- defined($v) && ($v ne '') or next;
- my @addrs = PublicInbox::Address::emails($v);
- foreach my $address (@addrs) {
- my $dst = lc($address);
- $cc{$dst} ||= $address;
- $to ||= $dst;
- }
- }
- my @arg;
-
- my $subj = $hdr->header('Subject') || '';
- $subj = "Re: $subj" unless $subj =~ /\bRe:/i;
- my $mid = $hdr->header_raw('Message-ID');
- push @arg, '--in-reply-to='.ascii_html(squote_maybe(mid_clean($mid)));
- my $irt = uri_escape_utf8($mid);
- delete $cc{$to};
- push @arg, '--to=' . ascii_html($to);
- $to = uri_escape_utf8($to);
- $subj = uri_escape_utf8($subj);
- my $cc = join(',', sort values %cc);
- push @arg, '--cc=' . ascii_html($cc);
- $cc = uri_escape_utf8($cc);
- my $href = "mailto:$to?In-Reply-To=$irt&Cc=${cc}&Subject=$subj";
- $href =~ s/%20/+/g;
-
- (\@arg, ascii_html($href));
-}
-