Age | Commit message (Collapse) | Author | Files |
|
|
|
The "Volatile-uidnext" setting controls how sequence numbers are allocated.
By default they increase monotonically. If Volatile-uidnext is set to
"true", each new incorporated message is assigned the sequence number equal
to that of the last message increased by one. When the last message in
the mailbox is deleted, the value of UIDNEXT is recalculated and
UIDVALIDITY is increased. This follows the behavior of traditional MH
implementations.
* doc/texinfo/mu-mh.texi: Document chnges.
* include/mailutils/sys/amd.h (MU_AMD_VOLATILE_UIDNEXT): New
constant.
* libmailutils/base/amd.c (amd_expunge): Reset uidvalidity and uidnext
if MU_AMD_VOLATILE_UIDNEXT capability is set and the last message
was removed.
* libproto/mh/mh.c (_mailbox_mh_init): New mh_profile setting
"Volatile-uidnext". If set to true, it instructs mailutils to
mimic the traditional MH behavior when assigning sequence number
to the new message.
* testsuite/mbop.c (main): Use MBOP_PRE_OPEN_HOOK (if defined) as
the name of the function to call before opening the mailbox.
* libproto/mh/tests/mbop.c (mbop_pre_open_hook): New function.
If the MH environment variable is set, take its value as the name
of the mh_profile and read settings from it.
* libproto/mh/tests/Makefile.am: Add uidvol.at
* libproto/mh/tests/atlocal.in: Unset MH.
* libproto/mh/tests/testsuite.at: Include uidvol.at
* libproto/mh/tests/uidvol.at: New file.
|
|
This happens automatically for plaintext mailboxes, but needs to
be done explicitly for directory-based ones.
* libmailutils/base/amd.c (amd_set_uidvalidity): Reset the UIDNEXT
* testsuite/mbop.c: New command: uidvalidity_reset
|
|
(See also 6e0fb32ec8)
|
|
|
|
* configure.ac: Select a suitable interface for closing all file
descriptors greater than or equal to a chosen one.
* include/mailutils/daemon.h (mu_daemon): New proto.
* include/mailutils/util.h (mu_close_fds): New proto.
* lib/daemon.c: Removed.
* lib/Makefile.am: Remove daemon.c
* libmailutils/base/Makefile.am: Add closefds.c
* libmailutils/base/closefds.c: New file.
* libmailutils/base/daemon.c: Rename to libmailutils/base/pidfile.c
* libmailutils/base/daemon.c: New file.
* libmailutils/diag/bt.c: Use mu_close_fds.
* libmailutils/server/acl.c: Likewise.
* mh/mh_whatnow.c: Likewise.
* libmailutils/stream/prog_stream.c: Likewise.
* libmailutils/server/msrv.c: Use mu_daemon.
* mh/send.c: Likewise.
* mda/lib/util.c (mda_close_fds): Remove.
|
|
A bitmask of all requested event types is stored in the observable
structure. When an event is reported, mu_observable_notify first
check if the event type bit is set in that bitmap. If so, it starts
iterating over observers. That should allow us to avoid the loop in
most cases.
* include/mailutils/observer.h (mu_observable_wants): New proto.
* include/mailutils/sys/observer.h (_mu_observable): New member: types.
* libmailutils/base/observer.c (mu_observable_attach): Compute bitmask
of all types requested by attached observers.
(mu_observable_detach): Likewise.
(mu_observable_notify): Check if the event type is marked in the bitmap,
skip iteration if it is not.
(mu_observable_wants): New function.
|
|
* libproto/dotmail/tests/Makefile.am: Build mbop from local source.
* libproto/maildir/tests/Makefile.am: Likewise.
* libproto/mbox/tests/Makefile.am: Likewise.
* libproto/mh/tests/Makefile.am: Likewise.
* libproto/dotmail/tests/mbop.c: New file.
* libproto/maildir/tests/mbop.c: New file.
* libproto/mbox/tests/mbop.c: New file.
* libproto/mh/tests/mbop.c: New file.
Rename mbox.c files in libproto libraries to avoid confusion with the eponymous format.
* libproto/imap/mbox.c: Rename to mailbox.c.
* libproto/imap/Makefile.am: Update.
* libproto/maildir/mbox.c: Rename to maildir.c
* libproto/maildir/Makefile.am: Update.
* libproto/mailer/mbox.c: Rename to mailbox.c
* libproto/mailer/Makefile.am: Update.
* libproto/mh/mbox.c: Rename to mh.c.
* libproto/mh/Makefile.am: Update.
* libproto/pop/mbox.c: Rename to mailbox.c
* libproto/pop/Makefile.am: Update.
|
|
* libproto/mbox/mboxrb.c (scan_message_begin): Use a single scan
format for parsing all possible variants of the date/time.
|
|
This is spurious as it can be enabled by the debug.line-info
configuration directive.
|
|
The value stored in the memory location pointed to by the endp argument
has changed. On the MU_ERR_PARSE error, it is (as earlier) the position
in input where conversion stopped. On the MU_ERR_FORMAT, however, it
is the character in fmt where the format error was detected.
* libmailutils/datetime/scantime.c (peek_state): Return MU_ERR_FORMAT
if mu_list_tail fails (the list is empty). This reflects unbalanced
closing parenthesis or bracket.
(scan_recovery): fix algorithm.
(mu_scan_datetime): %Z handles both abbreviated time-zones and
time-zones as hour offset from GMT.
Improve error handling.
On MU_ERR_PARSE error, point *endp to the character in input where
conversion stopped.
On MU_ERR_FORMAT error, point it to the character in fmt, where the
format error was detected.
* libmailutils/tests/scantime.c: Improve error handling.
* libmailutils/tests/scantime.at: More testcases.
|
|
* include/mailutils/sys/dotmail.h (mu_dotmail_message): New
member: mark.
(mu_dotmail_message_reconstruct): Change signature.
* libproto/dotmail/dotmail.c (mu_dotmail_flush_tracker): Change
type of the ref member.
(tracker_next_ref): Rewrite.
(dotmail_tracker_sync): Rewrite.
(dotmail_mailbox_copy_unchanged): Rewrite.
* libproto/dotmail/message.c (dotmail_message_copy_with_uid)
(mu_dotmail_message_reconstruct): Rewrite.
* libproto/dotmail/tests/delete.at: Rewrite.
|
|
* include/mailutils/datetime.h (mu_timezone_offset): New proto.
* libmailutils/datetime/scantime.c: New conversion: %Z (timezone
abbreviation).
* libmailutils/datetime/parsedate.y (mu_timezone_offset): New function.
Returns time offset in seconds corresponding to the given timezone
abbreviation.
* include/mailutils/sys/mboxrb.h (mu_mboxrb_hdr): Remove unneeded
enum.
(mu_mboxrb_message): Remove env_date_start,
New member "date" holds the string representation of the envelope
timestamp in normalized form - ctime(3), UTC.
* libproto/mbox/mboxrb.c (scan_message_finalize): New function.
(scan_message_begin): New function. When initializing the
message, timestamps in obsolete forms are converted to normalized
representation.
(mboxrb_rescan_unlocked): Use scan_message_finalize and
scan_message_begin.
* libproto/mbox/message.c (mboxrb_envelope_date): Get normalized
timestamp from the date member,
* libproto/mbox/tests/env.at: Reflect the above changes.
|
|
* libproto/mbox/mboxrb.c: Request that the From_line be preceded by
an empty line.
|
|
* NEWS: update
* configure.ac: Revert 9763fd4a.
* include/mailutils/registrar.h: Likewise.
* libproto/Makefile.am: Likewise.
* libmailutils/stream/stream.c (mu_stream_size): Fix size calculation
in case of line and full buffering scheme.
* libmailutils/stream/streamcpy.c (mu_stream_copy_nl): Change semantics.
Ensure that the copied data ends with two newline characters. Append
them if necessary.
* testsuite/mbop.c: New commands: message_lines and message_size.
* libproto/mbox/mboxrb.c (mboxrb_mailbox_init_stream): Always add
MU_STREAM_READ permission.
Use the same flags for mu_mapfile_stream_create and
mu_file_stream_create.
(mboxrb_rescan_unlocked): Count terminating newline as part of the
message.
(mailbox_append_message): Make sure each message ends with an empty
line.
(mboxrb_tracker_sync): Update mailbox mesg_count.
(mboxrb_flush_temp): Truncate the temporary stream to the new size.
(mboxrb_flush_unlocked): Clear all modifications only in FLUSH_UIDVALIDITY
mode.
(mboxrb_message_copy_with_uid): Fix message_end computation. Use
mu_stream_copy_nl to copy message body.
(mu_mboxrb_message_reconstruct): Update ref on return.
* po/POTFILES.in: Update.
* mail/copy.c (append_to_file): Use mu_stream_stat_buffer to compute
statistics.
* mail/mail.c: Allow for opening read-only mailboxes.
* libproto/mbox/tests/body.at: Fix the expected byte count.
* libproto/mbox/tests/qget.at: Likewise.
* libproto/mbox/tests/delete.at: Add more tests.
* mail/tests/align.at: Fix the expected byte and line count.
* mail/tests/hold.at: Likewise.
* mail/testsuite/mail/read.exp: Likewise.
* mail/testsuite/mail/tag.exp: Likewise.
* mail/testsuite/mail/z.exp: Likewise.
* mail/tests/copy04.at: Don't use line count and size in comparison.
* mail/testsuite/mail/write.exp: Use regexps instead of exact strings
for the same reason.
* pop3d/testsuite/pop3d/read.exp: Fix the expected byte count.
* readmsg/tests/all.at: Expect extra newline in output.
* readmsg/tests/hdr.at: Likewise.
* readmsg/tests/nohdr.at: Likewise.
* readmsg/tests/twomsg.at: Likewise.
* readmsg/tests/weed.at: Likewise.
* sieve/tests/redirect.at: Fix the expected byte count.
* sieve/tests/reject.at: Expect extra newline in output.
* mh/inc.c (incmbx): Parse truncate and nomoveto URL parameters prior
to opening the mailbox. If notruncate is requested, open the mailbox
read-only.
* mh/mh_format.c (str_compress_ws): Fix copying between overlapping
memory regions.
* libtests/Makefile.am: Remove lstuid tests.
* libtests/testsuite.at: Likewise.
* libtests/lstuid.c: Remove.
* libtests/lstuid00.at: Remove.
* libtests/lstuid01.at: Remove.
* libtests/lstuid02.at: Remove.
* libtests/mime.at: Fix the expected byte count.
* imap4d/tests/IDEF0956.at: Fix the expected byte count.
* map4d/tests/fetch.at: Likewise.
* imap4d/tests/append00.at: Remove X-* headers and Status from the mbox
prior to comparison.
* imap4d/tests/append01.at: Likewise.
* libproto/mbox: Remove old code. Replace it with mboxrb.
* mail/tests/nohome.at: Update lines/sizes.
* mail/testsuite/mail/folder.exp: Likewise.
* mail/testsuite/mail/tag.exp: Likewise.
* mail/testsuite/mail/z.exp: Likewise.
* mda/mda/tests/mda.at: Fix shell quoting.
* mda/putmail/tests/putmail.at: Remove extra newline from the expectation.
Eliminate X-IMAPbase and X-UID from the resulting mailbox.
* mda/tests/mda.sh: Eliminate X-IMAPbase and X-UID from the output.
* pop3d/testsuite/pop3d/read.exp: Fix expected lines/sizes
* readmsg/tests/hdr.at: Fix extra whitespace.
* sieve/tests/action.at: Eliminate X-IMAPbase and X-UID. Fix extra
whitespace in the expected From_ line.
* sieve/tests/addheader.at: Likewise.
* sieve/tests/pipeact.at: Likewise.
|
|
* libproto/mboxrb/mboxrb.c (mboxrb_open): Propagate failure to
open the stream to the return code.
* libproto/mboxrb/tests/notify.at: Use cat to create test inbox
|
|
|
|
* include/mailutils/sys/mboxrb.h (mu_mboxrb_message_ref): Remove.
(mu_mboxrb_message_reconstruct): Change prototype.
* libproto/mboxrb/mboxrb.c (mu_mboxrb_flush_tracker) <ref>: Change type
to size_t *.
(tracker_next_ref): Return the refereced message.
(mboxrb_tracker_sync): Rewrite.
(mboxrb_mailbox_copy_unchanged): Update.
(mailbox_append_message): Place exactly one empty line between two
messages.
* libproto/mboxrb/message.c (mboxrb_message_copy_with_uid): Ref
argument is struct mu_mboxrb_message *.
(mu_mboxrb_message_reconstruct): Likewise.
* libproto/mboxrb/tests/delete.at: Check number of messages after
deletion.
* libproto/mboxrb/tests/append.at: Expect extra newline.
|
|
* include/mailutils/sys/mboxrb.h (mu_mboxrb_message): New member: mark
* libproto/mboxrb/mboxrb.c (mu_mboxrb_message_ref): New members:
from_length, env_sender_len, env_date_start.
* libproto/mboxrb/message.c (mboxrb_rescan_unlocked): Update dmp->scan.
Fix NULL dereference.
(mboxrb_rescan): Don't update dmp->scan, see above.
(mailbox_append_message): Write out envelope; use FROMRB filter.
(mboxrb_tracker_sync): Rewrite using mark/sweep technique.
* libproto/mboxrb/tests/Makefile.am: Add new tests.
* libproto/mboxrb/tests/testsuite.at: Include new tests.
* libproto/mboxrb/tests/append.at: New test.
* libproto/mboxrb/tests/delete.at: New test.
* libproto/mboxrb/tests/qget.at: New test.
* libproto/mboxrb/tests/uidnext.at: New test.
* libproto/mboxrb/tests/uidvalidity.at: New test.
|
|
* configure.ac: New format: mboxrb
* include/mailutils/filter.h (mu_fromrb_filter): New extern.
* include/mailutils/registrar.h (mu_mboxrb_record): New extern.
(mu_register_all_mbox_formats)
(mu_register_local_mbox_formats): Add mu_mboxrb_record.
* libmailutils/filter/filter.c (mu_filter_get_list): Add mu_fromrb_filter
* libproto/Makefile.am [MU_COND_SUPPORT_MBOXRB]: Add mboxrb
* bootstrap.conf: Remove special handling for testsuite/maildir (fixes
1d846d2d92).
* testsuite/mbop.c: Implement the -r (--read-only) option.
* include/mailutils/sys/Makefile.am: Add mboxrb.h
* include/mailutils/sys/mboxrb.h: New file.
* libmailutils/filter/Makefile.am (libfilter_la_SOURCES): Add fromrb.c
* libmailutils/filter/fromrb.c: New file.
* libmailutils/tests/Makefile.am: New file.
* libmailutils/tests/fromrb.at: New file.
* libmailutils/tests/testsuite.at: New file.
* libproto/mboxrb/Makefile.am: New file.
* libproto/mboxrb/mboxrb.c: New file.
* libproto/mboxrb/message.c: New file.
* libproto/mboxrb/tests/.gitignore: New file.
* libproto/mboxrb/tests/Makefile.am: New file.
* libproto/mboxrb/tests/atlocal.in: New file.
* libproto/mboxrb/tests/attr.at: New file.
* libproto/mboxrb/tests/autodetect.at: New file.
* libproto/mboxrb/tests/body.at: New file.
* libproto/mboxrb/tests/count.at: New file.
* libproto/mboxrb/tests/env.at: New file.
* libproto/mboxrb/tests/header.at: New file.
* libproto/mboxrb/tests/testsuite.at: New file.
|
|
* include/mailutils/sys/dotmail.h (mu_dotmail_mailbox): New member
stream_flags.
* libproto/dotmail/dotmail.c (dotmail_mailbox_init_stream): Translate
MU_STREAM_APPEND to MU_STREAM_RDWR.
(dotmail_rescan_unlocked,dotmail_rescan): Check actual stream flags,
not the mailbox ones.
(dotmail_flush_unlocked): Remove check for MU_STREAM_APPEND.
* libproto/dotmail/tests/append.at: Test appends in append mode.
* testsuite/mbop.c: New option -a (--append).
|
|
* include/mailutils/sys/dotmail.h (mu_dotmail_mailbox):
New members: x_imapbase_off and x_imapbase_len.
* libproto/dotmail/dotmail.c: Format X-IMAPbase header with fixed
width to avoid rewriting entire mailbox only to make the new header
fit to its place in the first message.
|
|
* include/mailutils/sys/amd.h (_MU_AMD_PROP_UIDNEXT): New define.
(MU_AMD_PROP): Remove.
(MU_AMD_F_PROP): New flag.
(_amd_data): New member: flags.
Remove next_uid
(amd_reset_uidvalidity): Change return type.
(amd_update_uidnext,amd_alloc_uid): New protos.
* include/mailutils/sys/dotmail.h (mu_dotmail_mailbox): New member
uidvalidity_changed.
* libmailutils/base/amd.c (_amd_prop_create): Set MU_AMD_F_PROP flag
if the prop file exists.
(amd_initial_scan): New function.
(amd_get_uidvalidity, amd_set_uidvalidity)
(amd_uidnext): Rewrite using amd_initial_scan.
(amd_reset_uidvalidity): Return int.
(amd_update_uidnext,amd_alloc_uid): New functions.
* libproto/dotmail/dotmail.c (dotmail_close): Flush UID parameters
if uidvalidity_changed is set.
(dotmail_flush): Take three-state mode as its third argument.
(dotmail_flush_unlocked): Likewise. If operating in FLUSH_UIDVALIDITY
mode, clear all other modifications to the messages in the mailbox.
Clear uidvalidity_changed on success.
(dotmail_expunge, dotmail_sync): Update call to dotmail_flush.
(dotmail_alloc_next_uid): Set uidvalidity_changed.
(dotmail_rescan_unlocked): Check if the assigned UID is greater than
the previously assigned one and less than the UIDNEXT value.
Raise uidvalidity_changed if UIDs were re-allocated.
(mu_dotmail_mailbox_uid_setup): Set uidvalidity_scanned.
* libproto/dotmail/tests/Makefile.am: Add new test.
* libproto/dotmail/tests/testsuite.at: Likewise.
* libproto/dotmail/tests/uidnext.at: New test.
* libproto/maildir/mbox.c: Use amd_update_uidnext to synchronize the
computed and predicted uidnext value.
(maildir_next_uid): Remove.
* libproto/maildir/tests/Makefile.am: Add new test.
* libproto/maildir/tests/testsuite.at: Likewise.
* libproto/maildir/tests/uidnext.at: New test.
* libproto/mh/mbox.c (_mh_next_seq): Remove function.
(mh_scan0): Use amd_update_uidnext to synchronize the
computed and predicted uidnext value.
* libproto/mh/tests/Makefile.am: Add new test.
* libproto/mh/tests/testsuite.at: Likewise.
* libproto/mh/tests/uidnext.at: New test.
|
|
* imap4d/search.c (node_false): New constant.
(parse_simple_key): Report error only if mu_msgset_parse_imap returns
MU_ERR_PARSE. Otherwise, add node_false to the tree.
(evaluate_node): Handle node_false.
|
|
* libproto/maildir/mbox.c (maildir_scan_unlocked): Assign next UID
to the message before moving it from new to cur.
* libproto/maildir/tests/new.at: New test.
* libproto/maildir/tests/Makefile.am: Add nre test.
* libproto/maildir/tests/testsuite.at: Likewise.
|
|
|
|
|
|
* libproto/mh/mbox.c: Include limits.h
* testsuite/mbox2dir.c (next_name_from_file): *scanf %m modifier
isn't common enough yet. Rewrite using fgets + realloc.
|
|
The subcommand converts names in maildirs created by earlier versions of
mailutils to the new format.
* NEWS: Update.
* doc/texinfo/programs/mailutils.texi: Document maildir_fixup
* mu/libexec/Makefile.am: Build maildir_fixup subcommand.
* mu/libexec/maildir_fixup.c: New file.
* mu/libexec/mu.h (common_options): New extern.
* include/mailutils/cli.h (MU_CLI_OPTION_CONF_PROGNAME): New constant.
* libmailutils/cli/simple.c (MU_CLI_OPTION_PROG_NAME)
(MU_CLI_OPTION_PROG_NAME)
(MU_CLI_OPTION_PROG_DOC)
(MU_CLI_OPTION_BUG_ADDRESS)
(MU_CLI_OPTION_PACKAGE_URL)
(MU_CLI_OPTION_EXTRA_INFO)
(MU_CLI_OPTION_HELP_HOOK)
(MU_CLI_OPTION_VERSION_HOOK)
(MU_CLI_OPTION_PROG_DOC_HOOK)
(MU_CLI_OPTION_NEGATION)
(MU_CLI_OPTION_SPECIAL_ARGS): Allow for NULL argument.
(MU_CLI_OPTION_CONF_PROGNAME): New code
|
|
* include/mailutils/mailbox.h (mu_mailbox_uidvalidity_reset): New proto.
* include/mailutils/sys/mailbox.h (_mu_mailbox): Replace the
_uidvalidity member with two function pointers: _get_uidvalidity and
_set_uidvalidity.
* libmailutils/mailbox/mailbox.c (mu_mailbox_uidvalidity_reset): New
function.
* libmailutils/base/amd.c: Initialize the two methods.
* libproto/dotmail/dotmail.c: Likewise.
* libproto/mbox/mbox.c: Likewise.
* libproto/imap/mbox.c: Initialize the _get_uidvalidity field.
* mh/sortm.c: Reset the uidvalidity on success.
* mh/tests/sortm.at: Check that the uidvalidity changed after sorting
|
|
Testsuites use mbox2dir to create the requested directory-based
mailbox from the mbox source.
|
|
* testsuite/mbop.c: Implement notification mode.
* comsat/tests/testsuite.at: Fix mh qid.
* libproto/dotmail/dotmail.c (dotmail_append_message): Lock the
monitor before and unlock it after the operation.
* libproto/dotmail/tests/notify.at: New file.
* libproto/dotmail/tests/Makefile.am: Add notify.at
* libproto/dotmail/tests/testsuite.at: Include notify.at.
* include/mailutils/sys/amd.h (cur_msg_file_name): Change signature.
* libmailutils/base/amd.c: Use amd->cur_msg_file_name with 0 as its second
argument to get qid.
* libproto/maildir/mbox.c (maildir_cur_message_name): Take three
argument, second one specifying whether an absolute or relative
filename is requested.
All uses changed.
* libproto/maildir/tests/notify.at: New file.
* libproto/maildir/tests/Makefile.am: Add notify.at
* libproto/maildir/tests/testsuite.at: Include notify.at
* libproto/mh/mbox.c (_mh_cur_message_name): Take three
argument, second one specifying whether an absolute or relative
filename is requested.
All uses changed.
* libproto/mh/tests/notify.at: New file.
* libproto/mh/tests/Makefile.am: Add notify.at
* libproto/mh/tests/testsuite.at: Include notify.at
|
|
* libmailutils/base/amd.c (amd_get_attr_flags): Scan the message
if AMD does not report MU_AMD_STATUS capability.
* libproto/mh/mbox.c (mh_qfetch): Fix,
* libproto/mh/Makefile.am (SUBDIRS): Add tests.
* libproto/mh/tests/.gitignore: New file.
* libproto/mh/tests/Makefile.am: New file.
* libproto/mh/tests/append.at: New file.
* libproto/mh/tests/atlocal.in: New file.
* libproto/mh/tests/attr.at: New file.
* libproto/mh/tests/autodetect.at: New file.
* libproto/mh/tests/body.at: New file.
* libproto/mh/tests/count.at: New file.
* libproto/mh/tests/delete.at: New file.
* libproto/mh/tests/envelope.at: New file.
* libproto/mh/tests/header.at: New file.
* libproto/mh/tests/qget.at: New file.
* libproto/mh/tests/testsuite.at: New file.
* libproto/mh/tests/uid.at: New file.
* libproto/mh/tests/uidvalidity.at: New file.
|
|
The attributes that have no corresponding info letters are
encoded in the 'a' name attribute as a string of mailutils
status flags, e.g.:
1284628225.M17468P3883Q0.localhost,a=FO,u=1:2,S
Meaning: MU_ATTRIBUTE_READ (from the info letter 'S'),
MU_ATTRIBUTE_FLAGGED (attr. 'F') and MU_ATTRIBUTE_SEEN (attr. 'O').
* libproto/maildir/mbox.c (maildir_message_alloc): Parse the
'a' attribute.
(maildir_subdir_scan): Don't force MU_ATTRIBUTE_SEEN on existing
messages.
(maildir_message_fixup): Fixup the (original) MU_ATTRIBUTE_SEEN
attribute.
* libproto/maildir/tests/attfixup.at: Update.
* libproto/maildir/tests/attr.at: Update.
|
|
* include/mailutils/attribute.h (mu_attribute_string_to_flags): New proto.
(mu_string_to_flags): Mark as deprecated.
(mu_attribute_flags_to_string): New proto.
* libmailutils/mailbox/attribute.c (mu_string_to_flags): Rename to
mu_attribute_string_to_flags.
(mu_attribute_flags_to_string): New function.
* libmailutils/base/amd.c: Use mu_attribute_string_to_flags instead of
mu_string_to_flags.
* libmailutils/mailbox/msgscan.c: Likewise. * libproto/dotmail/message.c: Likewise.
* libproto/pop/mbox.c: Likewise.
|
|
* libproto/maildir/tests/Makefile.am: Add autodetect.at.
* libproto/maildir/tests/testsuite.at: Include autodetect.at.
* libproto/maildir/tests/autodetect.at: New file.
* testsuite/mbop.c: Fix exit code for --detect.
|
|
* libproto/dotmail/tests/.gitignore: Update.
* libproto/dotmail/tests/Makefile.am: Remove dm_detect, dm_mesg and
dm_qget, build mbop instead.
* testsuite/mbop.c: Implement the detect mode.
* libproto/dotmail/tests/dm_detect.c: Remove.
* libproto/dotmail/tests/dm_mesg.c: Remove.
* libproto/dotmail/tests/dm_qget.c: Remove.
* libproto/dotmail/tests/append.at: Use mbop.
* libproto/dotmail/tests/autodetect.at: Use mbop.
* libproto/dotmail/tests/count.at: Use mbop.
* libproto/dotmail/tests/delete.at: Use mbop.
* libproto/dotmail/tests/qget.at: Use mbop.
* libproto/dotmail/tests/recent.at: Use mbop.
* libproto/dotmail/tests/testsuite.at: Use mbop.
* libproto/dotmail/tests/uidvalidity.at: Use mbop.
* libproto/dotmail/tests/unseen.at: Use mbop.
|
|
* include/mailutils/attribute.h (MU_ATTRIBUTE_FORWARDED): New constant.
(mu_attribute_is_forwarded, mu_attribute_set_forwarded)
(mu_attribute_unset_forwarded): New prototypes.
(MU_STATUS_BUF_SIZE): Update definition.
* libmailutils/mailbox/attribute.c (mu_attribute_is_forwarded)
(mu_attribute_set_forwarded)
(mu_attribute_unset_forwarded): New functions.
* libproto/maildir/mbox.c (info_map): Implement the 'P' flag.
|
|
* include/mailutils/sys/amd.h (amd_reset_uidvalidity): New proto.
* libmailutils/base/amd.c (amd_reset_uidvalidity): New function.
* libproto/maildir/mbox.c (maildir_scan_unlocked): Use
amd_reset_uidvalidity.
|
|
* testsuite/mbop.c: Use mu_cli_simple for option handling.
Use the -m option to pass the mailbox file name (or URL).
Mark qget as not requiring message selection.
|
|
* .gitignore: Update.
* include/mailutils/sys/amd.h (MU_AMD_IMAPBASE): Remove.
* libmailutils/base/amd.c (amd_scan_message): Remove obsolete code.
* libproto/maildir/mbox.c (maildir_message_cmp): Bugfixes.
* testsuite/Makefile.am: Add mbop.c to distribution.
* testsuite/mbop.c: Implement qget.
* testsuite/mbox2dir.c (maildir_generate_name): Fix typo.
(main): Skip From_ line before copying.
* libmailutils/tests/Makefile.am (wsp_SOURCES): Remove.
* libproto/maildir/tests/Makefile.am: Add new tests.
* libproto/maildir/tests/append.at: New file.
* libproto/maildir/tests/attr.at: New file.
* libproto/maildir/tests/body.at: New file.
* libproto/maildir/tests/count.at: Update.
* libproto/maildir/tests/delete.at: New file.
* libproto/maildir/tests/envelope.at: New file.
* libproto/maildir/tests/header.at: New file.
* libproto/maildir/tests/qget.at: New file.
* libproto/maildir/tests/testsuite.at: Include new tests.
* libproto/maildir/tests/uid.at: New file.
* libproto/maildir/tests/uidvalidity.at: New file.
|
|
* libmailutils/tests/tesh.c (mu_tesh_read_and_eval): Print fixed
prompt if attached to a terminal.
* libproto/maildir/Makefile.am (SUBDIRS): Add tests.
* libproto/maildir/mbox.c (flags_to_info): Be sure to format each
flag only once.
(maildir_scan_unlocked): Save updated properties.
* testsuite/.gitignore: Add mbox2dir.
* testsuite/Makefile.am: Build mbox2dir.
* testsuite/mbop.c: New file.
* testsuite/mbox2dir.c: New file.
* libproto/maildir/tests/.gitignore: New file.
* libproto/maildir/tests/Makefile.am: New file.
* libproto/maildir/tests/atlocal.in: New file.
* libproto/maildir/tests/attfixup.at: New file.
* libproto/maildir/tests/count.at: New file.
* libproto/maildir/tests/testsuite.at: New file.
* libproto/maildir/tests/uidfixup.at: New file.
|
|
This rewrite aims to speed up maildir manipulations and to fix the
problem with storing the uids and uidvalidity attributes.
Uidvalidity value is stored in the .mu-prop file, as it was done
previously. UID of each message is encoded in its file name
between the unique prefix and the info part. Overall structure
of the message file name is:
uniq [ ',' attrs ] ':2,' info
where uniq is the unique prefix, info is the attribute flags, and attrs
is a comma-delimited list of attribute=value pairs. The 'u' attribute
holds the UID. Unrecognized attributes are ignored.
To speed up the access and avoid unnecessary memory allocations, maildir
access is reimplemented using the *at() function calls (openat instead
of open, etc).
* libproto/maildir/folder.c: Rewrite.
* libproto/maildir/maildir.h: Rewrite.
* libproto/maildir/mbox.c: Rewrite.
|
|
* libproto/dotmail/dotmail.c (dotmail_rescan_unlocked): Reset uidvalidity
if the UIDs are to be reinitialized.
|
|
This starts a series of commits whose purpose is to clean up the
mess with the uid and uidvalidity attributes.
The way these attributes are stored depends on the mailbox type. The
libmailutils library contained some historical left-overs that assumed
that the X-Imapbase header of the first message in the mailbox contained
the value of the uidvalidity and next uid. These left-overs are removed.
* include/mailutils/message.h (mu_message_scan): Remove uidvalidity.
* libmailutils/mailbox/msgscan.c: Remove special handling for the
X-Imapbase header.
* libmailutils/base/amd.c (_amd_message_save)
(amd_scan_message): Remove special handling for X-Imapbase.
|
|
* NEWS: Update.
* configure.ac: Version 3.10.90
* include/mailutils/cstr.h (mu_version_string_parse)
(mu_version_string_cmp): New protos.
* libmailutils/string/Makefile.am (libstring_la_SOURCES): Add
version.c.
* libmailutils/string/version.c: New file.
* include/mailutils/sys/amd.h (_amd_message): Remove the orig_flags
member. All uses changed.
(MU_AMD_PROP): New capability.
* include/mailutils/url.h (MU_AUTODETECT_ACCURACY_MAX): New constant.
* libmailutils/base/amd.c (_amd_prop_create): Raise MU_AMD_PROP if
the prop file exists.
* libmailutils/base/schemeauto.c: New values for the
MU_AUTODETECT_ACCURACY environment variable: default, fast, and max.
* libmailutils/property/mhprop.c (_mh_prop_fill): Fix diagnostic
message.
* libproto/maildir/mbox.c: Fix incorrect letter to attribute mapping.
* libproto/mh/mbox.c: Remove uses of orig_flags.
* libmailutils/base/registrar.c (mu_registrar_lookup_url): Fall back
to the default registrar if the url doesn't contain explicit scheme,
the file it references does not exist, and the default record is a
local one.
|
|
* include/mailutils/attribute.h: Document message attributes.
* libmailutils/imapio/flags.c (_imap4_attrlist): \Seen corresponds
to MU_ATTRIBUTE_READ.
|
|
* libproto/maildir/mbox.c (maildir_message_cmp): Compare
seconds, microseconds and number of deliveries, in that
order. If all match (shouldn't happen), resort to lexicographical
comparison.
|
|
|
|
* libmailutils/base/amd.c (amd_msg_lookup): Always store the index
of the memory slot, as described in the comment. This was broken in
1274d937 in a fit of overcorrectness.
|