]> Sergey Matveev's repositories - public-inbox.git/commitdiff
mbox: consistent header order when decompressed
authorEric Wong <e@80x24.org>
Sun, 15 May 2016 23:43:20 +0000 (23:43 +0000)
committerEric Wong <e@80x24.org>
Sun, 15 May 2016 23:49:49 +0000 (23:49 +0000)
This should make validating the output easier
when testing between different servers.

lib/PublicInbox/Mbox.pm

index b81ec0a40e785dff75796fd573dd2e1a699e94c8..efb13e5bbbf9ad69b8bde74133cef59f0159b74d 100644 (file)
@@ -48,12 +48,16 @@ sub emit_msg {
        my $base = $feed_opts->{url};
        my $mid = mid_clean($header_obj->header('Message-ID'));
        $mid = uri_escape_utf8($mid);
-       my %append = (
-               'Archived-At' => "<$base$mid/>",
-               'List-Archive' => "<$base>",
-               'List-Post' => "<mailto:$feed_opts->{id_addr}>",
+       my @append = (
+               'Archived-At', "<$base$mid/>",
+               'List-Archive', "<$base>",
+               'List-Post', "<mailto:$feed_opts->{id_addr}>",
        );
-       while (my ($k, $v) = each %append) {
+       my $append = '';
+       my $crlf = $simple->crlf;
+       for (my $i = 0; $i < @append; $i += 2) {
+               my $k = $append[$i];
+               my $v = $append[$i + 1];
                my @v = $header_obj->header($k);
                foreach (@v) {
                        if ($v eq $_) {
@@ -61,14 +65,14 @@ sub emit_msg {
                                last;
                        }
                }
-               $header_obj->header_set($k, @v, $v) if defined $v;
+               $append .= "$k: $v$crlf" if defined $v;
        }
-
        my $buf = $header_obj->as_string;
        unless ($buf =~ /\AFrom /) {
                $fh->write("From mboxrd\@z Thu Jan  1 00:00:00 1970\n");
        }
-       $fh->write($buf .= $simple->crlf);
+       $append .= $crlf;
+       $fh->write($buf .= $append);
 
        $buf = $simple->body;
        $simple->body_set('');