/usr/share/perl5/URI/mailto.pm is in liburi-perl 1.73-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | package URI::mailto; # RFC 2368
use strict;
use warnings;
our $VERSION = '1.73';
$VERSION = eval $VERSION;
use parent qw(URI URI::_query);
sub to
{
my $self = shift;
my @old = $self->headers;
if (@_) {
my @new = @old;
# get rid of any other to: fields
for (my $i = 0; $i < @new; $i += 2) {
if (lc($new[$i] || '') eq "to") {
splice(@new, $i, 2);
redo;
}
}
my $to = shift;
$to = "" unless defined $to;
unshift(@new, "to" => $to);
$self->headers(@new);
}
return unless defined wantarray;
my @to;
while (@old) {
my $h = shift @old;
my $v = shift @old;
push(@to, $v) if lc($h) eq "to";
}
join(",", @to);
}
sub headers
{
my $self = shift;
# The trick is to just treat everything as the query string...
my $opaque = "to=" . $self->opaque;
$opaque =~ s/\?/&/;
if (@_) {
my @new = @_;
# strip out any "to" fields
my @to;
for (my $i=0; $i < @new; $i += 2) {
if (lc($new[$i] || '') eq "to") {
push(@to, (splice(@new, $i, 2))[1]); # remove header
redo;
}
}
my $new = join(",",@to);
$new =~ s/%/%25/g;
$new =~ s/\?/%3F/g;
$self->opaque($new);
$self->query_form(@new) if @new;
}
return unless defined wantarray;
# I am lazy today...
URI->new("mailto:?$opaque")->query_form;
}
1;
|