about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@yhbt.net>2020-06-10 07:04:10 +0000
committerEric Wong <e@yhbt.net>2020-06-13 07:55:45 +0000
commit686951722e2709b548384b19ad300f5c2642d368 (patch)
treeb999ae03e2f8bde33e813aea21056fd6db8bebe5
parentca68e519d588b1fd97d9d4a9c43bbb07534624c2 (diff)
downloadpublic-inbox-686951722e2709b548384b19ad300f5c2642d368.tar.gz
Instead of counts starting at 0, we start the single-part
message at 1 like we do with subparts of a multipart message.
This will make it easier to map offsets for "BODY[$SECTION]"
when using IMAP FETCH, since $SECTION must contain non-zero
numbers according to RFC 3501.

This doesn't make any difference for WWW URLs, since single part
messages cannot have downloadable attachments.
-rw-r--r--lib/PublicInbox/Eml.pm2
-rw-r--r--lib/PublicInbox/MsgIter.pm2
-rw-r--r--t/eml.t2
3 files changed, 3 insertions, 3 deletions
diff --git a/lib/PublicInbox/Eml.pm b/lib/PublicInbox/Eml.pm
index d2bd3915..ec682b91 100644
--- a/lib/PublicInbox/Eml.pm
+++ b/lib/PublicInbox/Eml.pm
@@ -237,7 +237,7 @@ sub mp_descend ($$) {
 sub each_part {
         my ($self, $cb, $arg, $once, $all) = @_;
         my $p = mp_descend($self, $once // 0) or
-                                        return $cb->([$self, 0, 0], $arg);
+                                        return $cb->([$self, 0, 1], $arg);
 
         $cb->([$self, 0, 0], $arg) if ($all || $self->{-call_cb}); # rare
 
diff --git a/lib/PublicInbox/MsgIter.pm b/lib/PublicInbox/MsgIter.pm
index 5ec2a4d9..bb1dfead 100644
--- a/lib/PublicInbox/MsgIter.pm
+++ b/lib/PublicInbox/MsgIter.pm
@@ -34,7 +34,7 @@ sub em_each_part ($$;$$) {
                         }
                 }
         } else {
-                $cb->([$mime, 0, 0], $cb_arg);
+                $cb->([$mime, 0, 1], $cb_arg);
         }
 }
 
diff --git a/t/eml.t b/t/eml.t
index a2479f6f..8d131b14 100644
--- a/t/eml.t
+++ b/t/eml.t
@@ -169,7 +169,7 @@ EOF
         is(scalar(@tmp), 1, 'got one part even w/o boundary');
         is($tmp[0]->[0]->[0]->body, "hello world\n", 'body preserved');
         is($tmp[0]->[0]->[1], 0, '$depth is zero');
-        is($tmp[0]->[0]->[2], 0, '@idx is zero');
+        is($tmp[0]->[0]->[2], 1, '@idx is one');
 }
 
 # I guess the following only worked in PI::M because of a happy accident