2002-10-30 Michael Elkins * isync.1, src/config.c, src/cram.c, src/dotlock.c, src/dotlock.h, src/imap.c, src/isync.h, src/list.c, src/maildir.c, src/main.c, src/sync.c: Updated the copyright notice to allow an exception for linking with OpenSSL, which has a non-GPL compatible license. * .cvsignore, isync.1, src/config.c, src/imap.c, src/isync.h, src/maildir.c, src/main.c, src/sync.c: Bunch 'o patches from Oswald Buddenhagen: i implemented some cool stuff (tm). first, the long missing "create server-side missing mailboxes". -C now creates both local and remote boxes; -L and -R create only local/remote. second, i implemented a 1:1 remote:local folder mapping (-1) with an optional INBOX exception (inbox/-I). the remote folder is specified with the folder keyword (or -F switch) and takes precedence over the namespace setting. the local directory with the mailboxes can now be specified on the command line, too (-M). another patch: - made the -1 switch settable permanently (OneToOne). after all, you usually define your mailbox layout once forever. removed -A, as it is semantically -a modified by -1. - cleaned up message output a bit. still, the quiet variable should be used throughout the program. at best, create some generic output function, which obeys a global verbosity level variable. - optimized + cleaned up configuration parser slightly - minor cleanups add an (almost) unique id to every uploaded message and search for it right after. i thought about using the message-id, but a) it is not guaranteed to be unique in a mailbox (imagine you edit a mail and store the dupe in the same box) and b) some mails (e.g., postponed) don't even have one. a downside of the current implementation is, that this id-header remains in the mailbox, but given that it wastes only 27 bytes per mail and removing it would mean several roundtrips more, this seems acceptable. i changed the line-counting loop to use a mmapped file instead of reading it in chunks, as it makes things simpler and is probably even faster for big mails. the amount of goto statements in my code may be scary, but c is simply lacking a multi-level break statement. :) this is the "shut up" patch. :) it makes the -q option consequent, so to say. additionally it adds an -l option which gathers all defined/found mailboxes and just outputs the list. don't ask what i need it for. ;) * src/maildir.c: fixed missing closedir() call (Joey Hess) 2002-06-27 Michael Elkins * src/imap.c: explicitly set global.pass to NULL when getpass() returns an empty string. * src/imap.c: Oswald Buddenhagen * fix imap_open() brokeness with PREAUTH (missed hunk from previous patch) 2002-06-22 Michael Elkins * src/dotlock.c, src/imap.c: fixed errors introduced by ME when hand-applying Oswald Nuddenhagen's patch. * autogen.sh, src/dotlock.c, src/imap.c, src/isync.h, src/main.c: Patch from Oswald Buddenhagen - move prompt for password to imap_open() - don't ask for global password in PREAUTH state - use socketpair() to create one full-duplex fd in tunnel mode instead of two half-duplex pipes - don't set lck.l_pid in fcntl() call (its read-only) - use F_SETLK instead of F_SETLKW to avoid infinite waiting - use "$@" in autogen.sh to get proper word expansion 2002-06-21 Michael Elkins * configure.in, src/isync.h: Fixed to compile under FreeBSD 4.6-RELEASE. Must include ndbm.h rather than db.h. 2002-06-20 Michael Elkins * Makefile.am, src/dotlock.c, src/dotlock.h, src/maildir.c: remove debian/files move dotlocking code to dotlock.c. dotlocking code fixed to ignore whether or not the lockfile exists on open(). we only care about whether fcntl() was able to lock it. 2002-06-19 Michael Elkins * src/sync.c: Don't bother uploaded messages marked deleted when we are going to expunge. * src/maildir.c, AUTHORS, src/imap.c: fixed unused var warning in imap_open() locking cleanups from Oswald Buddenhagen * don't need to stat the lockfile since it will always be size 0 * only remove lockfile when we actually succeeded in locking * Makefile.am, debian/Makefile.am, debian/changelog: Debian package cleanups from Oswald Buddenhagen 2002-06-18 Michael Elkins * README, isync.1, src/isync.h, src/maildir.c, src/main.c, src/sync.c: updated URL for project fixed segmentation fault caused by double free() when an error occurred during the IMAP transmission. fixed bug where isync could not handle a 0 value UIDVALIDITY 2002-04-19 Michael Elkins * debian/changelog, debian/rules: changed debian/rules to set DESTDIR instead of `prefix' when doing a make install. * configure.in, isync.1, isyncrc.sample, src/config.c, src/imap.c, src/isync.h, src/main.c: PREAUTH support from Oswald Buddenhagen Added Tunnel directive to allow the user to specify a shell command to run to set up an IMAP connection in place of a TCP socket (eg., to run over an SSH session). 2002-01-28 Michael Elkins * debian/changelog, ChangeLog, isync.spec.in: post 0.8 release commit * TODO, configure.in: check for dbm_open() in libc and libdb 2002-01-17 Michael Elkins * src/sync.c: don't bother renaming the message file if we are about to unlink() it 2002-01-16 Michael Elkins * AUTHORS, Makefile.am, NEWS, src/sync.c: remove tilde backup files for distclean fixed indentation added full name to AUTHORS reformated NEWS blurb for 0.8 * src/sync.c, src/maildir.c: sync_mailbox() did not update the msg struct when flags were changed, causing the expunge command to fail remove bogus strfcpy() line * ChangeLog, Makefile.am, configure.in, debian/Makefile.am: added debian build files dist target so that people can use them to build their own .deb packages without having to use CVS * debian/changelog, debian/control, debian/copyright, debian/docs, debian/rules, isync.1, src/maildir.c, src/sync.c: added debian build files fixed indentation added bug note to manpage about db file format not being architecture independent * src/sync.c, src/maildir.c: remove the uid from the db when a message is deleted from the maildir optimize db fetch/store to not copy the base filename * NEWS, TODO, configure.in, isync.1, src/config.c, src/cram.c, src/imap.c, src/isync.h, src/list.c, src/maildir.c, src/main.c, src/sync.c, ChangeLog: updated year in copyright notice the uid for each message in the maildir is now stored in a dbm database rather than the filename. this change was necessary because isync became confused if you copied a message to another folder, in which case the uid was invalid. as a result of the above change, isync now acquires a mutex on the mailbox to protect the dbm database from concurrent access. main() was reworked to continue gracefully when an error is encountered, and to always call maildir_close() so that the lock can be disabled, and the database closed. 2001-11-20 Michael Elkins * ChangeLog, Makefile.am, isync.spec.in: post 0.7-release commit * Makefile.am, NEWS, isync.1, src/isync.h, src/maildir.c, src/main.c: added --create/-C command line option to force creation of the local maildir-style mailbox if nonexistent debug.h was not included in isync_SOURCES in Makefile.am 2001-11-19 Michael Elkins * configure.in, src/config.c, src/isync.h, src/list.c, src/main.c, Makefile.am, TODO: added memory debugging code fixed memory leak in free_list() free memory associated with global settings on exit 2001-11-16 Michael Elkins * src/isync.h, src/sync.c, ChangeLog, src/cram.c, src/imap.c: remove c++ style comments use %lu and cast off_t to unsigned long in printf() 2001-11-15 Michael Elkins * NEWS, isync.1, src/config.c, src/isync.h, src/main.c, src/sync.c: Added MaxMessages patch from Eivind Eklund . config_defaults() can just use memcpy() instead of assigning each struct member individually. config_defaults() can be declared static 2001-11-14 Michael Elkins * configure.in, src/config.c: move strndup() code into config.c for less complexity change AC_REPLACE_FUNC(strndup) to AC_CHECK_FUNCS(strndup) sed expression checking for gcc-3.0 should be quoted beccause it fails under Solaris 2.7 2001-11-13 Michael Elkins * src/config.c, src/sync.c: strndup() could return a non-NULL terminated string size_t should be printed with %lu when expending tildes (~), an extra slash was inserted after the user's home directory 2001-11-12 Michael Elkins * src/isync.h, src/maildir.c, src/main.c: merge maildir_sync() and maildir_close(). the maxuid in a maildir still needs to be updated in --fast mode, and the sync code already checks to see if any changes were made to the mailbox. 2001-11-09 Michael Elkins * README: add FreeBSD to the list of tested platforms * configure.in, src/config.c, src/imap.c, src/maildir.c: update version to 0.7 detect short write in write_strip() fix compilation warnings with gcc-2.95.4 2001-10-31 Michael Elkins * configure.in, src/imap.c, src/isync.h, src/main.c, src/sync.c: set compiler warnings for gcc-3.0 as well display message with count of uploaded messages --quiet now supresses warnings in sync_mailbox() fixed compiler warnings with -Wshadow * ChangeLog, NEWS, isync.1: post 0.6 commit 2001-10-30 Michael Elkins * README, configure.in: add strndup replacement function for systems which lack it 2001-10-03 Michael Elkins * ChangeLog, Makefile.am, src/maildir.c: fixed broken code in maildir_clean_tmp() * TODO, src/maildir.c: added code to clean the tmp directory in a maildir to comply with maildir(5) * src/config.c: forgot to add code to parse the `Delete' option * src/main.c: forgot conditional #if HAVE_LIBSSL around setting of .use_imaps in main() from command line arguments * src/main.c: update Copyright printed by --help add compile time option list to --help output * NEWS, TODO, isync.1, isyncrc.sample, src/config.c, src/isync.h, src/main.c, src/sync.c: added `Delete' configuration option to force -d option sync_mailbox() didn't consider MaxSize == 0 to mean "unlimited". load_config() needs to print a newline in its error messages since next_arg() kills the newline of the line that was read out of the config file. * TODO: update TODO list with action items * src/imap.c, src/sync.c: fixed maildir message filenames to comply with the maildir(5) specification. fixed write_strip() and imap_fetch_message() to check the return code of write() and fsync() to comply with maildir(5) spec. 2001-10-02 Michael Elkins * src/main.c: the `Expunge' config directive didn't work since only the -e command line argument was consulted. * src/config.c, src/imap.c, src/isync.h: we should issue a CAPABILITY even if we aren't going to use ssl/tls so that cram-md5 auth still works. 2001-07-18 Michael Elkins * src/config.c: find_box() should attempt to expand all filenames if none of the other methods found a match. * src/isync.h, src/maildir.c, src/config.c: fixed to not expand filenames until they are used inside of maildir_open(), so that aliases are not required for simple filenames. [re: http://bugs.debian.org/102255] 2001-06-22 Michael Elkins * src/main.c: --host option didn't check for imaps: prefix 2001-06-21 Michael Elkins * src/main.c: fixed core when specifying multiple mailboxes on the command line 2001-06-18 Michael Elkins * isync.1, TODO, configure.in, src/imap.c: handle untagged responses in imap_fetch_message() so that it doesn't bomb out if new mail arrives while in the process of downloading noted in BUGS section of man page that if new mail arrives after the initial message list has been retrieved from the IMAP server, that new mail will not be fetched until the next invocation of isync. * src/config.c, src/imap.c, src/isync.h, src/main.c: isync should continue to process additional mailboxes even if there is an error with a previous mailbox. added -a (--all) flag to synchronize all mailboxes defined in ~/.isyncrc 2001-06-13 Michael Elkins * NEWS: post 0.5-release commit * ChangeLog: updated ChangeLog. removed smtppush binary. 2001-06-12 Michael Elkins * COPYING, Makefile.am, configure.in, src/main.c, AUTHORS, README: initial import 2001-02-28 Michael Elkins * src/config.c, src/imap.c: fixed compiler warnings under Solaris 2.7 2001-02-19 Michael Elkins * ChangeLog, src/cram.c, src/imap.c, src/maildir.c: rfc2595 compliance patch from Daniel Resare - CAPABILITY should be reissued after starting TLS since the previous call was not protected 2001-02-14 Michael Elkins * isync.1, src/config.c, src/imap.c, src/main.c, src/sync.c: patch from Daniel Resare : 1 giving a path to a nonexistant rc-file with the -c argument dumps core The patch adds a check to ensure that the given rc-file is accessible 2 the error messages given from failed openssl calls are bogus The handles the error from SSL_connect () correctly. The bug is understndable since the error handling in openssl is quite obfuscated. Good news is that the documentation manapges has been greatly updated in the latest version (0.9.6). See in particular err(3), ERR_get_error(3) and SSL_get_error(3). Please note that possible SSL_ERROR_SSL type errors from SSL_read() and SSL_write() is not handled. This should also be fixed. 3 connecting using the STARTTLS command with an imap server that is configured only to accept the TLSv1 protocol gives an error because isync sends an SSLv2 Hello message for backwards compability. (This is the case with the uw-imap 2000 that ships with redhat-7.0) I've read RFC2595 several times to see if it says something about compability SSL2/SSL3 hello messages but can't find anything. IMHO the correct thing to do is change the default to not use SSL2/3 compability hello when using the STARTTLS command but use it if the imaps port is used. The patch implements this change 4 repeated calls to SSL_CTX_set_options overwrites the old settings (the values needs to be ORed together) fixed in the patch patch from me@mutt.org: \Recent messages were put in the cur/ directory instead of new/ give error message when the LOGIN command fails 2001-02-01 Michael Elkins * src/imap.c: patch from Daniel Resare - don't initialize ssl support if none of use_sslv* is enabled 2001-01-26 Michael Elkins * src/imap.c, src/isync.h: include for off_t patch from "lorenzo martignoni" - fixed uploading of message to IMAP server 2001-01-24 Michael Elkins * isync.1, src/config.c, src/cram.c, src/imap.c, src/list.c, src/maildir.c, src/main.c, src/sync.c: fixed cram compilation error under bsd updated man page 2001-01-16 Michael Elkins * TODO, isync.1, src/config.c, src/imap.c, src/isync.h, src/main.c: added support for tilde (~) expansion in the `Mailbox' and `CertificateFile' configuration directives added `Maildir' configuration command to specify the default location of the user's mailboxes. If a relative path is used in a `Mailbox' command, this path is used as a prefix. 2001-01-11 Michael Elkins * configure.in, src/imap.c, src/isync.h: set imap->prefix to be the namespace prefix update version to 0.5 fixed compilation warnings in imap.c * Makefile.am, isync.1, isyncrc.sample, src/config.c, src/imap.c, src/isync.h, src/main.c, src/sync.c: broke config code into config.c added support for uploading local messages with no UID to the IMAP server added Expunge configuration option added CopyDeletedTo configuration option 2001-01-09 Michael Elkins * src/maildir.c, src/sync.c: always put changed messages in the cur/ subdirectory since they are no longer new. don't set \Seen implicitly for messages in the cur/ folder. Require the S flag on the message since Mutt will move Old (unread, but not recent) messges into cur/. 2001-01-08 Michael Elkins * Makefile.am, src/main.c: patch from Hugo Haas -c was not specified in the getopt*() calls set global password to the one the user inputs and use that as the default for remaining mailboxes 2001-01-05 Michael Elkins * configure.in: added --with-ssl-dir to specify an alternate installation of OpenSSL 2000-12-31 Michael Elkins * ChangeLog, isync.spec.in: pre 0.4 commit. updated rpm spec file * src/sync.c: display how many messages were fetched from the server * src/imap.c: fixed compilation error with no libssl support ("lorenzo martignoni" ) 2000-12-28 Michael Elkins * src/main.c: fixed config parser to accept arbitrary whitespace 2000-12-27 Michael Elkins * src/imap.c: use imap_close to terminate a connection in imap_open() * isync.1, src/imap.c, src/isync.h, src/maildir.c, src/main.c: allow leading whitespace in config files now possible to sync multiple mailboxes by specifying multiple aliases on the command line. IMAP connections are reused if possible. don't initialize ssl unless we are going to use it. 2000-12-23 Michael Elkins * src/imap.c, src/isync.h: don't use NAMESPACE unless the server supports it * Makefile.am, README, src/cram.c, src/imap.c, src/isync.h: added CRAM-MD5 authentication support. parse server capability string to determine if STARTTLS is available 2000-12-22 Michael Elkins * README, isync.1, src/imap.c, src/isync.h, src/main.c: isync-brokenservers.diff (Jeremy Katz ) adds support for disabling NAMESPACE, and disable various flavors of TLS/SSL for use with some broken IMAP servers. * src/imap.c, src/sync.c: prompt user if they wish to continue if the server's X.509 certificate can't be verified. sync_mailbox should consider uid == 0 to be "unknown" * src/main.c, src/sync.c: fixed sync_mailbox() to correctly write new messages to the local maildir box (Thomas Roessler ) * src/main.c: set default MaxSize to 0 (unlimited) invert test for password being set after getpass() call (Magnus Jonsson ) * ChangeLog, NEWS, configure.in, isync.1, isyncrc.sample, src/imap.c, src/isync.h, src/maildir.c, src/main.c, src/sync.c: added MaxSize configuration variable fixed --fast to work robustly without relying on the \Recent flag in messages 2000-12-21 Michael Elkins * src/imap.c, src/isync.h, src/maildir.c, src/sync.c: RFC822.PEEK is obsolete in RFC2060. Use BODY.PEEK[] instead, which does the same thing keep track of the uidvalidity so isync can detect if the mailbox on the server has changed since the last sync. * NEWS: updated NEWS for 0.3 release * Makefile.am, isync.spec.in: added support for building RPMS * Makefile.am, isync.1: added target for creating html version of the man page documented the imaps: prefix to the Host command * src/imap.c, src/sync.c: can't assume flag order when fetching a message. just search for the first `{' to find the message size. * isync.1, src/sync.c: added BUGS section to manpage detailing the fact that we break the maildir(5) spec by parsing the filename change message delivery to use the method described in maildir(5) * configure.in, src/main.c, src/sync.c: use getpass() to get the user's password unlink the temp file if we are unable to fetch a new message from the server. update version to 0.3 * isync.1: fixed typo in man page for --verbose option * Makefile.am, README, TODO, src/imap.c, src/isync.h, src/list.c: added generic IMAP list parser and rewrote imap_exec() to handle arbitrary data instead of hardcoded * Makefile.am, README, configure.in, src/main.c: fixes to compile cleanly under Solaris 2.7 * configure.in, isync.1, src/imap.c, src/isync.h, src/main.c: added OpenSSL support * ChangeLog, configure.in, src/main.c: config options were not case insensitive * src/imap.c, src/isync.h, src/maildir.c, src/main.c, src/sync.c: don't fetch deleted messages when expunging display number of messages that are to be deleted flags for \Recent messages were not properly fetched local messages with updated flags were not corrected renamed 2000-12-20 Michael Elkins * ChangeLog, Makefile.am: updated ChangeLog added log: rule in Makefile.am * autogen.sh: added autogen.sh to regenerate the build environment * COPYING: added missing files * isync.1, isyncrc.sample: New file. * isync.1, isyncrc.sample: initial import * TODO, src/imap.c, src/maildir.c, src/sync.c: New file. * TODO, src/imap.c, src/maildir.c, src/sync.c: initial import * AUTHORS, ChangeLog, Makefile.am, NEWS, README, configure.in, src/isync.h, src/main.c: New file. * AUTHORS, ChangeLog, Makefile.am, NEWS, README, configure.in, src/isync.h, src/main.c: initial import