aboutsummaryrefslogtreecommitdiffstats
path: root/camel/providers
Commit message (Collapse)AuthorAgeFilesLines
* Changed the descriptions for mh, mbox, and maildir to be moreJeffrey Stedfast2001-01-111-3/+3
| | | | | | | | | 2001-01-10 Jeffrey Stedfast <fejj@helixcode.com> * providers/local/camel-local-provider.c: Changed the descriptions for mh, mbox, and maildir to be more "user-friendly". svn path=/trunk/; revision=7373
* New header to prevent recursive #include problemsDan Winship2001-01-111-0/+39
| | | | | | | * providers/imap/camel-imap-types.h: New header to prevent recursive #include problems svn path=/trunk/; revision=7368
* New header to prevent recursive #include problemsDan Winship2001-01-118-9/+14
| | | | | | | | | | | | | | | | | * providers/imap/camel-imap-types.h: New header to prevent recursive #include problems * providers/imap/*.h: Replace some #includes with #include "camel-imap-types.h", remove typedefs that were moved to camel-imap-types.h * providers/imap/*.c: Add #includes to make up for #includes removed from .h files * providers/imap/Makefile.am (libcamelimapinclude_HEADERS): Add camel-imap-types.h svn path=/trunk/; revision=7367
* New class function, parallel to camel_folder_sync. (The defaultDan Winship2001-01-111-0/+18
| | | | | | | | | | | | | | | * camel-store.c (camel_store_sync): New class function, parallel to camel_folder_sync. (The default implementation just calls camel_folder_sync on each cached folder.) * providers/imap/camel-imap-store.c (get_folder_info): Call camel_store_sync before doing anything else so that the IMAP server and Camel are working from the same data. Don't ask the server for the unread message count of the current folder, since UW will return often-incorrect cached data, and we can calculate it without talking to the server anyway. svn path=/trunk/; revision=7365
* Mostly IMAP changes. Use the NAMESPACE extension (whereDan Winship2001-01-103-153/+262
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | available). Deal with servers that don't return LIST flags in response to LSUB (like UW) to get rid of the "not a selectable folder" error messages in the UI. Take advantage of the \Marked and \Unmarked flags to try to speed up the folder scan by not doing STATUS on unmarked folders. Some further tweaks on the shape of the resulting folder tree in various situations... * camel-store.h: Remove the (read) message_count, since nothing uses it, and we can speed up IMAP a bit this way. * camel-store.c (camel_folder_info_build): Redo this a bit to make it more useful for IMAP since that's the only thing that uses it. * camel-remote-store.c (camel_remote_store_connected): Public function to check if the store is connected, and try to connect it if it's not. (remote_send_string, remote_send_stream, remote_recv_line): Use that. * providers/imap/camel-imap-store.c (camel_imap_store_finalize): fix up for changes. (camel_imap_store_init): Initialize subscribed_folders to NULL rather than an empty hash table. (imap_connect): Get the list of subscribed folders here. If the server doesn't claim that any of them are either Marked or Unmarked, then assume that it doesn't do that for LSUB and remember that for later. If the server supports the NAMESPACE extension and the user didn't specify a namespace, use the server-provided one. (imap_disconnect): Free the list of subscribed folders, and the namespace. (get_folder): check camel_remote_store_connected (get_folder_info): check camel_remote_store_connected. Add a bunch of new cleverness. If we learned that the server doesn't do LSUB usefully, do a bunch of LISTs by hand. Then, if we're getting unread counts, only do it for folders that weren't listed as Unmarked. Also, deal with namespaces that end with the separator character, and update for changes to camel_folder_info_build. (folder_subscribed): Add a g_return_val_if_fail. (subscribe_folder, unsubscribe_folder): check camel_remote_store_connected. * providers/nntp/camel-nntp-store.c (build_folder_info, build_folder_info_from_grouplist, nntp_store_get_folder_info): Don't fill in message_count since it doesn't exist any more. svn path=/trunk/; revision=7343
* Kill off a long-hated Camel kludge: "empty" URLs andDan Winship2001-01-104-65/+15
| | | | | | | | | | | | | | | | | | | | | | | | query_auth_types_generic. * camel-url.c: Remove "empty" from CamelURL. (camel_url_new): No longer set it. (camel_url_to_string): Treat "" as equivalent to NULL for authmech. (Unrelated change, but it simplifies some stuff with the new config dialog.) * camel-service.c (camel_service_new): Remove url->empty check: if the URL isn't valid, we don't create the service. (camel_service_query_auth_types): No longer need to switch between generic and connected variants. * providers/smtp/camel-smtp-transport.c (query_auth_types): * providers/pop3/camel-pop3-store.c (query_auth_types): * providers/nntp/camel-nntp-store.c (nntp_store_query_auth_types): * providers/imap/camel-imap-store.c (query_auth_types): * camel-remote-store.c (remote_query_auth_types): Remove generic version, rename connected version. svn path=/trunk/; revision=7327
* Dont try and unref a messageinfo that wasn't there, and use the right freeNot Zed2001-01-061-6/+27
| | | | | | | | | | | | 2001-01-06 Not Zed <NotZed@HelixCode.com> * providers/vee/camel-vee-folder.c (vee_folder_build_folder): Dont try and unref a messageinfo that wasn't there, and use the right free function too. Modified patch from Iain. (vee_move_message_to): New method, call the real folders' move_message_to method. svn path=/trunk/; revision=7278
* oops. commit-oDan Winship2001-01-051-509/+0
| | | | svn path=/trunk/; revision=7252
* Fix two problems in figuring out server-expunged messages.Dan Winship2001-01-051-2/+1
| | | | | | | * providers/imap/camel-imap-folder.c (imap_rescan): Fix two problems in figuring out server-expunged messages. svn path=/trunk/; revision=7251
* Fix two problems in figuring out server-expunged messages.Dan Winship2001-01-051-0/+509
| | | | | | | * providers/imap/camel-imap-folder.c (imap_rescan): Fix two problems in figuring out server-expunged messages. svn path=/trunk/; revision=7247
* Initialize the exists variable so that we don't do random things if theChristopher James Lahey2001-01-041-1/+1
| | | | | | | | | | 2001-01-03 Christopher James Lahey <clahey@helixcode.com> * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Initialize the exists variable so that we don't do random things if the imap server misbehaves. svn path=/trunk/; revision=7235
* Finishing the removal of these directories.Chris Lahey2001-01-032-2/+0
| | | | svn path=/trunk/; revision=7220
* Removed these directories since they're unused.Christopher James Lahey2001-01-0325-4611/+0
| | | | | | | | | 2001-01-02 Christopher James Lahey <clahey@helixcode.com> * providers/maildir/, providers/mbox/, providers/mh/: Removed these directories since they're unused. svn path=/trunk/; revision=7219
* fix off-by-oneDan Winship2001-01-031-1/+1
| | | | svn path=/trunk/; revision=7217
* IMAP randomness.Dan Winship2001-01-037-404/+102
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * providers/imap/camel-imap-stream.[ch]: Remove. To be replaced. * providers/imap/Makefile.am (libcamelimapinclude_HEADERS): Remove camel-imap-stream.h * providers/imap/camel-imap-utils.c (imap_parse_flag_list): Take a char ** instead of char *, to return the position at the end of parsing like the string parsing functions. (imap_parse_string_generic): New function to parse a string, nstring, or astring. (imap_parse_nstring, imap_parse_astring): Now macros (imap_parse_string): Added * providers/imap/camel-imap-folder.h: Remove the "exists" field from CamelImapFolder. * providers/imap/camel-imap-folder.c: Remove unused include of camel-imap-stream.h. (camel_imap_folder_init): Remove no-longer-relevant summary initialization. (camel_imap_folder_new): Update for imap_parse_flag_list change, exists removal, and imap_rescan. (imap_rescan): New function that does most of the work of the old imap_refresh_info, but taking "exists" as an argument instead of getting it from the folder. Also calls camel_imap_folder_changed to do the summary updating and signalling, rather than duplicating that code. (imap_refresh_info): Just call imap_rescan (using the size of the folder summary as "exists"). (imap_update_summary): Update for imap_parse_flag_list change (camel_imap_folder_changed): Update for "exists" change. svn path=/trunk/; revision=7216
* Fix the APOP check to not crash on servers that don't return anyDan Winship2000-12-281-7/+9
| | | | | | | | * providers/pop3/camel-pop3-store.c (connect_to_server): Fix the APOP check to not crash on servers that don't return any information on the +OK greeting line. svn path=/trunk/; revision=7184
* (camel_imap_folder_changed): Make sure we unref the summary lookup.Michael Zucci2000-12-241-0/+1
| | | | svn path=/trunk/; revision=7156
* clean up a stubborn and hard to remove imap_folder->summary.Michael Zucci2000-12-242-5/+4
| | | | svn path=/trunk/; revision=7155
* Minor compilation fixes.Michael Zucci2000-12-242-14/+6
| | | | svn path=/trunk/; revision=7151
* Lock the command channel while searching. (imap_body_contains): IfNot Zed2000-12-2425-923/+746
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-12-24 Not Zed <NotZed@HelixCode.com> * providers/imap/camel-imap-search.c (imap_body_contains): Lock the command channel while searching. (imap_body_contains): If performing a whole uid search, then add references to our own summary items, dont look it up in the folder. This way they can't vanish unexpectedly. * providers/imap/camel-imap-folder.h (CamelImapFolder): Added a private field. * providers/imap/camel-imap-private.h: Added lock for imap searches. * Merge from camel-mt-branch. * providers/imap/camel-imap-folder.c (imap_update_summary): Merge fix, use the folder->summary. (imap_get_message_flags, imap_set_message_flags, imap_get_message_user_flag, imap_set_message_user_flag): Removed again. (camel_imap_folder_init): Setup private data/lock. (imap_finalize): Free private data/search lock. (imap_search_free): Lock the search_lock. (imap_search_by_expression): Lock the search lock when using the search object. Also copy/ref hte summary, rather than getting it directly. (imap_refresh_info): Free any info lookups. Use folder->summary not imap_folder->summary. And lock around commands. svn path=/trunk/; revision=7150
* When getting the top-level folder list, include INBOX even if it's notDan Winship2000-12-231-12/+19
| | | | | | | | | | * providers/imap/camel-imap-store.c (get_folder_info): When getting the top-level folder list, include INBOX even if it's not subscribed. Don't show subscribed folders outside of the given namespace. Do a better job of pruning the namespace from the returned folder tree. svn path=/trunk/; revision=7131
* New CamelFolderSearch subclass that just reimplements body_contains (usingDan Winship2000-12-227-441/+211
| | | | | | | | | | | | | | | | | | * providers/imap/camel-imap-search.c: New CamelFolderSearch subclass that just reimplements body_contains (using the IMAP SEARCH command). All other kinds of searching are done against the local summary. * providers/imap/camel-imap-folder.c (imap_search_by_expression): Use a CamelImapSearch to do searching. * providers/imap/camel-imap-utils.c (imap_translate_sexp, etc): No longer needed. * camel-folder-search.h: Add missing CAMEL_FOLDER_SEARCH_TYPE #define svn path=/trunk/; revision=7119
* Oops. Don't do "FETCH 1:0" when the folder is empty.Dan Winship2000-12-201-31/+40
| | | | | | | | | | * providers/imap/camel-imap-folder.c (imap_refresh_info): Oops. Don't do "FETCH 1:0" when the folder is empty. (imap_protocol_get_summary_specifier): Request RFC822.SIZE too. (imap_update_summary): Parse RFC822.SIZE and add it to the summary. svn path=/trunk/; revision=7088
* Add "guint32 server_flags" to CamelImapMessageInfo to keep track of theDan Winship2000-12-203-62/+89
| | | | | | | | | | | | | | | | | | * providers/imap/camel-imap-summary.c: Add "guint32 server_flags" to CamelImapMessageInfo to keep track of the last known message flag state on the server. (message_info_save, message_info_load): Save/load the server_flags. * providers/imap/camel-imap-folder.c: Make this use CamelFolderChangeInfo and emit folder_changed notifications as it gets them rather than only on refresh_info. (imap_refresh_info): Notice flags that get cleared on the server as well as flags that get set. (imap_update_summary): Remove a comment that never actually applied to the committed code. svn path=/trunk/; revision=7086
* Change the semantics of fmt: Now %S (capital S) means an IMAP "string",Dan Winship2000-12-195-21/+175
| | | | | | | | | | | | | | | | | | | | | * providers/imap/camel-imap-command.c (camel_imap_command): Change the semantics of fmt: Now %S (capital S) means an IMAP "string", (which can be sent as either a quoted string or a literal). If the server supports LITERAL+, these will be sent as extended literals (which don't require any special escaping). Otherwise they'll be sent as quoted strings (and it now properly deals with " or \ in the string). (imap_command_strdup_vprintf): Utility routine that does the real work for the functionality mentioned above. * providers/imap/camel-imap-utils.c (imap_quote_string): Turns a string into a proper IMAP "quoted string". * providers/imap/camel-imap-store.c: * providers/imap/camel-imap-folder.c: Use %S instead of "%s" where appropriate. svn path=/trunk/; revision=7070
* change a bunch of IS_CAMEL_* macros to CAMEL_IS_*Dan Winship2000-12-1431-31/+31
| | | | | | | * Namespace cleanup: change a bunch of IS_CAMEL_* macros to CAMEL_IS_* svn path=/trunk/; revision=6972
* add #include <sys/types.h> for freebsd.Chris Toshok2000-12-141-0/+1
| | | | | | | | | 2000-12-13 Chris Toshok <toshok@helixcode.com> * providers/imap/camel-imap-auth.c: add #include <sys/types.h> for freebsd. svn path=/trunk/; revision=6971
* Added #ifndef NO_WARNINGS around a #warning. Added (void) to the prototypeChristopher James Lahey2000-12-133-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-12-12 Christopher James Lahey <clahey@helixcode.com> * camel-folder-summary.c, camel-folder-summary.h: Added #ifndef NO_WARNINGS around a #warning. Added (void) to the prototype and declaration of camel_message_info_new. * camel-mime-message.h: Added an include for camel-mime-filter-bestenc.h. Added a prototype for camel_mime_message_set_best_encoding. Reformatted prototypes to line up. * camel-mime-parser.c: Added #if d(!)0 around the states string lookup table since it's only used in debugging output. * camel-seekable-substream.c (stream_flush): Added a cast. * providers/imap/camel-imap-auth.c: Added #include <netinet/in.h>. * providers/imap/camel-imap-folder.c (imap_refresh_info): Made uid and flags const to fix warnings here. * providers/imap/camel-imap-store.c (get_folder_info): Made p const to fix warnings here. svn path=/trunk/; revision=6954
* Remove use of linewrap filter. Headers are now wrapped. encode_8bitMichael Zucci2000-12-111-12/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * providers/smtp/camel-smtp-transport.c (smtp_data): Remove use of linewrap filter. Headers are now wrapped. encode_8bit already enforces a 998 octet line limit. (smtp_data): Also fixed a memleak, we always have to unref our own copy of the filters. We also dont need to remove them manually, so dont bother. The type's an int too ... * camel-internet-address.c (internet_unformat): When scanning past quotes, remove them also. (camel_internet_address_format_address): If the name contains "'s, or ','s then strip and quotes and wrap the whole lot in one set of quotes. * Makefile.am (noinst_HEADERS): We dont want to install camel-charset-map-private.h, ever. There are probably other similar files ..? * camel-mime-part.c (write_to_stream): Fold header lines appropriately as we're writing them out. * camel-mime-utils.c (header_fold): Add a new argument, headerlen, tells it how long the associated header token is. (header_fold): Also,k check to see if we need to fold first, using a better algorithm, and also accept already-folded lines, and re-process accordingly. (rfc2047_decode_word): Add a little buffer space to iconv output for shifting overheads? (rfc2047_decode_word): finish the iconv with a null call, to flush shift state, etc. (rfc2047_encode_word): Attempt to break up long words into appropriately sized, independent, chunks. See rfc2047, section 2. (header_decode_mailbox): Dont add in extra spaces into the output if we are decoding adjacent encoded words. We can only guess this case, as some broken mailers put encoded words inside quoted words. (header_encode_phrase): Dont merge words if they are going to end up too long. Also change back ot only merge consecutive words of the same type. e.g. 'foo. blah fum.' -> "foo." blah "fum." or 'iam an. idiot' -> iam "an." idiot svn path=/trunk/; revision=6902
* Hrm, we actually want to call set_header, not add_header here, probablyNot Zed2000-12-111-4/+34
| | | | | | | | | | | | | | | | | | | | | 2000-12-11 Not Zed <NotZed@HelixCode.com> * camel-medium.c (camel_medium_set_header): Hrm, we actually want to call set_header, not add_header here, probably explains some duplicate X-Evolution headers i was trying to track down. Also changed the api to handle a NULL value == remove the header. * providers/local/camel-maildir-summary.c (maildir_summary_decode_x_evolution): Always return error, we dont use x-evolution for maildir. (maildir_summary_encode_x_evolution): Always return a NULL string, likewise. (maildir_summary_add): Hook in here, since the _new function doesn't have access to any flags from the caller. If we have flags, then update the filename again. Not ideal, but should work. svn path=/trunk/; revision=6897
* We want to bitwise-or the server and cached flags here so that we keep theJeffrey Stedfast2000-12-071-2/+6
| | | | | | | | | | | 2000-12-06 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (imap_refresh_info): We want to bitwise-or the server and cached flags here so that we keep the flags that we have set locally and set any additional flags that a parallel connection may have set. svn path=/trunk/; revision=6834
* If the data wrapper fails to be written to the stream, unref it and theJeffrey Stedfast2000-12-061-0/+5
| | | | | | | | | | 2000-12-05 Jeffrey Stedfast <fejj@helixcode.com> * providers/smtp/camel-smtp-transport.c (smtp_data): If the data wrapper fails to be written to the stream, unref it and the filters before returning. svn path=/trunk/; revision=6804
* (imap_refresh_info): Fix a really really really dumb bug.Dan Winship2000-12-061-1/+1
| | | | svn path=/trunk/; revision=6801
* use BODY.PEEK[] rather than RFC822, so the message doesn't get marked asDan Winship2000-12-061-2/+2
| | | | | | | | * providers/imap/camel-imap-folder.c (imap_get_message): use BODY.PEEK[] rather than RFC822, so the message doesn't get marked as \Seen. svn path=/trunk/; revision=6800
* Fix the check for "flags aren't actually changing".Dan Winship2000-12-063-7/+22
| | | | | | | | | | | | | | | * providers/imap/camel-imap-folder.c (imap_set_message_flags): Fix the check for "flags aren't actually changing". * providers/local/camel-local-folder.c (local_set_message_flags, local_set_message_user_flag, local_set_message_user_tag): Don't emit message_changed unless the flags actually changed. * providers/nntp/camel-nntp-folder.c (nntp_folder_set_message_flags): Don't emit message_changed unless the flags actually changed. Fix the check for marked as seen. svn path=/trunk/; revision=6797
* stream_flush does make sense for a substream afterall (if you have aNot Zed2000-12-051-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-12-05 Not Zed <NotZed@HelixCode.com> * camel-seekable-substream.c (stream_flush): stream_flush does make sense for a substream afterall (if you have a stream_write). (stream_write): Implement this. (stream_seek): Change the STREAM_END behaviour to be more sane. if bounded go from the end of the bound, if unbounded, go from the end of the parent stream. * camel-stream-mem.c (stream_read): Dont return error if reading past the end of data, just return 0. * camel-stream-fs.c (camel_stream_fs_init): Initialise the stream to be unbound. (stream_seek): Fix the logic when seeking from the end of an unbounded stream. (camel_stream_fs_new_with_fd): If the fd is invalid (-1), then return NULL immediately. (stream_seek): Range check a SEEK_END so it fits within bound_start. 2000-12-01 Not Zed <NotZed@HelixCode.com> * tests/lib/folders.c (test_folder_basic): New test to perform basic store operations on folders (taken from folders/test1). (test_folder_message_ops): Tkane the guts out of folders/test2. svn path=/trunk/; revision=6790
* i18n-ize exception strings. (get_name): And here. (_send_to): Here too.Jeffrey Stedfast2000-12-051-49/+37
| | | | | | | | | | | | | | | | | 2000-12-04 Jeffrey Stedfast <fejj@helixcode.com> * providers/smtp/camel-smtp-transport.c (smtp_connect): i18n-ize exception strings. (get_name): And here. (_send_to): Here too. (smtp_helo): And here and there... (smtp_mail): And around the square... (smtp_rcpt): Saying catch me if you can... (smtp_data): And here three. (smtp_rset): And here. (smtp_quit): And finally here. svn path=/trunk/; revision=6785
* Don't g_return_if_fail if the service is already disconnected. JustDan Winship2000-12-021-2/+4
| | | | | | | | | | | | * camel-service.c (camel_service_disconnect): Don't g_return_if_fail if the service is already disconnected. Just return. * providers/pop3/camel-pop3-store.c (pop3_try_authenticate): Return FALSE (don't try again) if we get CAMEL_POP3_FAIL. (pop3_connect): If we don't succeed, disconnect. svn path=/trunk/; revision=6756
* Fix a possible bug where 'name' could be uninitialized.Jeffrey Stedfast2000-12-011-1/+1
| | | | | | | | | | | | | | 2000-11-30 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-store.c (parse_list_response_as_folder_info): Fix a possible bug where 'name' could be uninitialized. * camel-folder-summary.c (camel_message_info_new): New convenience function, doesn't do much but it sure makes code cleaner to read. (camel_message_info_new_from_header): This one makes my life heaven. svn path=/trunk/; revision=6752
* Handle the case where the summary failed to load - clear the summary andJeffrey Stedfast2000-12-011-2/+6
| | | | | | | | | | | 2000-11-30 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-summary.c (camel_imap_summary_new): Handle the case where the summary failed to load - clear the summary and then set the dirty bit so that it is sure to save later. Is this the right fix? svn path=/trunk/; revision=6743
* Remove assertion that content is there, when it no longer can be.Not Zed2000-11-3014-101/+298
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-11-30 Not Zed <NotZed@HelixCode.com> * providers/local/camel-mbox-folder.c (mbox_get_message): Remove assertion that content is there, when it no longer can be. * camel-folder-summary.h: Removed pos/bodypos/endpos from camelmeessagecontentinfo. (CamelMessageFlags): Added an attachments flag. * providers/local/camel-local-summary.h: Added load virtual function. * tests/lib/folders.c (test_message_info): Accessors. (test_folder_message): " * camel-folder-thread.c (get_root_subject): Fix accessors. (dump_tree_rec): " * camel-folder-search.c (camel_folder_search_execute_expression): Accessors for messageinfo. (search_match_all): " (search_header_contains): " (search_header_contains): " (search_body_contains): " (camel_folder_search_execute_expression): Use mepool_strdup. * providers/local/camel-mbox-summary.c (summary_update): Accessors for messageinfo. (mbox_summary_sync_full): " * providers/local/camel-mh-summary.c (remove_summary): Accessors for messageinfo. (mh_summary_check): " (mh_summary_sync_message): " (mh_summary_sync): " * providers/local/camel-mh-folder.c (mh_append_message): Use accessor for uid. * providers/local/camel-local-summary.c (local_summary_decode_x_evolution): Use accessor to uid. (local_summary_encode_x_evolution): Likewise. (message_info_new): And here. (camel_local_summary_load): Call virtual load function. (local_summary_load): Default load function, load summary. (camel_local_summary_load): Check file exists before trying to load. (camel_local_summary_construct): Turn off building content info! (CAMEL_LOCAL_SUMMARY_VERSION): Bump, since we dont build content info anymore. (camel_local_summary_load): After a successful load/check, do a save too so we dont have to go through it again randomly. * providers/nntp/camel-nntp-utils.c (get_XOVER_headers): Use accessors for messageinfo. * providers/nntp/camel-nntp-folder.c (nntp_folder_get_uids): Use accessors for uid. * providers/imap/camel-imap-folder.c (imap_refresh_info): Use accessor for uid. (imap_sync): Likewise. (imap_get_uids): Likewise. (imap_update_summary): And here. * providers/vee/camel-vee-folder.c (vfolder_remove_match): Use accessor for uid. (vfolder_add_match): Handle estrv stuff. (vfolder_change_match): Accessor for uid. (get_real_message): " (vee_get_uids): " (vee_folder_build): " + estrv. (vee_folder_build_folder): " * providers/local/camel-maildir-folder.c (maildir_append_message): Use acccessors for uid's. (maildir_get_message): Here too. * providers/local/camel-maildir-summary.c (camel_maildir_summary_init): Setup the string count for us. (message_info_new): Access the string array directly. (message_info_free): No need to free string if using array. (camel_maildir_summary_info_to_name): Use accessor to get to uid. (remove_summary): And here. (maildir_summary_check): Likewise. (maildir_summary_sync): And here. (maildir_summary_load): Load up a cache of uid->filename mappings before loading the actual summary file. This saves us having to waste the diskspace storing the filenames in the summary itself, and also helps us sync the summary better on load. (message_info_load): If we have the load_map setup, and the uid exists, then set the filename cache from it, and update the flags from the name, incase our summary mismatches it. * camel-folder-summary.c (camel_folder_summary_init): Setup string count for compressed info record. An optional compile mode which stores all strings for a given messageinfo into a packed array, which should save 36-50 bytes/record. (camel_folder_summary_info_new): Init the string array. (message_info_new): Set the string array items, as required. (message_info_load): And here too. (message_info_save): Use accessors to get to strings. (message_info_free): Free strings as one. (camel_message_info_dup_to): Handle packed array case. (camel_folder_summary_add): Use accessors. And pack the strv before storing it. (summary_assign_uid): New function to assign a unique uid to a message, if it doesn't have one. (camel_folder_summary_add): Call assign_uid instead of doing it ourselves. (camel_folder_summary_info_new_from_parser): " (camel_folder_summary_info_new_from_message): " (camel_folder_summary_encode_string): constify. (camel_folder_summary_encode_token): " (summary_build_content_info_message): Fix accessors to messageinfo. (CAMEL_FOLDER_SUMMARY_VERSION): Bumped, for removal of contentinfo->pos data. (camel_folder_summary_info_new_from_parser): Calculate the size based on the parser position, not the removed contentinfo stuff. (camel_folder_summary_info_new_from_message): Remove size stuff. (camel_folder_summary_offset_content): Removed, no longer means anything. (content_info_new): (content_info_load): (content_info_save): (summary_build_content_info): Remove stuff for contentinfo->pos*. (summary_build_content_info): Take a msginfo argument, set attachments flag if we find any attachments. (summary_build_content_info_message): set attachments flag if we find any attachments. (camel_folder_summary_info_new_from_parser): Always scan the content info, even if we dont save it. (camel_folder_summary_info_new_from_message): And here too. (summary_build_content_info): Only create the contentinfo stuff if we have it turned on, otherwise just parse and discard. (summary_build_content_info_message): Likewise. svn path=/trunk/; revision=6731
* Fix some off-by-one-ness.Dan Winship2000-11-301-3/+3
| | | | | | | | | | * providers/imap/camel-imap-command.c (imap_read_untagged): Fix some off-by-one-ness. * camel-stream-buffer.c (stream_read): Fix another bug found in previously-unused code here. svn path=/trunk/; revision=6718
* Builddir != srcdir loving.Ettore Perazzoli2000-11-291-1/+1
| | | | svn path=/trunk/; revision=6712
* Add a missed unref.Not Zed2000-11-296-8/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-11-29 Not Zed <NotZed@HelixCode.com> * tests/message/test2.c (main): Add a missed unref. * camel-stream-mem.c (camel_stream_mem_set_buffer): We must set ourselves as the owner of the byte-array. Weird, someone has modified this file (its been reindented), but i can't see any changelogs ... * tests/lib/messages.c (content_finalise): Fix memleak in tester, free byte array when our content object is deleted. * camel-folder-search.c (camel_folder_search_finalize): Yeah great, so the sexp is a gtk object, not a camel object. Isn't that going to be fun to fix? * camel-session.c (camel_session_finalise): Free the storage path. * providers/local/camel-local-store.c (camel_local_store_init): If store->folders is setup, free it first, then overwrite. Hmm, this seems a bit crappy to me. * camel-store.c (camel_store_init): Dont setup store->folders if its already setup. * camel-exception.c (camel_exception_setv): Removed a memleak. no need to strdup after a strdup_printf!!! * camel-address.c (camel_address_finalize): Free the address ptrarray, once finished. * providers/local/camel-local-folder.c (local_finalize): Make sure we dont leave the folder locked on close. (local_finalize): Free summary/search. * providers/local/camel-mh-summary.c (mh_summary_next_uid_string): Small memleak, always free name after using it. * camel-mime-part.c (set_content_object): Free txt after setting the header. * providers/local/camel-maildir-summary.c (maildir_summary_check): Fix a memleak, close the dir after scanning new. (message_info_free): Added so we can free the filename cached in the messageinfo. (camel_maildir_summary_finalise): Free the hostname. * tests/folder/test[12].c (main): Clear out camel-test before starting. * providers/local/camel-mbox-summary.c (mbox_summary_sync_quick): Because encode_x_evolution folds the line (sigh, because encode_param does, unlike every other function in camel-mime-utils), unfold the encoded result before comparing. (mbox_summary_sync_quick): Another small memleak, free xevnew once finished with it. * camel-mime-utils.c (header_decode_quoted_string): Removed a redundant check for c=0. (header_unfold): New function to un-fold headers. * providers/local/camel-local-summary.c (local_summary_encode_x_evolution): some problems with encoding tags, using the wrong output strings. (local_summary_encode_x_evolution): We dont need to append a ; either, param_list_format_append() will do it for us. ` svn path=/trunk/; revision=6711
* Don't try to free things if they haven't been set yet.Dan Winship2000-11-291-2/+4
| | | | | | | * providers/pop3/camel-pop3-folder.c (pop3_finalize): Don't try to free things if they haven't been set yet. svn path=/trunk/; revision=6698
* send NULL so we don't have to clear the exceptionJeffrey Stedfast2000-11-291-2/+1
| | | | svn path=/trunk/; revision=6696
* Clear the exception if EHLO fails before trying HELO in the cases whereJeffrey Stedfast2000-11-291-0/+2
| | | | | | | | | | 2000-11-28 Jeffrey Stedfast <fejj@helixcode.com> * providers/smtp/camel-smtp-transport.c (smtp_connect): Clear the exception if EHLO fails before trying HELO in the cases where the SMTP provider doesn't announce its ESMTPness. svn path=/trunk/; revision=6695
* Set the info size's properly, oops!Not Zed2000-11-289-51/+191
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-11-28 Not Zed <NotZed@HelixCode.com> * providers/local/camel-maildir-summary.c (camel_maildir_summary_init): Set the info size's properly, oops! * tests/lib/folders.[ch]: Folder testing helpers. * tests/folder/test2.c: Test basic message ops on folders. * tests/folder/test1.c (main): Test basic folder ops on (local) stores. * providers/local/camel-local-provider.c (camel_provider_module_init): Removed some debug. * providers/local/camel-maildir-folder.c (camel_maildir_folder_class_init): fix parent class. * providers/local/camel-mh-folder.c (camel_mh_folder_class_init): Fix parent class (damn cut & paste). * providers/local/camel-maildir-store.c (get_folder): Call parent impl. (camel_maildir_store_class_init): Fix parent class setup. (delete_folder): Check the folder exists before trying to delete it. (delete_folder): Try and make the delete operation atomic/rollback failures. e.g. if one directory isn't empty, then create the other empty ones back. Also clear the tmp directory fully first. * providers/local/camel-mbox-store.c (get_folder): Call parent impl. (camel_mbox_store_class_init): parent class is camel_local_store, not camel_folder, oops. (delete_folder): Return an error if it doesn't exist, rather than covering it up. * providers/local/camel-mh-store.c (get_folder): Call parent impl. (camel_mh_store_class_init): fix parent class setup. (delete_folder): Error if it doesn't exist now. * camel-folder.c (camel_folder_move_message_to): (camel_folder_copy_message_to): Added warnings as these functions are going to be removed later. * camel-store.c (camel_store_get_root_folder): Fix for an early api change. We want CAMEL_STORE_FOLDER_CREATE, not TRUE, since its a flag. (camel_store_get_default_folder): And here too. * providers/local/camel-local-store.c (xrename): Handle renaming folders differently to renaming files. (get_default_folder_name): local stores dont have a default folder, so make it so. Or at least, it doesn't seem to make sense to have one. (get_root_folder_name): Same for root. (get_folder): Added parent implementation, that makes sure the service path exists, if we are creating a new folder (but doesn't create the folder). 2000-11-27 Not Zed <NotZed@HelixCode.com> * providers/local/camel-local-store.c (xrename): Fixed races. Use link/unlink, rather than rename, to properly detect overwriting another file. And allow some files to be missing. * providers/Makefile.am: Removed mh, mbox, added local, to the default. svn path=/trunk/; revision=6693
* add scan = scan->next; to avoid infinite loopRadek Doulik2000-11-281-0/+1
| | | | | | | | | | 2000-11-28 Radek Doulik <rodo@helixcode.com> * providers/local/camel-local-summary.c (local_summary_decode_x_evolution): add scan = scan->next; to avoid infinite loop svn path=/trunk/; revision=6690
* Make this gratuitously more complicated. No wait, I mean, fix bugs. NowDan Winship2000-11-281-48/+89
| | | | | | | | | | | | | * providers/imap/camel-imap-command.c (imap_read_untagged): Make this gratuitously more complicated. No wait, I mean, fix bugs. Now fully handles NULs in the data stream (which "can't happen" but do) and also handles responses containing multiple literals. Also does less copying than the original code. * camel-stream-buffer.c (stream_read): Fix a bug that could make it lose sync and/or overrun buffers. svn path=/trunk/; revision=6688
* Remove "complete" fieldJP Rosevear2000-11-281-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-11-27 JP Rosevear <jpr@helixcode.com> * conduit/address-conduit.h: Remove "complete" field * conduit/address-conduit.c (print_local): Make it print useful debug info (print_remote): ditto (local_record_from_ecard): Make sure phone numbers get out to the pilot (ecard_from_remote_record): Set phone strings to "" if they are null (sequence_complete): unref the book view (view_cb): ref the book view (free_prepare): do nothing * backend/pas/pas-backend-file.c (pas_backend_file_book_view_free): Destroy the card lists with the rest of the view. (pas_backend_file_changes): Don't destroy the card lists here (pas_backend_file_book_view_free): Free the card/id lists in the change context here, the correct place. (pas_backend_file_changes): instead of here... 2000-11-27 JP Rosevear <jpr@helixcode.com> * conduits/todo/todo-conduit.c (free_prepare): Ditto * conduits/calendar/calendar-conduit.c (free_prepare): Adjust free_prepare to the correct signal parameters. Don't actually do anything - there is a semantic discrepancy that needs to be resolved. 2000-11-27 JP Rosevear <jpr@helixcode.com> * providers/local/.cvsignore: shush svn path=/trunk/; revision=6681
* Removed mh, mbox, added local, to the default.Not Zed2000-11-271-2/+5
| | | | | | | | 2000-11-27 Not Zed <NotZed@HelixCode.com> * providers/Makefile.am: Removed mh, mbox, added local, to the default. svn path=/trunk/; revision=6678
* Shite, -1 on error, >=0 on success. So i've just been truncating all theNot Zed2000-11-213-30/+221
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-11-21 Not Zed <NotZed@HelixCode.com> * providers/local/camel-mh-summary.c (mh_summary_sync_message): Shite, -1 on error, >=0 on success. So i've just been truncating all the messages I touched, good one zed. (mh_summary_sync_message): Sigh, and write to the right damn fd as well. (mh_summary_sync_message): Argh, and we need to compare the length of the old xev -1 to the new xev, to check if we can optimise it. * camel-folder.c (camel_folder_change_info_new): Init the pool. (camel_folder_change_info_add_source): Allocate string in the pool. (camel_folder_change_info_add_source_list): (camel_folder_change_info_add_update): No longer free the key, as it cannot be yet. (change_info_add_uid): Add a new arg, copy, telling it whether to copy the uid argument or not, and copy using mempool_strdup. (change_info_cat): Tell add_uid to copy the string. (camel_folder_change_info_add_update): Call add_uid directly. (change_info_remove): Call add_uid directly, with no copy, and dont free the key. (change_info_free_update): No longer required since we dont malloc the keys. (camel_folder_change_info_add_uid): Fix for add_uid change. (camel_folder_change_info_remove_uid): (camel_folder_change_info_change_uid): (change_info_clear): No longer needed, just set the size to 0 on the array directly. (camel_folder_change_info_clear): Empty the arrays directly, and flush the mempool too, and also clear uid_source, incase anyone was silly enough to call us in the wrong order. (camel_folder_change_info_free): Dont bother clearing the array's contents, just free the pool and throw away all the indexes. * camel-folder.h: Added a mempool to CamelFolderChangeInfo to store the uid's we get. * camel-folder-search.c (search_match_all): If we are only matching a single info, just use that/do the search. (camel_folder_search_match_expression): New function. Matches a single message info against an expression. (camel_folder_search_init): Init a hash table used to map the returned gptrarrays' to mempools. (camel_folder_search_execute_expression): Store all of the string data in a mempool, slightly faster, less wasted space (usually),. (camel_folder_search_free_result): Check for the mempool that stores the data for the list, and free that if we have it, otherwise assume we need to use g_free() (which should only happen if the list is empty at the moment). : commented out the debugging prints. Got sick of 'executing header search' crap. * providers/vee/camel-vee-folder.c (camel_vee_folder_init): Init changes. (camel_vee_folder_finalise): Free changes. (vfolder_add_match): Simple helper to add a new matching info record. (camel_vee_folder_add_folder): Only trigger a changed event if we have changes. (vfolder_change_match): New function, changes our local vfolder info to match the source. (vfolder_add_match): Add a new info to the vfolder list. (vfolder_remove_match): Remove a no-longer matching info from the vfolder summary. (message_changed): check if the message still matches, and remove/etc as required. (camel_vee_folder_finalise, init): init/free search object. (vee_folder_build_folder): Build the changes to the folder into the changes data, as we go. (folder_changed): If the folder gave us an explicit list of changes, then process each one separately (unless there's a lot added/changed). * providers/vee/camel-vee-folder.h: Added a changes field to the folder. svn path=/trunk/; revision=6628
* Fixed to return the correct bytecount in all cases which is the real fixJeffrey Stedfast2000-11-212-6/+3
| | | | | | | | | | | | | | | | 2000-11-20 Jeffrey Stedfast <fejj@helixcode.com> * camel-remote-store.c (remote_recv_line): Fixed to return the correct bytecount in all cases which is the real fix to imap_parse_nstring. * providers/imap/camel-imap-command.c (imap_read_untagged): Again, don't use strlen for the post-data, use 'n'. * providers/imap/camel-imap-utils.c (imap_parse_nstring): Undo my previous temp-fix. svn path=/trunk/; revision=6621
* Fixes for the summary messageid changes. Hash the messageid and store it.Not Zed2000-11-218-343/+567
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-11-20 Not Zed <NotZed@HelixCode.com> * providers/nntp/camel-nntp-utils.c (get_XOVER_headers): Fixes for the summary messageid changes. Hash the messageid and store it. (get_XOVER_headers): Use camel_folder_summary_info_new() to create the summary item before adding it. * camel-folder-summary.h (CamelMessageInfo): Changed the messgae-id to be an 8 byte md5 hash, and the references list to be an array of these. * providers/local/camel-mh-summary.c (mh_summary_sync_message): New function, sync out the message info stuff. Only updates the X-Ev header if it can get away with it, otherwise writes out a whole new message. (mh_summary_sync): Added more functionality. All summary info is now written to the X-Ev header, etc, and new messages re-written if required during the sync process. * providers/local/camel-local-folder.c (local_set_message_user_flag): Set the XEVCHANGE flag. (local_set_message_user_tag): And here too. * providers/local/camel-local-summary.h: New flag CAMEL_MESSAGE_FOLDER_XEVCHANGE to indicate the XEV header has probably changed size and needs to be rewritten in whole. * camel-folder-summary.c (next_uid_string): Want this static, not const. (message_info_new): Store the references and message-id values as 64 bit, binary hashes. (message_info_load): fix for message-id/references changes. (message_info_save): Likewise. (camel_message_info_dup_to): And here. (camel_message_info_free): And here too. No longer free message_id, and simple free for references array. (CAMEL_FOLDER_SUMMARY_VERSION): Bumped file revision. (camel_folder_summary_init): Init memchunk allocators to empty. (camel_folder_summary_finalize): Free memchunk allocators if there. (message_info_new): Use the chunk allocator to allocate message info's. (camel_folder_summary_info_new): New helper to allocate the message info, and setup the memchunk if required. (content_info_alloc): Likewise for content info's. (message_info_load): Use summary_info_new_empty. (content_info_new): Use content_info_alloc. (content_info_load): " (content_info_free): Free the content info as a memchunk. (message_info_free): Free everything directly and the base as a memchunk, rather than calling camel_message_info_free(), which assumes a malloc'd array. * providers/local/camel-local-summary.c: Include ctype.h, kill a warning. (local_summary_decode_x_evolution): If we get a NULL message info, then dont try and set anything, just check for validity. (camel_local_summary_write_headers): New function to write a set of headers to an fd. (camel_local_summary_check): Added some statistic generation stuff for memory profiling. * providers/local/camel-mbox-summary.c (header_write): Changed to use stdoi functions to write out the header to a buffered stream, instead of using writev, which is apparently slow (and writing each line separately is slow anyway). (mbox_summary_sync_full): New implementation. Does things differently, doesn't use or require the content info stuff. (summary_rebuild): Dont return an error if we start scanning at the end of file. (mbox_summary_sync_full): If we are not writing out new headers, make sure we copy the From line as we go, and update frompos appropriately. (mbox_summary_sync_full): Always copy the From line from the existing one, rather than trying to make one up ourselves. (mbox_summary_sync): If we can get by with a quick-sync, then try it, if that fails, then try a full sync anyway. (mbox_summary_sync_quick): Quick sync. Only update system flags, etc. (mbox_summary_sync_full): Use the proper local summary encode_xev function. (header_evolution_decode): Removed, no longer needed. (header_evolution_encode): Same. (copy_block): No longer needed, removed. (header_write): Removed, replaced with camel_local_summary_write_headers. (mbox_summary_sync_full): Fixed for header_write change. * camel-mime-parser.c (folder_scan_step): Implement the new optional parser state HSCAN_PRE_FROM, that returns the (currently unfiltered) input data. (folder_scan_drop_step): Do the right thing for the PRE_FROM state. (camel_mime_parser_scan_from): Update the doco. (camel_mime_parser_scan_pre_from): Ok, make this behaviour optional, it simplifies a lot of loops that dont otherwise need to know about it. (folder_scan_step): Made the PRE_FROM state optional. (struct _header_scan_state): Made the bool vars 1 bit. (folder_pull_part): Free the from_line buffer if it is there. (folder_scan_skip_line): Added a new arg, can save the skpped data to a byte_array, as we go. (folder_scan_step): Fixed calls to skip_line approrpiately. Now we save the from line as we parse it. (camel_mime_parser_read): New function to read from the mime parser buffer directly. Useful if you use the parser to read the first/some headers, then need to scan the rest of the data, without needing to use a seek(), or allocate your own buffers. * camel-mime-parser.h (struct _header_state): Added a new parser state, pre-from which returns any data found before a from line during parsing (all other data can be retrieved by the caller except this). svn path=/trunk/; revision=6618
* lso make sure not to go past the end of the buffer ;-)Jeffrey Stedfast2000-11-171-1/+1
| | | | svn path=/trunk/; revision=6601
* When extracting a literal string, capture up until the end of the lastJeffrey Stedfast2000-11-171-0/+4
| | | | | | | | | | | | | | | | | | | | | 2000-11-17 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-utils.c (imap_parse_nstring): When extracting a literal string, capture up until the end of the last line - this we we don't lose any data if the byte count is off. * providers/imap/camel-imap-command.c (imap_read_untagged): Use the byte-read count to decrement the number of bytes left to read rather than using strlen. Not only does this protect against a DoS (embedded NUL chars in the literal string would make strlen inaccurate) but it also improves performace a little. * camel-remote-store.c (remote_recv_line): *Sigh* Return the number of bytes read on success rather than 0. Also don't use camel_stream_buffer_read_line since we can't get an accurate octet count. svn path=/trunk/; revision=6600
* Use the byte-read count to decrement the number of bytes left to readJeffrey Stedfast2000-11-171-5/+5
| | | | | | | | | | | | | | | | | 2000-11-17 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-command.c (imap_read_untagged): Use the byte-read count to decrement the number of bytes left to read rather than using strlen. Not only does this protect against a DoS (embedded NUL chars in the literal string would make strlen inaccurate) but it also improves performace a little. * camel-remote-store.c (remote_recv_line): *Sigh* Return the number of bytes read on success rather than 0. Also don't use camel_stream_buffer_read_line since we can't get an accurate octet count. svn path=/trunk/; revision=6599
* We should always terminate the string. No need to check outptr is inNot Zed2000-11-172-7/+4
| | | | | | | | | | | | | | | | | | 2000-11-17 Not Zed <NotZed@HelixCode.com> * camel-stream-buffer.c (camel_stream_buffer_gets): We should always terminate the string. No need to check outptr is in range, its already been checked. * providers/local/camel-mbox-summary.c (mbox_summary_sync): When we update the summary, do it from mbox_summary->folder_size, not the content info endpos (which isn't any good anymore anyway). * providers/local/camel-mbox-folder.c (mbox_append_message): Set the frompos from the current folder size, since summary_add wont have initialised it to anything useful. svn path=/trunk/; revision=6597
* Check the uid string is all digits before trying to write a 'standard'Not Zed2000-11-169-230/+307
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-11-16 Not Zed <NotZed@HelixCode.com> * providers/local/camel-local-summary.c (local_summary_encode_x_evolution): Check the uid string is all digits before trying to write a 'standard' x-ev header. * providers/local/camel-maildir-summary.c (camel_maildir_summary_info_to_name): Convert an info into a maildir name:info filename. (camel_maildir_summary_name_to_info): Convert a name:info filename into an info, and tell us if it didn't match it. (message_info_new): When creating a new filename, gets its info from the flags field. Likewise if creating from an existing file, extract the flags. (maildir_summary_sync): Remove a small memleak. Also, if our flags and that requires a filename change, perform that here. (message_info_new): Get the received date from the filename. Also, dont overwirte the uid if we have one. (maildir_summary_check): Sort the summary in received order before completion. (maildir_summary_next_uid_string): Test the name for collusions before we give it out. Retry, and if that fails, well, I guess we collide :( * providers/local/camel-mbox-folder.c (mbox_lock): Implement mbox locking. (mbox_unlock): And unlocking. (mbox_append_message): Lock the folder for write before doing anything. (mbox_get_message): Lock the folder for read before doing anything. * providers/local/camel-local-folder.c (camel_local_folder_lock): Implement something here. We handle the recursive ability but pass the locking to the folder itself. (camel_local_folder_unlock): Likewise for unlocking. (local_lock): Default - do nothing, return success. (local_unlock): Same. (local_sync): Changed slightly for locking api changes, and also, only lock around the sync process itself. * camel-lock.c: New file - utility functions for locking using different strategies and/or for locking folders safely. * Makefile.am (libcamel_la_SOURCES): Adde camel-lock.[ch] svn path=/trunk/; revision=6592
* New file - utility functions for locking using different strategies and/orNot Zed2000-11-161-4/+1
| | | | | | | | | | | 2000-11-16 Not Zed <NotZed@HelixCode.com> * camel-lock.c: New file - utility functions for locking using different strategies and/or for locking folders safely. * Makefile.am (libcamel_la_SOURCES): Adde camel-lock.[ch] svn path=/trunk/; revision=6590
* Removed local again, not quite ready.Not Zed2000-11-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-11-15 Not Zed <NotZed@HelixCode.com> * providers/Makefile.am: Removed local again, not quite ready. 2000-11-14 Not Zed <NotZed@HelixCode.com> * camel-folder-summary.c (message_info_new_from_message): Use message_info_new to create the summary from headers, instead of getting directly from the message. (format_recipients): No longer required. * providers/Makefile.am (SUBDIRS): Added local. 2000-11-11 Not Zed <NotZed@HelixCode.com> * camel-mime-parser.c (folder_push_part): Make sure 'atleast' is at least 1, always. This is possibly a temporary fix for a bad failure mode on bad multipart messages. (folder_scan_content): Go until inend, not inend+1. Changed the continuation and retry logic to be simpler and more robust. If we can't find a marker within the atleast we need, just set it to 1, and try again, rather than just going to the next smaller limit (boundary check checks the length anyway). (header_append): streamline the empty line case. And strip trailing \r's if there are any (\n's already stripped). (folder_scan_header): Reordered and cleaned up a lot. Check for continuation only once, and compress lwsp then. Assume the header buffer already has end of line's stripped, and simplify some things: Only check for end of headers once and easier. Dont check to remove end of line character Dont bother testing inptr-start if we get a boundary match - it is always zero. (folder_scan_header): Removed the unused part variable, and a few pointless assignments. (folder_scan_header): Change the end limit to be 1 higher, to make sure we get all content. (folder_scan_content): And here too. (folder_scan_header): Killed a warning. (folder_push_part): Removed a bad comment. Actually boundarylenfinal can be zero for a new message not in a multipart. So we fix that here. 2000-11-09 Not Zed <NotZed@HelixCode.com> * camel-mime-utils.c (header_decode_param_list): Renamed from header_param_list_decode. (header_param_list_decode): New external function to decode a parameter list. (header_param_list_format_append): Made public. (header_param_list_format): Another new public helper function for formatting just a param list. * camel-folder-summary.c (next_uid_string): Default implementation is the same as before. (camel_folder_summary_class_init): And set it up. * camel-folder-summary.h: Make next_uid_string a virtual function. * camel-folder.c (camel_folder_change_info_changed): New function to return true if the changeset contains any changes. svn path=/trunk/; revision=6577
* Maildir lives.Michael Zucci2000-11-1513-17/+1005
| | | | svn path=/trunk/; revision=6576
* Initial cut for local provider, to handle mh/mailbox/maildir atMichael Zucci2000-11-1522-0/+4165
| | | | | | | least. Checking in to make a backup. svn path=/trunk/; revision=6575
* put a space before a single-digit day of the month since it seems someDan Winship2000-11-111-1/+1
| | | | | | | | | * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_build_from): put a space before a single-digit day of the month since it seems some mailers are fantastically picky about this. (bugs.gnome.org #27232) svn path=/trunk/; revision=6538
* Fix error handling. (Only send a "*" to bail out of authentication if theDan Winship2000-11-101-9/+13
| | | | | | | | * providers/imap/camel-imap-auth.c (imap_try_kerberos_v4_auth): Fix error handling. (Only send a "*" to bail out of authentication if the server hasn't already bailed on us.) svn path=/trunk/; revision=6520
* Implement a complete() function, now we need one. (filter): Upgraded toNot Zed2000-11-071-8/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-11-07 Not Zed <NotZed@HelixCode.com> * camel-mime-filter-bestenc.c (complete): Implement a complete() function, now we need one. (filter): Upgraded to match rfrc2045 properly. Checks also for length of line and valid CRLF sequences. (camel_mime_filter_bestenc_get_best_encoding): Do the work of working out what is the best encoding given what we found about the stream. * camel-mime-part.c (camel_mime_part_encoding_to_string): Use a lookup table to get the encoding naem, and add the binary type. (camel_mime_part_encoding_from_string): Likewise for the reverse. * camel-mime-part.h: Added the binary encoding type, see rfc2045. * camel-mime-utils.c (header_param_list_format_append): Dont put a space before ;'s in parameter lists, makes them more readable/consistent. * camel-mime-message.c (multipart_has_8bit_parts): Cleaned up the old stuff, well removed it. (camel_mime_message_set_best_encoding): Added another argument that lets you select what you want to set the best of. i.e. for smtp transport we only need 7 bit, and dont need to optimise the charset (although of course, we should always). (find_best_encoding): Implement this feature, if we are not getting the best charset, use the one we have. (best_encoding): Set the charset on the part appropriately. Sigh, the interfaces for this are nonexistant. (find_best_encoding): Tell the bestenc filter that lf should be treated as crlf for the purposes of determining encodings. 2000-11-06 Not Zed <NotZed@HelixCode.com> * camel-charset-map.c (camel_charset_init): Init function for an iterative charset determinator. (camel_charset_step): Iterate another buffer. (camel_charset_mask): Removed, since it couldn't have worked. (camel_charset_best): Use the iterative interface to do the work. (camel_charset_best_name): Get the best name for a charset so far. * camel-mime-filter-bestenc.c: New class, a stream filter that can be used to memory-efficiently determine the best encoding and/or charset to use for a given stream of bytes. * Makefile.am (libcamelinclude_HEADERS): Added stream-null*. (libcamel_la_SOURCES): Added bestenc* * camel-stream-null.c: New class, a null-stream, that always succeeds, and never has any contents. * camel-stream.c: Minor pointless changes. Was going to do something else but changed my mind. Added trivial default implementations for all callbacks. * camel-mime-message.h: Cleaned up some old cruft. * camel-folder-summary.c (camel_folder_summary_format_address): address_list_format() no longer encodes, so we dont need to decode it. * camel-address.c (camel_address_unformat): New function, attempts to reverse the formatting process on display addresses. (camel_address_length): New function to get the number of addresses, without having to peek the structure. * camel-mime-message.c (camel_mime_message_set_from): Fix a typo. (camel_mime_message_finalize): Only unref from/reply_to if we have it. (camel_mime_message_set_recipients): New function - set the recipients as a CamelInternetAddress. This function effectively deprecates the older recipient setting functions. (camel_mime_message_add_recipient): What the hell, i'll bite the bullet. Terminate this function. The old api was ambiguious and inefficient and didn't work right anyway. (camel_mime_message_remove_recipient_address): And this one. (camel_mime_message_remove_recipient_name): And this one too. (camel_mime_message_set_recipients): If we set an empty header, then remove it from the header list. Allow a null receipient object to clear a header. (camel_mime_message_set_from): Likewise, if setting an empty from address. (camel_mime_message_encode_8bit_parts): Eeek!! camel_stream_mem_new_with_byte_array owns the byte_array we give it, so make sure we dont free any of it! (camel_mime_message_encode_8bit_parts): Infact, i'll just rewrite the whole lot, its a bit of a mess. Should really rename it and make it a little more useful too, lets see ... (best_encoding): This has a string interface? Oh boy. (camel_mime_message_foreach_part): New experimental function to iterate over all message parts. Might not remain. (camel_mime_message_has_8bit_parts): New implementation using foreach_part. Fixed a couple of problems. (find_best_encoding): New function, that finds the best encoding for a given part (will probably be moved to camel-mime-part), and also the best charset to use if it is a text part. Since one affects the other it is a two pass process, but uses streams and not memory to achieve this. (camel_mime_message_set_best_encoding): Uses the function above to configure an entire message for the best encoding possible given transport constraints. (camel_mime_message_encode_8bit_parts): Reimplemented to use the function above to perform the work. * camel-internet-address.c (camel_internet_address_format_address): Dont put <> around a lone address with no real name. (camel_internet_address_encode_address): Similarly. (internet_decode): Actually return the count of decoded addresses. (internet_unformat): Implement the unformatting routine. 2000-11-05 Not Zed <NotZed@HelixCode.com> * providers/smtp/camel-smtp-transport.c (_send_to): Changed to get the internetaddress directly, rather than having to parse it itself. * camel-address.c (camel_address_format): Added a new function which will format address, suitable for display. (camel_address_cat): Concatentate 1 camel address onto another. It is upto the caller to ensure the addresses are of compatible types. (camel_address_new_clone): New function to create a new address by copying an existing one of the same type. (camel_address_copy): New helper function to copy an address. * camel-mime-message.h (struct _CamelMimeMessage): Removed cached copy of date string. (struct _CamelMimeMessage): Added date_received info. * camel-mime-message.c (camel_mime_message_get_date_string): Removed. Nothing uses it anyway, and it is redundant. (camel_mime_message_finalize): No more date_str. (camel_mime_message_init): No more date_str, initialise date_received* (write_to_stream): Change the check for a date header. (process_header): No longer track the date_str. (camel_mime_message_get_received_date): Removed. totally invalid anyway. (camel_mime_message_get_sent_date): Removed. Redundant. The only 'date' is the sent date, the received date is just made up. (camel_mime_message_get_date): Args changed to be more consistent with utility functions. (camel_mime_message_get_date): Dont set the date when we're asked for it (if its not set by the time its written, it'll be set then). (camel_mime_message_get_date_received): Actually do 'the right thing' here, if we have a received header, use that to determine the received date. And return the data in the same format as get_date. (camel_mime_message_set_from): Changed the api to better match what we should be doing. Pass a camelinternetaddress, etc. (camel_mime_message_set_reply_to): Cahnged similarly to take an internetaddress. (camel_mime_message_get_reply_to): Likewise. (camel_mime_message_finalize): Unref the from/reply_to objects. (format_address): Removed, no longer needed. (process_header): Changed to store the from/reply_to as internetaddress's. (write_to_stream): Set the from header directly to empty, if we dont have one. Maybe we should just abort, and/or create one based on the current user. * camel-mime-utils.c (header_address_list_format): Renamed to header_address_list_encode, which is what it is actually doing. (header_address_list_format_append): Similarly. (encoding_map[]): Removed, no longer used. (header_address_list_encode_append): Take another arg, do we encode the address (for internet), or not (for display - utf8 only). (header_address_list_format): Re-added this function, but now it generates a display version only. Surprise surprise, that is all anythign needs to generate anyway. Sigh. * camel-internet-address.c (camel_internet_address_get): Return false if we get an invalid index only. (camel_internet_address_encode_address): Helper function to encode a single address for mailing. (internet_encode): Use the above function to format it. (camel_internet_address_format_address): Format a single address for display. (internet_format): Implement the display version. (camel_internet_address_class_init): Init the internet_format virtual function. (internet_cat): Implement virtual function to concatenate addresses. * camel-folder-summary.c (camel_folder_summary_info_new_from_header): new function, only build the summary info, dont add it. (camel_folder_summary_info_new_from_parser): Likewise, for new info from parser. (camel_folder_summary_add_from_parser): Cahnged to call function above to build info. (camel_folder_summary_add_from_header): Changed to call function above, to build info. (camel_folder_summary_info_free): New function to free the summary message info. (camel_folder_summary_clear): Changed to clal above to free info. (camel_folder_summary_remove): Likewise. (camel_folder_summary_add): Cleaned up the clashing uid re-assignment logic a little bit. (camel_folder_summary_decode_uint32): Fixed a typo, 01 != -1. (camel_folder_summary_decode_time_t): Return -1 on error. (camel_folder_summary_encode_off_t): New function to encode an off_t type. (camel_folder_summary_decode_off_t): And likewise for the reverse. (CAMEL_FOLDER_SUMMARY_VERSION): Bumped the summary version, since we're now encoding time/off_t's right. (summary_header_save): Use time_t encoder to save the timestamp. (summary_header_load): Likewise for decoding the timestamp. (content_info_load): Decode off_t types directly, now we can. (content_info_save): And likewise for encoding. (camel_folder_summary_add_from_message): New function, create a summary item from an existing message and add it. (camel_folder_summary_info_new_from_message): New function, create a summary item from an existing message. (summary_build_content_info_message): New function to do the dirty work of building the conent info/indexing, from a message source. (format_recipients): Format an internetaddress suitable for the summary. (message_info_new_from_message): Build a new summary item from a mime message. (content_info_new_from_message): Build a new conent info from a mime part. (camel_folder_summary_class_init): Init the new class functions. (message_info_new_from_message): Fixed for message api change. Added documentation to the functions. svn path=/trunk/; revision=6474
* Two segfault fixesPeter Williams2000-11-071-1/+1
| | | | svn path=/trunk/; revision=6472
* Set the preface/postface from the parser into the multipart object.Not Zed2000-11-041-16/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-11-04 Not Zed <NotZed@HelixCode.com> * camel-mime-part-utils.c (camel_mime_part_construct_content_from_parser): Set the preface/postface from the parser into the multipart object. * camel-multipart.c (camel_multipart_set_postface): Function to set the postface text on a multipart. (camel_multipart_set_preface): Similarly for preface text. * camel-mime-parser.c (folder_scan_content): If we scan until a boundary, then we do not include the \n that starts the boundary line in the content. (struct _header_scan_stack): Added a ByteArray to store the multipart pre/post-text as we're scanning. (folder_pull_part): Free pre/posttext if they are allocated. (folder_scan_step): Build into the pre/posttext arrays as we encounter data. (camel_mime_parser_preface): REturn the multipart preface text, if there is any scanned. (camel_mime_parser_postface): Likewise for postface text. (byte_array_to_string): helper function for above. * providers/mbox/camel-mbox-folder.c (mbox_append_message): Change the from line to be "\nFrom ..." always, so no need to check/append a \n to messages. (mbox_append_message): Open the output stream with append mode [assuming this is more efficient than seeking to the end] And dont prepend \n on the From line if its the first in the mbox. (mbox_append_message): Pass the offset of the real start of the "From " line when we perform the update (which may != 'seek') * camel-mime-filter-charset.c (complete): Removed the terminating NUL 'fix'. * camel-stream-filter.c (do_read): Added some debug. (do_flush): And here. (do_write): And here too. (do_write): ARGH!!! ARGH! Ok, so the filter stream was writing a different number of bytes than the requester was asking it to write (because of filtering, of course!). So instead of returning the true number of written bytes, we'll return what they asked us to write - unless there is an error in which case we return -1. * camel-mime-utils.c (base64_encode_close): Sigh, forgot to make it unsigned. I think this is actually a gcc bug as (48 >> 2) somehow ended up negative, when it obviously should not, even if the data load was signed. svn path=/trunk/; revision=6388
* Unbreak this.Dan Winship2000-11-041-2/+2
| | | | | | | * providers/pop3/camel-pop3-store.c (camel_pop3_store_expunge): Unbreak this. svn path=/trunk/; revision=6381
* Add an "url_flags" field to CamelProvider. Move the CAMEL_SERVICE_URL_*Dan Winship2000-11-0414-26/+21
| | | | | | | | | | | | | | | | | | | | * camel-provider.h: Add an "url_flags" field to CamelProvider. Move the CAMEL_SERVICE_URL_* defines here and remove the SERVICE_ part of the name. * camel-service.h: Remove CAMEL_SERVICE_URL_* flags and service->url_flags field. * camel-service.c (check_url, get_path): Get URL flags from service->provider, update for changed flag names. * providers/*/camel-*-provider.c: Add URL flags to provider structures. * providers/*/camel-*-{store,transport}.c, camel-remote-store.c: Remove service->url_flags initialization. svn path=/trunk/; revision=6370
* Quote foldernames when sending to the IMAP server because the folder nameJeffrey Stedfast2000-11-021-1/+1
| | | | | | | | | | 2000-11-02 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-store.c (get_folder_info): Quote foldernames when sending to the IMAP server because the folder name might contain spaces. svn path=/trunk/; revision=6344
* Merged in camel-incremental-branch.Not Zed2000-11-028-29/+66
| | | | | | | | 2000-11-02 Not Zed <NotZed@HelixCode.com> * Merged in camel-incremental-branch. svn path=/trunk/; revision=6336
* Remove old subbed folders from hash table after freeing them.Dan Winship2000-11-021-3/+11
| | | | | | | * providers/imap/camel-imap-store.c (get_folder_info): Remove old subbed folders from hash table after freeing them. svn path=/trunk/; revision=6335
* Deal correctly with namespace == ""Dan Winship2000-11-021-1/+1
| | | | | | | * providers/imap/camel-imap-folder.c (imap_get_full_name): Deal correctly with namespace == "" svn path=/trunk/; revision=6322
* Add a new argument, clean, that says whether or not to try to disconnectDan Winship2000-11-014-22/+26
| | | | | | | | | | | | | | | | | | * camel-service.c (service_disconnect): Add a new argument, clean, that says whether or not to try to disconnect cleanly. * camel-remote-store.c (remote_send_string, remote_send_stream, remote_recv_line): disconnect uncleanly on failure to prevent infinite loops when providers would normally send commands from disconnect(). Remove some unneeded CamelException goo. * providers/smtp/camel-smtp-transport.c (smtp_disconnect): * providers/pop3/camel-pop3-store.c (pop3_disconnect): * providers/nntp/camel-nntp-store.c (nntp_store_disconnect): * providers/imap/camel-imap-store.c (imap_disconnect): Don't send QUIT/LOGOUT if !clean. svn path=/trunk/; revision=6303
* Camel IMAP authentication includes (forgotten in last commit)Dan Winship2000-10-311-0/+39
| | | | svn path=/trunk/; revision=6275
* New file with code for IMAP authentication mechanisms. (Currently justDan Winship2000-10-314-84/+357
| | | | | | | | | | | | | | | | | | | | | * providers/imap/camel-imap-auth.c: New file with code for IMAP authentication mechanisms. (Currently just krb4, and without integrity/privacy protection). * providers/imap/Makefile.am: Add camel-imap-auth.[ch] and krb4 CFLAGS/LDFLAGS * providers/imap/camel-imap-store.c (connect_to_server): Split out from imap_connect. Just does the basic connect and CAPABILITY check. Redo the CAPABILITY code more robustly. (query_auth_types_connected): Do this right rather than punting to query_auth_types_generic. Check for KERBEROS_V4 if compiled with krb4 support. (query_auth_types_generic): Mention KERBEROS_V4 if compiled with krb4 support. (imap_connect): Use connect_to_server(). svn path=/trunk/; revision=6272
* Improved IMAP namespace handling: leave the namespace in theDan Winship2000-10-307-274/+297
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | folder names rather than constantly prepending it and stripping it off. Also some subscription fixes. * camel-store.c (camel_folder_info_build): Fix for the case where @top isn't in @folders. * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Add a "short_name" argument rather than figuring it out ourselves. (imap_get_full_name): Implementation of CamelFolder::get_full_name that strips off namespace so the user doesn't have to see it. (imap_append_message, imap_copy_message_to, imap_move_message_to): Use folder->full_name rather than calling camel_imap_store_get_folder_path. * providers/imap/camel-imap-utils.c (imap_parse_list_response): Update this: make @flags a bitmask and @sep a char rather than a string. Make all of the out arguments optional. Handle literals in the server response. * providers/imap/camel-imap-store.c (imap_connect): Do a better job of getting the correct dir_sep for the namespace we're using. Construct a base_url here that will be used by get_folder_info. (camel_imap_store_folder_path): Removed (imap_folder_exists): Add an argument to return the short name of the folder (parsed out of the LIST response). Update for imap_parse_list_response change. (get_folder): Update for the various other changes. (get_folder_info): Update for the various other changes. Be more consistent about the returned layout: put everything underneath the "namespace" directory, including INBOX, even if it doesn't belong there. Don't destroy the list of subscribed folders until we've actually gotten the new list. (folder_subscribed, subscribe_folder, unsubscribe_folder): Use folder_name directly rather than camel_imap_store_folder_Path. * providers/imap/camel-imap-command.c (camel_imap_command): Update for folder name changes. svn path=/trunk/; revision=6256
* Remove md5-utils.h include since it's not part of Camel any more.Dan Winship2000-10-303-4/+7
| | | | | | | | | | | | | | | | | | | | * camel.h: Remove md5-utils.h include since it's not part of Camel any more. * camel-charset-map.c: Kill some warnings. * providers/nntp/camel-nntp-grouplist.c (camel_nntp_get_grouplist_from_file, camel_nntp_grouplist_save): Clean up warnings about time_t casts. * providers/smtp/camel-smtp-transport.c: Remove unused md5-utils.h include. * providers/pop3/camel-pop3-store.c: Undefine the "_" macro defined by krb4's des.h when compiling with krb support. Fix md5-utils.h include. svn path=/trunk/; revision=6253
* build md5-utils72000-10-282-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | 2000-10-27 <jpr@helixcode.com> * Makefile.am: build md5-utils * md5-utils.c: Make part of util, get rid of camel stream util function include string.h * md5-utils.h: ditto 2000-10-27 <jpr@helixcode.com> * providers/pop3/Makefile.am: Tidy up build * providers/smtp/Makefile.am: ditto * Makefile.am: Move md5-utils.[hc] to e-util because the addressbook is going to use md5 hashes for pilot syncing. Maybe the calendar conduits as well because this is a good idea Chris had. svn path=/trunk/; revision=6234
* Fix folder listing code infinite loop.Dan Winship2000-10-261-1/+1
| | | | | | | * providers/imap/camel-imap-store.c (get_folder_info): Fix folder listing code infinite loop. svn path=/trunk/; revision=6178
* Add a "parent" field to CamelFolderInfo.Dan Winship2000-10-252-16/+21
| | | | | | | | | | | | | | | | | | | | | | * camel-store.h: Add a "parent" field to CamelFolderInfo. * camel-store.c (camel_folder_info_build): Deal with "parent" (camel_store_folder_subscribed, camel_store_subscribe_folder, camel_store_unsubscribe_folder): Add g_return_if_fails checking that the folder supports subscriptions. * providers/imap/camel-imap-store.c (folder_subscribed, subscribe_folder, unsubscribe_folder): Remove "+ 1"s since the mail subscribe UI won't prepend / to the folder names now. (get_folder_info): Clear the "parent" field of the folderinfos when removing an empty top level. * providers/nntp/camel-nntp-store.c (nntp_store_folder_subscribed, nntp_store_subscribe_folder, nntp_store_unsubscribe_folder): Remove "+ 1"s since the mail subscribe UI won't prepend / to the folder names now. svn path=/trunk/; revision=6167
* add subscribed_folders.Chris Toshok2000-10-252-4/+97
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-10-24 Chris Toshok <toshok@helixcode.com> * providers/imap/camel-imap-store.h: add subscribed_folders. * providers/imap/camel-imap-store.c (camel_imap_store_class_init): fill in vtable entries for subscription functions. (camel_imap_store_finalize): new function, so we can free up our subscribed_folders hashtable. (camel_imap_store_init): set CAMEL_STORE_SUBSCRIPTIONS in the CamelStore flags, and create our subscribed_folders hashtable. (camel_imap_store_get_type): camel_imap_store_finalize is our finalize function. (get_folder_info): if we're looking at subscribed_only, clear out the subscribed_folders hashtable, use LSUB instead of LIST, and insert folder paths (prepended by their namespace if there is one) into subscribed_folders. INBOX subscription support needs work, since we always show it, regardless of it's subscribed state. (folder_subscribed): new function. just look up the folder_path in the hashtable. (subscribe_folder): new function. use the imap SUBSCRIBE command, and if successful add it to the hashtable. (unsubscribe_folder): new function. use the imap UNSUBSCRIBE command, and if successful remove it from the hashtable. svn path=/trunk/; revision=6157
* Fill in the message_count and unread_message_count flags (if !fast).Dan Winship2000-10-251-5/+34
| | | | | | | * providers/imap/camel-imap-store.c (get_folder_info): Fill in the message_count and unread_message_count flags (if !fast). svn path=/trunk/; revision=6151
* lots of i18n fixesDan Winship2000-10-2423-173/+155
| | | | svn path=/trunk/; revision=6143
* add camel-nntp-types.h.Chris Toshok2000-10-241-1/+2
| | | | | | | | | 2000-10-23 Chris Toshok <toshok@helixcode.com> * providers/nntp/Makefile.am (libcamelnntpinclude_HEADERS): add camel-nntp-types.h. svn path=/trunk/; revision=6133
* Fix a "how could this have been working before" memory overrun bug foundDan Winship2000-10-241-0/+3
| | | | | | | | * providers/imap/camel-imap-command.c (imap_read_untagged): Fix a "how could this have been working before" memory overrun bug found by Vlad. svn path=/trunk/; revision=6129
* re-enable the nntp provider.Chris Toshok2000-10-211-1/+1
| | | | | | | | 2000-10-20 Chris Toshok <toshok@helixcode.com> * providers/Makefile.am (SUBDIRS): re-enable the nntp provider. svn path=/trunk/; revision=6090
* add function to build a tree from the nntp group names (using '.' as aChris Toshok2000-10-211-41/+138
| | | | | | | | | | | | | | | 2000-10-20 Chris Toshok <toshok@helixcode.com> * providers/nntp/camel-nntp-store.c (build_folder_info): add function to build a tree from the nntp group names (using '.' as a heirarchy separator.) #ifdefed INFO_AS_TREE only. (build_folder_info_from_grouplist): if INFO_AS_TREE is selected, call build_folder_info instead of appending a new CamelFolderInfo to our list. (ensure_news_dir_exists): use e_mkdir_hier instead of failing if a parent directory (~/evolution/news generally) isn't there. svn path=/trunk/; revision=6089
* Fix a bug with "INBOX" (or anything else with NIL hierarchy separator) asDan Winship2000-10-201-1/+1
| | | | | | | | * providers/imap/camel-imap-utils.c (imap_parse_list_response): Fix a bug with "INBOX" (or anything else with NIL hierarchy separator) as the namespace. svn path=/trunk/; revision=6065
* Emit message_changed and folder_changed as appropriate.Dan Winship2000-10-201-2/+20
| | | | | | | * providers/imap/camel-imap-folder.c (imap_refresh_info): Emit message_changed and folder_changed as appropriate. svn path=/trunk/; revision=6064
* Update comment here so refresh_info isn't just for reconnects any more.Dan Winship2000-10-203-56/+42
| | | | | | | | | | | | | | | | | | | | | | * camel-folder.c (camel_folder_refresh_info): Update comment here so refresh_info isn't just for reconnects any more. Make the default implementation a no-op rather than an error. * providers/nntp/camel-nntp-folder.c: Move refresh_info impl into camel_nntp_folder_new, since it would have leaked memory and not done anything useful if it was called later. * providers/mbox/camel-mbox-folder.c: Remove no-longer-necessary refresh_info impl. * providers/imap/camel-imap-folder.c (camel_imap_folder_changed): Update imap_folder->exists, but don't actually load the new messages. This is a temporary workaround to deal with the IMAP provider stealing the message list focus at annoying times. (imap_copy_message_to, imap_move_message_to): Emit a folder_changed by hand, for now. svn path=/trunk/; revision=6046
* Build fixes from Jacob, same as the other branch.Ettore Perazzoli2000-10-201-0/+1
| | | | svn path=/trunk/; revision=6035
* No, we must not encode the headers here. These interfaces ARE rawNot Zed2000-10-1812-90/+99
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-10-18 Not Zed <NotZed@HelixCode.com> * camel-mime-part.c (add_header): No, we must not encode the headers here. These interfaces ARE raw interfaces as they are defined in camel_medium. Also removed a bogus/meaningless FIXME. (set_header): Likewise here, we must not. (process_header): Removed another bogus comment. * camel-object.c (shared_is_of_type): Comment out the spitting of a big warning when we're trying to determine types from code. * providers/mbox/camel-mbox-summary.c (message_info_new_from_parser): Only call ibex funcitons if we have an index. * providers/mh/camel-mh-summary.c (camel_mh_summary_add): Only call ibex functions if we have an index. (remove_summary): Likewise. (camel_mh_summary_check): Likewise. * providers/nntp/camel-nntp-store.c (nntp_store_get_folder): get_folder -> flags argument. * providers/vee/camel-vee-store.c (vee_get_folder): create->flags. * providers/pop3/camel-pop3-store.c (get_folder): Changed create -> flags. * providers/imap/camel-imap-store.c (get_folder): Added flags argument. * providers/mh/camel-mh-folder.c (camel_mh_folder_new): Added flags argument, and fixed code appropriately. * providers/mh/camel-mh-store.c (get_folder): Added flags argument. * camel-folder-search.c (message_body_contains): Perform a regex match on the contents of messages. This wont quite work yet as message contents are encoded when written to a stream. (build_match_regex): Converts a number of strings into a regex matching pattern, escaping special chars. (match_message): match a single message from a folder, by uid. Slow. (search_body_contains): Changed to support matching where no index is supplied. Matches are performed by retrieving message contents, etc. () WTF? camel should not be including any widget headers. * providers/mbox/camel-mbox-folder.c (camel_mbox_folder_new): Added flags argument. (mbox_refresh_info): Changed into a NOP, the refresh info code moved into the new function. (camel_mbox_folder_new): If we have an index requested, build one, otherwise, remove an old one, or just dont do anything. * providers/mbox/camel-mbox-store.c (get_folder): Changed create to flags, changed code to suit. * camel-store.c (camel_store_get_folder): Changed create to flags. (get_folder_internal): And here. (get_folder): And here too. * camel-store.h (camel_store_get_folder): Change the create argument to be a flags argument. svn path=/trunk/; revision=5978
* (camel_imap_folder_new): Move the summary creation to after theDan Winship2000-10-181-9/+9
| | | | | | | folder selection again, since it depends on the uidvalidity having been set. svn path=/trunk/; revision=5976
* Remove cached info at the end of the summary when the folder shrinksDan Winship2000-10-182-9/+14
| | | | | | | | | | | * providers/imap/camel-imap-folder.c (imap_refresh_info): Remove cached info at the end of the summary when the folder shrinks between sessions. Also remove an untrue comment. * providers/imap/camel-imap-store.c (get_folder): Fix up summary_file to not include the namespace twice. svn path=/trunk/; revision=5974
* Don't imap_next_word(respbuf + 2), instead use imap_next_word(respbuf) orJeffrey Stedfast2000-10-171-1/+1
| | | | | | | | | | | 2000-10-16 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-command.c (imap_read_response): Don't imap_next_word(respbuf + 2), instead use imap_next_word(respbuf) or else we'll skip over the second token. svn path=/trunk/; revision=5961
* Don't free 'resp' as it doesn't point to the beginning of the allocatedJeffrey Stedfast2000-10-171-10/+11
| | | | | | | | | | | | | | | | | 2000-10-16 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-command.c (camel_imap_response_extract): Don't free 'resp' as it doesn't point to the beginning of the allocated data, instead free response->untagged->pdata[i]. Also, if '*resp' is equal to a space character, then set resp = imap_next_word (resp) rather than expecting resp++ to work (there's a list broken IMAP daemons that like to put extra spaces between tokens). (imap_read_response): Don't expect 'respbuf+2' to be where the untagged number response to start (see above fix for an explanation). svn path=/trunk/; revision=5960
* Only send the LOGOUT command if the store is connected. (imap_connect):Jeffrey Stedfast2000-10-173-10/+28
| | | | | | | | | | | | | | | | | | | 2000-10-16 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-store.c (imap_disconnect): Only send the LOGOUT command if the store is connected. (imap_connect): Set the 'connected' state to TRUE when we successfully connect. (get_folder_info): if (!topfi), 'topfi' was allocated but then 'fi' was set. I think Dan meant to set topfi since fi is an uninitialized value at this point. * providers/imap/camel-imap-command.c (imap_read_response): Check for the untagged BYE response and set the 'connected' state to FALSE if we receive the BYE response. Return NULL if we get a BYE response. svn path=/trunk/; revision=5944
* Deal with the possibility of not getting a LIST response back for the topDan Winship2000-10-171-12/+14
| | | | | | | | * providers/imap/camel-imap-store.c (get_folder_info): Deal with the possibility of not getting a LIST response back for the top level. svn path=/trunk/; revision=5941
* Simple subclass of CamelFolderSummary that also keeps a UIDVALIDITY valueDan Winship2000-10-138-517/+541
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * providers/imap/camel-imap-summary.c: Simple subclass of CamelFolderSummary that also keeps a UIDVALIDITY value (and doesn't, for the moment, build content info). * providers/imap/camel-imap-folder.c: (various): Use a CamelImapSummary to store/fetch summary info. (camel_imap_folder_new): Take a path to a file to use for the summary. Set the folder's permanent_flags correctly according to the server response. Read in the summary (checking the UIDVALIDITY) and update it if it's out of date. (imap_refresh_info): Just fetch UIDs and flags. If the UIDs all match, update the flags as needed and be done with it. Otherwise, delete messages that have been expunged from the server and fetch full summary info for any new messages. (imap_sync): Save the summary to disk. (imap_update_summary): Renamed from imap_get_summary_internal. Can now be told to get summary for only a subset of messages. Use camel-mime-utils functions rather than rolling our own header parsing. (imap_get_message_info_internal): Merged into imap_update_summary. (imap_set_message_flags): Don't marked the message FOLDER_FLAGGED if we're not actually changing the value of any of the flags. (camel_imap_folder_changed): Deal with EXISTS rather than RECENT. * providers/imap/camel-imap-store.c (imap_connect): Call camel_session_get_storage_path and save the value. (get_folder): Create a local directory to store summary information and pass a summary file name to camel_imap_folder_new. Don't call camel_folder_refresh_info from here any more since camel_imap_folder_new does it again. * providers/imap/camel-imap-command.c (camel_imap_command): Add a special case to this to make it possible to get the repsonses from a SELECT and still have store->current_folder be updated correctly. (imap_read_response): parse EXISTS rather than RECENT * camel-session.c (camel_session_get_storage_path): Use e_mkdir_hier. * camel-folder-summary.c (camel_folder_summary_remove_index): New function. * camel-mime-utils.c (header_raw_append_parse): fix this. (camel-mime-parser.c doesn't use this code because of the MEMPOOL optimization, so nothing was ever actually calling it before.) svn path=/trunk/; revision=5891
* Removed temp_message_buffer, and content_input_stream fields which seem toNot Zed2000-10-121-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-10-11 Not Zed <NotZed@HelixCode.com> * camel-mime-part.h (struct _CamelMimePart): Removed temp_message_buffer, and content_input_stream fields which seem to have come from nowhere, and are unused. * camel-mime-utils.c: Added a note about touching this file. Nobody is to touch it without asking me first. That goes for you too Jeff. (header_decode_text): In what way is this broken? 2000-10-10 Not Zed <NotZed@HelixCode.com> * providers/imap/camel-imap-folder.c (imap_get_summary_internal): Fix camel_summary_* function rename (imap_get_message_info_internal): Likewise. * camel-mime-parser.c (camel_mime_parser_finalise): Fixed a spelling mistake. * camel-folder-summary.c (camel_summary_format_address): Uh, why do we encode and then decode here ... sigh. This is not the way to fix this. (camel_folder_summary_format_address): Renamed to a proper name, this was only supposed to be a private function. (camel_folder_summary_format_string): Likewise. Oh i see why it was made public, code reuse by cut & paste. Joy. svn path=/trunk/; revision=5881
* remove the leading '/'. (nntp_store_subscribe_folder): same.Chris Toshok2000-10-121-3/+3
| | | | | | | | | | 2000-10-11 Chris Toshok <toshok@helixcode.com> * providers/nntp/camel-nntp-store.c (nntp_store_unsubscribe_folder): remove the leading '/'. (nntp_store_subscribe_folder): same. (nntp_store_folder_subscribed): same. svn path=/trunk/; revision=5868
* Quote the mailbox name as it may contain spaces. (imap_copy_message_to):Jeffrey Stedfast2000-10-121-2/+2
| | | | | | | | | | 2000-10-11 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (imap_move_message_to): Quote the mailbox name as it may contain spaces. (imap_copy_message_to): Same. svn path=/trunk/; revision=5853
* fill in message_count and unread_message_count properly.Chris Toshok2000-10-114-30/+54
| | | | | | | | | | | | | | | | | | | 2000-10-10 Chris Toshok <toshok@helixcode.com> * providers/nntp/camel-nntp-store.c (build_folder_info_from_grouplist): fill in message_count and unread_message_count properly. * providers/nntp/camel-nntp-newsrc.h: reformat. * providers/nntp/camel-nntp-grouplist.c (camel_nntp_get_grouplist_from_file): remove spew. * providers/nntp/camel-nntp-newsrc.c (camel_nntp_newsrc_group_get_num_articles_read): new function. (camel_nntp_newsrc_group_get_highest_article_read): robustification. svn path=/trunk/; revision=5832
* Check before deferencing the sep pointer.Joe Shaw2000-10-111-1/+2
| | | | | | | | | | 2000-10-10 Joe Shaw <joe@helixcode.com> * providers/imap/camel-imap-store.c (parse_list_response_as_folder_info): Check before deferencing the sep pointer. svn path=/trunk/; revision=5822
* write out the newsrc. (nntp_store_get_name): if @brief, just return host.Chris Toshok2000-10-102-57/+86
| | | | | | | | | | | | | 2000-10-09 Chris Toshok <toshok@helixcode.com> * providers/nntp/camel-nntp-store.c (finalize): write out the newsrc. (nntp_store_get_name): if @brief, just return host. * providers/nntp/camel-nntp-newsrc.c: robustification and bug fixes. svn path=/trunk/; revision=5808
* add camel-nntp-grouplist.h (libcamelnntp_la_SOURCES): addChris Toshok2000-10-071-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-10-06 Chris Toshok <toshok@helixcode.com> * providers/nntp/Makefile.am (libcamelnntpinclude_HEADERS): add camel-nntp-grouplist.h (libcamelnntp_la_SOURCES): add camel-nntp-grouplist.c * providers/nntp/camel-nntp-provider.c: add our own hash functions for nntp urls. * providers/nntp/camel-nntp-newsrc.c (camel_nntp_newsrc_group_is_subscribed): new function. (camel_nntp_newsrc_subscribe_group): new function. (camel_nntp_newsrc_unsubscribe_group): new function. * providers/nntp/camel-nntp-newsrc.h: add prototypes for _group_is_subscribed, _subscribe_group, and _unsubscribe_group. * providers/nntp/camel-nntp-store.c (build_folder_info_from_grouplist): new function. (nntp_store_get_folder_info): add subscribed_only_parameter. if it's FALSE, load the grouplist and call build_folder_info_from_grouplist. (nntp_store_folder_subscribed): implement. (nntp_store_subscribe_folder): implement. (nntp_store_unsubscribe_folder): implement. (camel_nntp_store_init): add CAMEL_STORE_SUBSCRIPTIONS to the store's flags. * providers/mh/camel-mh-store.c (get_folder_info): add subscribed_only parameter. * providers/mbox/camel-mbox-store.c (get_folder_info): add subscribed_only parameter. * providers/imap/camel-imap-store.c (get_folder_info): add subscribed_only parameter. * camel-store.c (camel_store_supports_subscriptions): new function. (camel_store_folder_subscribed): new function. (camel_store_subscribe_folder): new function. (camel_store_unsubscribe_folder): new function. * camel-store.h: add prototypes and virtual functions for the subscribe implementation. also, add a subscribed_only argument to camel_store_get_folder_info. svn path=/trunk/; revision=5769
* new file.Chris Toshok2000-10-073-0/+301
| | | | | | | | | | | | 2000-10-06 Chris Toshok <toshok@helixcode.com> * providers/nntp/camel-nntp-grouplist.c: new file. * providers/nntp/camel-nntp-grouplist.h: new file. * providers/nntp/camel-nntp-types.h: new file. svn path=/trunk/; revision=5767
* Don't compile the NNTP provider as it currently doesn't build becauseEttore Perazzoli2000-10-071-1/+1
| | | | | | of missing `camel-nntp-types.h'. svn path=/trunk/; revision=5762
* add camel-nntp-grouplist.h (libcamelnntp_la_SOURCES): addChris Toshok2000-10-068-24/+199
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-10-06 Chris Toshok <toshok@helixcode.com> * providers/nntp/Makefile.am (libcamelnntpinclude_HEADERS): add camel-nntp-grouplist.h (libcamelnntp_la_SOURCES): add camel-nntp-grouplist.c * providers/nntp/camel-nntp-provider.c: add our own hash functions for nntp urls. * providers/nntp/camel-nntp-newsrc.c (camel_nntp_newsrc_group_is_subscribed): new function. (camel_nntp_newsrc_subscribe_group): new function. (camel_nntp_newsrc_unsubscribe_group): new function. * providers/nntp/camel-nntp-newsrc.h: add prototypes for _group_is_subscribed, _subscribe_group, and _unsubscribe_group. * providers/nntp/camel-nntp-store.c (build_folder_info_from_grouplist): new function. (nntp_store_get_folder_info): add subscribed_only_parameter. if it's FALSE, load the grouplist and call build_folder_info_from_grouplist. (nntp_store_folder_subscribed): implement. (nntp_store_subscribe_folder): implement. (nntp_store_unsubscribe_folder): implement. (camel_nntp_store_init): add CAMEL_STORE_SUBSCRIPTIONS to the store's flags. * providers/mh/camel-mh-store.c (get_folder_info): add subscribed_only parameter. * providers/mbox/camel-mbox-store.c (get_folder_info): add subscribed_only parameter. * providers/imap/camel-imap-store.c (get_folder_info): add subscribed_only parameter. * camel-store.c (camel_store_supports_subscriptions): new function. (camel_store_folder_subscribed): new function. (camel_store_subscribe_folder): new function. (camel_store_unsubscribe_folder): new function. * camel-store.h: add prototypes and virtual functions for the subscribe implementation. also, add a subscribed_only argument to camel_store_get_folder_info. svn path=/trunk/; revision=5760
* revert to old method (only use XOVER if OVER is supported.)Chris Toshok2000-10-052-14/+24
| | | | | | | | | | | | | | 2000-10-04 Chris Toshok <toshok@helixcode.com> * providers/nntp/camel-nntp-utils.c (camel_nntp_get_headers): revert to old method (only use XOVER if OVER is supported.) * providers/nntp/camel-nntp-store.c (camel_nntp_store_get_overview_fmt): handle the case where the OVER extension isn't listed but LIST OVERVIEW.FMT works (again, INN 2.2). enable the OVER extension in this case. svn path=/trunk/; revision=5739
* return a gboolean so we can tell if this command worked. we can't key offChris Toshok2000-10-051-8/+9
| | | | | | | | | | | | | | | 2000-10-04 Chris Toshok <toshok@helixcode.com> * providers/nntp/camel-nntp-utils.c (get_XOVER_headers): return a gboolean so we can tell if this command worked. we can't key off the OVER extension being present because at least one server (INN 2.2) doesn't report the OVER extension but implements the XOVER command. This could of course just be because I'm a loser for thinking they were related in the first place. (camel_nntp_get_headers): always try XOVER first, and if it fails revert to the slow method. svn path=/trunk/; revision=5723
* Fix a case where a variable was free'd and then possibly used in an errorDan Winship2000-10-051-1/+2
| | | | | | | * providers/mbox/camel-mbox-store.c (get_folder): Fix a case where a variable was free'd and then possibly used in an error message. svn path=/trunk/; revision=5722
* news: -> nntp:.Chris Toshok2000-10-051-23/+2
| | | | | | | | | 2000-10-04 Chris Toshok <toshok@helixcode.com> * providers/nntp/camel-nntp-provider.c (camel_provider_module_init): news: -> nntp:. svn path=/trunk/; revision=5720
* use "nntp:" instead of "news:" since "news:" urls aren't supposed to haveChris Toshok2000-10-051-2/+7
| | | | | | | | | | | 2000-10-04 Chris Toshok <toshok@helixcode.com> * providers/nntp/camel-nntp-store.c (nntp_store_get_folder_info): use "nntp:" instead of "news:" since "news:" urls aren't supposed to have host/user/port info in them. also, if there's a user defined in the url, put it in the urls for our folders. svn path=/trunk/; revision=5717
* borrow some code from the imap provider to query the user for theirChris Toshok2000-10-052-30/+109
| | | | | | | | | | | | | | | | | | 2000-10-04 Chris Toshok <toshok@helixcode.com> * providers/nntp/camel-nntp-auth.c (camel_nntp_auth_authenticate): borrow some code from the imap provider to query the user for their password, and pass the user/passwd to nntp. be extra paranoid and zero out the password before freeing it. * providers/nntp/camel-nntp-store.c (camel_nntp_store_init): add ALLOW_USER/ALLOW_PASSWORD/ALLOW_AUTH to the url flags. (nntp_store_query_auth_types_generic): return our list of auth_types. (nntp_store_query_auth_types_connected): broken, return same as in query_auth_types_generic. svn path=/trunk/; revision=5716
* IMAP4 (pre-rev1) doesn't support the 'LIST "" ""' idiom, so don't use it.Dan Winship2000-10-051-19/+28
| | | | | | | | * providers/imap/camel-imap-store.c (imap_connect): IMAP4 (pre-rev1) doesn't support the 'LIST "" ""' idiom, so don't use it. Just assume the dir_sep is '/'. Shrug. svn path=/trunk/; revision=5714
* Quote the mailbox name when sending a SELECT request otherwise mailboxesJeffrey Stedfast2000-10-041-1/+1
| | | | | | | | | | | | | | 2000-10-03 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-command.c (camel_imap_command): Quote the mailbox name when sending a SELECT request otherwise mailboxes with spaces in their names will cause problems. * camel-mime-message.c (camel_mime_message_set_reply_to): encode before setting. (camel_mime_message_set_from): Same. svn path=/trunk/; revision=5697
* New file containing camel_imap_command and friends. MajorDan Winship2000-10-048-1194/+713
| | | | | | | | | | | | | | | | | | | | | | | | * providers/imap/camel-imap-command.c: New file containing camel_imap_command and friends. Major camel_imap_command rewrite to remove duplicated code, make the parsing of literals be more safe/correct, deal with RECENT/EXPUNGE responses more consistently, and make it possible to implement the AUTHENTICATE command. * providers/imap/camel-imap-utils.c (imap_parse_nstring): New function, to parse an IMAP "nstring". * providers/imap/camel-imap-store.c: Move command stuff to camel-imap-command.c. Update for camel_imap_command changes. * providers/imap/camel-imap-folder.c: Update for camel_imap_command changes. (imap_append_message): CRLF filter the message before sending it. * providers/imap/Makefile.am: Add camel-imap-command.[ch], remove camel-imap-stream.[ch] for now. svn path=/trunk/; revision=5693
* New convenience function to determine if there are any 8bit mime parts inJeffrey Stedfast2000-10-031-11/+28
| | | | | | | | | | | | | | | | | | | | | | 2000-10-02 Jeffrey Stedfast <fejj@helixcode.com> * camel-mime-message.c (camel_mime_message_has_8bit_parts): New convenience function to determine if there are any 8bit mime parts in a mime message. (camel_mime_message_encode_8bit_parts): New convenience function to recursively reencode all 8bit mime parts to either quoted-printable or base64 depending on which would be the best encoding for that part. * providers/smtp/camel-smtp-transport.c (smtp_data): If the mime message contains 8bit parts and the server doesn't support 8bit transfers, reencode those parts before proceding with the send. (smtp_mail): If the mime message contains 8bit parts and the server supports the 8BITMIME extension to SMTP, notify the server that we'll be sending it 8bit mime parts. (_send_to): Find out if the message contains 8bit parts. svn path=/trunk/; revision=5677
* Use the CamelInternetAddress parser. (smtp_get_email_addr_from_text):Jeffrey Stedfast2000-10-031-53/+16
| | | | | | | | | | 2000-10-02 Jeffrey Stedfast <fejj@helixcode.com> * providers/smtp/camel-smtp-transport.c (_send_to): Use the CamelInternetAddress parser. (smtp_get_email_addr_from_text): deprecated. svn path=/trunk/; revision=5672
* Remove default_ports.Dan Winship2000-10-0312-11/+9
| | | | | | | | | | | | | | * camel-provider.h: Remove default_ports. * camel-remote-store.c (remote_connect): Get default_port from CamelRemoteStore rather than CamelProvider. * providers/{imap,nntp,pop3}/camel-*-store.c: Initialize CamelRemoteStore::default_port * providers/*/camel-*-provider.c: Remove default_ports. svn path=/trunk/; revision=5669
* Remove camel_folder_{get,free}_subfolder_info, as we want to be able toDan Winship2000-10-0313-236/+252
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * camel-folder.[ch]: Remove camel_folder_{get,free}_subfolder_info, as we want to be able to scan the whole subfolder tree without having to open any folders, so this needs to be in CamelStore. Remove can_hold_folders and can_hold_messages flags; things that don't hold messages are no longer considered CamelFolders. * camel-folder-summary.[ch]: Remove CamelFolderInfo stuff. * camel-store.[ch]: Add camel_store_{get,free}_folder_info, as well as camel_store_free_folder_info_full and ..._nop for default implementations, and camel_folder_info_free and camel_folder_info_build as convenience functions. Turn CamelFolderInfo into a tree structure and also add an "url" member. * providers/*/camel-*-folder.c: Remove subfolder_info and can_hold stuff. * providers/*/camel-*-store.c: Add folder_info stuff. * providers/imap/camel-imap-folder.c (imap_summary_free): Free the summary elements with camel_message_info_free, not camel_folder_info_free. Oops. * providers/imap/camel-imap-utils.c: const poison svn path=/trunk/; revision=5663
* More updating... still not usable, or even compilableDan Winship2000-10-034-46/+266
| | | | svn path=/trunk/; revision=5661
* another mem leak fixJeffrey Stedfast2000-09-291-0/+5
| | | | svn path=/trunk/; revision=5633
* Fixed some memory leaks. (camel_smtp_transport_init): InitializeJeffrey Stedfast2000-09-292-59/+44
| | | | | | | | | | | | | | | | | | | 2000-09-28 Jeffrey Stedfast <fejj@helixcode.com> * providers/smtp/camel-smtp-transport.c: Fixed some memory leaks. (camel_smtp_transport_init): Initialize supports_8bit to FALSE. (smtp_helo): If server supports 8bit, set supports_8bit to TRUE. * camel-transport.h (struct _CamelTransport): Added variable gboolean supports_8bit (we'll need this eventually? - see bugzilla bug #53) * providers/smtp/camel-smtp-transport.c (smtp_get_email_addr_from_text): Ugh, no wonder people were getting illegal seek warnings *sigh*. I guess I can only blame myself for this one though :-( svn path=/trunk/; revision=5631
* Don't send the recipient data through smtp_get_email_addr_from_text - thisJeffrey Stedfast2000-09-291-15/+14
| | | | | | | | | | | | | 2000-09-28 Jeffrey Stedfast <fejj@helixcode.com> * providers/smtp/camel-smtp-transport.c (_send_to): Don't send the recipient data through smtp_get_email_addr_from_text - this is a complete waste. In fact, we don't want to have to use that function ever. * camel-internet-address.c, camel-address.c: Added some gtk-doc comments. svn path=/trunk/; revision=5629
* When getting a literal string response, don't include the \r\n after theJeffrey Stedfast2000-09-293-1/+10
| | | | | | | | | | | | 2000-09-28 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (imap_get_message): When getting a literal string response, don't include the \r\n after the closing } (as in: "... {798}\r\n...") * providers/imap/camel-imap-stream.c (stream_read): Same. svn path=/trunk/; revision=5621
* New function to fold headers.Not Zed2000-09-282-181/+195
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-09-28 Not Zed <NotZed@HelixCode.com> * camel-mime-utils.c (header_fold): New function to fold headers. 2000-09-27 Not Zed <NotZed@HelixCode.com> * camel-mime-parser.c (folder_scan_header): If we had an empty header, then it must be end of the headers too. (folder_scan_init): No we dont need to init the outbuf with a nul terminator. * camel-folder-summary.c (camel_folder_summary_set_uid): New function to reset the uid to a higher value. * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_sync): "something failed (yo!)" what sort of crap is this? Fixed all the indenting again, what wanker keeps running stuff through indent? (message_info_new): Check the uid we loaded off the disk, if it existed already, assign a new one. If it didn't then make sure the nextuid is higher. * camel-charset-map.c: New file, used to build a large unicode decoding mapping table, and use it to determine what is the lowest charset a given word can be encoded with. Uses tables from libunicode's source. * camel-internet-address.c (internet_encode): Use header_phrase_encode to properly encode the fullname, as required. refixed indenting. Who keeps doing that? (camel_internet_address_find_address): Changed fatal return/warnings into assertions. * camel-mime-utils.c (header_raw_append_parse): Check : explicitly (removed from is_fieldname() macro). (camel_mime_special_table): Changed to short, so we can represent more bit types. (quoted_encode): Take a mask of the safe chars for this encoding. (header_address_decode): Removed a #warning that makes no sense anymore. (header_decode_date): Fixed the 'broken date' parser code, if it ever decoded it it just threw away the result. (header_encode_string): Use better charset matching for encoding strings as well. 2000-08-31 Not Zed <NotZed@HelixCode.com> * providers/mh/camel-mh-summary.c (camel_mh_summary_sync): Save the index if we do a sync. (camel_mh_summary_check): Save the index here too. Probably. svn path=/trunk/; revision=5615
* Return untagged data in a GPtrArray rather than a string, since it savesDan Winship2000-09-284-142/+191
| | | | | | | | | | | | | | | | | | | | | | | | | * providers/imap/camel-imap-store.c (camel_imap_command_extended): Return untagged data in a GPtrArray rather than a string, since it saves processing time and is much easier to deal with for several commands. Update for camel_imap_folder_changed change. (camel_imap_fetch_command): Update for camel_imap_folder_changed change. (imap_connect, imap_folder_exists): Update for camel_imap_command_extended change. * providers/imap/camel-imap-folder.c (imap_get_message_count_internal, imap_get_subfolder_info_internal, imap_search_by_expression): Update for camel_imap_command_extended change. (imap_get_summary_internal, imap_get_message_info_internal): Use camel_imap_fetch_command here now to get around the camel_imap_command_extended change. (camel_imap_folder_changed): turn expunged into a GArray of ints rather than a GPtrArray of strings representing ints. svn path=/trunk/; revision=5608
* Quote the folder name as it may contain spaces.Jeffrey Stedfast2000-09-271-22/+21
| | | | | | | | | | | | | | | | | | | | 2000-09-26 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (imap_get_message_count_internal): Quote the folder name as it may contain spaces. (imap_get_subfolder_info_internal): Same. * providers/imap/camel-imap-utils.c (imap_parse_list_response): Do proper unquoting for folder names. (func_get_current_date): Implemented. * providers/imap/camel-imap-store.c (imap_folder_exists): Quote the folder name as it may have spaces. (imap_create): Same. (check_current_folder): Same. svn path=/trunk/; revision=5592
* Again...wrap the folder names in quotesJeffrey Stedfast2000-09-233-8/+9
| | | | | | | | | | | | | | | | | | | | 2000-09-22 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (imap_get_message_count_internal): Again...wrap the folder names in quotes * providers/imap/camel-imap-store.c (imap_folder_exists): Wrap the mailbox name in the LIST command in quotes just in case the folder has spaces in the name. (imap_create): Again, wrap folder name in quotes. (check_current_folder): Same... * providers/imap/camel-imap-utils.c (imap_parse_list_response): Update to unquote mailbox if it's quoted (allows us to get folders with spaces in the name). svn path=/trunk/; revision=5556
* The root folder's name is "", not the namespace. (camel_imap_folder_new):Dan Winship2000-09-233-11/+7
| | | | | | | | | | | | | * providers/imap/camel-imap-folder.c (imap_get_subfolder_info_internal): The root folder's name is "", not the namespace. (camel_imap_folder_new): constify folder_name. * providers/imap/camel-imap-store.c (get_folder): Create the folder with folder_name, not folder_path. (camel_imap_command_preliminary): Don't free cmdid here. svn path=/trunk/; revision=5552
* New function to convert Camel flags to an IMAP flag_list.Dan Winship2000-09-224-223/+135
| | | | | | | | | | | | | | | | | | | | | | | | | | | * providers/imap/camel-imap-utils.c (imap_create_flag_list): New function to convert Camel flags to an IMAP flag_list. (imap_parse_flag_list): Contrariwise. * providers/imap/camel-imap-store.c (camel_imap_command_*): Make the @ret arg actually optional, as (mostly) documented. (various): Don't pass "&result" to camel_imap_command_* if we're just going to immediately free it. Don't record status if we're not going to look at it. * providers/imap/camel-imap-folder.c: Likewise. (imap_summary_free): Use camel_folder_info_free. (imap_sync): Use imap_create_flag_list. Clear CAMEL_MESSAGE_FOLDER_FLAGGED after syncing so we don't keep re-syncing. (imap_append_message): Use imap_create_flag_list. Don't leak the memstream if the append fails. (imap_move_message_to): Use camel_folder_delete_message rather than doing it by hand. (imap_get_summary_internal, imap_get_message_info_internal): Use imap_parse_flag_list and header_raw_clear. (camel_imap_folder_changed): Use camel_message_info_free. svn path=/trunk/; revision=5544
* INBOX is case-insensitive. (get_root_folder_name): Make the root folder ""Dan Winship2000-09-223-263/+110
| | | | | | | | | | | | | | | | | | | | | | | | * providers/imap/camel-imap-store.c (get_folder_name): INBOX is case-insensitive. (get_root_folder_name): Make the root folder "" rather than "/". (get_folder): Update for root folder name change. (camel_imap_store_get_toplevel_dir): Removed. (Unused, unneeded.) (camel_imap_store_folder_path): New function to turn a Camel folder name into the corresponding namespaced IMAP path. (imap_folder_exists): Make this take a store and a path rather than a folder. (imap_create): Likewise (get_folder): Update for camel_imap_store_folder_path and other changes. (check_current_folder): Likewise. * providers/imap/camel-imap-folder.c: Change a bunch of CamelStore variables to CamelImapStore (and add a few more) to prevent excess gratuitous casting. Use camel_imap_store_folder_path where appropriate. (camel_imap_folder_new): Update for root folder name change. svn path=/trunk/; revision=5541
* Use the linewrap filter to achieve full RFC0821 compliance.Jeffrey Stedfast2000-09-201-128/+133
| | | | | | | | | | | 2000-09-19 Jeffrey Stedfast <fejj@helixcode.com> * providers/smtp/camel-smtp-transport.c (smtp_data): Use the linewrap filter to achieve full RFC0821 compliance. * camel-mime-filter-linewrap.[c,h]: New mime-filter to word-wrap. svn path=/trunk/; revision=5510
* Fix the case where INBOX isn't returned in the folder listing.Dan Winship2000-09-201-1/+6
| | | | | | | | * providers/imap/camel-imap-folder.c (imap_get_subfolder_info_internal): Fix the case where INBOX isn't returned in the folder listing. svn path=/trunk/; revision=5505
* Removed (camel_folder_init, camel_folder_construct): New object initDan Winship2000-09-2018-322/+275
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * camel-folder.c: (init): Removed (camel_folder_init, camel_folder_construct): New object init function and public object constructor to replace the old init method in a more Gtk-like fashion. (get_parent_folder, camel_folder_get_parent_folder): Removed. No CamelFolder subclass was ever setting the parent_folder member, no code has ever needed to look at it, and fixing it would actually be pretty hard. (get_subfolder_info, camel_folder_get_subfolder_info): Renamed from ..._names. Deals in CamelFolderInfo now. (free_subfolder_info, camel_folder_free_subfolder_info): Likewise. (get_subfolder, camel_folder_get_subfolder): Removed. CamelFolderInfo contains the subfolder's full name, so this is unnecessary now, and removing it lets us get rid of the CamelFolder separator member, which is needed for the default implementation of this function, but not otherwise needed for most providers. Also, lots of code style fixes. * providers/*: Update CamelFolder subclasses for changes, although none of them fill in the message counts in the CamelFolderInfo yet. svn path=/trunk/; revision=5503
* Added check for gnome-app-lib. Removed directories that have been moved toChristopher James Lahey2000-09-182-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-09-18 Christopher James Lahey <clahey@helixcode.com> * configure.in: Added check for gnome-app-lib. Removed directories that have been moved to gal. From addressbook/ChangeLog: 2000-09-18 Christopher James Lahey <clahey@helixcode.com> * backend/ebook/Makefile.am, contact-editor/Makefile.am, ename/Makefile.am, gui/component/Makefile.am, gui/widgets/Makefile.am: Added $(EXTRA_GNOME_CFLAGS) and $(EXTRA_GNOME_LIBS). Removed unneeded libraries. * backend/ebook/e-card.c, backend/pas/pas-backend-file.c, contact-editor/e-contact-editor-address.c, contact-editor/e-contact-editor-categories.c, contact-editor/e-contact-editor-categories.h, contact-editor/e-contact-editor-fullname.c, contact-editor/e-contact-editor.c, contact-editor/e-contact-save-as.c, ename/e-address-western.c, ename/test-ename-western-gtk.c, gui/component/addressbook-factory.c, gui/component/addressbook.c, gui/component/e-cardlist-model.h, gui/component/e-ldap-storage.c, gui/component/select-names/e-select-names-bonobo.c, gui/component/select-names/e-select-names-manager.c, gui/component/select-names/e-select-names-model.c, gui/component/select-names/e-select-names-table-model.c, gui/component/select-names/e-select-names-table-model.h, gui/component/select-names/e-select-names-text-model.h, gui/component/select-names/e-select-names.c, gui/component/select-names/e-select-names.h, gui/search/e-addressbook-search-dialog.c, gui/widgets/e-addressbook-model.h, gui/widgets/e-addressbook-view.c, gui/widgets/e-minicard-label.c, gui/widgets/e-minicard-view-widget.c, gui/widgets/e-minicard-view-widget.h, gui/widgets/e-minicard-view.c, gui/widgets/e-minicard-view.h, gui/widgets/e-minicard-widget.h, gui/widgets/e-minicard.c, gui/widgets/test-minicard-label.c, gui/widgets/test-reflow.c, printing/e-contact-print.c: Fixed the #include lines to deal properly with gal. From calendar/ChangeLog: 2000-09-18 Christopher James Lahey <clahey@helixcode.com> * gui/Makefile.am: Added $(EXTRA_GNOME_CFLAGS) and $(EXTRA_GNOME_LIBS). Removed unneeded libraries. * gui/calendar-model.h, gui/e-calendar-table.c, gui/e-day-view.c, gui/e-week-view-event-item.c, gui/e-week-view.c, gui/event-editor.c, gui/gncal-todo.c, gui/gnome-cal.c, gui/main.c, gui/print.c, gui/dialogs/task-editor.c: Fixed the #include lines to deal properly with gal. * gui/check-filled.xpm: New file since we can't include it from e-table anymore. From camel/ChangeLog: 2000-09-18 Christopher James Lahey <clahey@helixcode.com> * camel-folder-search.c, camel-folder-search.h, camel-remote-store.c, providers/imap/camel-imap-folder.c, providers/imap/camel-imap-store.c: Fixed the #include lines to deal properly with gal. From composer/ChangeLog: 2000-09-18 Christopher James Lahey <clahey@helixcode.com> * Makefile.am: Added $(EXTRA_GNOME_CFLAGS) and $(EXTRA_GNOME_LIBS). Removed unneeded libraries. * e-msg-composer-address-dialog.c, e-msg-composer-address-entry.c, e-msg-composer-attachment.c, e-msg-composer-hdrs.c, e-msg-composer.c: Fixed the #include lines to deal properly with gal. From e-util/ChangeLog: 2000-09-18 Christopher James Lahey <clahey@helixcode.com> * Makefile.am: Removed all the files moved to gal. * e-dialog-widgets.c: Fixed the #include lines to deal properly with gal. * e-gui-utils.c, e-gui-utils.h: Removed all of the functionality that was moved to gal. * e-canvas-utils.c, e-canvas-utils.h, e-canvas-vbox.c, e-canvas-vbox.h, e-canvas.c, e-canvas.h, e-cursors.c, e-cursors.h, e-font.c, e-font.h, e-popup-menu.c, e-popup-menu.h, e-printable.c, e-printable.h, e-unicode.c, e-unicode.h, e-util.c, e-util.h, e-xml-utils.c, e-xml-utils.h: Moved to gal. From filter/ChangeLog: 2000-09-18 Christopher James Lahey <clahey@helixcode.com> * filter-editor.c, filter-filter.c, filter-folder.c, filter-input.c, filter-message-search.c, filter-option.c, filter-rule.c, score-editor.c, vfolder-editor.c, vfolder-rule.c: Fixed the #include lines to deal properly with gal. From mail/ChangeLog: 2000-09-18 Christopher James Lahey <clahey@helixcode.com> * Makefile.am: Added $(EXTRA_GNOME_CFLAGS) and $(EXTRA_GNOME_LIBS). Removed unneeded libraries. * component-factory.c, folder-browser-factory.c, folder-browser.c, mail-callbacks.c, mail-config-gui.c, mail-display.c, mail-display.h, main.c, message-list.c, message-list.h: Fixed the #include lines to deal properly with gal. From po/ChangeLog: 2000-09-18 Christopher James Lahey <clahey@helixcode.com> * POTFILES.in: Removed files that have been moved to gal. From shell/ChangeLog: 2000-09-18 Christopher James Lahey <clahey@helixcode.com> * Makefile.am: Added $(EXTRA_GNOME_CFLAGS) and $(EXTRA_GNOME_LIBS). Removed unneeded libraries. * e-component-registry.c, e-corba-storage-registry.c, e-corba-storage.c, e-folder-type-registry.c, e-folder.c, e-local-folder.c, e-local-storage.c, e-shell-folder-creation-dialog.c, e-shell-folder-selection-dialog.c, e-shell-folder-title-bar.c, e-shell-view.c, e-shell.c, e-shortcuts-view.c, e-shortcuts.c, e-storage-set-view.c, e-storage-set-view.h, e-storage-set.c, e-storage.c, evolution-local-storage.c, evolution-session.c, evolution-shell-client.c, evolution-shell-component-client.c, evolution-shell-component.c, evolution-shell-view.c, evolution-storage-listener.c, evolution-storage.c, main.c: Fixed the #include lines to deal properly with gal. From widgets/meeting-time-sel/ChangeLog: 2000-09-18 Christopher James Lahey <clahey@helixcode.com> * Makefile.am: Added $(EXTRA_GNOME_CFLAGS) and $(EXTRA_GNOME_LIBS). Removed unneeded libraries. * e-meeting-time-sel-list-item.c, e-meeting-time-sel.c, e-meeting-time-sel.h: Fixed the #include lines to deal properly with gal. If you've read this far, you deserve a prize. The first email in my mailbox with the subject "What a commit message!" (and your physical mailing address somewhere in the message) will receive a free Helix Code T-shirt mailed to anywhere within the continental United States. I cannot be held responsible for problems with email systems anywhere. This is supposed to be for fun, so please don't make a fuss if something goes wrong and your mail doesn't reach me. Find my email elsewhere in this message, and if it's been more than a few days, you're probably too late. From widgets/misc/ChangeLog: 2000-09-18 Christopher James Lahey <clahey@helixcode.com> * Makefile.am: Added $(EXTRA_GNOME_CFLAGS) and $(EXTRA_GNOME_LIBS). Removed unneeded libraries. * e-calendar-item.c, e-calendar.c, e-calendar.h, e-title-bar.c: Fixed the #include lines to deal properly with gal. * e-scroll-frame.c, e-scroll-frame.h: Moved to gal. From widgets/shortcut-bar/ChangeLog: 2000-09-18 Christopher James Lahey <clahey@helixcode.com> * Makefile.am: Added $(EXTRA_GNOME_CFLAGS) and $(EXTRA_GNOME_LIBS). Removed unneeded libraries. * e-icon-bar.c, e-icon-bar.h, e-shortcut-bar.c, e-shortcut-model.c, test-shortcut-bar.c: Fixed the #include lines to deal properly with gal. From widgets/ChangeLog: 2000-09-18 Christopher James Lahey <clahey@helixcode.com> * Makefile.am: Removed directories that have been moved to gal. * e-paned/.cvsignore, e-paned/Makefile.am, e-paned/e-hpaned.c, e-paned/e-hpaned.h, e-paned/e-paned.c, e-paned/e-paned.h, e-paned/e-vpaned.c, e-paned/e-vpaned.h: Moved to gal. * e-reflow/.cvsignore, e-reflow/Makefile.am, e-reflow/e-reflow-sorted.c, e-reflow/e-reflow-sorted.h, e-reflow/e-reflow.c, e-reflow/e-reflow.h: Moved to gal. * e-table/.cvsignore, e-table/ChangeLog, e-table/LICENSE, e-table/Makefile.am, e-table/ROADMAP.e-table, e-table/TODO, e-table/add-col.xpm, e-table/arrow-down.xpm, e-table/arrow-up.xpm, e-table/check-empty.xpm, e-table/check-filled.xpm, e-table/clip.png, e-table/e-cell-checkbox.c, e-table/e-cell-checkbox.h, e-table/e-cell-string.c, e-table/e-cell-text.c, e-table/e-cell-text.h, e-table/e-cell-toggle.c, e-table/e-cell-toggle.h, e-table/e-cell-tree.c, e-table/e-cell-tree.h, e-table/e-cell.c, e-table/e-cell.h, e-table/e-table-click-to-add.c, e-table/e-table-click-to-add.h, e-table/e-table-col-dnd.h, e-table/e-table-col.c, e-table/e-table-col.h, e-table/e-table-column-model.h, e-table/e-table-column.c, e-table/e-table-config.c, e-table/e-table-config.glade, e-table/e-table-config.glade.h, e-table/e-table-config.h, e-table/e-table-defines.h, e-table/e-table-example-1.c, e-table/e-table-example-2.c, e-table/e-table-field-chooser-dialog.c, e-table/e-table-field-chooser-dialog.h, e-table/e-table-field-chooser-item.c, e-table/e-table-field-chooser-item.h, e-table/e-table-field-chooser.c, e-table/e-table-field-chooser.glade, e-table/e-table-field-chooser.glade.h, e-table/e-table-field-chooser.h, e-table/e-table-group-container.c, e-table/e-table-group-container.h, e-table/e-table-group-leaf.c, e-table/e-table-group-leaf.h, e-table/e-table-group.c, e-table/e-table-group.glade, e-table/e-table-group.glade.h, e-table/e-table-group.h, e-table/e-table-header-item.c, e-table/e-table-header-item.h, e-table/e-table-header.c, e-table/e-table-header.h, e-table/e-table-item.c, e-table/e-table-item.h, e-table/e-table-model.c, e-table/e-table-model.h, e-table/e-table-one.c, e-table/e-table-one.h, e-table/e-table-scrolled.c, e-table/e-table-scrolled.h, e-table/e-table-selection-model.c, e-table/e-table-selection-model.h, e-table/e-table-simple.c, e-table/e-table-simple.h, e-table/e-table-size-test.c, e-table/e-table-sort-info.c, e-table/e-table-sort-info.h, e-table/e-table-sorted-variable.c, e-table/e-table-sorted-variable.h, e-table/e-table-sorted.c, e-table/e-table-sorted.h, e-table/e-table-sorter.c, e-table/e-table-sorter.h, e-table/e-table-subset-variable.c, e-table/e-table-subset-variable.h, e-table/e-table-subset.c, e-table/e-table-subset.h, e-table/e-table-text-model.c, e-table/e-table-text-model.h, e-table/e-table-tooltip.h, e-table/e-table-tree.h, e-table/e-table.c, e-table/e-table.h, e-table/e-tree-example-1.c, e-table/e-tree-example-2.c, e-table/e-tree-model.c, e-table/e-tree-model.h, e-table/e-tree-simple.c, e-table/e-tree-simple.h, e-table/image1.png, e-table/image2.png, e-table/image3.png, e-table/remove-col.xpm, e-table/sample.table, e-table/table-test.c, e-table/table-test.h, e-table/test-check.c, e-table/test-cols.c, e-table/test-table.c: Moved to gal. * e-text/.cvsignore, e-text/Makefile.am, e-text/e-entry-test.c, e-text/e-entry.c, e-text/e-entry.h, e-text/e-text-event-processor-emacs-like.c, e-text/e-text-event-processor-emacs-like.h, e-text/e-text-event-processor-types.h, e-text/e-text-event-processor.c, e-text/e-text-event-processor.h, e-text/e-text-model.c, e-text/e-text-model.h, e-text/e-text-test.c, e-text/e-text.c, e-text/e-text.h: Moved to gal. i.e., ... changed evolution to work with gal. svn path=/trunk/; revision=5490
* Don't use dir_sep as top-level directory, use "/".Jeffrey Stedfast2000-09-152-8/+5
| | | | | | | | | | | | 2000-09-14 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-store.c (get_folder): Don't use dir_sep as top-level directory, use "/". * providers/imap/camel-imap-folder.c (imap_expunge): Get rid of unused variable. svn path=/trunk/; revision=5437
* Don't look at the response of the command. camel_imap_command_extended()Dan Winship2000-09-151-80/+2
| | | | | | | | | * providers/imap/camel-imap-folder.c (imap_expunge): Don't look at the response of the command. camel_imap_command_extended() processes EXPUNGE responses itself, so if we do it here too we remove twice as many summary items as we should. svn path=/trunk/; revision=5432
* Rewrote to take a third argument (gboolean *selectable) so that we canJeffrey Stedfast2000-09-142-21/+95
| | | | | | | | | | | | | | | | | | | | | | | 2000-09-13 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-store.c (imap_folder_exists): Rewrote to take a third argument (gboolean *selectable) so that we can find out if the folder is selectable or not as we look to see if it exists. Also, don't use EXAMINE because that will not work on non-selectable folders, so use LIST instead. (get_folder): Check to see if the folder exists even vefore calling imap_create as this will save time. If the folder does exist, find out if it's selectable. Moved the call to refresh_info here. * providers/imap/camel-imap-folder.c (imap_get_uids): Check for a NULL summary. (camel_imap_folder_new): Don't call refresh_info here - call it in get_folder() because we don't know if this folder even exists on the server yet! And even if it does, we don't know if it can hold messages or not yet. svn path=/trunk/; revision=5412
* fixes to make this beast distcheckPeter Teichman2000-09-131-0/+1
| | | | svn path=/trunk/; revision=5377
* Fixed a warning.Christopher James Lahey2000-09-092-0/+2
| | | | | | | | | 2000-09-08 Christopher James Lahey <clahey@helixcode.com> * providers/nntp/camel-nntp-auth.c, providers/nntp/camel-nntp-auth.h: Fixed a warning. svn path=/trunk/; revision=5265
* *** empty log message ***Dan Winship2000-09-081-0/+7
| | | | svn path=/trunk/; revision=5233
* Make KPOP work again.Dan Winship2000-09-081-1/+2
| | | | | | | * providers/pop3/camel-pop3-store.c (connect_to_server): Make KPOP work again. svn path=/trunk/; revision=5232
* care about response code. (get_HEAD_headers): same.Chris Toshok2000-09-069-97/+263
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-09-05 Chris Toshok <toshok@helixcode.com> * providers/nntp/camel-nntp-utils.c (get_OVER_headers): care about response code. (get_HEAD_headers): same. (camel_nntp_get_headers): same. * providers/nntp/camel-nntp-store.h: get rid of CAMEL_NNTP_OK/ERR/FAIL. * providers/nntp/camel-nntp-store.c (camel_nntp_store_get_extensions): take CamelException arg and pass along to camel_nntp_command. (camel_nntp_store_get_overview_fmt): same. (nntp_store_connect): convert to using constants in camel-nntp-resp-codes.h (nntp_store_get_folder): make use of camel_nntp_folder_new. (camel_nntp_command_send_recv): new function to deal with auth challenge. (camel_nntp_command): split out most of this function into camel_nntp_command_send_recv. also, return the actual response code instead of CAMEL_NNTP_OK/ERR/FAIL. * providers/nntp/camel-nntp-resp-codes.h: new file. * providers/nntp/camel-nntp-folder.h: prototype for camel_nntp_folder_new. * providers/nntp/camel-nntp-folder.c (camel_nntp_folder_new): new convenience function. (nntp_folder_get_message): care more about the actual response code. * providers/nntp/Makefile.am (libcamelnntp_la_SOURCES): add camel-nntp-auth.c. (libcamelnntpinclude_HEADERS): add camel-nntp-auth.h. * providers/nntp/camel-nntp-auth.h: new file. * providers/nntp/camel-nntp-auth.c: new file. svn path=/trunk/; revision=5212
* Update for CamelObject and some other changesDan Winship2000-09-065-90/+69
| | | | svn path=/trunk/; revision=5210
* Cache provider, for caching a remote store locally. This is not done yet.Dan Winship2000-09-069-0/+1471
| | | | svn path=/trunk/; revision=5206
* Cleanup of lots of exception handling ; bugfixesPeter Williams2000-09-067-241/+168
| | | | svn path=/trunk/; revision=5202
* Removed some unused functions.Christopher James Lahey2000-09-021-45/+0
| | | | | | | | | 2000-09-01 Christopher James Lahey <clahey@helixcode.com> * providers/imap/camel-imap-utils.c: Removed some unused functions. svn path=/trunk/; revision=5169
* remove get_folder_name. (nntp_store_get_folder_name): remove.Chris Toshok2000-09-011-8/+0
| | | | | | | | | | 2000-08-31 Chris Toshok <toshok@helixcode.com> * providers/nntp/camel-nntp-store.c (camel_nntp_store_class_init): remove get_folder_name. (nntp_store_get_folder_name): remove. svn path=/trunk/; revision=5158
* use camel_remote_store_recv_line.Chris Toshok2000-09-015-219/+100
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-08-31 Chris Toshok <toshok@helixcode.com> * providers/nntp/camel-nntp-utils.c (get_OVER_headers): use camel_remote_store_recv_line. * providers/nntp/camel-nntp-folder.c (nntp_folder_get_message): use camel_remote_store_recv_line to build message. also, free our buffer so we don't leak like mad. * providers/nntp/camel-nntp-store.c: (camel_nntp_store_get_additional_data) remove. (camel_nntp_store_get_extensions): use camel_remote_store_recv_line. (camel_nntp_store_get_overview_fmt): same. also, don't rely on _get_additional_data anymore since it's easier to parse without. (camel_nntp_command): use camel_remote_store_send_string and camel_remote_store_recv_line. * providers/nntp/camel-nntp-store.h: CamelRemoteStore is the parent class now. remove istream/ostream since CamelRemoteStore takes care of that for us. also remove the prototype for camel_nntp_store_get_additional_data. * providers/nntp/camel-nntp-newsrc.c (camel_nntp_newsrc_write): make sure to clear dirty bit. (camel_nntp_newsrc_read_for_server): don't worry about continually trying to open the file - if it fails we just return an unpopulated .newsrc file. svn path=/trunk/; revision=5153
* make this a bit more robust. try to create an empty .newsrc file for theChris Toshok2000-09-014-37/+266
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-08-31 Chris Toshok <toshok@helixcode.com> * providers/nntp/camel-nntp-newsrc.c (camel_nntp_newsrc_read_for_server): make this a bit more robust. try to create an empty .newsrc file for the server if we can't open it for reading. also, don't allocate everything until we've opened the file. * providers/nntp/camel-nntp-utils.c (get_OVER_headers): make use of our overview field indices. (camel_nntp_get_headers): only call get_OVER_headers if the extension is present. warn if it's not - since get_HEAD_headers needs work before it works. * providers/nntp/camel-nntp-store.c (camel_nntp_store_get_extensions): new function - query the server for it's extensions. (camel_nntp_store_get_overview_fmt): new function - query the server for the overview format and build our table of the indices we care about. support the "full" suffix on fields. (nntp_store_connect): call camel_nntp_store_get_extensions and camel_nntp_store_get_overview_fmt. * providers/nntp/camel-nntp-store.h: add codes for extensions found on news.mozilla.org. only one that we care about is OVER. also, add CamelNNTPOverField and an enum of the overview fields that we care about. svn path=/trunk/; revision=5152
* Reimplemented. It should now work correctly for most possible VFolderJeffrey Stedfast2000-09-011-175/+327
| | | | | | | | | | 2000-08-31 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-utils.c (imap_translate_sexp): Reimplemented. It should now work correctly for most possible VFolder rules. svn path=/trunk/; revision=5151
* Don't save any exceptions caused by camel_imap_folder_changedJeffrey Stedfast2000-08-312-10/+40
| | | | | | | | | | | | | | | 2000-08-31 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-store.c (camel_imap_command_extended): Don't save any exceptions caused by camel_imap_folder_changed (camel_imap_fetch_command): Same. * providers/imap/camel-imap-folder.c (camel_imap_folder_changed): Using a new way of calculating the first recent message that seems more accurate. Also added code to make sure we don't accidently add a duplicate summary. svn path=/trunk/; revision=5135
* Rewrote to ignore strings that look like server responses until it is sureJeffrey Stedfast2000-08-312-12/+63
| | | | | | | | | | 2000-08-30 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-store.c (camel_imap_fetch_command): Rewrote to ignore strings that look like server responses until it is sure that it has finished reading the literal string response. svn path=/trunk/; revision=5124
* Don't wrap printed strings in quotes, makes things messyJeffrey Stedfast2000-08-314-133/+433
| | | | | | | | | | | | | | | | | | | | | | 2000-08-30 Jeffrey Stedfast <fejj@helixcode.com> * camel-remote-store.c (remote_send_string): Don't wrap printed strings in quotes, makes things messy * providers/imap/camel-imap-folder.c (imap_get_message): Updated to use the camel_imap_fetch_command * providers/imap/camel-imap-stream.c (stream_read): Updated to use camel_imap_fetch_command * providers/imap/camel-imap-store.c (camel_imap_command_extended): No longer handles FETCH requests so no longer needs to be concerned with checking to make sure that server responses are valid (they have to be). (camel_imap_fetch_command): New convenience function that handles all FETCH requests svn path=/trunk/; revision=5122
* Make CamelServices connect only when told to (old behavior). Make ↵Peter Williams2000-08-311-17/+20
| | | | | | CamelRemoteStore do its stuff in service::connect, not ::post_connect. svn path=/trunk/; revision=5116
* General cleanup / moving stuff around to make things easier to follow.Jeffrey Stedfast2000-08-311-41/+56
| | | | | | | | | 2000-08-30 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-store.c: General cleanup / moving stuff around to make things easier to follow. svn path=/trunk/; revision=5115
* Prevent exceptions from being overwrittenJeffrey Stedfast2000-08-303-123/+145
| | | | | | | | | | | | 2000-08-30 Jeffrey Stedfast <fejj@helixcode.com> * camel-remote-store.c: Prevent exceptions from being overwritten * providers/imap/camel-imap-folder.c (imap_expunge): Beautified (imap_get_subfolder_names_internal): Removed old code as the replacement code has now been tested and proven to work svn path=/trunk/; revision=5107
* Removed old code that will never be needed againJeffrey Stedfast2000-08-302-212/+90
| | | | | | | | | | | | | | 2000-08-29 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-utils.c: Removed old code that will never be needed again * providers/imap/camel-imap-store.c: Removed old code for try_connect - will never need this code (slurp_response): Update to make sure we aren't falsely detecting EXPUNGE flags svn path=/trunk/; revision=5106
* CamelRemoteStore: a new generic store for stores that connect to servers. ↵Peter Williams2000-08-3010-867/+492
| | | | | | Prepare for the ability to cancel operations (much better exception handling). Clean up IMAP like nobody's business svn path=/trunk/; revision=5103
* Updated to check for EXPUNGE notificationsJeffrey Stedfast2000-08-304-21/+72
| | | | | | | | | | | | | | | | | | | | 2000-08-29 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-store.c (camel_imap_command_extended): Updated to check for EXPUNGE notifications * providers/imap/camel-imap-folder.c (camel_imap_folder_changed): Updated to account for messages which have been expunged (now takes a new arg, a GPtrArray of message id's that have been expunged) (imap_expunge): Updated (we may want to just use the code in folder_changed now instead of doing our own summary expunging...but that can be fixed later) (imap_append_message): Updated. (imap_copy_message_to): Updated. (imap_move_message_to): Updated. svn path=/trunk/; revision=5098
* Fixed the hack around quoted string responses - should now handle themJeffrey Stedfast2000-08-292-165/+158
| | | | | | | | | | | | | 2000-08-28 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (imap_get_message): Fixed the hack around quoted string responses - should now handle them according to the specifications in the RFC * providers/imap/camel-imap-stream.c (stream_read): Updated to match the code currently used in camel-imap-folder.c svn path=/trunk/; revision=5092
* Free()ing memory allocated through alloca() is Not A Good Thing.Ettore Perazzoli2000-08-281-1/+0
| | | | svn path=/trunk/; revision=5078
* Add support for specifying on which port to connect to a server; fix a ↵Peter Williams2000-08-268-0/+9
| | | | | | potential infinite loop in unicode. svn path=/trunk/; revision=5041
* If the url path is "/" and the folder path is "/", just LIST "" "*" (thisJeffrey Stedfast2000-08-261-2/+2
| | | | | | | | | | | | 2000-08-25 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (imap_get_subfolder_names_internal): If the url path is "/" and the folder path is "/", just LIST "" "*" (this should fix some cyrus imapd problems). Also, INBOX is case insensitive so use g_strcasecmp svn path=/trunk/; revision=5038
* If the url path is "/" and the folder path is "/", just LIST "" "*" (thisJeffrey Stedfast2000-08-261-7/+31
| | | | | | | | | | | 2000-08-25 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (imap_get_subfolder_names_internal): If the url path is "/" and the folder path is "/", just LIST "" "*" (this should fix some cyrus imapd problems) svn path=/trunk/; revision=5036
* Remove this duplicate file to fix buildJP Rosevear2000-08-251-0/+2
| | | | | | | | 2000-08-24 JP Rosevear <jpr@helixcode.com> * src/libical/icalvcal.h: Remove this duplicate file to fix build svn path=/trunk/; revision=5030
* And here too.Not Zed2000-08-242-0/+6
| | | | | | | | | | | 2000-08-17 Not Zed <NotZed@HelixCode.com> * providers/mh/camel-mh-folder.c (mh_finalize): And here too. * providers/mbox/camel-mbox-folder.c (mbox_finalize): Close index on exit. svn path=/trunk/; revision=4996
* use BODY.PEEK, not BODY, so we don't set the message \Seen.Dan Winship2000-08-231-1/+1
| | | | | | | | * providers/imap/camel-imap-folder.c (imap_protocol_get_summary_specifier): use BODY.PEEK, not BODY, so we don't set the message \Seen. svn path=/trunk/; revision=4970
* Fixed a small warning.Christopher James Lahey2000-08-231-3/+3
| | | | | | | | 2000-08-22 Christopher James Lahey <clahey@helixcode.com> * providers/pop3/camel-pop3-store.c: Fixed a small warning. svn path=/trunk/; revision=4969
* Automatically connect services when given a valid URL (should hopefully ↵Peter Williams2000-08-234-45/+100
| | | | | | disconnect, too); remove the old movemail folder correctly. svn path=/trunk/; revision=4965
* Make sure newsrc is not null (nntp_folder_get_subfolder_names): dittoJP Rosevear2000-08-222-6/+18
| | | | | | | | | | | | | | | | | | 2000-08-21 JP Rosevear <jpr@helixcode.com> * providers/nntp/camel-nntp-folder.c (nntp_folder_get_subfolder_names): Make sure newsrc is not null (nntp_folder_get_subfolder_names): ditto * providers/nntp/camel-nntp-newsrc.c (camel_nntp_newsrc_get_subscribed_group_names): Programming check for newsrc == NULL (camel_nntp_newsrc_get_all_group_names): ditto (camel_nntp_newsrc_write_to_file): ditto (camel_nntp_newsrc_write): ditto svn path=/trunk/; revision=4908
* Make sure respbuffer is not null before manipulating it. If it is null,JP Rosevear2000-08-221-3/+10
| | | | | | | | | | | 2000-08-21 JP Rosevear <jpr@helixcode.com> * providers/nntp/camel-nntp-store.c (camel_nntp_command): Make sure respbuffer is not null before manipulating it. If it is null, return CAMEL_NNTP_FAIL and a decent error message. svn path=/trunk/; revision=4906
* Whole buncha leak fixes thanks to PurifyMatthew Loper2000-08-172-3/+5
| | | | svn path=/trunk/; revision=4862
* Add support for copying messagesPeter Williams2000-08-161-1/+1
| | | | svn path=/trunk/; revision=4845
* Add camel-nntp-utils.hDan Winship2000-08-141-1/+2
| | | | | | | * providers/nntp/Makefile.am (libcamelnntpinclude_HEADERS): Add camel-nntp-utils.h svn path=/trunk/; revision=4811
* do a strcasecmp rather than just a strcmp when checking if a folder isDan Winship2000-08-141-1/+1
| | | | | | | | | * providers/imap/camel-imap-folder.c (imap_get_subfolder_names_internal): do a strcasecmp rather than just a strcmp when checking if a folder is "INBOX", since it is a case-insensitive name. svn path=/trunk/; revision=4801
* (imap_get_subfolder_names_internal): Add "INBOX" to the list asDan Winship2000-08-131-1/+1
| | | | | | g_malloc'ed memory, not a static string. svn path=/trunk/; revision=4792
* Don't assume the FETCH results will come back in the order they wereDan Winship2000-08-131-2/+2
| | | | | | | | * providers/imap/camel-imap-folder.c (imap_get_summary_internal): Don't assume the FETCH results will come back in the order they were requested. svn path=/trunk/; revision=4791
* Now takes a char * parameter rather than a streamJeffrey Stedfast2000-08-133-8/+115
| | | | | | | | | | | | | | | 2000-08-12 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-store.c (camel_imap_command_continuation): Now takes a char * parameter rather than a stream (camel_imap_command_continuation_with_stream): Same function as above but takes a stream parameter instead * providers/imap/camel-imap-folder.c (imap_append_message): Use camel_imap_command_continuation_with_stream svn path=/trunk/; revision=4786
* New function to do one round of attempted authentication. (pop3_connect):Dan Winship2000-08-131-105/+101
| | | | | | | | | * providers/pop3/camel-pop3-store.c (pop3_try_authenticate): New function to do one round of attempted authentication. (pop3_connect): Move a bunch of code out into pop3_try_authenticate and fix some bugs in the edge cases. svn path=/trunk/; revision=4785
* No longer calls try_connect() to get authtypesJeffrey Stedfast2000-08-131-2/+4
| | | | | | | | | 2000-08-12 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-store.c (query_auth_types): No longer calls try_connect() to get authtypes svn path=/trunk/; revision=4782
* Changed param order a bit and fixed some logicJeffrey Stedfast2000-08-123-28/+53
| | | | | | | | | | | | | 2000-08-11 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-store.c (camel_imap_command_continuation): Changed param order a bit and fixed some logic * providers/imap/camel-imap-folder.c (imap_append_message): Use the new multi-transactional convenience functions svn path=/trunk/; revision=4766
* New convenience function for multi-transactional commands (openingJeffrey Stedfast2000-08-123-33/+209
| | | | | | | | | | | | 2000-08-11 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-store.c (camel_imap_command_preliminary): New convenience function for multi-transactional commands (opening request) (camel_imap_command_continuation): New convenience function for multi-transactional commands (followup data) svn path=/trunk/; revision=4762
* Fixed a warning.Christopher James Lahey2000-08-121-2/+2
| | | | | | | | 2000-08-11 Christopher James Lahey <clahey@helixcode.com> * providers/mh/camel-mh-folder.c: Fixed a warning. svn path=/trunk/; revision=4759
* remove get_name and get_full_name assignments, since the camel-folder.cChris Toshok2000-08-121-16/+0
| | | | | | | | | | | 2000-08-11 Chris Toshok <toshok@helixcode.com> * providers/nntp/camel-nntp-folder.c (camel_nntp_folder_class_init): remove get_name and get_full_name assignments, since the camel-folder.c implementation does what we need. svn path=/trunk/; revision=4755
* use g_get_home_dir, since evolution_dir isn't available in the providers.Chris Toshok2000-08-121-3/+2
| | | | | | | | | | 2000-08-11 Chris Toshok <toshok@helixcode.com> * providers/nntp/camel-nntp-store.c (camel_nntp_store_get_toplevel_dir): use g_get_home_dir, since evolution_dir isn't available in the providers. svn path=/trunk/; revision=4754
* Implement. (mh_get_message_user_tag): Implement.Not Zed2000-08-112-0/+60
| | | | | | | | | | | | | | | | | 2000-08-11 Not Zed <NotZed@HelixCode.com> * providers/mh/camel-mh-folder.c (mh_set_message_user_tag): Implement. (mh_get_message_user_tag): Implement. * providers/mbox/camel-mbox-folder.c (mbox_get_message_user_tag): (mbox_set_message_user_tag): Implement. * camel-folder.c (camel_folder_set_message_user_tag): Routine to set message tags. (camel_folder_get_message_user_tag): And accessor. svn path=/trunk/; revision=4729
* Fixed some warnings.Christopher James Lahey2000-08-114-5/+10
| | | | | | | | | | | | | | | | 2000-08-10 Christopher James Lahey <clahey@helixcode.com> * camel-folder-search.c, camel-folder-summary.c, camel-medium.c, camel-mime-filter-charset.c, camel-mime-filter.c, camel-mime-filter.h, camel-mime-message.c, camel-mime-parser.c, camel-mime-part-utils.c, camel-mime-part.c, camel-mime-utils.c, camel-movemail.c, camel-multipart.c, camel-object.c, camel-stream-mem.c, providers/mbox/camel-mbox-folder.c, providers/mbox/camel-mbox-summary.c, providers/mh/camel-mh-folder.c, providers/smtp/camel-smtp-transport.c: Fixed some warnings. svn path=/trunk/; revision=4719
* t Zed <NotZed@HelixCode.com>Michael Zucci2000-08-111-28/+17
| | | | | | | | | | t Zed <NotZed@HelixCode.com> * providers/vee/camel-vee-folder.c (vee_folder_build_folder): Free the search properly. (vee_folder_build): And here too. svn path=/trunk/; revision=4718
* Removed unecessary change and fixed indenting.Michael Zucci2000-08-111-231/+214
| | | | svn path=/trunk/; revision=4716
* If we go over the max number of messages, don't keep requesting newJeffrey Stedfast2000-08-111-13/+17
| | | | | | | | | | 2000-08-10 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (camel_imap_folder_changed): If we go over the max number of messages, don't keep requesting new message summaries, just break. svn path=/trunk/; revision=4705
* Merge with camel-async.Peter Williams2000-08-1137-1014/+901
| | | | svn path=/trunk/; revision=4687
* A better way to compress leading whitespace. The code is probably invalidNot Zed2000-08-118-567/+643
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-08-11 Not Zed <NotZed@HelixCode.com> * camel-mime-parser.c (folder_scan_header): A better way to compress leading whitespace. The code is probably invalid anyway, I dont think it will work across buffer boundaries. * providers/mbox/camel-mbox-folder.c (mbox_append_message): And write out proper format From lines here too. * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_build_from): New function to build a more compatible mbox "From " line. (camel_mbox_summary_sync): Write From lines in the proper format. 2000-08-10 Not Zed <NotZed@HelixCode.com> * providers/mh/camel-mh-store.c (get_folder): Remove warnin g. * providers/mbox/camel-mbox-store.c (xrename): Kill some warnings with constification. * providers/imap/camel-imap-folder.c (imap_append_message): Fixed for append api change. Eek this routine seriously wastes memory. * providers/mh/camel-mh-folder.c (mh_search_free): Impelemnt. (mh_append_message): Fix for api change, and include user flags and tags in new message. * providers/vee/camel-vee-folder.c (vee_search_by_expression): Fix for search api change. * camel-folder.c (camel_folder_search_free): New function for freeing search results. (search_free): Changed my mind, implement a default that actually does something. Free as to the old interface. (camel_folder_append_message): Changed to accept a camelmessageinfo rather than flags, which just doesn't have enough info in it. (copy_message_to): Change for append_message api change. (move_message_to): Likewise. * providers/mbox/camel-mbox-folder.c (mbox_search_free): Implement. (mbox_append_message): Fix for api change, and also copy user flags/tags across to new summary. * camel-folder-search.c (search_user_tag): A search expression that returns the current use flag by name. (camel_folder_search_free_result): New function to free the result of a search. * camel-folder-summary.c: Bump summary version. (message_info_new): (message_info_load): (message_info_save): (camel_message_info_dup_to): (camel_message_info_free): Added support for arbitrary tag/value pairs (CamelTag's). (camel_tag_get): (camel_tag_set): (camel_tag_list_size): (camel_tag_list_free): Operations for working with CamelTags. svn path=/trunk/; revision=4683
* Fix the NNTP provider's Makefile.am so that it does not use installedEttore Perazzoli2000-08-092-5/+8
| | | | | | | Camel headers before the source ones. Also, get rid of an unused variable. svn path=/trunk/; revision=4631
* New code to keep an on-disk cache of what UIDs have been seen in a folder.Dan Winship2000-08-095-5/+5
| | | | | | | | | | | | | | | | | | * camel-uid-cache.c: New code to keep an on-disk cache of what UIDs have been seen in a folder. * camel-provider.h: Add new flags CAMEL_PROVIDER_IS_SOURCE (mail can arrive in it by non-Camel means) and CAMEL_PROVIDER_IS_STORAGE (you can work with mail directly without needing to copy it local). * providers/*/camel-*-provider.c: Add flags as needed: imap and mbox are SOURCE and STORAGE. mh and nntp are just STORAGE, pop3 is just SOURCE. * camel-mime-message.c (process_header): Add another subject g_strstrip that fejj's earlier commit missed. svn path=/trunk/; revision=4616
* Only retry another uid if we had a name clash, otherwise fail.Not Zed2000-08-084-9/+105
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-08-07 Not Zed <NotZed@HelixCode.com> * providers/mh/camel-mh-folder.c (mh_append_message): Only retry another uid if we had a name clash, otherwise fail. 2000-08-04 Not Zed <NotZed@HelixCode.com> * camel-url.c (camel_url_set_protocol): (camel_url_set_host): (camel_url_set_path): (camel_url_set_port): Url editing functions. 2000-08-02 Not Zed <NotZed@HelixCode.com> * providers/mh/camel-mh-summary.c (camel_mh_summary_sync): Expunge from the end, so the index isn't messed up when you remove a message. * providers/mh/camel-mh-folder.c (mh_append_message): Fix a bug where it would never open an output file/uid. * providers/mbox/camel-mbox-store.c (rename_folder): Implementation for mbox as well. * camel-store.c (camel_store_rename_folder): New method to rename folders. (rename_folder): Default implementation. * providers/mh/camel-mh-store.c (delete_folder): Implement this. (rename_folder): Implement a rename operation. svn path=/trunk/; revision=4590
* If we are trying to get a subfolder listing of the root folder, alwaysJeffrey Stedfast2000-08-082-10/+23
| | | | | | | | | | | | | | 2000-08-07 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (imap_get_subfolder_names_internal): If we are trying to get a subfolder listing of the root folder, always make sure INBOX is there... * providers/imap/camel-imap-utils.c (imap_parse_list_response): Check for NIL as a directory separator. svn path=/trunk/; revision=4582
* Strip all \n's from the expressionJeffrey Stedfast2000-08-081-4/+7
| | | | | | | | | | | | 2000-08-07 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-utils.c (imap_translate_sexp): Strip all \n's from the expression * string-utils.c (strip): New convenience function to strip occurences of a single char from a string svn path=/trunk/; revision=4576
* If we fail to get a dir_sep, then supply the default of "/". (get_folder):Jeffrey Stedfast2000-08-051-28/+31
| | | | | | | | | | 2000-08-04 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-store.c (imap_connect): If we fail to get a dir_sep, then supply the default of "/". (get_folder): Undo changes by Peter svn path=/trunk/; revision=4537
* Coredump fix when IMAP get_folder with NULL dir_sepPeter Williams2000-08-051-1/+1
| | | | svn path=/trunk/; revision=4535
* Indexes into the flags array are message_number minus 1, not justDan Winship2000-08-051-2/+2
| | | | | | | | * providers/pop3/camel-pop3-folder.c (pop3_set_message_flags): (pop3_sync): Indexes into the flags array are message_number minus 1, not just message_number. svn path=/trunk/; revision=4533
* add a debugging macro for doing protocol tracing.Dan Winship2000-08-041-2/+24
| | | | | | | * providers/pop3/camel-pop3-store.c: add a debugging macro for doing protocol tracing. svn path=/trunk/; revision=4526
* Only call imap_get_summary_internal if the folder can hold messagesJeffrey Stedfast2000-08-042-7/+10
| | | | | | | | | | | | 2000-08-03 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Only call imap_get_summary_internal if the folder can hold messages * providers/nntp/camel-nntp-provider.c (camel_provider_module_init): Initialize the service_cache for the news/nntp providers svn path=/trunk/; revision=4519
* Initialize the service_cache for the news/nntp providersJeffrey Stedfast2000-08-041-6/+10
| | | | | | | | | 2000-08-03 Jeffrey Stedfast <fejj@helixcode.com> * providers/nntp/camel-nntp-provider.c (camel_provider_module_init): Initialize the service_cache for the news/nntp providers svn path=/trunk/; revision=4514
* srcdir != builddir fixPeter Williams2000-08-031-0/+1
| | | | svn path=/trunk/; revision=4506
* Kill this. It doesn't have any code to do anything the new mh providerDan Winship2000-08-0314-2068/+2
| | | | | | | | | | | * providers/MH: Kill this. It doesn't have any code to do anything the new mh provider doesn't do better. * providers/Makefile.am: Remove reference to MH subdir, and promote nntp to fully-supported status, since it does compile and all. svn path=/trunk/; revision=4496
* When forced to use the IP, place it in square brackets.Jeffrey Stedfast2000-08-021-7/+12
| | | | | | | | | 2000-08-01 Jeffrey Stedfast <fejj@helixcode.com> * providers/smtp/camel-smtp-transport.c (smtp_helo): When forced to use the IP, place it in square brackets. svn path=/trunk/; revision=4462
* New and improved sexp parser. An honest try at using e-sexp is wrapped inJeffrey Stedfast2000-08-022-222/+314
| | | | | | | | | | | | | | 2000-08-01 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-utils.c (imap_translate_sexp): New and improved sexp parser. An honest try at using e-sexp is wrapped in a #ifdef at the bottom of the file but is currently not used * providers/imap/camel-imap-folder.c (imap_search_by_expression): We want to do a UID SEARCH so we get UIDs back instead of sequence numbers svn path=/trunk/; revision=4461
* cvsignore filePeter Williams2000-08-011-0/+7
| | | | svn path=/trunk/; revision=4446
* Initial cut at mh provider. Well, it already does everythingNot Zed2000-08-0110-1/+1219
| | | | | | | | | | | | mbox does. 2000-08-01 Not Zed <NotZed@HelixCode.com> * providers/mh: New mh provider implementation. * providers/Makefile.am (SUBDIRS): Added mh provider. svn path=/trunk/; revision=4444
* Some IMAP servers don't wrap the UID in ()'s so don't depend on thatJeffrey Stedfast2000-08-012-208/+253
| | | | | | | | | | 2000-07-31 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (imap_get_message_info_internal): Some IMAP servers don't wrap the UID in ()'s so don't depend on that (imap_get_summary_internal): Same svn path=/trunk/; revision=4443
* Oops, forgot to free node->function - not good.Jeffrey Stedfast2000-08-011-0/+1
| | | | | | | | | 2000-07-31 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-utils.c (free_sexp_node): Oops, forgot to free node->function - not good. svn path=/trunk/; revision=4438
* Buffer overrun fix in g_strfreev -- two more that I forgotPeter Williams2000-08-011-0/+2
| | | | svn path=/trunk/; revision=4432
* Buffer overrun fix in g_strfreevPeter Williams2000-08-011-0/+1
| | | | svn path=/trunk/; revision=4431
* New convenience function to translate a Camel sexp into the equivalentJeffrey Stedfast2000-08-014-46/+328
| | | | | | | | | | | | | | | | 2000-07-31 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-utils.c (imap_translate_sexp): New convenience function to translate a Camel sexp into the equivalent IMAP sexp. * providers/imap/camel-imap-store.c: More places now use imap_next_word * providers/imap/camel-imap-folder.c (imap_search_by_expression): Implemented initial version (this may or may not work quite right) svn path=/trunk/; revision=4428
* Make sure the third word/token (whatever) is "EXPUNGE" and not somethingJeffrey Stedfast2000-07-291-24/+35
| | | | | | | | | | | | | 2000-07-28 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (imap_expunge): Make sure the third word/token (whatever) is "EXPUNGE" and not something else like "EXISTS" or "RECENT". When removing the message from the summary also make sure to free that data to avoid leakage. Also make sure to subtract 1 from the 'id' since IMAP starts at 1 and our summary starts at 0 :-) svn path=/trunk/; revision=4411
* fixed a few logic errorsJeffrey Stedfast2000-07-292-8/+8
| | | | svn path=/trunk/; revision=4410
* Cleaned up a bit, now uses imap_next_word() (camel_imap_command_extended):Jeffrey Stedfast2000-07-292-35/+85
| | | | | | | | | | | | | | | | | | | 2000-07-28 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-store.c (camel_imap_status): Cleaned up a bit, now uses imap_next_word() (camel_imap_command_extended): Now uses imap_next_word(). When checking for RECENT, allow the first digit of the recent-count be between 0 and 9 inclusive instead of exclusive. * providers/imap/camel-imap-folder.c (imap_expunge): Optimized. No longer will it need to reload the summary as it now instead removes the appropriate message summaries from the cache. (camel_imap_folder_changed): If recent == 0 then return. If recent < 0 then just emit the folder_changed signal, don't reload summaries. svn path=/trunk/; revision=4409
* Get message count when STATUS is not available. (imap_init):Jeffrey Stedfast2000-07-293-55/+123
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-07-28 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (imap_get_message_count_internal): Get message count when STATUS is not available. (imap_init): folder->has_search_capability is required for IMAP so should always be set to TRUE (is currently being set to FALSE as I've not yet implemented SEARCH support). (camel_imap_folder_changed): Seem to have fixed my optimization hack 2000-07-28 Jon K Hellan <hellan@acm.org> * providers/imap/camel-imap-store.h (CamelImapServerLevel): New enum. (CamelImapStore): Added server_level and has_status_capability members. * providers/imap/camel-imap-store.c (imap_connect): Detect IMAP4REV1, IMAP4 and STATUS in capability response. * providers/imap/camel-imap-folder.c (imap_get_message_count_internal): Use STATUS only if server supports it. TODO: Get message count when STATUS not supported. (imap_get_message, imap_get_summary_internal, imap_get_message_info_internal): Handle IMAP4 as well. (imap_protocol_get_summary_specifier): New function: Make a data item specifier for the header lines we need, appropriate to the server level. svn path=/trunk/; revision=4406
* Fixed my routine to only fetch new headers, my IDs were off by 1 on theJeffrey Stedfast2000-07-281-1/+1
| | | | | | | | | | | | 2000-07-27 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (camel_imap_folder_changed): Fixed my routine to only fetch new headers, my IDs were off by 1 on the high end, so when it would fetch the last newly arrived message it would fail and end up fetching all of the summaries because of the corruption. svn path=/trunk/; revision=4404
* Added camel-imap-utils.[c,h]Jeffrey Stedfast2000-07-285-106/+172
| | | | | | | | | | | | | | | | | | | | | | | | | 2000-07-27 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/Makefile.am: Added camel-imap-utils.[c,h] * providers/imap/camel-imap-utils.[c,h]: Utilities for parsing server responses for use in both camel-imap-store.c and camel-imap-folder.c * providers/imap/camel-imap-folder.c (imap_get_summary_internal): Free all the pointers in the headers array. (imap_get_subfolder_names_internal): Updated to use imap_parse_list_response (imap_parse_subfolder_list): Removed in favor of imap_parse_list_response * providers/imap/camel-imap-store.c (camel_imap_command_extended): Free all the pointers in the data array. (imap_connect): Updated to use imap_parse_list_response and fixed a leak (folder_is_selectable): Updated. svn path=/trunk/; revision=4400
* Now uses a hash table for looking up message info rather than a linearJeffrey Stedfast2000-07-282-18/+36
| | | | | | | | | 2000-07-27 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (imap_get_message_info): Now uses a hash table for looking up message info rather than a linear search :) svn path=/trunk/; revision=4398
* Fix Makefile.am booboo.Peter Williams2000-07-289-18/+0
| | | | svn path=/trunk/; revision=4394
* Fixed a few compiler warningsJeffrey Stedfast2000-07-261-2/+2
| | | | | | | | 2000-07-26 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c: Fixed a few compiler warnings svn path=/trunk/; revision=4345
* Fixed the real problem that Peter was running into.Jeffrey Stedfast2000-07-261-11/+11
| | | | | | | | | 2000-07-25 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (imap_summary_free): Fixed the real problem that Peter was running into. svn path=/trunk/; revision=4321
* IMAP expunge crash prevention... still not right...Peter Williams2000-07-261-0/+1
| | | | svn path=/trunk/; revision=4316
* Optimized to try and get the new message headers without reloading theJeffrey Stedfast2000-07-253-87/+73
| | | | | | | | | | | | 2000-07-25 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (camel_imap_folder_changed): Optimized to try and get the new message headers without reloading the entire summary from scratch. (imap_get_summary_internal): Will now sync() before attempting to reload the summary so that flags are set in the reloaded summary as well. svn path=/trunk/; revision=4309
* Updated to give special attention to the root folder.Jeffrey Stedfast2000-07-253-24/+39
| | | | | | | | | | | | | | | 2000-07-24 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-store.c (get_folder): Updated to give special attention to the root folder. * providers/imap/camel-imap-folder.c (imap_get_subfolder_names_internal): Updated to handle the root folder (imap_get_message_count_internal): return 0 if folder can't hold messages (camel_imap_folder_new): Change so that root folder gets special attention and always gets can_hold_messages set to FALSE svn path=/trunk/; revision=4308
* Remove exceptions from a number of methods that work on what ought to beDan Winship2000-07-256-314/+229
| | | | | | | | | | | | | | | * camel-folder.c: Remove exceptions from a number of methods that work on what ought to be static data: get_parent_folder, get_parent_store, get_message_count, get_unread_message_count, get_permanent_flags, get_message_flags, set_message_flags, get_message_user_flag, set_message_user_flag, get_uids, get_summary, get_subfolder_names. Turn camel_folder_delete_message into a macro. (Mostly a pull-up from the camel-async branch.) * providers/{imap,mbox,nntp,pop3,vee}: Update for CamelFolder changes svn path=/trunk/; revision=4303
* Updated to port easily to the new Camel API (imap_init): Don't SELECTJeffrey Stedfast2000-07-251-36/+28
| | | | | | | | | | 2000-07-24 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (imap_get_message_info): Updated to port easily to the new Camel API (imap_init): Don't SELECT INBOX, we don't need to do that svn path=/trunk/; revision=4302
* Initialize the summary and subfolder listing. (imap_summary_free): NowJeffrey Stedfast2000-07-254-103/+161
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-07-24 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Initialize the summary and subfolder listing. (imap_summary_free): Now takes a GPtrArray arg rather than a CamelImapFolder as it increases it's usefullness for free()'ing temporary summaries. (imap_get_message_count_internal): A new convenience function for getting the actual message count on a server to be used by imap_get_summary_internal) (imap_get_message_count): Since the Camel API is on the move again, the future version of this function will not be able to make a call to the store, it must only access previously fetched data (thus the creation of the _internal function) (imap_get_subfolder_names_internal): Again, because the future version of imap_get_subfolder_names will not take an exception, we must rename this function which will be called by camel_imap_folder_new() (imap_get_subfolder_names): We now return the previously collected subfolder listing that the _internal function fetched previously (imap_get_summary_internal): Again, same idea as the previous _internal functions... (imap_get_summary): Again... now returns a previously aquired summary * providers/imap/camel-imap-store.c (imap_noop): This will hopefully prevent the imap store from disconnecting. (imap_connect): Modified to add a gtk timeout event that will call imap_noop() every 10 minutes (we may want to change this time value) (imap_disconnect): Modified to remove the NOOP timeout event from the store. (camel_imap_command_extended): Commented out the code that would try and detect if the store was disconnected and then reconnect if it was needed. svn path=/trunk/; revision=4298
* Remove camel_folder_get_message_uid, which was not used, and notDan Winship2000-07-241-10/+0
| | | | | | | | | | * camel-folder.[ch]: Remove camel_folder_get_message_uid, which was not used, and not implemented by any provider. * providers/nntp/camel-nntp-folder.c: Remove get_message_uid non-implementation. svn path=/trunk/; revision=4292
* Made it a little more forgiving. Also set current_folder to NULL as thereJeffrey Stedfast2000-07-243-54/+90
| | | | | | | | | | | | | 2000-07-23 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-store.c (imap_disconnect): Made it a little more forgiving. Also set current_folder to NULL as there is no selected folder after a disconnect. (stream_is_alive): Detects whether or not a socket is "alive" (camel_imap_command_extended): Use stream_is_alive() to aid in the detection of a disconnected state. svn path=/trunk/; revision=4288
* Clear CamelExceptions when appropriate (eg when folder is marked asJeffrey Stedfast2000-07-232-40/+47
| | | | | | | | | | | | | | 2000-07-22 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-store.c (get_folder): Clear CamelExceptions when appropriate (eg when folder is marked as \NoSelect). Still needs some cleanup and perhaps Dan will have a better way of doing this as this seems like a messy way of handling this. * providers/imap/camel-imap-folder.c (imap_get_uids): Took out some debug statements as they are no longer needed. svn path=/trunk/; revision=4275
* Updated to not strip out subfolders that are marked as \NoSelect becauseJeffrey Stedfast2000-07-222-7/+49
| | | | | | | | | | | | | | | | 2000-07-21 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (imap_get_subfolder_names): Updated to not strip out subfolders that are marked as \NoSelect because this will be correctly handled in store->get_folder from now on. * providers/imap/camel-imap-store.c (folder_is_selectable): New convenience function for use in get_folder(). (parse_list_response): Now takes a char **flags argument which is needed by folder_is_selectable(). (imap_connect): Updated to reflect changes to parse_list_response(). svn path=/trunk/; revision=4274
* Updated with some of the same fixes I've made to camel-imap-folder.c likeJeffrey Stedfast2000-07-221-3/+3
| | | | | | | | | | 2000-07-21 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-stream.c (stream_read): Updated with some of the same fixes I've made to camel-imap-folder.c like recalculating message part lengths. svn path=/trunk/; revision=4266
* Rewrote the code to check for "* %d RECENT". Still needs to be modified,Jeffrey Stedfast2000-07-221-7/+11
| | | | | | | | | | 2000-07-21 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-store.c (camel_imap_command_extended): Rewrote the code to check for "* %d RECENT". Still needs to be modified, but should no longer cause an infinite loop by detecting mis-detecting RECENT messages. svn path=/trunk/; revision=4265
* Oops. Fix UID parser to allow 0 and 9 to be in the range of valid UIDJeffrey Stedfast2000-07-201-2/+2
| | | | | | | | | | 2000-07-20 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (imap_get_summary): (imap_get_message_info): Oops. Fix UID parser to allow 0 and 9 to be in the range of valid UID chars. svn path=/trunk/; revision=4233
* General cleanup working towards getting Actions->Expunge workingJeffrey Stedfast2000-07-202-96/+51
| | | | | | | | | | | | | | 2000-07-19 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c: General cleanup working towards getting Actions->Expunge working correctly. * providers/imap/camel-imap-store.c (cammel_imap_command_extended): Added code to look for "* %d RECENT" and to emit the folder_changed signal if there are any recent messages. Note: this is a hack and needs to be rewritten badly. svn path=/trunk/; revision=4226
* If the folder's message count is not the same as the number of summaries,Jeffrey Stedfast2000-07-201-9/+20
| | | | | | | | | | 2000-07-19 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (imap_get_summary): If the folder's message count is not the same as the number of summaries, free the old summary and create a new summary. svn path=/trunk/; revision=4223
* Added in imap_[g,s]et_message_user_flag() methods (imap_get_message_info):Jeffrey Stedfast2000-07-191-50/+109
| | | | | | | | | | | | | | | | | | | | | | | 2000-07-18 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (camel_imap_folder_class_init): Added in imap_[g,s]et_message_user_flag() methods (imap_get_message_info): Rewrote to use the more efficient way of downloading summary information and also added a UID comparison so that if the UID requested doesn't match the UID received, it returns NULL. FIXME: When the mailer gets NULL when it requested message info, it seems that it displays a row for that message and when you try and select the blank row, it segfaults. * providers/imap/camel-imap-store.c (get_folder): Oops, this should not be checking against "/", it should be checking against dir_sep. * providers/imap/camel-imap-folder.c (imap_parse_subfolder_line): Updated to trim out the leading namespace. (imap_get_subfolder_names): Let the subfolder parser trim the namespace off the folder name. svn path=/trunk/; revision=4215
* Added in imap_[g,s]et_message_user_flag() methodsJeffrey Stedfast2000-07-192-28/+32
| | | | | | | | | | | | | | | | | 2000-07-18 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (camel_imap_folder_class_init): Added in imap_[g,s]et_message_user_flag() methods * providers/imap/camel-imap-store.c (get_folder): Oops, this should not be checking against "/", it should be checking against dir_sep. * providers/imap/camel-imap-folder.c (imap_parse_subfolder_line): Updated to trim out the leading namespace. (imap_get_subfolder_names): Let the subfolder parser trim the namespace off the folder name. svn path=/trunk/; revision=4214
* Send a "LOGOUT" command.Jeffrey Stedfast2000-07-182-4/+17
| | | | | | | | | | | | | | | | | | 2000-07-17 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-store.c (imap_disconnect): Send a "LOGOUT" command. * providers/imap/camel-imap-folder.c (imap_get_message): Hacks to get IMAP code to work with CommunigatePro and MS Exchange (and any other servers that send back a UID at the end of each FETCH inside of the main body of the message part). (imap_sync): Un-#if 0 the code that sets the flags on the IMAP server for messages that have changed. Oops, don't mask with DELETED to find out if the message has been answered ;-) (imap_expunge): sync before expunging. svn path=/trunk/; revision=4207
* Hacks to get IMAP code to work with CommunigatePro and MS Exchange (andJeffrey Stedfast2000-07-181-2/+2
| | | | | | | | | | | | | | 2000-07-17 Jeffrey Stedfast <fejj@helixcode.com> * providers/imap/camel-imap-folder.c (imap_get_message): Hacks to get IMAP code to work with CommunigatePro and MS Exchange (and any other servers that send back a UID at the end of each FETCH inside of the main body of the message part). (imap_sync): Un-#if 0 the code that sets the flags on the IMAP server for messages that have changed. Oops, don't mask with DELETED to find out if the message has been answered ;-) svn path=/trunk/; revision=4202