+sub mime_load_for_sort {
+ my ($git, $path, $messages) = @_;
+ my $mime = do_cat_mail($git, $path) or return 0;
+
+ my $t = eval { str2time($mime->header('Date')) };
+ defined($t) or $t = 0;
+ $mime->header_set('X-PI-Date', $t);
+ push @$messages, $mime;
+ 1;
+}
+
+# children are chronological
+sub mime_sort_children {
+ sort {
+ $a->topmost->message->header('X-PI-Date') <=>
+ $b->topmost->message->header('X-PI-Date')
+ } @_;
+}
+
+# parents are reverse chronological
+sub mime_sort_roots {
+ my ($th) = @_;
+ sort {
+ (eval { $b->message->header('X-PI-Date') } || 0) <=>
+ (eval { $a->message->header('X-PI-Date') } || 0)
+ } $th->rootset;
+}
+