Hi Bron, On Saturday, 16. May 2015 09:46:40 Bron Gondwana wrote: > So the way to work through all the records in a mailbox was: > > int r; > uint32_t recno; > struct index_record record; > > for (recno = 1; recno <= mailbox->i.num_records; recno++) { > r = mailbox_read_index_record(mailbox, recno, &record); > if (r) continue; > > /* if not looking at expunged records */ > if (record.system_flags & FLAG_EXPUGNED) continue;
[new API] > const struct index_record *record; > struct mailbox_iter *iter = mailbox_iter_init(mailbox, modseq, iterflags); > while ((record = mailbox_iter_step(iter))) { > ... > } > mailbox_iter_done(&iter); > > This allows both a fetch of only records changed since a particular > modseq, or a fetch of only records without certain flags - check some of > the uses for examples. A common pattern is init(mailbox, 0, > ITER_SKIP_EXPUNGED). that's a sound API improvement. I already reviewed the concept last week but never gotten around to actually send the email :) Cheers, Thomas