my ($eml, $self, $lei, $each_smsg) = @_;
my $smsg = bless {}, 'PublicInbox::Smsg';
$smsg->populate($eml);
- PublicInbox::OverIdx::parse_references($smsg, $eml, mids($eml));
+ $smsg->parse_references($eml, mids($eml));
$smsg->{$_} //= '' for qw(from to cc ds subject references mid);
delete @$smsg{qw(From Subject -ds -ts)};
if (my $startq = delete($self->{5})) { wait_startq($startq) }
my ($self) = @_;
if (exists $self->{remotes}) {
require PublicInbox::MboxReader;
- require PublicInbox::OverIdx; # parse_references
require IO::Uncompress::Gunzip;
}
# FDS: (0: done_wr, 1: stdout|mbox, 2: stderr,
$tid;
}
-sub parse_references ($$$) {
- my ($smsg, $hdr, $mids) = @_;
- my $refs = references($hdr);
- push(@$refs, @$mids) if scalar(@$mids) > 1;
- return $refs if scalar(@$refs) == 0;
-
- # prevent circular references here:
- my %seen = ( $smsg->{mid} => 1 );
- my @keep;
- foreach my $ref (@$refs) {
- if (length($ref) > PublicInbox::MID::MAX_MID_SIZE) {
- warn "References: <$ref> too long, ignoring\n";
- next;
- }
- push(@keep, $ref) unless $seen{$ref}++;
- }
- $smsg->{references} = '<'.join('> <', @keep).'>' if @keep;
- \@keep;
-}
-
# normalize subjects so they are suitable as pathnames for URLs
# XXX: consider for removal
sub subject_path ($) {
my ($self, $eml, $smsg) = @_;
$smsg->{lines} = $eml->body_raw =~ tr!\n!\n!;
my $mids = mids_for_index($eml);
- my $refs = parse_references($smsg, $eml, $mids);
+ my $refs = $smsg->parse_references($eml, $mids);
$mids->[0] //= $smsg->{mid} //= $eml->{-lei_fake_mid};
$smsg->{mid} //= '';
my $subj = $smsg->{subject};
if (!$self->{-skip_docdata}) {
# WWW doesn't need {to} or {cc}, only NNTP
$smsg->{to} = $smsg->{cc} = '';
- PublicInbox::OverIdx::parse_references($smsg, $eml, $mids);
+ $smsg->parse_references($eml, $mids);
my $data = $smsg->to_doc_data;
$doc->set_data($data);
}
use warnings;
use base qw(Exporter);
our @EXPORT_OK = qw(subject_normalized);
-use PublicInbox::MID qw(mids);
+use PublicInbox::MID qw(mids references);
use PublicInbox::Address;
use PublicInbox::MsgTime qw(msg_timestamp msg_datestamp);
$self;
}
+sub parse_references ($$$) {
+ my ($smsg, $hdr, $mids) = @_;
+ my $refs = references($hdr);
+ push(@$refs, @$mids) if scalar(@$mids) > 1;
+ return $refs if scalar(@$refs) == 0;
+
+ # prevent circular references here:
+ my %seen = ( $smsg->{mid} => 1 );
+ my @keep;
+ foreach my $ref (@$refs) {
+ if (length($ref) > PublicInbox::MID::MAX_MID_SIZE) {
+ warn "References: <$ref> too long, ignoring\n";
+ next;
+ }
+ push(@keep, $ref) unless $seen{$ref}++;
+ }
+ $smsg->{references} = '<'.join('> <', @keep).'>' if @keep;
+ \@keep;
+}
+
# used for v2, Import and v1 non-SQLite WWW code paths
sub populate {
my ($self, $hdr, $sync) = @_;