From d8c69d152175704304656c19e1da1043fd24491e Mon Sep 17 00:00:00 2001 From: Don Armstrong Date: Fri, 20 Oct 2006 20:50:01 -0700 Subject: [PATCH] add usertags support to process.in --- Debbugs/User.pm | 2 +- scripts/process.in | 26 +++++++++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/Debbugs/User.pm b/Debbugs/User.pm index 7591e4d..d55860b 100644 --- a/Debbugs/User.pm +++ b/Debbugs/User.pm @@ -49,7 +49,7 @@ BEGIN { $DEBUG = 0 unless defined $DEBUG; @EXPORT = (); - @EXPORT_OK = qw(is_valid_user open); + @EXPORT_OK = qw(is_valid_user open read_usertags write_usertags); $EXPORT_TAGS{all} = [@EXPORT_OK]; } diff --git a/scripts/process.in b/scripts/process.in index 5cd9f13..eeb195d 100755 --- a/scripts/process.in +++ b/scripts/process.in @@ -12,6 +12,7 @@ use MIME::Parser; use Debbugs::MIME qw(decode_rfc1522 create_mime_message); use Debbugs::Mail qw(send_mail_message encode_headers); use Debbugs::Packages qw(getpkgsrc); +use Debbugs::User qw(read_usertags write_usertags); my $config_path = '/etc/debbugs'; my $lib_path = '/usr/lib/debbugs'; @@ -151,7 +152,7 @@ for my $phline (@bodylines) print DEBUG ">$fn|$fv|\n"; $fn = lc $fn; # Don't lc owner or forwarded - $fv = lc $fv unless $fh =~ /^(?:owner|forwarded)$/; + $fv = lc $fv unless $fh =~ /^(?:owner|forwarded|usertags)$/; $pheader{$fn} = $fv; print DEBUG ">$fn~$fv<\n"; } @@ -647,6 +648,29 @@ END $data->{subject} = $subject; $data->{msgid} = $header{'message-id'}; writebug($ref, $data); + # Deal with usertags + if (exists $pheader{usertags}) { + my $user = $replyto; + $user =~ s/,.*//; + $user =~ s/^.*<(.*)>.*$/$1/; + $user =~ s/[(].*[)]//; + $user =~ s/^\s*(\S+)\s+.*$/$1/; + $user = "" unless (Debbugs::User::is_valid_user($user)); + if ($user ne '') { + $pheader{usertags} =~ s/(?:^\s+|\s+$)//g; + my %user_tags; + read_usertags(\%user_tags,$user); + for my $tag (split /[,\s]+/, $pheader{usertags}) { + if ($tag =~ /^[a-zA-Z0-9.+\@-]+/) { + my %bugs_with_tag; + @bugs_with_tag{@{$user_tags{$tag}}} = (1) x @{$user_tags{$tag}}; + $bugs_with_tag{$ref} = 1; + $user_tags{$tag} = [keys %bugs_with_tag]; + } + } + write_usertags(\%usertags,$user); + } + } &overwrite("db-h/$hash/$ref.report", join("\n",@msg)."\n"); } -- 2.39.2