6 Debbugs::User -- User settings
10 use Debbugs::User qw(is_valid_user read_usertags write_usertags);
12 read_usertags(\%ut, $userid);
13 write_usertags(\%ut, $userid);
19 =item :all -- all functions that can be exported
29 use vars qw($VERSION $DEBUG %EXPORT_TAGS @EXPORT_OK @EXPORT);
30 use base qw(Exporter);
33 ($VERSION) = q$Revision: 1.1 $ =~ /^Revision:\s+([^\s+])/;
34 $DEBUG = 0 unless defined $DEBUG;
37 @EXPORT_OK = qw(is_valid_user read_usertags write_usertags);
38 $EXPORT_TAGS{all} = [@EXPORT_OK];
42 my $gSpoolPath = "/org/bugs.debian.org/spool";
46 if ($s =~ m/^[0-9a-zA-Z_+.-]$/) { return $s; }
47 else { return sprintf("%%%02X", ord($s)); }
52 my $l = length($e) % 7;
53 return "$gSpoolPath/user/$l/" . join("", map { esc($_); } split //, $e);
64 if ($field && m/^ (.*)$/) {
65 $res[-1] .= "\n" . $1;
66 } elsif (m/^([^:]+):\s+(.*)$/) {
77 my $p = filefromemail($u);
80 open($uf, "< $p") or return;
82 my @stanza = read_stanza($uf);
83 last if ($#stanza == -1);
84 if ($stanza[0] eq "Tag") {
87 $ut->{$t} = [] unless defined $ut->{$t};
88 push @{$ut->{$t}}, split /\s*,\s*/, $tag{Bugs};
99 while ($s =~ m/^([^,]*,\s*)(.*)$/ || $s =~ m/^([^,]+)()$/) {
102 unless ($sofar == 0 or $sofar + length($k) <= $n) {
107 $sofar += length($k);
115 my $p = filefromemail($u);
117 open(U, "> $p") or die "couldn't write to $p";
118 for my $t (keys %{$ut}) {
119 next if @{$ut->{$t}} == 0;
121 print U fmt("Bugs: " . join(", ", @{$ut->{$t}}), 77) . "\n";
129 return ($u =~ /^[a-zA-Z0-9._+-]+[@][a-z0-9-.]{4,}$/);