* Notifier::HeaderFetched(): fixed the method signature (go figure how it could
build on x86).
* POP3: fSizes type is now std::vector<size_t> instead of BList. Please review.
off_t might be a better choice.
* added the mail_daemon add-ons to the Haiku package again.
* The state was usually 0 once there was more than one battery
slot.
* We now ignore missing batteries completely, instead of taking
eventually bogus data into account.
* Fixed how to determine fOnline, and fHasBattery, and when to ignore
probes.
* Made it more strict when to show the notification, ie. it's now only
shown when actually discharging.
* This fixes all spurious notifications for me.
* ioctl() does not return a status_t; fixed its usage.
* Do not overwrite the cached battery info with bogus data (this is
quite strict, though).
* Improved DriverInterface API with a more "natural" argument order.
* Simplified some code.
* Since the power status outages only happen on load, it's likely
that we run some code too late (I haven't looked at the ACPI specs,
though).
* In any case, I now get wrong results much less often.
For the time being, exclude the new mail_daemon add-ons from the image,
as they break both the x86 and x86_64 builds by failing to compile in a
variety of ways.
I missed the fact that the BDataIO based Unflatten didn't handle this.
Restore the code from the recently removed buffer-based unflatten, so
it's possible to pass a message by area again.
* We now also maintain a mail index -> UID array in IMAPMailbox.
* Instead of fetching the message entries by a fixed range of UIDs, we use the
message count, and get the entries by index.
* Likewise, in FetchHeadersCommand, we now get a list of UIDs rather than a
range. This makes it possible to only download exactly the headers we want.
* Extended FetchCommand to be able to dynamically build a sequence list from
a list of UIDs.
* Besides the suboptimal body fetching (one at a time, due to holes in the
IMAP specification), we should now be able to retrieve the messages with
pretty much optimal performance, while retaining an acceptable responsiveness
to user requests.
* Changed the way the attributes are written to make sure that everything
that can be written once is in fact written just once.
* The rename code in BMailProtocol::_ProcessFetchedHeader() was broken,
and caused the hang of the last commit.
* BMailFilter::HeaderFetched() now only alters the entry_ref, and returns
B_MOVE_MAIL_ACTION to move a mail.
* Instead of potentially moving the file around several times, the
BMailProtocol now takes care of carrying out the filter action just once,
including trying to make the file name unique.
* This also allows the IMAP add-on to know the final location of the mail,
and thus downloading a message actually works.
* However, with my test inbox, it currently hangs, and a current Debugger does
not work on my older system -- I guess I need to update.
* Replaced the duplicated space mechanism within the "HaikuMailFormatFilter"
that is substantially faster, and handles all whitespace, not just spaces.
It will also replace tabs with spaces.
* This will be used to solve the TODO in CheckMailboxesCommand::Process()
when the initial message sizes/flags are retrieved.
* Also fixed imap_tester build.
* Most things are in place now, we just try to download the body to the
wrong file, as the final location is currently unknown.
* Added local only kPartialMessage flag for mails, but it's not being
used yet.
* Refactored new message retrieval a bit, so that the notification strings
aren't duplicated.
* The daemon now waits 30 seconds before doing the first mail check.
* CheckMailboxesCommand, and FetchHeadersCommand now inherit from SyncCommand
which will prevent new CheckMailboxesCommand to be enqueued.
* FetchHeadersCommand now only retrieves up to kMaxFetchEntries headers at
once. This gets the same TODO about scaling as the limit in
CheckMailboxesCommand when fetching the flags/UIDs. Since we already read
all new UIDs at that point, we could easily do better there, though.
* We now use the account name as destination directory.
* Turns out that an empty string is written as destination which worked
around the GetString() solution.