+sub over_line ($$) {
+ my ($num, $smsg) = @_;
+ # n.b. field access and procedural calls can be
+ # 10%-15% faster than OO method calls:
+ my $s = join("\t", $num,
+ $smsg->{subject},
+ $smsg->{from},
+ PublicInbox::SearchMsg::date($smsg),
+ '<'.PublicInbox::SearchMsg::mid($smsg).'>',
+ $smsg->{references},
+ PublicInbox::SearchMsg::bytes($smsg),
+ PublicInbox::SearchMsg::lines($smsg));
+ utf8::encode($s);
+ $s
+}
+
+sub cmd_over ($;$) {
+ my ($self, $range) = @_;
+ if ($range && $range =~ /\A<(.+)>\z/) {
+ my ($ng, $n) = mid_lookup($self, $1);
+ my $smsg = $ng->search->lookup_mail($range) or
+ return '430 No article with that message-id';
+ more($self, '224 Overview information follows (multi-line)');
+
+ # Only set article number column if it's the current group
+ my $self_ng = $self->{ng};
+ $n = 0 if (!$self_ng || $self_ng ne $ng);
+ more($self, over_line($n, $smsg));
+ '.';
+ } else {
+ cmd_xover($self, $range);
+ }
+}
+