These are internal metadata should be calculated, so avoid
leaking it into the header.
my $bytes;
my $s = eval { Email::MIME->new($ng->gcf->cat_file($o, \$bytes)) };
return $err unless $s;
my $bytes;
my $s = eval { Email::MIME->new($ng->gcf->cat_file($o, \$bytes)) };
return $err unless $s;
if ($set_headers) {
$s->header_set('Newsgroups', $ng->{name});
if ($set_headers) {
$s->header_set('Newsgroups', $ng->{name});
- $s->header_set('Lines', $s->body =~ tr!\n!\n!);
$s->header_set('Xref', xref($ng, $n));
$s->header_set('Xref', xref($ng, $n));
+ $lines = $s->body =~ tr!\n!\n!;
- if ($set_headers == 2) {
- $s->header_set('Bytes', $bytes);
- $s->body_set('');
- }
+ $s->body_set('') if ($set_headers == 2);
+ [ $n, $mid, $s, $bytes, $lines ];
}
sub simple_body_write ($$) {
}
sub simple_body_write ($$) {
-sub header_str ($) {
- my ($s) = @_;
- my $h = $s->header_obj;
- $h->header_set('Bytes');
- $h->as_string
-}
-
sub set_art {
my ($self, $art) = @_;
$self->{article} = $art if defined $art && $art =~ /\A\d+\z/;
sub set_art {
my ($self, $art) = @_;
$self->{article} = $art if defined $art && $art =~ /\A\d+\z/;
my ($n, $mid, $s) = @$r;
set_art($self, $art);
more($self, "220 $n <$mid> article retrieved - head and body follow");
my ($n, $mid, $s) = @$r;
set_art($self, $art);
more($self, "220 $n <$mid> article retrieved - head and body follow");
- do_more($self, header_str($s));
+ do_more($self, $s->header_obj->as_string);
do_more($self, "\r\n");
simple_body_write($self, $s);
}
do_more($self, "\r\n");
simple_body_write($self, $s);
}
my ($n, $mid, $s) = @$r;
set_art($self, $art);
more($self, "221 $n <$mid> article retrieved - head follows");
my ($n, $mid, $s) = @$r;
set_art($self, $art);
more($self, "221 $n <$mid> article retrieved - head follows");
- do_more($self, header_str($s));
+ do_more($self, $s->header_obj->as_string);
sub xhdr ($$) {
my ($r, $header) = @_;
sub xhdr ($$) {
my ($r, $header) = @_;
+ $header = lc $header;
+ return $r->[3] if ($header eq 'bytes');
+ return $r->[4] if ($header eq 'lines');
$r = $r->[2]->header_obj->header($header);
defined $r or return;
$r =~ s/[\r\n\t]+/ /sg;
$r = $r->[2]->header_obj->header($header);
defined $r or return;
$r =~ s/[\r\n\t]+/ /sg;