1 2000-10-02 Dan Winship <danw@helixcode.com>
3 * camel-folder.[ch]: Remove
4 camel_folder_{get,free}_subfolder_info, as we want to be able to
5 scan the whole subfolder tree without having to open any folders,
6 so this needs to be in CamelStore. Remove can_hold_folders and
7 can_hold_messages flags; things that don't hold messages are no
8 longer considered CamelFolders.
10 * camel-folder-summary.[ch]: Remove CamelFolderInfo stuff.
12 * camel-store.[ch]: Add camel_store_{get,free}_folder_info, as
13 well as camel_store_free_folder_info_full and ..._nop for default
14 implementations, and camel_folder_info_free and
15 camel_folder_info_build as convenience functions. Turn
16 CamelFolderInfo into a tree structure and also add an "url"
19 * providers/*/camel-*-folder.c: Remove subfolder_info and can_hold
21 * providers/*/camel-*-store.c: Add folder_info stuff.
23 * providers/imap/camel-imap-folder.c (imap_summary_free): Free the
24 summary elements with camel_message_info_free, not
25 camel_folder_info_free. Oops.
27 * providers/imap/camel-imap-utils.c: const poison
29 2000-09-28 Jeffrey Stedfast <fejj@helixcode.com>
31 * providers/smtp/camel-smtp-transport.c: Fixed some memory leaks.
32 (camel_smtp_transport_init): Initialize supports_8bit to FALSE.
33 (smtp_helo): If server supports 8bit, set supports_8bit to TRUE.
35 * camel-transport.h (struct _CamelTransport): Added variable
36 gboolean supports_8bit (we'll need this eventually? - see bugzilla
39 * providers/smtp/camel-smtp-transport.c
40 (smtp_get_email_addr_from_text): Ugh, no wonder people were
41 getting illegal seek warnings *sigh*. I guess I can only blame
42 myself for this one though :-(
44 2000-09-28 Jeffrey Stedfast <fejj@helixcode.com>
46 * providers/smtp/camel-smtp-transport.c (_send_to): Don't send the
47 recipient data through smtp_get_email_addr_from_text - this is a
48 complete waste. In fact, we don't want to have to use that
51 * camel-internet-address.c, camel-address.c: Added some gtk-doc
54 2000-09-28 Jeffrey Stedfast <fejj@helixcode.com>
56 * camel-mime-utils.c (header_encode_string): Make sure to add the
57 space char after an encoded word when the encoding is iso-8859-1.
59 2000-09-28 Jeffrey Stedfast <fejj@helixcode.com>
61 * providers/imap/camel-imap-folder.c (imap_get_message): When
62 getting a literal string response, don't include the \r\n after
63 the closing } (as in: "... {798}\r\n...")
65 * providers/imap/camel-imap-stream.c (stream_read): Same.
67 2000-09-28 Not Zed <NotZed@HelixCode.com>
69 * camel-mime-utils.c (header_fold): New function to fold headers.
71 2000-09-27 Not Zed <NotZed@HelixCode.com>
73 * camel-mime-parser.c (folder_scan_header): If we had an empty
74 header, then it must be end of the headers too.
75 (folder_scan_init): No we dont need to init the outbuf with a nul
78 * camel-folder-summary.c (camel_folder_summary_set_uid): New
79 function to reset the uid to a higher value.
81 * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_sync):
82 "something failed (yo!)" what sort of crap is this? Fixed all the
83 indenting again, what wanker keeps running stuff through indent?
84 (message_info_new): Check the uid we loaded off the disk, if it
85 existed already, assign a new one. If it didn't then make sure
86 the nextuid is higher.
88 * camel-charset-map.c: New file, used to build a large unicode
89 decoding mapping table, and use it to determine what is the
90 lowest charset a given word can be encoded with. Uses tables from
93 * camel-internet-address.c (internet_encode): Use
94 header_phrase_encode to properly encode the fullname, as required.
95 refixed indenting. Who keeps doing that?
96 (camel_internet_address_find_address): Changed fatal return/warnings
99 * camel-mime-utils.c (header_raw_append_parse): Check : explicitly
100 (removed from is_fieldname() macro).
101 (camel_mime_special_table): Changed to short, so we can represent
103 (quoted_encode): Take a mask of the safe chars for this encoding.
104 (header_address_decode): Removed a #warning that makes no sense
106 (header_decode_date): Fixed the 'broken date' parser code, if it
107 ever decoded it it just threw away the result.
108 (header_encode_string): Use better charset matching for encoding
111 2000-08-31 Not Zed <NotZed@HelixCode.com>
113 * providers/mh/camel-mh-summary.c (camel_mh_summary_sync): Save
114 the index if we do a sync.
115 (camel_mh_summary_check): Save the index here too. Probably.
117 2000-09-27 Dan Winship <danw@helixcode.com>
119 * providers/imap/camel-imap-store.c (camel_imap_command_extended):
120 Return untagged data in a GPtrArray rather than a string, since it
121 saves processing time and is much easier to deal with for several
122 commands. Update for camel_imap_folder_changed change.
123 (camel_imap_fetch_command): Update for camel_imap_folder_changed
125 (imap_connect, imap_folder_exists): Update for
126 camel_imap_command_extended change.
128 * providers/imap/camel-imap-folder.c
129 (imap_get_message_count_internal,
130 imap_get_subfolder_info_internal, imap_search_by_expression):
131 Update for camel_imap_command_extended change.
133 (imap_get_summary_internal, imap_get_message_info_internal): Use
134 camel_imap_fetch_command here now to get around the
135 camel_imap_command_extended change.
137 (camel_imap_folder_changed): turn expunged into a GArray of ints
138 rather than a GPtrArray of strings representing ints.
140 2000-09-26 Jeffrey Stedfast <fejj@helixcode.com>
142 * providers/imap/camel-imap-folder.c
143 (imap_get_message_count_internal): Quote the folder name as it may
145 (imap_get_subfolder_info_internal): Same.
147 * providers/imap/camel-imap-utils.c (imap_parse_list_response): Do
148 proper unquoting for folder names.
149 (func_get_current_date): Implemented.
151 * providers/imap/camel-imap-store.c
152 (imap_folder_exists): Quote the folder name as it may have spaces.
154 (check_current_folder): Same.
156 2000-09-22 Dan Winship <danw@helixcode.com>
158 * providers/imap/camel-imap-folder.c
159 (imap_get_subfolder_info_internal): The root folder's name is "",
161 (camel_imap_folder_new): constify folder_name.
163 * providers/imap/camel-imap-store.c (get_folder): Create the
164 folder with folder_name, not folder_path.
165 (camel_imap_command_preliminary): Don't free cmdid here.
167 2000-09-21 Dan Winship <danw@helixcode.com>
169 * providers/imap/camel-imap-utils.c (imap_create_flag_list): New
170 function to convert Camel flags to an IMAP flag_list.
171 (imap_parse_flag_list): Contrariwise.
173 * providers/imap/camel-imap-store.c (camel_imap_command_*): Make
174 the @ret arg actually optional, as (mostly) documented.
175 (various): Don't pass "&result" to camel_imap_command_* if we're
176 just going to immediately free it. Don't record status if we're
177 not going to look at it.
179 * providers/imap/camel-imap-folder.c: Likewise.
180 (imap_summary_free): Use camel_folder_info_free.
181 (imap_sync): Use imap_create_flag_list. Clear
182 CAMEL_MESSAGE_FOLDER_FLAGGED after syncing so we don't keep
184 (imap_append_message): Use imap_create_flag_list. Don't leak the
185 memstream if the append fails.
186 (imap_move_message_to): Use camel_folder_delete_message rather
187 than doing it by hand.
188 (imap_get_summary_internal, imap_get_message_info_internal): Use
189 imap_parse_flag_list and header_raw_clear.
190 (camel_imap_folder_changed): Use camel_message_info_free.
192 2000-09-21 Dan Winship <danw@helixcode.com>
194 * providers/imap/camel-imap-store.c (get_folder_name): INBOX is
196 (get_root_folder_name): Make the root folder "" rather than "/".
197 (get_folder): Update for root folder name change.
198 (camel_imap_store_get_toplevel_dir): Removed. (Unused, unneeded.)
199 (camel_imap_store_folder_path): New function to turn a Camel
200 folder name into the corresponding namespaced IMAP path.
201 (imap_folder_exists): Make this take a store and a path rather
203 (imap_create): Likewise
204 (get_folder): Update for camel_imap_store_folder_path and other
206 (check_current_folder): Likewise.
208 * providers/imap/camel-imap-folder.c: Change a bunch of CamelStore
209 variables to CamelImapStore (and add a few more) to prevent excess
210 gratuitous casting. Use camel_imap_store_folder_path where
212 (camel_imap_folder_new): Update for root folder name change.
214 2000-09-19 Jeffrey Stedfast <fejj@helixcode.com>
216 * providers/smtp/camel-smtp-transport.c (smtp_data): Use the
217 linewrap filter to achieve full RFC0821 compliance.
219 * camel-mime-filter-linewrap.[c,h]: New mime-filter to word-wrap.
221 2000-09-19 Jeffrey Stedfast <fejj@helixcode.com>
223 * camel-internet-address.c (internet_encode): When encoding the
224 internet address, quote the name as the name may have commas or
225 any other token which may later confuse our address parser.
227 2000-09-19 Dan Winship <danw@helixcode.com>
229 * providers/imap/camel-imap-folder.c
230 (imap_get_subfolder_info_internal): Fix the case where INBOX
231 isn't returned in the folder listing.
233 2000-09-19 Dan Winship <danw@helixcode.com>
235 * camel-folder.c: (init): Removed
236 (camel_folder_init, camel_folder_construct): New object init
237 function and public object constructor to replace the old init
238 method in a more Gtk-like fashion.
240 (get_parent_folder, camel_folder_get_parent_folder): Removed. No
241 CamelFolder subclass was ever setting the parent_folder member, no
242 code has ever needed to look at it, and fixing it would actually
245 (get_subfolder_info, camel_folder_get_subfolder_info): Renamed
246 from ..._names. Deals in CamelFolderInfo now.
247 (free_subfolder_info, camel_folder_free_subfolder_info): Likewise.
249 (get_subfolder, camel_folder_get_subfolder): Removed.
250 CamelFolderInfo contains the subfolder's full name, so this is
251 unnecessary now, and removing it lets us get rid of the
252 CamelFolder separator member, which is needed for the default
253 implementation of this function, but not otherwise needed for most
256 Also, lots of code style fixes.
258 * providers/*: Update CamelFolder subclasses for changes, although
259 none of them fill in the message counts in the CamelFolderInfo
262 2000-09-18 Christopher James Lahey <clahey@helixcode.com>
264 * camel-folder-search.c, camel-folder-search.h,
265 camel-remote-store.c, providers/imap/camel-imap-folder.c,
266 providers/imap/camel-imap-store.c: Fixed the #include lines to
267 deal properly with gal.
269 2000-09-17 Dan Winship <danw@helixcode.com>
271 * camel-folder-summary.h: update CamelFolderInfo
272 * camel-folder-summary.c (camel_folder_info_free): New function to
273 free the contents of a CamelFolderInfo
275 2000-09-15 Dan Winship <danw@helixcode.com>
277 * camel.c (camel_init): Set camel_verbose_debug to TRUE if
278 CAMEL_VERBOSE_DEBUG is set in the environment.
280 * camel-remote-store.c (remote_send_line, remote_recv_line): only
281 log if camel_verbose_debug is TRUE.
283 2000-09-14 Jeffrey Stedfast <fejj@helixcode.com>
285 * providers/imap/camel-imap-store.c (get_folder): Don't use
286 dir_sep as top-level directory, use "/".
288 * providers/imap/camel-imap-folder.c (imap_expunge): Get rid of
291 2000-09-13 Dan Winship <danw@helixcode.com>
293 * providers/imap/camel-imap-folder.c (imap_expunge): Don't look at
294 the response of the command. camel_imap_command_extended()
295 processes EXPUNGE responses itself, so if we do it here too we
296 remove twice as many summary items as we should.
298 2000-09-13 Jeffrey Stedfast <fejj@helixcode.com>
300 * providers/imap/camel-imap-store.c (imap_folder_exists): Rewrote
301 to take a third argument (gboolean *selectable) so that we can
302 find out if the folder is selectable or not as we look to see if
303 it exists. Also, don't use EXAMINE because that will not work on
304 non-selectable folders, so use LIST instead.
305 (get_folder): Check to see if the folder exists even vefore
306 calling imap_create as this will save time. If the folder does
307 exist, find out if it's selectable. Moved the call to refresh_info
310 * providers/imap/camel-imap-folder.c (imap_get_uids): Check for a
312 (camel_imap_folder_new): Don't call refresh_info here - call it in
313 get_folder() because we don't know if this folder even exists on
314 the server yet! And even if it does, we don't know if it can hold
317 2000-09-12 Jeffrey Stedfast <fejj@helixcode.com>
319 * camel-mime-parser.c (folder_scan_step): Make sure *datalength is
320 > 0 before calling camel_mime_filter_filter otherwise we will get
321 a segfault if the filter calls iconv().
323 2000-09-08 Christopher James Lahey <clahey@helixcode.com>
325 * providers/nntp/camel-nntp-auth.c,
326 providers/nntp/camel-nntp-auth.h: Fixed a warning.
328 2000-09-07 Dan Winship <danw@helixcode.com>
330 * camel-session.c (camel_session_get_storage_path): Make this not
333 2000-09-07 Dan Winship <danw@helixcode.com>
335 * camel-session.c (camel_session_new): Make this take a path to a
336 directory that Camel can use for its own nefarious purposes.
337 (camel_session_get_storage_path): New function to return a path
338 that a service can use for its own nefarious sub-purposes.
340 * camel-service.c (camel_service_get_path): New method (and
341 useful default implementation) to get a (relative) pathname
342 corresponding to the service.
344 2000-09-06 Dan Winship <danw@helixcode.com>
346 * providers/pop3/camel-pop3-store.c (connect_to_server): Make KPOP
349 2000-09-06 Jeffrey Stedfast <fejj@helixcode.com>
351 * camel-mime-message.c (camel_mime_message_get_received_date):
352 Implemented (someone added these to camel-mime-message.h but never
353 implemented them!!) - though it may not be right.
354 (camel_mime_message_get_sent_date): Same.
356 2000-09-05 Dan Winship <danw@helixcode.com>
358 * camel-mime-part.c (camel_mime_part_get_filename): If a MIME part
359 has no Content-Disposition, but does have a "name" on the
360 Content-Type, return that as the filename.
361 (process_header): strstrip the Content-Description
363 2000-09-05 Chris Toshok <toshok@helixcode.com>
365 * providers/nntp/camel-nntp-utils.c (get_OVER_headers): care about
367 (get_HEAD_headers): same.
368 (camel_nntp_get_headers): same.
370 * providers/nntp/camel-nntp-store.h: get rid of
371 CAMEL_NNTP_OK/ERR/FAIL.
373 * providers/nntp/camel-nntp-store.c
374 (camel_nntp_store_get_extensions): take CamelException arg and
375 pass along to camel_nntp_command.
376 (camel_nntp_store_get_overview_fmt): same.
377 (nntp_store_connect): convert to using constants in
378 camel-nntp-resp-codes.h
379 (nntp_store_get_folder): make use of camel_nntp_folder_new.
380 (camel_nntp_command_send_recv): new function to deal with auth
382 (camel_nntp_command): split out most of this function into
383 camel_nntp_command_send_recv. also, return the actual response
384 code instead of CAMEL_NNTP_OK/ERR/FAIL.
386 * providers/nntp/camel-nntp-resp-codes.h: new file.
388 * providers/nntp/camel-nntp-folder.h: prototype for
389 camel_nntp_folder_new.
391 * providers/nntp/camel-nntp-folder.c (camel_nntp_folder_new): new
392 convenience function.
393 (nntp_folder_get_message): care more about the actual response
396 * providers/nntp/Makefile.am (libcamelnntp_la_SOURCES): add
398 (libcamelnntpinclude_HEADERS): add camel-nntp-auth.h.
400 * providers/nntp/camel-nntp-auth.h: new file.
402 * providers/nntp/camel-nntp-auth.c: new file.
404 2000-09-05 Peter Williams <peterw@helixcode.com>
406 * providers/imap/camel-imap-store.c (imap_folder_exists): Don't free the
407 result on error; the exception will have the relevant info.
409 * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Check for
412 * providers/imap/camel-imap-store.c (imap_connect): Check the exception
413 on the refresh_folders call.
415 * providers/imap/camel-imap-store.h: Clean up some now-unused fields.
417 * camel.c (camel_init): Call unicode_init again, now that libunicode
418 will not initialize itself twice.
420 2000-09-02 Lauris Kaplinski <lauris@helixcode.com>
422 * camel-folder-search (search_header_contains): Use e_utf8_strstrcase
424 2000-09-01 Christopher James Lahey <clahey@helixcode.com>
426 * providers/imap/camel-imap-utils.c: Removed some unused
429 2000-09-01 Peter Williams <peterw@helixcode.com>
431 * providers/nntp/camel-nntp-store.c (camel_nntp_command): Initialize
432 the statically-allocated CamelException so that it doesn't contain
433 junk data that camel_exception_set() may try to free.
434 (camel_nntp_store_get_extensions): Same.
435 (camel_nntp_store_get_overview_fmt): Same.
437 * providers/pop3/camel-pop3-store.c (camel_pop3_command): Typo
438 fix (if (*ret) -> if (ret)).
440 * providers/pop3/camel-pop3-store.c (pop3_connect): Set the
441 port # back to what was specified ASAP, so that the hash of
442 the URL doesn't change (which causes a failure in
443 service_cache_remove that leads to a segfault).
445 * providers/imap/camel-imap-store.c (imap_connect): Clear the
446 exception after a failed LOGIN so that it doesn't pass through
447 to the upper level and make mail think that the login failed.
449 * providers/pop3/camel-pop3-store.c (pop3_connect): As above.
451 2000-08-31 Peter Williams <peterw@helixcode.com>
453 * providers/pop3/camel-pop3-store.c (camel_pop3_store_get_type):
454 Implement POP3 with the CamelRemoteStore now.
455 (connect_to_server): Hack this a bit to get KPOP to work. Obey
456 the new connection semantics of the remote store (implicitly).
457 (query_auth_types_connected): Clear exceptions after attempts
458 to connect; the code at the bottom will catch hard errors.
459 Use camel_service_connect.
460 (camel_pop3_command): Take a CamelException; now, when an error
461 occurs, ret is set to NULL and the exception passes back the
462 appropriate information.
463 (pop3_get_response): Same as above.
464 (pop3_try_authenticate): Give camel_pop3_command its exception
465 and handle it properly.
466 (pop3_connect): Call the parent classfuncs. Don't disconnect
467 on error (done for us).
469 * providers/pop3/camel-pop3-folder.c: Obey the camel_pop3_command
472 * camel-remote-store.c (remote_query_auth_types_connected): Don't
473 warn; just return NULL.
474 (remote_query_auth_types_generic): Same.
475 (remote_send_string): Filter out passwords in debugging output.
477 * providers/pop3/camel-pop3-store.c (camel_pop3_store_init): Also
478 set the ALLOW_AUTH flag.
480 * providers/imap/camel-imap-store.c (camel_imap_store_init): Same.
482 2000-08-31 Chris Toshok <toshok@helixcode.com>
484 * providers/nntp/camel-nntp-store.c (camel_nntp_store_class_init):
485 remove get_folder_name.
486 (nntp_store_get_folder_name): remove.
488 2000-08-31 Lauris Kaplinski <lauris@helixcode.com>
490 * camel-mime-part.c (write_to-stream): Use filter only if we have one
492 2000-08-31 Chris Toshok <toshok@helixcode.com>
494 * providers/nntp/camel-nntp-utils.c (get_OVER_headers): use
495 camel_remote_store_recv_line.
497 * providers/nntp/camel-nntp-folder.c (nntp_folder_get_message):
498 use camel_remote_store_recv_line to build message. also, free our
499 buffer so we don't leak like mad.
501 * providers/nntp/camel-nntp-store.c:
502 (camel_nntp_store_get_additional_data) remove.
503 (camel_nntp_store_get_extensions): use
504 camel_remote_store_recv_line.
505 (camel_nntp_store_get_overview_fmt): same. also, don't rely on
506 _get_additional_data anymore since it's easier to parse without.
507 (camel_nntp_command): use camel_remote_store_send_string and
508 camel_remote_store_recv_line.
510 * providers/nntp/camel-nntp-store.h: CamelRemoteStore is the
511 parent class now. remove istream/ostream since CamelRemoteStore
512 takes care of that for us. also remove the prototype for
513 camel_nntp_store_get_additional_data.
515 * providers/nntp/camel-nntp-newsrc.c (camel_nntp_newsrc_write):
516 make sure to clear dirty bit.
517 (camel_nntp_newsrc_read_for_server): don't worry about continually
518 trying to open the file - if it fails we just return an
519 unpopulated .newsrc file.
521 2000-08-31 Chris Toshok <toshok@helixcode.com>
523 * providers/nntp/camel-nntp-newsrc.c
524 (camel_nntp_newsrc_read_for_server): make this a bit more robust.
525 try to create an empty .newsrc file for the server if we can't
526 open it for reading. also, don't allocate everything until we've
529 * providers/nntp/camel-nntp-utils.c (get_OVER_headers): make use
530 of our overview field indices.
531 (camel_nntp_get_headers): only call get_OVER_headers if the
532 extension is present. warn if it's not - since get_HEAD_headers
533 needs work before it works.
535 * providers/nntp/camel-nntp-store.c
536 (camel_nntp_store_get_extensions): new function - query the server
538 (camel_nntp_store_get_overview_fmt): new function - query the
539 server for the overview format and build our table of the indices
540 we care about. support the "full" suffix on fields.
541 (nntp_store_connect): call camel_nntp_store_get_extensions and
542 camel_nntp_store_get_overview_fmt.
544 * providers/nntp/camel-nntp-store.h: add codes for extensions
545 found on news.mozilla.org. only one that we care about is OVER.
546 also, add CamelNNTPOverField and an enum of the overview fields
549 2000-08-31 Jeffrey Stedfast <fejj@helixcode.com>
551 * providers/imap/camel-imap-utils.c (imap_translate_sexp):
552 Reimplemented. It should now work correctly for most possible
555 2000-08-31 Jeffrey Stedfast <fejj@helixcode.com>
557 * providers/imap/camel-imap-store.c (camel_imap_command_extended):
558 Don't save any exceptions caused by camel_imap_folder_changed
559 (camel_imap_fetch_command): Same.
561 * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
562 Using a new way of calculating the first recent message that seems
563 more accurate. Also added code to make sure we don't accidently
564 add a duplicate summary.
566 2000-08-31 Not Zed <NotZed@HelixCode.com>
568 * camel-mime-part.c (write_to_stream): Use the proper type
569 checking function to check for text types.
570 (write_to_stream): If we have a charset on a text type that
571 isn't us-ascii or utf-8, then we need to reencode it, so add a
572 filter to do that too.
573 (write_to_stream): Fix some warnings/use the right constructor,
575 (write_to_stream): Rearrange the logic so it always does charset
576 conversion, and not just if we have a qp/base64 block.
578 * camel-mime-utils.c (append_latin1): New function - even though
579 its broken, we'll assume mailers send latin1 headers instead of
580 us-ascii. We just have to encode high chars into utf-8.
581 (header_decode_text): Call append_latin1 for appending unencoded
583 (append_latin1): Do an additional mask for account for c's
584 undefined behaviour for sign extension whilst shifting right.
586 2000-08-30 Jeffrey Stedfast <fejj@helixcode.com>
588 * providers/imap/camel-imap-store.c (camel_imap_fetch_command):
589 Rewrote to ignore strings that look like server responses until it
590 is sure that it has finished reading the literal string response.
592 2000-08-30 Jeffrey Stedfast <fejj@helixcode.com>
594 * camel-remote-store.c (remote_send_string): Don't wrap printed
595 strings in quotes, makes things messy
597 * providers/imap/camel-imap-folder.c (imap_get_message): Updated
598 to use the camel_imap_fetch_command
600 * providers/imap/camel-imap-stream.c (stream_read): Updated to use
601 camel_imap_fetch_command
603 * providers/imap/camel-imap-store.c (camel_imap_command_extended):
604 No longer handles FETCH requests so no longer needs to be
605 concerned with checking to make sure that server responses are
606 valid (they have to be).
607 (camel_imap_fetch_command): New convenience function that handles
610 2000-08-30 Peter Williams <peterw@helixcode.com>
612 * camel-remote-store.c (remote_connect): Unify with remote_post_connect.
613 (remote_disconnect): Unify with remote_pre_disconnect.
614 (camel_remote_store_class_init): Don't use the post_connect and
615 pre_disconnect classfuncs anymore ; they weren't especially useful.
617 * providers/imap/camel-imap-store.c (imap_connect): Use this again
618 instead of implementing post_connect.
619 (imap_disconnect): Analogous to above.
621 * camel-session.c (camel_session_get_service_connected): New function.
622 Like camel_session_get_service() but also connects to the service
623 if needed. camel_session_get_{store,transport} (defined in the header)
624 used this now, preventing annoying when-to-connect problems.
626 * camel-service.c (camel_service_new): Revert to the old behavior
627 of not connecting until told to do so. Otherwise doing auth
628 testing correctly is really hard.
629 (camel_service_connect): Fix behavior here (set the connected
631 (camel_service_disconnect): Unset the connected flag.
633 2000-08-30 Jeffrey Stedfast <fejj@helixcode.com>
635 * providers/imap/camel-imap-store.c: General cleanup / moving
636 stuff around to make things easier to follow.
638 2000-08-30 Jeffrey Stedfast <fejj@helixcode.com>
640 * camel-remote-store.c: Prevent exceptions from being overwritten
642 * providers/imap/camel-imap-folder.c (imap_expunge): Beautified
643 (imap_get_subfolder_names_internal): Removed old code as the
644 replacement code has now been tested and proven to work
646 2000-08-29 Jeffrey Stedfast <fejj@helixcode.com>
648 * providers/imap/camel-imap-utils.c: Removed old code that will
649 never be needed again
651 * providers/imap/camel-imap-store.c: Removed old code for
652 try_connect - will never need this code
653 (slurp_response): Update to make sure we aren't falsely detecting
656 2000-08-29 Peter Williams <peterw@helixcode.com>
658 * camel-service.c (camel_service_connect): Uncomment this.
659 (camel_service_disconnect): Same.
661 * camel-remote-store.[ch]: New files. Abstract remote storages
662 (IMAP, POP3, NNTP) and hides the lower-level networky stuff.
664 * camel-service.c (camel_service_new): Take an extra argument, the
665 provider that created us, cause it's useful.
666 (camel_service_finalize): Unref our new provider member.
668 * camel-session.c (camel_session_get_service): Pass the proper number of
669 arguments to camel_service_new().
671 * camel-imap-store.c: Massive update: 1) use the CamelRemoteService to
672 make our life Very Easy (TM). 2) Change the semantics of all
673 camel_imap_command* functions to take exceptions, centralize tons of
674 duplicate code, and use the handy RemoteStore utility functions
676 * camel-imap-folder.c: Use the new semantics of camel_imap_command*
678 * camel-imap-stream.c: Same.
680 2000-08-29 Jeffrey Stedfast <fejj@helixcode.com>
682 * providers/imap/camel-imap-store.c (camel_imap_command_extended):
683 Updated to check for EXPUNGE notifications
685 * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
686 Updated to account for messages which have been expunged (now
687 takes a new arg, a GPtrArray of message id's that have been
689 (imap_expunge): Updated (we may want to just use the code in
690 folder_changed now instead of doing our own summary
691 expunging...but that can be fixed later)
692 (imap_append_message): Updated.
693 (imap_copy_message_to): Updated.
694 (imap_move_message_to): Updated.
696 2000-08-28 Peter Williams <peterw@helixcode.com>
698 * camel-folder.c (camel_folder_refresh_info): New member function,
699 refresh_info, used for rereading folder state after its state has
700 somehow become unknown. Tries to preserve last-known status of
703 * providers/mbox/camel-mbox-folder.c (mbox_refresh_info): Implement
704 ::refresh_info (split up ::init)
706 * providers/mbox/camel-mbox-store.c (get_folder): Call ::refresh_info.
708 * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Call
709 ::refresh_info once initialized.
710 (imap_refresh_info): New member function; reads the summary from
711 the server (used to be in camel_imap_folder_new; split out).
713 * providers/imap/camel-imap-store.c (imap_connect): Set
714 CamelService::connected a little early so that
715 camel_imap_command won't try to connect while already
717 (camel_imap_command*): Try to connect if not connected already.
719 * providers/pop3/camel-pop3-folder.c (pop3_refresh_info): Same as above.
721 * providers/pop3/camel-pop3-folder.c (camel_pop3_folder_new): Same
724 * providers/pop3/camel-pop3-store.c (pop3_connect): Set
725 CamelService::connected a little early so that
726 camel_pop3_command won't try to connect while already
728 (connect_to_server): Same.
730 * providers/nntp/camel-nntp-folder.c (nntp_folder_refresh_info): Same
733 2000-08-28 Jeffrey Stedfast <fejj@helixcode.com>
735 * providers/imap/camel-imap-folder.c (imap_get_message): Fixed the
736 hack around quoted string responses - should now handle them
737 according to the specifications in the RFC
739 * providers/imap/camel-imap-stream.c (stream_read): Updated to
740 match the code currently used in camel-imap-folder.c
742 2000-08-28 Ettore Perazzoli <ettore@helixcode.com>
744 * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_sync):
745 Never ever free `tmpname' as it comes from `alloca()'!
747 2000-08-26 Ettore Perazzoli <ettore@helixcode.com>
749 * camel-mime-utils.c (header_decode_text): Use `g_free()', not
750 `free()', to free `decword'.
752 2000-08-25 Peter Williams <peterw@helixcode.com>
754 * camel.c (camel_init): Don't call unicode_init; code in e-util
755 will do it, and if unicode_init is called twice, you get an
756 infinite loop when looking up nonexistant encodings (patch
757 has been submitted to libunicode's maintainer).
759 * camel-provider.h: Add a new field, default_ports, which
760 helps the configuration code guess about how to make CamelURL's
763 * providers/*/camel-*-provider.c: Specify default ports.
765 2000-08-25 Jeffrey Stedfast <fejj@helixcode.com>
767 * providers/imap/camel-imap-folder.c
768 (imap_get_subfolder_names_internal): If the url path is "/" and
769 the folder path is "/", just LIST "" "*" (this should fix some
770 cyrus imapd problems). Also, INBOX is case insensitive so use
773 2000-08-24 Lauris Kaplinski <lauris@helixcode.com>
775 * camel-folder-summary.c (summary_build_content_info):
777 * camel-mime-part-utils.c (simple_data_wrapper_construct_from_parser):
779 * camel-mime-utils.c (rfc2047_decode_word): Use UTF-8
781 2000-08-17 Not Zed <NotZed@HelixCode.com>
783 * providers/mh/camel-mh-folder.c (mh_finalize): And here too.
785 * providers/mbox/camel-mbox-folder.c (mbox_finalize): Close index
788 2000-08-23 Dan Winship <danw@helixcode.com>
790 * camel-mime-utils.c (header_address_list_format_append): put
791 commas between addresses.
793 2000-08-22 Dan Winship <danw@helixcode.com>
795 * providers/imap/camel-imap-folder.c
796 (imap_protocol_get_summary_specifier): use BODY.PEEK, not BODY, so
797 we don't set the message \Seen.
799 2000-08-22 Christopher James Lahey <clahey@helixcode.com>
801 * providers/pop3/camel-pop3-store.c: Fixed a small warning.
803 2000-08-22 Peter Williams <peterw@helixcode.com>
805 * camel-service.c (camel_service_new): Connect automatically if the
807 (finalize): Disconnect automatically if connected.
808 (camel_service_query_auth_types): Split into two functions; one to
809 be called if we're connected to an actual server (_connected), one
810 to be called if we're just gauging the general authtypes supported
812 (is_connected): Remove.
814 * camel-store.c (camel_store_get_folder): Don't connect explicitly to
817 * providers/nntp/camel-nntp-store.c (query_auth_types_generic): Split
818 the query_auth_types function. Hook it up in _new.
819 (finalize): Don't try to disconnect here.
821 * providers/pop3/camel-pop3-store.c (query_auth_types_generic): Same.
822 (finalize): Don't try to disconnect here.
824 * providers/imap/camel-imap-store.c (query_auth_types_generic): Same.
825 (finalize): Don't try to disconnect here.
827 * providers/smtp/camel-smtp-transport.c (query_auth_types_generic): Split
828 the query_auth_types (dummy, in this case) function. Hook it up in _new.
829 (finalize): Don't try to disconnect here.
831 2000-08-21 JP Rosevear <jpr@helixcode.com>
833 * providers/nntp/camel-nntp-folder.c (nntp_folder_get_subfolder_names):
834 Make sure newsrc is not null
835 (nntp_folder_get_subfolder_names): ditto
837 * providers/nntp/camel-nntp-newsrc.c
838 (camel_nntp_newsrc_get_subscribed_group_names): Programming check
840 (camel_nntp_newsrc_get_all_group_names): ditto
841 (camel_nntp_newsrc_write_to_file): ditto
842 (camel_nntp_newsrc_write): ditto
844 2000-08-21 JP Rosevear <jpr@helixcode.com>
846 * providers/nntp/camel-nntp-store.c (camel_nntp_command):
847 Make sure respbuffer is not null before manipulating it.
848 If it is null, return CAMEL_NNTP_FAIL and a decent error
851 2000-08-18 Peter Williams <peterw@helixcode.com>
853 * camel-internet-address.c (internet_encode): If the name is "" we
854 weren't outputting anything; output the address at least.
856 2000-08-16 Peter Williams <peterw@helixcode.com>
858 * camel-internet-address.c (internet_encode): Fix a leak when
859 name = "". It's a single-byte leak, but it's the little things
862 * camel-object.c (camel_type_lock_up): Don't leave the type
863 system locked when a bad unlock happens.
865 * providers/mbox/camel-mbox-store.c (get_folder): Fix a leak.
867 2000-08-15 Peter Williams <peterw@helixcode.com>
869 * providers/imap/camel-imap-folder.c (imap_copy_message_to): Typo fix.
871 2000-08-14 Peter Williams <peterw@helixcode.com>
873 * camel-folder-search.c (search_get_sent_date): New search function;
874 returns the time_t when the message was sent.
875 (search_get_receive_date): Same for when it was received.
876 (search_get_current_date): Gets the current time for use with the
877 above two. Is this in the right place?
879 * camel-folder-search.h: Add the new functions above to the class.
881 2000-08-13 Dan Winship <danw@helixcode.com>
883 * providers/nntp/Makefile.am (libcamelnntpinclude_HEADERS): Add
886 * providers/imap/camel-imap-folder.c
887 (imap_get_subfolder_names_internal): do a strcasecmp rather than
888 just a strcmp when checking if a folder is "INBOX", since it is
889 a case-insensitive name.
891 2000-08-12 Dan Winship <danw@helixcode.com>
893 * providers/imap/camel-imap-folder.c (imap_get_summary_internal):
894 Don't assume the FETCH results will come back in the order they
896 (imap_get_subfolder_names_internal): Add "INBOX" to the list as
897 g_malloc'ed memory, not a static string.
899 2000-08-12 Jeffrey Stedfast <fejj@helixcode.com>
901 * providers/imap/camel-imap-store.c
902 (camel_imap_command_continuation): Now takes a char * parameter
904 (camel_imap_command_continuation_with_stream): Same function as
905 above but takes a stream parameter instead
907 * providers/imap/camel-imap-folder.c (imap_append_message): Use
908 camel_imap_command_continuation_with_stream
910 2000-08-12 Dan Winship <danw@helixcode.com>
912 * providers/pop3/camel-pop3-store.c (pop3_try_authenticate): New
913 function to do one round of attempted authentication.
914 (pop3_connect): Move a bunch of code out into
915 pop3_try_authenticate and fix some bugs in the edge cases.
917 2000-08-12 Jeffrey Stedfast <fejj@helixcode.com>
919 * providers/imap/camel-imap-store.c (query_auth_types): No longer
920 calls try_connect() to get authtypes
922 2000-08-11 Jeffrey Stedfast <fejj@helixcode.com>
924 * providers/imap/camel-imap-store.c
925 (camel_imap_command_continuation): Changed param order a bit and
928 * providers/imap/camel-imap-folder.c (imap_append_message): Use
929 the new multi-transactional convenience functions
931 2000-08-11 Jeffrey Stedfast <fejj@helixcode.com>
933 * providers/imap/camel-imap-store.c
934 (camel_imap_command_preliminary): New convenience function for
935 multi-transactional commands (opening request)
936 (camel_imap_command_continuation): New convenience function for
937 multi-transactional commands (followup data)
939 2000-08-11 Christopher James Lahey <clahey@helixcode.com>
941 * providers/mh/camel-mh-folder.c: Fixed a warning.
943 2000-08-11 Chris Toshok <toshok@helixcode.com>
945 * providers/nntp/camel-nntp-folder.c
946 (camel_nntp_folder_class_init): remove get_name and get_full_name
947 assignments, since the camel-folder.c implementation does what we
950 2000-08-11 Chris Toshok <toshok@helixcode.com>
952 * providers/nntp/camel-nntp-store.c
953 (camel_nntp_store_get_toplevel_dir): use g_get_home_dir, since
954 evolution_dir isn't available in the providers.
956 2000-08-11 Peter Williams <peterw@helixcode.com>
958 * camel-folder.c (thaw): Fix a bug where the message_changed
959 signal wasn't being emitted.
961 2000-08-11 Not Zed <NotZed@HelixCode.com>
963 * providers/mh/camel-mh-folder.c (mh_set_message_user_tag):
965 (mh_get_message_user_tag): Implement.
967 * providers/mbox/camel-mbox-folder.c (mbox_get_message_user_tag):
968 (mbox_set_message_user_tag): Implement.
970 * camel-folder.c (move_message_to): Yay so lets fix an already
972 (copy_message_to): and here too ... update for api change to append().
973 And removed another warning.
974 (camel_folder_set_message_user_tag): Routine to set message tags.
975 (camel_folder_get_message_user_tag): And accessor.
977 2000-08-10 Christopher James Lahey <clahey@helixcode.com>
979 * camel-folder-search.c, camel-folder-summary.c, camel-medium.c,
980 camel-mime-filter-charset.c, camel-mime-filter.c,
981 camel-mime-filter.h, camel-mime-message.c, camel-mime-parser.c,
982 camel-mime-part-utils.c, camel-mime-part.c, camel-mime-utils.c,
983 camel-movemail.c, camel-multipart.c, camel-object.c,
984 camel-stream-mem.c, providers/mbox/camel-mbox-folder.c,
985 providers/mbox/camel-mbox-summary.c,
986 providers/mh/camel-mh-folder.c,
987 providers/smtp/camel-smtp-transport.c: Fixed some warnings.
989 2000-08-11 Not Zed <NotZed@HelixCode.com>
991 * providers/vee/camel-vee-folder.c (vee_folder_build_folder): Free
993 (vee_folder_build): And here too.
995 2000-08-10 Jeffrey Stedfast <fejj@helixcode.com>
997 * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
998 If we go over the max number of messages, don't keep requesting
999 new message summaries, just break.
1001 2000-08-11 Not Zed <NotZed@HelixCode.com>
1003 * camel-mime-parser.c (folder_scan_header): A better way to
1004 compress leading whitespace. The code is probably invalid anyway,
1005 I dont think it will work across buffer boundaries.
1007 * providers/mbox/camel-mbox-folder.c (mbox_append_message): And
1008 write out proper format From lines here too.
1010 * providers/mbox/camel-mbox-summary.c
1011 (camel_mbox_summary_build_from): New function to build a more
1012 compatible mbox "From " line.
1013 (camel_mbox_summary_sync): Write From lines in the proper format.
1015 2000-08-10 Not Zed <NotZed@HelixCode.com>
1017 * providers/mh/camel-mh-store.c (get_folder): Remove warnin g.
1019 * providers/mbox/camel-mbox-store.c (xrename): Kill some warnings
1020 with constification.
1022 * providers/imap/camel-imap-folder.c (imap_append_message): Fixed
1023 for append api change. Eek this routine seriously wastes memory.
1025 * providers/mh/camel-mh-folder.c (mh_search_free): Impelemnt.
1026 (mh_append_message): Fix for api change, and include user flags
1027 and tags in new message.
1029 * providers/vee/camel-vee-folder.c (vee_search_by_expression): Fix
1030 for search api change.
1032 * camel-folder.c (camel_folder_search_free): New function for
1033 freeing search results.
1034 (search_free): Changed my mind, implement a default that actually
1035 does something. Free as to the old interface.
1036 (camel_folder_append_message): Changed to accept a
1037 camelmessageinfo rather than flags, which just doesn't have enough
1039 (copy_message_to): Change for append_message api change.
1040 (move_message_to): Likewise.
1042 * providers/mbox/camel-mbox-folder.c (mbox_search_free):
1044 (mbox_append_message): Fix for api change, and also copy user
1045 flags/tags across to new summary.
1047 * camel-folder-search.c (search_user_tag): A search expression
1048 that returns the current use flag by name.
1049 (camel_folder_search_free_result): New function to free the result
1052 * camel-folder-summary.c: Bump summary version.
1054 (message_info_load):
1055 (message_info_save):
1056 (camel_message_info_dup_to):
1057 (camel_message_info_free): Added support for arbitrary tag/value
1061 (camel_tag_list_size):
1062 (camel_tag_list_free): Operations for working with CamelTags.
1064 2000-08-09 Peter Williams <peterw@helixcode.com>
1066 * camel-store.c (camel_store_get_folder): Connect beforehand, if
1069 * providers/imap/camel-imap-store.c (camel_imap_store_init): Default
1070 the dir_sep to "/" so that certain functions can safely assume that
1071 dir_sep is valid (at least, nonnull).
1073 2000-08-09 Ettore Perazzoli <ettore@helixcode.com>
1075 * providers/nntp/camel-nntp-folder.c
1076 (nntp_folder_set_message_flags): Get rid of an unused variable.
1078 * providers/nntp/Makefile.am (INCLUDES): Fix includes so that we
1079 don't use installed headers anymore. [I copied this over from the
1080 IMAP provider, that does not seem to have this problem.]
1082 2000-08-09 Not Zed <NotZed@HelixCode.com>
1084 * camel-folder-search.c (camel_folder_search_execute_expression):
1085 Reorder search result in summary order if we searched with a
1088 2000-08-08 Dan Winship <danw@helixcode.com>
1090 * camel-uid-cache.c: New code to keep an on-disk cache of what
1091 UIDs have been seen in a folder.
1093 * camel-provider.h: Add new flags CAMEL_PROVIDER_IS_SOURCE (mail
1094 can arrive in it by non-Camel means) and CAMEL_PROVIDER_IS_STORAGE
1095 (you can work with mail directly without needing to copy it local).
1097 * providers/*/camel-*-provider.c: Add flags as needed: imap and
1098 mbox are SOURCE and STORAGE. mh and nntp are just STORAGE, pop3 is
1101 * camel-mime-message.c (process_header): Add another subject
1102 g_strstrip that fejj's earlier commit missed.
1104 2000-08-08 Peter Williams <peterw@helixcode.com>
1106 * camel-provider.h: Remove some GTK stuff that I missed.
1108 * providers/imap/camel-imap-store.c (imap_noop): Turn this
1109 back on with the new timeout interface in CamelSession.
1111 * camel-session.[ch] (camel_session_register_timeout): New
1112 interface for Camel to register timeouts. Basically the
1113 GTK timeout interface is copied. We do this because Camel isn't
1114 allowed to use GTK anymore.
1116 2000-08-07 Not Zed <NotZed@HelixCode.com>
1118 * providers/mh/camel-mh-folder.c (mh_append_message): Only retry
1119 another uid if we had a name clash, otherwise fail.
1121 2000-08-07 Jeffrey Stedfast <fejj@helixcode.com>
1123 * providers/imap/camel-imap-folder.c
1124 (imap_get_subfolder_names_internal): If we are trying to get a
1125 subfolder listing of the root folder, always make sure INBOX is
1128 * providers/imap/camel-imap-utils.c (imap_parse_list_response):
1129 Check for NIL as a directory separator.
1131 2000-08-07 Peter Williams <peterw@helixcode.com>
1133 * providers/nntp/Makefile.am: Reorder the INCLUDES to pull
1134 in the camel headers from the local source tree before
1135 the ones in $(includedir). This was causing compile problems
1136 because the installed, Gtk-based camel-object.h was included
1137 before the uninstall Camel-based one.
1139 2000-08-07 Jeffrey Stedfast <fejj@helixcode.com>
1141 * providers/imap/camel-imap-utils.c (imap_translate_sexp): Strip
1142 all \n's from the expression
1144 * string-utils.c (strip): New convenience function to strip
1145 occurences of a single char from a string
1147 * camel-mime-message.c (camel_mime_message_set_subject): Do a
1148 g_strstrip on the subject so we can stop getting those annoying
1151 2000-08-07 Dan Winship <danw@helixcode.com>
1153 * camel-folder.c (camel_folder_free_deep): Fix this to not require
1154 NULL-termination of the array.
1156 2000-08-04 Jeffrey Stedfast <fejj@helixcode.com>
1158 * providers/imap/camel-imap-store.c (imap_connect): If we fail to
1159 get a dir_sep, then supply the default of "/".
1160 (get_folder): Undo changes by Peter
1162 2000-08-04 Peter Williams <peterw@helixcode.com>
1164 * providers/imap/camel-imap-store.c (get_folder): Prevent a coredump
1165 when get_folder()ing from a store with dir_sep = NULL.
1167 2000-08-04 Peter Williams <peterw@helixcode.com>
1169 * camel-store.h: Include camel-object.h. Ettore said this wasn't
1172 2000-08-04 Not Zed <NotZed@HelixCode.com>
1174 * camel-url.c (camel_url_set_protocol):
1175 (camel_url_set_host):
1176 (camel_url_set_path):
1177 (camel_url_set_port): Url editing functions.
1179 2000-08-04 Dan Winship <danw@helixcode.com>
1181 * providers/pop3/camel-pop3-folder.c (pop3_set_message_flags):
1182 (pop3_sync): Indexes into the flags array are message_number minus
1183 1, not just message_number.
1185 * providers/pop3/camel-pop3-store.c: add a debugging macro for
1186 doing protocol tracing.
1188 2000-08-03 Jeffrey Stedfast <fejj@helixcode.com>
1190 * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Only
1191 call imap_get_summary_internal if the folder can hold messages
1193 * providers/nntp/camel-nntp-provider.c (camel_provider_module_init):
1194 Initialize the service_cache for the news/nntp providers
1196 2000-08-03 Peter Williams <peterw@helixcode.com>
1198 * providers/nntp/Makefile.am (INCLUDES): Add -I$(top_srcdir) to
1199 pull in libibex/ibex.h
1201 2000-08-02 Not Zed <NotZed@HelixCode.com>
1203 * providers/mh/camel-mh-summary.c (camel_mh_summary_sync): Expunge
1204 from the end, so the index isn't messed up when you remove a
1207 * providers/mh/camel-mh-folder.c (mh_append_message): Fix a bug
1208 where it would never open an output file/uid.
1210 * providers/mbox/camel-mbox-store.c (rename_folder):
1211 Implementation for mbox as well.
1213 * camel-store.c (camel_store_rename_folder): New method to rename folders.
1214 (rename_folder): Default implementation.
1216 * providers/mh/camel-mh-store.c (delete_folder): Implement this.
1217 (rename_folder): Implement a rename operation.
1219 2000-08-02 Dan Winship <danw@helixcode.com>
1221 * providers/MH: Kill this. It doesn't have any code to do anything
1222 the new mh provider doesn't do better.
1224 * providers/Makefile.am: Remove reference to MH subdir, and
1225 promote nntp to fully-supported status, since it does compile and
1228 * camel-mime-message.c (camel_mime_message_set_subject): Trim
1229 trailing space from the subject. I've now seen replies from two
1230 different people that tricked the threading code by (a) not having
1231 References/In-Reply-To, and (b) adding an extra space to the end
1232 of the subject line so the subject-based threading fails too. Who
1233 writes these broken mailers anyway?
1235 2000-08-01 Jeffrey Stedfast <fejj@helixcode.com>
1237 * providers/smtp/camel-smtp-transport.c (smtp_helo): When forced
1238 to use the IP, place it in square brackets.
1240 * providers/imap/camel-imap-utils.c (imap_translate_sexp): New and
1241 improved sexp parser. An honest try at using e-sexp is wrapped in
1242 a #ifdef at the bottom of the file but is currently not used
1244 * providers/imap/camel-imap-folder.c (imap_search_by_expression):
1245 We want to do a UID SEARCH so we get UIDs back instead of sequence
1248 2000-08-01 Not Zed <NotZed@HelixCode.com>
1250 * providers/mh: New mh provider implementation.
1252 * providers/Makefile.am (SUBDIRS): Added mh provider.
1254 2000-07-31 Jeffrey Stedfast <fejj@helixcode.com>
1256 * providers/imap/camel-imap-folder.c (imap_get_message_info_internal):
1257 Some IMAP servers don't wrap the UID in ()'s so don't depend on that
1258 (imap_get_summary_internal): Same
1260 * providers/imap/camel-imap-utils.c (free_sexp_node): Oops, forgot to
1261 free node->function - not good.
1263 2000-07-31 Peter Williams <peterw@helixcode.com>
1265 * providers/vee/camel-vee-folder.c (vee_search_by_expression): Add
1266 a NULL to the matches pointer array so that g_strfreev knows where
1269 2000-07-31 Jeffrey Stedfast <fejj@helixcode.com>
1271 * providers/imap/camel-imap-utils.c (imap_translate_sexp): New
1272 convenience function to translate a Camel sexp into the equivalent
1275 * providers/imap/camel-imap-store.c: More places now use
1278 * providers/imap/camel-imap-folder.c (imap_search_by_expression):
1279 Implemented initial version (this may or may not work quite right)
1281 2000-07-28 Jeffrey Stedfast <fejj@helixcode.com>
1283 * providers/imap/camel-imap-folder.c (imap_expunge): Make sure
1284 the third word/token (whatever) is "EXPUNGE" and not something
1285 else like "EXISTS" or "RECENT". When removing the message from
1286 the summary also make sure to free that data to avoid leakage.
1287 Also make sure to subtract 1 from the 'id' since IMAP starts
1288 at 1 and our summary starts at 0 :-)
1290 2000-07-28 Jeffrey Stedfast <fejj@helixcode.com>
1292 * providers/imap/camel-imap-store.c (camel_imap_status): Cleaned
1293 up a bit, now uses imap_next_word()
1294 (camel_imap_command_extended): Now uses imap_next_word(). When
1295 checking for RECENT, allow the first digit of the recent-count
1296 be between 0 and 9 inclusive instead of exclusive.
1298 * providers/imap/camel-imap-folder.c (imap_expunge): Optimized.
1299 No longer will it need to reload the summary as it now instead
1300 removes the appropriate message summaries from the cache.
1301 (camel_imap_folder_changed): If recent == 0 then return. If
1302 recent < 0 then just emit the folder_changed signal, don't reload
1305 2000-07-28 Jeffrey Stedfast <fejj@helixcode.com>
1307 * providers/imap/camel-imap-folder.c
1308 (imap_get_message_count_internal): Get message count when STATUS
1310 (imap_init): folder->has_search_capability is required for IMAP so
1311 should always be set to TRUE (is currently being set to FALSE as
1312 I've not yet implemented SEARCH support).
1313 (camel_imap_folder_changed): Seem to have fixed my optimization
1316 2000-07-28 Jon K Hellan <hellan@acm.org>
1318 * providers/imap/camel-imap-store.h (CamelImapServerLevel): New
1320 (CamelImapStore): Added server_level and has_status_capability
1323 * providers/imap/camel-imap-store.c (imap_connect): Detect
1324 IMAP4REV1, IMAP4 and STATUS in capability response.
1326 * providers/imap/camel-imap-folder.c
1327 (imap_get_message_count_internal): Use STATUS only if server
1328 supports it. TODO: Get message count when STATUS not supported.
1329 (imap_get_message, imap_get_summary_internal,
1330 imap_get_message_info_internal): Handle IMAP4 as well.
1331 (imap_protocol_get_summary_specifier): New function: Make a data
1332 item specifier for the header lines we need, appropriate to the
1335 2000-07-27 Peter Williams <peterw@helixcode.com>
1337 * camel-mime-utils.c (header_decode_lwsp): More
1338 checks for end of string.
1340 * providers/imap/camel-imap-store.c:
1341 (imap_command_extended): Free the elements of our
1342 array (huge mem leak)
1344 * providers/imap/camel-imap-folder.c:
1345 (summary_get_internal): Same as above.
1348 2000-07-27 Jeffrey Stedfast <fejj@helixcode.com>
1350 * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
1351 Fixed my routine to only fetch new headers, my IDs were off by 1
1352 on the high end, so when it would fetch the last newly arrived
1353 message it would fail and end up fetching all of the summaries
1354 because of the corruption.
1356 2000-07-27 Jeffrey Stedfast <fejj@helixcode.com>
1358 * camel-url.c (camel_url_to_string): If the path doesn't begin
1359 with a / and there is a host, prepend a / to the path.
1361 2000-07-27 Jeffrey Stedfast <fejj@helixcode.com>
1363 * providers/imap/Makefile.am: Added camel-imap-utils.[c,h]
1365 * providers/imap/camel-imap-utils.[c,h]: Utilities for parsing
1366 server responses for use in both camel-imap-store.c and
1369 * providers/imap/camel-imap-folder.c (imap_get_summary_internal):
1370 Free all the pointers in the headers array.
1371 (imap_get_subfolder_names_internal): Updated to use
1372 imap_parse_list_response
1373 (imap_parse_subfolder_list): Removed in favor of
1374 imap_parse_list_response
1376 * providers/imap/camel-imap-store.c (camel_imap_command_extended):
1377 Free all the pointers in the data array.
1378 (imap_connect): Updated to use imap_parse_list_response and fixed
1380 (folder_is_selectable): Updated.
1382 2000-07-27 Jeffrey Stedfast <fejj@helixcode.com>
1384 * providers/imap/camel-imap-folder.c (imap_get_message_info): Now
1385 uses a hash table for looking up message info rather than a linear
1388 2000-07-27 Peter Williams <peterw@helixcode.com>
1390 * providers/*/Makefile.am: Don't specify SUBDIRS =
1391 [nothing]. Messes up distcheck.
1393 2000-07-26 Peter Williams <peterw@helixcode.com>
1395 * camel-mime-parser.c (folder_scan_init): Initialize
1396 outbuf to be "" -- it's not guaranteed to be zeroed.
1398 * camel-mime-utils.c (header_references_decode): Return
1399 if the header is NULL -> or "" <-. Don't do our stupid
1400 mailer trick if we point to \0.
1401 (header_decode_quoted_string): Don't rip past end of
1404 2000-07-26 Dan Winship <danw@helixcode.com>
1406 * camel-movemail.c (movemail_external): routine to call an
1407 external movemail program.
1408 (camel_movemail): Nuke return value, use movemail_external when
1409 available and useful, and don't delete "dest" on errors, since
1410 it might have started non-empty.
1412 2000-07-26 Jeffrey Stedfast <fejj@helixcode.com>
1414 * camel-url.c (camel_url_to_string): Should now always prepend a '/'
1415 before the path if it doesn't already exist.
1417 * providers/imap/camel-imap-folder.c: Fixed a few compiler warnings
1419 2000-07-25 Jeffrey Stedfast <fejj@helixcode.com>
1421 * providers/imap/camel-imap-folder.c (imap_summary_free): Fixed the
1422 real problem that Peter was running into.
1424 2000-07-25 Dan Winship <danw@helixcode.com>
1426 * camel-mime-message.c (write_to_stream): Don't add a Mime-Version
1427 header to a message that already has one.
1429 * camel-internet-address.c (internet_encode): Don't put <>s around
1430 addresses with no name part.
1432 2000-07-25 Peter Williams <peterw@helixcode.com>
1434 * providers/imap/camel-imap-folder.c (imap_expunge): Set
1435 imap_folder->summary to NULL after calling imap_summary_free,
1436 so we don't get stuck with a junk summary pointer. Should
1439 2000-07-25 Jeffrey Stedfast <fejj@helixcode.com>
1441 * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
1442 Optimized to try and get the new message headers without reloading
1443 the entire summary from scratch.
1444 (imap_get_summary_internal): Will now sync() before attempting to
1445 reload the summary so that flags are set in the reloaded summary
1448 2000-07-24 Jeffrey Stedfast <fejj@helixcode.com>
1450 * providers/imap/camel-imap-store.c (get_folder): Updated to give
1451 special attention to the root folder.
1453 * providers/imap/camel-imap-folder.c
1454 (imap_get_subfolder_names_internal): Updated to handle the root
1456 (imap_get_message_count_internal): return 0 if folder can't hold
1458 (camel_imap_folder_new): Change so that root folder gets special
1459 attention and always gets can_hold_messages set to FALSE
1461 2000-07-24 Dan Winship <danw@helixcode.com>
1463 * camel-folder.c: Remove exceptions from a number of methods that
1464 work on what ought to be static data: get_parent_folder,
1465 get_parent_store, get_message_count, get_unread_message_count,
1466 get_permanent_flags, get_message_flags, set_message_flags,
1467 get_message_user_flag, set_message_user_flag, get_uids,
1468 get_summary, get_subfolder_names. Turn camel_folder_delete_message
1469 into a macro. (Mostly a pull-up from the camel-async branch.)
1471 * providers/{imap,mbox,nntp,pop3,vee}: Update for CamelFolder
1474 2000-07-24 Jeffrey Stedfast <fejj@helixcode.com>
1476 * providers/imap/camel-imap-folder.c (imap_get_message_info): Updated
1477 to port easily to the new Camel API
1478 (imap_init): Don't SELECT INBOX, we don't need to do that
1480 2000-07-24 Jeffrey Stedfast <fejj@helixcode.com>
1482 * providers/imap/camel-imap-folder.c (camel_imap_folder_new):
1483 Initialize the summary and subfolder listing.
1484 (imap_summary_free): Now takes a GPtrArray arg rather than a
1485 CamelImapFolder as it increases it's usefullness for free()'ing
1486 temporary summaries.
1487 (imap_get_message_count_internal): A new convenience function for
1488 getting the actual message count on a server to be used by
1489 imap_get_summary_internal)
1490 (imap_get_message_count): Since the Camel API is on the move again,
1491 the future version of this function will not be able to make a
1492 call to the store, it must only access previously fetched data (thus
1493 the creation of the _internal function)
1494 (imap_get_subfolder_names_internal): Again, because the future version
1495 of imap_get_subfolder_names will not take an exception, we must rename
1496 this function which will be called by camel_imap_folder_new()
1497 (imap_get_subfolder_names): We now return the previously collected
1498 subfolder listing that the _internal function fetched previously
1499 (imap_get_summary_internal): Again, same idea as the previous _internal
1501 (imap_get_summary): Again... now returns a previously aquired summary
1503 * providers/imap/camel-imap-store.c (imap_noop): This will hopefully
1504 prevent the imap store from disconnecting.
1505 (imap_connect): Modified to add a gtk timeout event that will call
1506 imap_noop() every 10 minutes (we may want to change this time value)
1507 (imap_disconnect): Modified to remove the NOOP timeout event from the
1509 (camel_imap_command_extended): Commented out the code that would try
1510 and detect if the store was disconnected and then reconnect if it was
1513 2000-07-24 Dan Winship <danw@helixcode.com>
1515 * camel-folder.[ch]: Remove camel_folder_get_message_uid, which
1516 was not used, and not implemented by any provider.
1518 * providers/nntp/camel-nntp-folder.c: Remove get_message_uid
1521 * camel-folder-pt-proxy.[ch], camel-arg-collector.c,
1522 camel-marshal-utils.[ch]: Bye bye bye.
1524 * Makefile.am: remove reference to camel-arg-collector.c
1526 2000-07-23 Jeffrey Stedfast <fejj@helixcode.com>
1528 * providers/imap/camel-imap-store.c (imap_disconnect): Made it a
1529 little more forgiving. Also set current_folder to NULL as there is
1530 no selected folder after a disconnect.
1531 (stream_is_alive): Detects whether or not a socket is "alive"
1532 (camel_imap_command_extended): Use stream_is_alive() to aid in the
1533 detection of a disconnected state.
1535 2000-07-22 Jeffrey Stedfast <fejj@helixcode.com>
1537 * providers/imap/camel-imap-store.c (get_folder): Clear
1538 CamelExceptions when appropriate (eg when folder is marked as
1539 \NoSelect). Still needs some cleanup and perhaps Dan will have a
1540 better way of doing this as this seems like a messy way of
1543 * providers/imap/camel-imap-folder.c (imap_get_uids): Took out
1544 some debug statements as they are no longer needed.
1546 2000-07-21 Jeffrey Stedfast <fejj@helixcode.com>
1548 * providers/imap/camel-imap-folder.c (imap_get_subfolder_names):
1549 Updated to not strip out subfolders that are marked as \NoSelect
1550 because this will be correctly handled in store->get_folder from
1553 * providers/imap/camel-imap-store.c (folder_is_selectable): New
1554 convenience function for use in get_folder().
1555 (parse_list_response): Now takes a char **flags argument which is
1556 needed by folder_is_selectable().
1557 (imap_connect): Updated to reflect changes to
1558 parse_list_response().
1560 2000-07-21 Jeffrey Stedfast <fejj@helixcode.com>
1562 * providers/imap/camel-imap-stream.c (stream_read): Updated with
1563 some of the same fixes I've made to camel-imap-folder.c like
1564 recalculating message part lengths.
1566 * providers/imap/camel-imap-store.c (camel_imap_command_extended):
1567 Rewrote the code to check for "* %d RECENT". Still needs to be
1568 modified, but should no longer cause an infinite loop by detecting
1569 mis-detecting RECENT messages.
1571 2000-07-20 Jeffrey Stedfast <fejj@helixcode.com>
1573 * providers/imap/camel-imap-folder.c (imap_get_summary):
1574 (imap_get_message_info): Oops. Fix UID parser to allow 0 and 9 to
1575 be in the range of valid UID chars.
1577 2000-07-20 Peter Williams <peterw@helixcode.com>
1579 * camel-object.c (camel_object_unref): Add a new global mutex
1580 'refcount' held when refcounting operations occur.
1582 2000-07-19 Peter Williams <peterw@helixcode.com>
1584 * camel-object.c (camel_type_lock_up): Correct the recursiveness;
1585 the locklevel is stored as a private, so each thread has its own
1586 idea of the locklevel. Thus one thread can relock, but a different
1587 one will think that it's a level 0 and try to lock the type_system
1590 2000-07-19 Jeffrey Stedfast <fejj@helixcode.com>
1592 * providers/imap/camel-imap-folder.c: General cleanup working
1593 towards getting Actions->Expunge working correctly.
1595 * providers/imap/camel-imap-store.c
1596 (cammel_imap_command_extended): Added code to look for "* %d
1597 RECENT" and to emit the folder_changed signal if there are any
1598 recent messages. Note: this is a hack and needs to be rewritten
1601 2000-07-19 Jeffrey Stedfast <fejj@helixcode.com>
1603 * providers/imap/camel-imap-folder.c (imap_get_summary): If the
1604 folder's message count is not the same as the number of summaries,
1605 free the old summary and create a new summary.
1607 2000-07-18 Jeffrey Stedfast <fejj@helixcode.com>
1609 * providers/imap/camel-imap-folder.c
1610 (camel_imap_folder_class_init): Added in
1611 imap_[g,s]et_message_user_flag() methods
1612 (imap_get_message_info): Rewrote to use the more efficient way of
1613 downloading summary information and also added a UID comparison so
1614 that if the UID requested doesn't match the UID received, it
1615 returns NULL. FIXME: When the mailer gets NULL when it requested
1616 message info, it seems that it displays a row for that message and
1617 when you try and select the blank row, it segfaults.
1619 * providers/imap/camel-imap-store.c (get_folder): Oops, this
1620 should not be checking against "/", it should be checking against
1623 * providers/imap/camel-imap-folder.c (imap_parse_subfolder_line):
1624 Updated to trim out the leading namespace.
1625 (imap_get_subfolder_names): Let the subfolder parser trim the
1626 namespace off the folder name.
1628 2000-07-17 Peter Williams <peterw@helixcode.com>
1630 * camel-object.c (camel_type_lock_up): New function; the
1631 Camel type_system lock is now fakey-recursive, being controlled
1632 by a semaphore that goes up and down and is protected by another
1633 lock. Theoretically all we need is the lock on the semaphore,
1634 but this we catch exceptions "better" (by deadlocking).
1635 (camel_type_lock_down): Corresponding to above.
1636 (all functions): s,G_LOCK,camel_type_lock_up, etc.
1638 2000-07-17 Jeffrey Stedfast <fejj@helixcode.com>
1640 * providers/imap/camel-imap-store.c (imap_disconnect): Send a
1643 * providers/imap/camel-imap-folder.c (imap_get_message): Hacks to
1644 get IMAP code to work with CommunigatePro and MS Exchange (and any
1645 other servers that send back a UID at the end of each FETCH inside
1646 of the main body of the message part).
1647 (imap_sync): Un-#if 0 the code that sets the flags on the IMAP
1648 server for messages that have changed. Oops, don't mask with
1649 DELETED to find out if the message has been answered ;-)
1650 (imap_expunge): sync before expunging.
1652 2000-07-16 Jeffrey Stedfast <fejj@helixcode.com>
1654 * providers/imap/camel-imap-store.c: All SELECT calls now pass
1655 a NULL folder argument to camel_imap_command_extended() since it's
1657 (imap_connect): Moved service_class->connect() to the point right
1658 after a connection is established with the server rather than
1659 waiting until the end of the function.
1660 (camel_imap_command): Updated the documentation comment
1661 (camel_imap_command_extended): Before sending a command, first
1662 check to make sure we are connected; if we aren't, then reconnect.
1663 Don't strncmp() command with "SELECT" as it's redundant.
1665 * providers/imap/camel-imap-folder.c: All SELECT calls now pass
1666 a NULL folder argument to camel_imap_command_extended() since it's
1667 not needed. Also s/camel_imap_command/camel_imap_command_extended as
1668 I will probably be doing away with camel_imap_command() or at least
1669 only using it for LOGIN and similar commands where the server won't
1670 notify us of any recent messages.
1672 2000-07-15 Jeffrey Stedfast <fejj@helixcode.com>
1674 * providers/imap/camel-imap-folder.c (camel_imap_folder_new):
1675 One last fix to get rid of hard-coded "/" directory separators
1677 2000-07-14 Peter Williams <peterw@helixcode.com>
1679 * camel-object.c : Implement 'events', which are suspiciously
1680 like signals except without all the marshalling baggage, and
1681 with quasi-thread-safety.
1682 (camel_object_class_declare_event): New func.
1683 (camel_object_hook_event): Ditto.
1684 (camel_object_trigger_event): Ditto.
1685 (obj_class_init): Declare the "finalize" event.
1686 (obj_class_finalize): Free the hashtable of events->preps
1687 (obj_finalize): Free the hashtable of events->hooklists
1688 (camel_object_unref): Trigger the finalize event (ourselves,
1689 to prevent massively unpleasant looping things.)
1691 2000-07-14 Peter Williams <peterw@helixcode.com>
1693 * camel-object.c (make_global_classfuncs): Change to return
1694 a CamelObjectClass. Change parents to a GSList and free it
1696 (camel_object_new): Don't allocate a classfuncs for every object;
1697 merely give it a reference to the global_classfuncs. Convert
1698 parents to a GSList and free it when done.
1699 (camel_object_unref): Don't free the classfuncs. Free the parents
1700 list, which is changed to a GSList.
1702 2000-07-14 Jeffrey Stedfast <fejj@helixcode.com>
1704 * string-utils.c (string_unquote): New convenience function
1705 to unquote a string if it's encapsulated by "'s
1707 * providers/imap/camel-imap-folder.c:
1708 * providers/imap/camel-imap-store.c: Made the necessary changes
1709 to stop using hard coded directory separators.
1711 2000-07-13 Dan Winship <danw@helixcode.com>
1713 * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_load):
1714 If the summary is for a smaller mbox, and rebuilding from the
1715 last-known end position fails, try rebuilding from the beginning.
1716 Deals with the case where the user edits the mbox and makes it
1717 bigger, without adding new messages.
1719 2000-07-13 Peter Williams <peterw@helixcode.com>
1721 * camel-object.c: Rewritten to not be based on GtkObject,
1722 but a tiny threadsafe ripoff thereof. Objects still cannot
1723 be shared across threads, but ref/unref/destroy/new/etc
1724 will work. Signals are not implemented because doing it
1725 robustly would be a major pain in the butt, but class
1726 functions are. There's a small demonstration that it doesn't
1727 crash in ./temp-test.c: build it with ./make-test.sh.
1728 * camel-stream.c, camel-seekable-stream.c, camel-stream-mem.c:
1729 moved over to CamelObject. Proof of concept: two levels of
1730 subclass and class functions, all working without coredumps.
1731 To port to CamelObject:
1732 - s,GTK_,CAMEL_,g in the cast checks
1733 - s,gtk_type_new,camel_object_new,g
1734 - s,GtkType,CamelType,g
1735 - Change get_type function over to camel_type_declare
1736 - instead of hooking to finalize function, it goes into the
1739 - instead of GTK_OBJECT(so)->klass, CAMEL_OBJECT_GET_CLASS(so)
1740 - s,gtk_type_class,camel_type_get_global_classfuncs,g
1741 - don't chain finalize handlers; it will be done for you
1743 2000-07-13 Jeffrey Stedfast <fejj@helixcode.com>
1745 * providers/imap/camel-imap-folder.c:
1746 * providers/imap/camel-imap-store.c: If a SELECT fails, set
1747 imap_store->current_folder to NULL so a SELECT is forced before
1748 any message/folder operations are requested. Also, because some
1749 users don't use a namespace, make sure that if the url->path is
1750 "/" we don't use it when creating the folder_path.
1751 (camel_imap_command[_extended]): Since we allow the passing of
1752 a NULL folder which we can use to bypass a forced SELECT, no need
1753 to check for the individual commands that don't require a folder
1756 2000-07-13 Jeffrey Stedfast <fejj@helixcode.com>
1758 * providers/imap/camel-imap-folder.c:
1759 * providers/imap/camel-imap-store.c: Updated to use CAMEL_IMAP_OK,
1760 CAMEL_IMAP_NO, CAMEL_IMAP_BAD, and CAMEL_IMAP_FAIL rather than the
1761 ones copied from the POP3 provider.
1763 2000-07-13 Jeffrey Stedfast <fejj@helixcode.com>
1765 * providers/imap/camel-imap-folder.c (imap_get_summary): Oops.
1766 If the number of messages in the folder is 0, don't fetch
1767 summaries 1 thru 0, just return an empty summary.
1768 (imap_copy_message_to): Fixed to use message UID and also send
1769 the source folder as an arg to camel_imap_command rather than NULL.
1770 (imap_move_message_to): Same.
1771 (imap_init): If SELECT is successful, we need to set the current
1772 folder to the one selected, this was causing problems with move/copy
1774 2000-07-13 Dan Winship <danw@helixcode.com>
1776 * camel-service.h: define a set of CAMEL_SERVICE_URL_ALLOW_* flags
1777 parallel to the _NEED_* flags, and make the _NEED_* flags imply
1780 * providers/imap/camel-imap-store.c (camel_imap_store_init): imap
1783 2000-07-13 Jeffrey Stedfast <fejj@helixcode.com>
1785 * providers/imap/camel-imap-folder.c (imap_get_summary): New
1786 and improved approach to fetching an entire folder summary
1787 that should be much much faster than the old way as it gets
1788 the entire folder summary in 1 shot rather than requesting
1789 message by message. As with the last update, this version
1790 also only fetches the minimum number of header fields.
1791 (imap_get_summary): Oops, forgot to free the temp
1794 2000-07-13 Jeffrey Stedfast <fejj@helixcode.com>
1796 * providers/imap/camel-imap-folder.c (imap_get_summary): Don't
1797 fetch the entire RFC822 header, just fetch the fields we want.
1798 (imap_get_message_info): Same.
1800 2000-07-13 Not Zed <NotZed@HelixCode.com>
1802 * camel-mime-filter-basic.c (camel_mime_filter_basic_new_type):
1803 Reset filter on setup.
1804 (reset): When resetting qp encoding, set the state to -1, instead
1807 * camel-mime-utils.c (quoted_encode_step): Actually count the
1808 characters output sofar (it never counted any). Bunch of other
1810 (quoted_encode_close): Also flush out final character, if there's
1813 2000-07-12 Jeffrey Stedfast <fejj@helixcode.com>
1815 Chris forgot to add #include <e-util/e-util.h> to the source files
1817 * providers/imap/camel-imap-store.c (imap_connect): Fixed Peter's
1818 fix, we don't want to send a string to a %d.
1820 2000-07-12 Christopher James Lahey <clahey@helixcode.com>
1822 * camel-folder-search.c, providers/imap/camel-imap-store.c:
1823 Changed from strstrcase to e_strstrcase.
1825 * string-utils.c, string-utils.h: Removed strstrcase (in favor of
1826 e_strstrcase in e-util/e-util.c.)
1828 2000-07-12 Chris Toshok <toshok@helixcode.com>
1830 * providers/nntp/camel-nntp-folder.c
1831 (nntp_folder_set_message_flags): get the article num out of our
1832 uid and mark it read in the newsrc.
1833 (nntp_folder_get_message): get the message id out of the uid to
1836 * providers/nntp/camel-nntp-utils.c (get_XOVER_headers): the uid
1837 is now <article-num>,<messageid>
1838 (get_HEAD_headers): same.
1840 * camel-mime-parser.c (folder_scan_step): go to HSCAN_MESSAGE
1841 state when ct->subtype is "news" as well as "rfc822". this makes
1842 attachments of type "message/news" display properly.
1844 2000-07-12 Dan Winship <danw@helixcode.com>
1846 * camel-folder.c (camel_folder_free_deep,
1847 camel_folder_free_shallow, camel_folder_free_nop): Useful default
1848 implementations for free_{uids,subfolder_names,summary}.
1849 (free_subfolder_names, free_uids): Make these g_warning-ing
1850 default implementations.
1852 * providers/*/camel-*-folder.c: Use the new functions where
1853 appropriate, remove duplicated code.
1855 2000-07-12 Peter Williams <peterw@helixcode.com>
1857 * providers/imap/camel-imap-store.c (query_auth_types): Check for
1858 NULL parameters when setting the exception so as to not crash on
1859 Solaris (can't handle a %s passed NULL).
1860 (imap_connect): Same.
1862 2000-07-12 Jeffrey Stedfast <fejj@helixcode.com>
1864 * providers/mbox/camel-mbox-folder.c (mbox_delete_message): Use
1865 mbox_set_message_flags () instead of setting the flags by hand. This
1866 fixes the problem of the "message_changed" signal not being emitted
1867 at the correct time.
1869 * providers/imap/camel-imap-folder.c: "folder_changed" signals should
1870 pass a third argument (which is ignored).
1872 * camel-folder.c: Undo gtk signal emits done in set_flags and
1875 (copy_message_to): Create info as a const CamelMessageInfo
1877 2000-07-12 Chris Toshok <toshok@helixcode.com>
1879 * providers/nntp/Makefile.am: don't add test-newsrc to the build
1880 since it needs libcamel (which isn't built at the time test-newsrc
1883 * providers/nntp/camel-nntp-utils.c (get_HEAD_headers): fill in
1884 MessageInfo->message_id.
1885 (get_XOVER_headers): same.
1887 * providers/nntp/camel-nntp-folder.c (nntp_folder_init): move
1888 summary loading here.
1889 (nntp_folder_sync): summary/newsrc changes should be stored here.
1890 put a comment to that effect.
1891 (nntp_folder_set_message_flags): don't save the newsrc here.
1892 (nntp_folder_get_uids): use g_ptr_array_index instead of the
1894 (nntp_folder_get_summary): no need to check if we should generate
1895 the summary here. already done.
1896 (nntp_folder_get_message_info): implement.
1898 * providers/nntp/camel-nntp-store.c
1899 (camel_nntp_store_get_toplevel_dir): use evolution_dir instead of
1900 computing it ourselves.
1901 (nntp_store_disconnect): call camel_nntp_newsrc_write.
1902 (ensure_news_dir_exists): new function to create the news/<news
1904 (camel_nntp_store_class_init): hook up connect/disconnect and
1906 (nntp_store_connect): if ensure_news_dir_exists fails throw an
1909 2000-07-12 Peter Williams <peterw@helixcode.com>
1911 * camel-folder.c (camel_folder_set_message_flags): Emit a message_changed
1912 signal once the flags are set on the message.
1913 (camel_folder_set_user_flag): Ditto.
1914 (camel_folder_expunge): Emit a folder_changed if no exception.
1916 2000-07-12 Jeffrey Stedfast <fejj@helixcode.com>
1918 * camel-stream.c: Use size_t and ssize_t for read/write methods
1920 * providers/imap/camel-imap-folder.c (imap_set_message_flags):
1921 Updated to emit the message_changed signal.
1922 (imap_delete_message): Updated to use imap_set_message_flags ().
1923 (imap_move_message_to): Updated to use imap_set_message_flags ()
1924 and to emit the folder_changed signal on the destination folder.
1925 (imap_copy_message_to): Updated to emit the folder_changed signal
1926 on the destination folder.
1927 (imap_append_message): Updated to emit the folder_changed signal
1928 on the destination folder.
1930 2000-07-11 Jeffrey Stedfast <fejj@helixcode.com>
1932 * camel-folder.c (camel_folder_append_message): Now takes a
1933 flags argument to specify the flags to be set on the message
1934 since we might not necessarily want the flags to be wiped clean.
1936 (copy_message_to): Updated to send a flags argument to
1937 append_message (); currently sends the original message's flags.
1939 * providers/mbox/camel-mbox-folder.c (mbox_append_message):
1940 * providers/imap/camel-imap-folder.c (imap_append_message):
1943 2000-07-11 Dan Winship <danw@helixcode.com>
1945 * camel-folder.c: Remove exceptions from a number of methods
1946 that work on what ought to be static data: get_parent_folder,
1947 get_parent_store, get_message_count, get_unread_message_count,
1948 get_permanent_flags, get_message_flags, set_message_flags,
1949 get_message_user_flag, set_message_user_flag, get_message_uid,
1950 get_uids, get_summary, get_subfolder_names. Turn
1951 camel_folder_delete_message into a macro.
1953 * providers/{mbox,pop3,vee}: Update for CamelFolder changes
1955 * providers/Makefile.am: Disable imap and nntp for now
1957 2000-07-11 Jeffrey Stedfast <fejj@helixcode.com>
1959 * providers/imap/camel-imap-folder.c (imap_search_by_expression):
1960 This shouldn't return NULL, it should return g_ptr_array_new ()
1961 so the mailer gets what it expects.
1963 2000-07-10 Jeffrey Stedfast <fejj@helixcode.com>
1965 * camel-folder-summary.c (camel_folder_summary_decode_string):
1966 Oops, an unsigned integer can never be < 0
1968 2000-07-10 Dan Winship <danw@helixcode.com>
1970 * providers/vee/camel-vee-folder.c (vee_search_by_expression):
1971 Initialize a variable to make this not crash again. And fix a bug
1972 so it actually does something.
1974 2000-07-10 Jeffrey Stedfast <fejj@helixcode.com>
1976 * camel-folder-summary.c: Cleaned up a bunch of compile warnings
1978 2000-07-10 Dan Winship <danw@helixcode.com>
1980 * providers/vee: kill more debugging messages
1982 2000-07-10 Jeffrey Stedfast <fejj@helixcode.com>
1984 * providers/mbox/camel-mbox-folder.c (mbox_get_unread_message_count):
1985 * providers/vee/camel-vee-folder.c (vee_get_unread_message_count):
1986 * providers/imap/camel-imap-folder.c (imap_get_unread_message_count):
1989 * camel-folder.c (camel_folder_get_unread_message_count): New
1990 convenience function to allow the mailer to query the number
1991 of unread messages in a folder (for displaying message stats
1994 2000-07-09 Dan Winship <danw@helixcode.com>
1996 * camel-mime-utils.c (header_references_dup): New function to copy
1997 a header_references structure.
1999 * camel-folder-summary.c (camel_message_info_dup_to): New function
2000 to (deep) copy the data from one CamelMessageInfo into another.
2001 (camel_message_info_free): And free the data.
2003 * providers/vee/camel-vee-folder.c (vee_sync): Implement. (empty).
2004 (vee_search_by_expression): belatedly update for
2005 camel_folder_search change.
2006 (vee_folder_build): belatedly update for camel_folder_search
2007 change. Use camel_message_info_dup_to and camel_message_info_free
2008 (in particular, so that we get message_id and references info so
2009 vfolders can be threaded).
2010 (vee_folder_build_folder): Ditto.
2012 2000-07-08 Jeffrey Stedfast <fejj@helixcode.com>
2014 * providers/nntp/camel-nntp-folder.c:
2015 * providers/nntp/camel-nntp-utils.c:
2016 * providers/nntp/camel-nntp-store.c: Update to reflect past changes
2017 in the Camel API. Use gtk macro casts wherever possible and use glib's
2018 memory functions instead of standard c's (since they are not
2021 * providers/smtp/camel-smtp-transport.c:
2022 * providers/imap/camel-imap-store.c: Wrap debug print statements
2025 * providers/imap/camel-imap-stream.c (stream_read): Make sure
2026 that we get up to and including the last \n of the mime part.
2028 * providers/imap/camel-imap-folder.c (imap_get_message): Make sure
2029 that we get up to and including the last \n of the mime part.
2030 Wrap debug print statements in a macro.
2032 * providers/imap/camel-imap-stream.c (stream_read): Only cache
2033 the important data (aka the mime part requested and no extra
2034 server response stuff)
2036 2000-07-07 Dan Winship <danw@helixcode.com>
2038 * camel-mime-utils.c (header_references_decode): Work around
2039 In-Reply-To's with unquoted punctuation. So many broken mailers.
2041 * camel-folder.c (camel_folder_search_by_expression): Make this
2042 return a GPtrArray rather than a GList.
2044 * camel-folder-search.c (camel_folder_search_execute_expression):
2045 * providers/imap/camel-imap-folder.c (imap_search_by_expression):
2046 * providers/mbox/camel-mbox-folder.c (mbox_search_by_expression):
2047 * providers/nntp/camel-nntp-folder.c (nntp_search_by_expression):
2048 Update to return a GPtrArray rather than a GList.
2050 2000-07-07 Jeffrey Stedfast <fejj@helixcode.com>
2052 * providers/smtp/camel-smtp-transport.c (esmtp_get_authtypes):
2053 Fixed the parser to actually work
2055 2000-07-06 Dan Winship <danw@helixcode.com>
2057 * camel-mime-utils.c (header_references_decode): Make this deal
2058 with the full RFC822 References/In-Reply-To format rather than
2059 just the more-nicely-behaved RFC1036 version. (Needed to parse
2060 In-Reply-To headers with extra junk in them.)
2062 2000-07-06 Jeffrey Stedfast <fejj@helixcode.com>
2064 * providers/imap/camel-imap-folder.c (imap_get_summary): Parse for
2065 more header information to allow message threading in IMAP.
2066 (imap_get_message_info): Same.
2068 * camel-folder-summary.c: Renamed summary_format_* to
2069 camel_summary_format_* and moved them into public scope.
2071 * providers/smtp/camel-smtp-transport.c (smtp_connect): Oops. Don't
2072 pass port # as a string in the error code (if it fails to connect).
2074 * providers/imap/camel-imap-folder.c (imap_append_message): Changed
2075 over to camel_imap_command_extended as that was the source of the
2076 problems - apparently appending replies with more than just 1 line.
2078 2000-07-05 Dan Winship <danw@helixcode.com>
2080 * camel-folder-search.c (search_header_contains): make header
2081 matching case-insensitive
2083 * camel-folder-summary.c:
2085 * providers/mbox/camel-mbox-folder.c:
2086 * providers/mbox/camel-mbox-summary.c: Remove some non-error case
2087 debugging-type messages.
2089 2000-07-05 Ettore Perazzoli <ettore@helixcode.com>
2091 * providers/mbox/camel-mbox-summary.c (d): Define to empty so that
2092 we get rid of a ton of debugging messages.
2094 2000-07-05 Jeffrey Stedfast <fejj@helixcode.com>
2096 * camel-mime-utils.h: Added prototype for uudecode_step
2098 * camel-mime-utils.c (uudecode_step): Cleaned up some junk that
2099 should have been cleaned up when debugging printf's were taken out.
2101 2000-07-05 Ettore Perazzoli <ettore@helixcode.com>
2103 * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_sync):
2104 Update the X-Evolution: header even if the in-memory UID and the
2105 saved UID are not the same. Otherwise mboxes with clashing UIDs
2108 * camel-folder-summary.c
2109 (camel_folder_summary_add_from_parser): Add the message to the
2110 summary before doing any ibex stuff. In fact, this might also
2111 have the side effect of reassigning the UID so it needs to be done
2112 before we start using the UID.
2114 * providers/mbox/camel-mbox-folder.c (mbox_append_message): Add
2115 debugging message to keep track of the UIDs we add.
2117 2000-07-05 Dan Winship <danw@helixcode.com>
2119 * camel-folder-summary.c: Add "Cc" to summary and bump summary
2122 * camel-folder-search.c (search_header_contains): make "Cc" a
2125 2000-07-03 Ettore Perazzoli <ettore@helixcode.com>
2127 * camel-folder-summary.c (camel_folder_summary_next_uid_string):
2129 (camel_folder_summary_add): Use
2130 `camel_folder_summary_next_uid_string()' instead of recomputing
2131 the UID manually here.
2132 (camel_folder_summary_add_from_parser): Likewise.
2134 2000-07-03 Ettore Perazzoli <ettore@helixcode.com>
2136 * camel-folder-summary.c (camel_folder_summary_set_uid): Removed.
2138 2000-07-03 Dan Winship <danw@helixcode.com>
2140 * camel-folder-summary.c (message_info_new): Parse In-Reply-To
2141 with header_references_decode, not header_msgid_decode.
2143 * camel-mime-message.c (camel_mime_message_class_init): message
2144 headers are case-insensitive.
2146 * providers/pop3/camel-pop3-store.c (camel_pop3_command): Fix a
2147 bug in error-setting code.
2148 (pop3_connect): Don't re-prompt for password in the KPOP case.
2149 (pop3_get_response): New function, split out from
2151 (connect_to_server): Use pop3_get_response to parse the greeting
2152 message, and error out appropriately if it's -ERR.
2154 2000-07-02 Dan Winship <danw@helixcode.com>
2156 * camel-folder.c (camel_folder_freeze, camel_folder_thaw): New
2157 functions to freeze and thaw a folder (to prevent message/folder
2158 changed signals in the middle of a long series of operations).
2159 (camel_folder_class_init): Change signals to GTK_RUN_FIRST.
2160 (message_changed, folder_changed): Add default implementations
2161 that stop the emission and record info for later if the folder is
2164 * providers/mbox/camel-mbox-folder.c (mbox_sync): leftover fixes
2165 from the close->sync change: don't destroy the ibex, summary, and
2166 search when syncing.
2167 (append_message): emit "folder_changed" on a successful append.
2169 2000-07-02 Jeffrey Stedfast <fejj@helixcode.com>
2171 * camel-mime-utils.c (uudecode_step): A rather complex uudecoder
2172 written in the spirit of Zucchi-ness, is it up to par? Only the
2173 Z-man can tell us :-)
2175 2000-07-01 Dan Winship <danw@helixcode.com>
2177 * camel-service.c (camel_service_get_name): New method, to return
2178 an end-user-friendly name corresponding to a service. (eg, "POP
2179 service for danw on trna.helixcode.com").
2181 * providers/imap/camel-imap-store.c,
2182 providers/mbox/camel-mbox-store.c,
2183 providers/nntp/camel-nntp-store.c,
2184 providers/pop3/camel-pop3-store.c,
2185 providers/sendmail/camel-sendmail-transport.c,
2186 providers/smtp/camel-smtp-transport.c: Implement.
2188 * providers/imap/Makefile.am: remove unneeded
2189 libcamelimap_la_LDADD.
2191 * providers/pop3/camel-pop3-store.c (connect_to_server): fix the
2192 CAPA-parsing code to not get into an infinite loop.
2194 2000-07-01 Jeffrey Stedfast <fejj@helixcode.com>
2196 * providers/imap/camel-imap-folder.c (imap_get_message): Fixed
2197 the bug that would sometimes leave part of the server response
2198 tacked on to the end of the message.
2200 * camel-folder.c: Renamed _by_uid methods. Since we no longer
2201 have get-by-number methods, no need to have the _by_uid
2203 (get_message_by_uid): Renamed to get_message
2204 (delete_message_by_uid): Renamed to delete_message
2205 (summary_get_by_uid): Renamed to get_message_info
2207 * providers/mbox/camel-mbox-folder.c:
2208 * providers/pop3/camel-pop3-folder.c:
2209 * providers/imap/camel-imap-folder.c:
2210 * providers/vee/camel-vee-folder.c: Updated to reflect
2211 camel-folder changes.
2213 2000-06-30 Jeffrey Stedfast <fejj@helixcode.com>
2215 * camel-folder.c (camel_folder_copy_message_to): New function, to
2216 copy a message from one folder to another. The default
2217 implementation just uses append_message, but providers can
2218 implement more efficient versions for use when both folders are on
2221 * broken-date-parser.[c,h]: Utilities for parsing broken
2224 * providers/imap/camel-imap-folder.c (imap_move_message_to):
2225 (imap_copy_message_to): Implemented.
2227 * camel-mime-utils.c (header_decode_date): Wrote some code to try
2228 and un-mangle broken date formats and then parse that new string
2231 2000-06-30 Dan Winship <danw@helixcode.com>
2233 * camel-folder.c (camel_folder_move_message_to): New function, to
2234 move a message from one folder to another. The default
2235 implementation just uses append_message and delete_message, but
2236 providers can implement more efficient versions for use when both
2237 folders are on the same store.
2239 2000-06-29 Jeffrey Stedfast <fejj@helixcode.com>
2241 * providers/imap/camel-imap-folder.c (imap_expunge): Should now
2242 print a meaningful error message when it doesn't succeed
2244 2000-06-28 Jeffrey Stedfast <fejj@helixcode.com>
2246 * providers/imap/camel-imap-store.c (imap_connect): Changed to
2247 keep prompting user for a valid password until it either
2248 authenticates or until Canceled by the user.
2249 (camel_imap_command_extended): Improved speed (replaced the
2250 g_strjoinv call with a faster implementation)
2252 * providers/pop3/camel-pop3-store.c
2253 (camel_pop3_command_get_additional_data): Fixed.
2254 (pop3_connect): Changed to keep prompting the user for a
2255 password until it either works or until Canceled by the user.
2257 * providers/mbox/camel-mbox-summary.c: General cleanup
2258 (camel_mbox_summary_sync): Fixed a memory leak and added
2259 CamelException handling.
2261 * providers/mbox/camel-mbox-store.c (delete_folder): Fixed a
2264 * providers/mbox/camel-mbox-folder.c (mbox_append_message):
2265 Default 'off_t seek' to -1 so as to make sure it's initialized
2266 before it's used in the case of a bad stat() call.
2267 (mbox_sync): Updated
2268 (mbox_expunge): Updated
2270 2000-06-27 Jeffrey Stedfast <fejj@helixcode.com>
2272 * providers/imap/camel-imap-store.c (imap_connect): Move the
2273 CAPABILITY command here so we don't have to keep checking
2274 each time we open a folder.
2275 (camel_imap_command_extended): If we are doing an EXAMINE,
2276 don't bother doing a SELECT first.
2278 * providers/imap/camel-imap-folder.c (imap_init): Update so
2279 folder->has_search_capability depends on the parent IMAP store
2280 (since this is really dependant on the IMAP implementation and
2283 2000-06-27 Christopher James Lahey <clahey@helixcode.com>
2285 * providers/smtp/camel-smtp-transport.c: Don't close the filter
2286 stream when done with it (this causes the source stream to close);
2287 Instead, just flush it when done.
2289 2000-06-27 Michael Zucchi <zucchi@zedzone.mmc.com.au>
2291 * camel-folder-search.c (search_header_contains): Make header
2292 search 'to' match 'to', and not 'from', small typo, fixes #317.
2294 2000-06-26 Christopher James Lahey <clahey@helixcode.com>
2296 * providers/mbox/camel-mbox-summary.c: Added debugging
2299 2000-06-23 Jeffrey Stedfast <fejj@helixcode.com>
2301 * providers/imap/camel-imap-store.c:
2302 * providers/imap/camel-imap-folder.c: Improved folder parsing.
2303 Not specifying a namespace should no longer list the entire
2306 2000-06-22 Chris Toshok <toshok@helixcode.com>
2308 * providers/nntp/.cvsignore: ignore test-newsrc
2310 * providers/nntp/camel-nntp-store.c,
2311 providers/nntp/camel-nntp-store.h,
2312 providers/nntp/camel-nntp-folder.c,
2313 providers/nntp/camel-nntp-folder.h,
2314 providers/nntp/camel-nntp-utils.c: Bring the nntp provider up to a
2315 state where it builds and is usable with the current camel. there
2316 are still warts (semi-broken .newsrc file handling, and a lack of
2317 a subscribe ui -- in fact no way to add a new server, really), but
2318 it'll display news messages.
2320 * providers/nntp/Makefile.am (libcamelnntp_la_SOURCES): add
2322 (libcamelnntpinclude_HEADERS): add camel-nntp-newsrc.h
2323 also, add test-newsrc stuff.
2325 * providers/nntp/test-newsrc.c: new file that tests the newsrc
2326 stuff by parsing and regurgitating a .newsrc file for a particular
2329 * providers/nntp/camel-nntp-newsrc.c,
2330 providers/nntp/camel-nntp-newsrc.h: new files, initial support for .newsrc files.
2332 2000-06-22 Jeffrey Stedfast <fejj@helixcode.com>
2334 * providers/imap/camel-imap-folder.c (imap_get_message_count):
2335 Oops. Now appends the namespace to the folder before querying
2336 for the number of messages.
2338 * providers/imap/camel-imap-store.c (imap_folder_exists): New
2339 convenience function for use by imap_create().
2340 (get_folder): If folder is specified as "/", we really want
2343 * providers/sendmail/camel-sendmail-provider.c:
2344 * providers/vee/camel-vee-provider.c:
2345 * providers/smtp/camel-smtp-provider.c:
2346 * providers/mbox/camel-mbox-provider.c:
2347 * providers/pop3/camel-pop3-provider.c:
2348 * providers/imap/camel-imap-provider.c: Updated
2350 * camel-session.c: Moved service_cache hash table into the
2352 (service_cache_remove): Updated.
2353 (camel_session_get_service): Updated.
2355 * camel-url.c (camel_url_hash): Took out the hashing of
2356 url->passwd. We don't want this anymore.
2358 * providers/imap/camel-imap-folder.c (imap_init): Took out
2359 references to 'namespace'
2360 (camel_imap_folder_init): Same
2362 * providers/imap/camel-imap-folder.h: No more namespace. We are
2363 instead going to use url->path as the namespace.
2365 2000-06-21 Jeffrey Stedfast <fejj@helixcode.com>
2367 * providers/imap/camel-imap-store.c (imap_create): Modified to
2368 use the "namespace" (url->path) if it exists.
2370 * providers/imap/camel-imap-folder.c (imap_delete_message_by_uid):
2371 Now just sets the deleted flag on the summary rather than speaking
2372 directly to the IMAP server. This is both faster and cleaner.
2374 2000-06-21 Dan Winship <danw@helixcode.com>
2376 * providers/pop3/camel-pop3-store.c (query_auth_types): Fix dumb
2379 2000-06-21 Jeffrey Stedfast <fejj@helixcode.com>
2381 * providers/imap/camel-imap-folder.c (imap_get_message_by_uid):
2382 We are getting mail in IMAP now!! whoo-hoo!. Stripped out the
2383 filtering so messages may have some dot-stuffing, but the
2384 filtering can always be added back in later when we know it
2385 works and isn't the problem.
2387 2000-06-21 Peter Williams <peterw@curious-george.helixcode.com>
2389 * providers/mbox/camel-mbox-folder.c (mbox_init): Use the basename
2390 of the mailbox so we don't get pathnames like ~/evolution/inbox///movemail.ibex
2392 2000-06-21 Dan Winship <danw@helixcode.com>
2394 * camel-folder-summary.c (message_info_new): Set date_received
2395 based on the first (most recent) "Received" header.
2397 2000-06-20 Dan Winship <danw@helixcode.com>
2399 * camel-mime-part.c (write_to_stream): flush the filter stream
2400 before unreffing it, so it will camel_mime_filter_complete.
2402 * camel-stream-filter.c (camel_stream_filter_class_init): Fix a
2403 braino so camel_stream_flush works here.
2405 * camel-stream-mem.c (stream_seek): Fix a bug that resulted in
2406 large attachments being silently dropped.
2408 * providers/pop3/camel-pop3-store.c
2409 (camel_pop3_command_get_additional_data): Don't use g_strjoinv
2410 here, since it is O(n^2) on the length of the output string, and
2413 * camel-mime-part-utils.c
2414 (simple_data_wrapper_construct_from_parser): add a CRLF decoder
2415 after the QP/B64 decoder if it's text.
2417 2000-06-20 Jeffrey Stedfast <fejj@helixcode.com>
2419 * providers/imap/camel-imap-folder.c (imap_get_summary): Only
2420 fetch the summary if the folder summary doesn't already exist.
2421 When the summary *does* exist, start fetching from 1, not 0.
2422 (imap_free_summary): Don't do anything here.
2423 (imap_finalize): Free the summary here instead of in
2424 imap_free_summary().
2425 (imap_set_message_flags): Implemented
2426 (imap_sync): Added code to set flags on messages that have had
2427 their flags changed (however I #if'd it out until we are more
2428 confidant in the IMAP code :)
2429 (imap_summary_get_by_uid): Now parese flags correctly.
2430 (imap_get_summary): Now parese flags correctly. Also correctly
2431 parses the UID correctly.
2433 * camel-url.c (check_equal): No need to check s1 if s2 is NULL
2434 (camel_url_equal): Don't check the passwd component of the url.
2436 2000-06-20 Dan Winship <danw@helixcode.com>
2438 * camel-folder-summary.c (camel_folder_summary_add): mark the
2439 message info with CAMEL_MESSAGE_FOLDER_FLAGGED if we change the
2440 uid, so the folder will know that it's dirty.
2442 2000-06-20 Jeffrey Stedfast <fejj@helixcode.com>
2444 * providers/imap/camel-imap-store.c (camel_imap_command_extended):
2445 Now returns the last line of data that the server sends back as
2446 well. This is needed for commands like SELECT (like Peter pointed
2448 (camel_imap_command): No longer checks for SELECT (no need)
2450 * providers/imap/camel-imap-folder.c: Added namespace stuff
2451 which we will need later on...
2452 (imap_parse_subfolder_line): Convenience function for use in
2453 get_subfolder_names()
2454 (imap_get_subfolder_names): Updated. Also changed it to use LIST
2455 instead of LSUB (temporary change).
2457 2000-06-19 Jeffrey Stedfast <fejj@helixcode.com>
2459 * providers/imap/camel-imap-folder.c (camel_imap_folder_init): Set
2460 summary equal to NULL.
2461 (imap_get_summary): Store the summary in the ImapFolder
2462 (imap_summary_get_by_uid): If we have a summary cache in the
2463 ImapFolder, first check to see if that message info is in the
2464 cached summary first, if not fetch it directly from the IMAP
2465 server and append it to the summary cache.
2466 (imap_get_message_flags): Don't free the message info that we get
2467 back from summary_get_by_uid as we don't want to be corrupting our
2470 2000-06-19 Peter Williams <peterw@curious-george.helixcode.com>
2472 * providers/imap/camel-imap-store.c (camel_imap_command{,_extended}): When
2473 SELECT'ing a folder for an IMAP command, use _extended to grab the entire
2474 response (before we just used camel_imap_command and missed the OK codes)
2476 2000-06-18 Jeffrey Stedfast <fejj@helixcode.com>
2478 * providers/imap/camel-imap-folder.c (imap_summary_get_by_uid):
2479 Now gets the message flags as it should.
2480 (imap_get_summary): Same as imap_summary_get_by_uid
2481 (imap_get_permanent_flags): Return the permanent flags stored
2483 (imap_get_message_flags): Return message flags associated with
2484 given uid. Note: we may want to somehow cache summary info so
2485 that we don't have to keep querying the IMAP provider in
2486 imap_summary_get_by_uid().
2488 2000-06-17 Jeffrey Stedfast <fejj@helixcode.com>
2490 * providers/imap/camel-imap-folder.c (imap_free_summary): We were
2491 leaking memory - but not anymore!
2492 (imap_get_summary): We now get the UIDs and the beginnings of the
2493 code to get the message flags as well.
2495 2000-06-17 Dan Winship <danw@helixcode.com>
2497 * camel-mime-parser.c (folder_scan_header): Don't copy newlines
2498 into the parsed header text, and turn any number of tabs and
2499 spaces after a newline into a single space.
2501 2000-06-17 Jeffrey Stedfast <fejj@helixcode.com>
2503 * providers/imap/camel-imap-folder.c (imap_init): Should now
2504 correctly do CAPABILITY.
2506 2000-06-17 Dan Winship <danw@helixcode.com>
2508 * providers/mbox/camel-mbox-summary.c: Add some debugging printfs
2509 when rebulding summary to help figure out why people's summaries
2510 are always being rebuilt.
2512 2000-06-17 Jeffrey Stedfast <fejj@helixcode.com>
2514 * providers/imap/camel-imap-folder.c (imap_search_by_expression):
2515 Began to implement, need to get information on how to
2516 deconstruct @expression into an IMAP search expression and
2518 (imap_init): Now queries the IMAP provider for CAPABILITY to
2519 determine if SEARCH is implemented or not.
2521 * providers/imap/imap.c: Removed - no longer a need to have
2522 this as an example for anyone interesting to help mecode IMAP
2525 2000-06-16 Jeffrey Stedfast <fejj@helixcode.com>
2527 * providers/imap/camel-imap-folder.c (imap_sync): Added code
2528 to expunge if called for (still need to finish coding this).
2529 (imap_get_uids): Implemented.
2530 (imap_get_summary): Found a way to get the date
2531 (imap_summary_get_by_uid): Same.
2532 (imap_free_summary): Implemented.
2534 * string-utils.c (strstrcase): Fixed a compile warning
2536 * providers/imap/camel-imap-summary.c: Removed - we don't
2537 need a CamelImapSummary structure.
2539 2000-06-16 Dan Winship <danw@helixcode.com>
2541 Move flag handling from CamelMimeMessage to CamelFolder. This
2542 simplifies several flag-handling pieces of code in the mailer, and
2543 lets you change a message's flags without having to fetch the
2544 message body. It also means that fully-constructed
2545 CamelMimeMessages are now essentially constant, which will help
2546 simplify locking issues later since it means two threads
2547 interested in the same message can just work with separate copies
2550 * camel-mime-message.h (struct _CamelMimeMessage): Removed flags
2551 and user_flags (moved to summary). Removed expunged and
2552 message_number which were unused. Removed message_uid and folder
2553 which are no longer needed in the new scheme.
2554 (struct CamelMimeMessageClass): Removed message_changed signal and
2555 get/set_message_number methods.
2557 * camel-mime-message.c: Updates for CamelMimeMessage changes.
2558 (camel_mime_message_get/set_flags,
2559 camel_mime_message_get/set_user_flag): Replaced with methods in
2561 (camel_flag_get, camel_flag_set, camel_flag_list_size,
2562 camel_flag_list_free): Moved verbatim to camel-folder-summary.c
2564 * camel-folder.c (camel_folder_get/set_message_flags,
2565 camel_folder_get/set_message_user_flag): New methods (and
2566 corresponding useless default implementations)
2567 (camel_folder_class_init): add a message_changed signal
2569 * camel-folder-summary.c (camel_flag_get, camel_flag_set,
2570 camel_flag_list_size, camel_flag_list_free): Moved here from
2571 camel-mime-message.c
2573 * providers/mbox/camel-mbox-folder.c (message_changed): Removed.
2574 (mbox_get_message_flags, mbox_set_message_flags,
2575 mbox_get_message_user_flag, mbox_set_message_user_flag): Tweak
2576 summary bits as appropriate. (Functionality moved here from
2578 (mbox_get_message_by_uid): Update for CamelMimeMessage changes
2579 (less stuff to initialize).
2581 * providers/imap/camel-imap-folder.c (message_changed): Remove
2582 this. It was just copied from the mbox provider and doesn't deal
2583 with the real IMAP flag stuff anyway. (So there's currently no
2584 flag support in the IMAP provider.)
2585 (imap_get_message_by_uid): Update for CamelMimeMessage changes.
2587 * providers/vee/camel-vee-folder.c: (message_changed): Remove old
2588 one. Add a new one to listen for message_changed on each folder
2589 and re-emit message_changed signals that correspond to messages in
2591 (vee_get/set_message_flags, vee_get/set_message_user_flag): Proxy
2592 flag setting to the underlying real messages.
2593 (vee_append_message): Removed for now; there's no way to translate
2594 this into the new CamelMimeMessage/CamelFolder scheme, but (a)
2595 there's also no code which would ever call it and (b) we're
2596 probably going want a better interface than append_message for
2597 message drag and drop to work anyway. To be revisited.
2599 2000-06-16 Dan Winship <danw@helixcode.com>
2601 * camel-mime-utils.c (rfc2047_decode_word):
2602 * camel-mime-part-utils.c (simple_data_wrapper_construct_from_parser):
2603 * camel-folder-summary.c (summary_build_content_info):
2604 KLUDGE! Since neither ETable nor GtkHTML supports UTF-8 yet,
2605 output ISO-8859-1 instead, so Ettore can read his Italian mail. :)
2606 This will be reverted later.
2608 2000-06-15 Jeffrey Stedfast <fejj@helixcode.com>
2610 * providers/imap/camel-imap-folder.c (imap_get_summary): Started to
2611 implement - may want to use ENVELOPE instead of BODY.PEEK[HEADER]
2612 (imap_summary_get_by_uid): Started to code, I've got to find a way to
2613 get the date in time_t format and also get the flags
2615 * string-utils.c (strstrcase): Added this convenience function - I
2616 know about strcasestr() but it's not portable.
2618 2000-06-15 Dan Winship <danw@helixcode.com>
2620 * camel-service.c: Remove camel_service_connect_with_url. (URLs
2621 must be specified when the service is requested from the session,
2622 so that there can only ever be one service for any URL.)
2624 * camel-folder.c: (camel_folder_open, camel_folder_is_open,
2625 camel_folder_get_mode): Kill. Folders are now always open, and
2626 handle "closing" sorts of operations at sync or finalize time.
2627 (camel_folder_sync): renamed from camel_folder_close. Syncs state
2628 to the store but doesn't necessarily close/disconnect.
2630 * providers/*/camel-*-folder.c: Merge "open" methods into "init"
2631 methods. Rename close to sync and update appropriately.
2633 * providers/imap/camel-imap-store.c: Remove camel_imap_store_open
2634 and camel_imap_store_close, which should not have been copied from
2635 the POP provider (where the exist to work around limitations of
2638 * providers/mbox/camel-mbox-summary.c: fix a bug. (don't expunge
2639 deleted messages if called with expunge == FALSE)
2641 * providers/pop3/camel-pop3-store.c (connect_to_server): Check
2642 server for various interesting extensions.
2644 * providers/pop3/camel-pop3-folder.c (get_uids): If the server
2645 supports UIDL, use real UIDs rather than fake ones.
2646 (etc): Map uids back to numbers appropriately
2648 * providers/mbox/camel-mbox-folder.c (mbox_append_message): Fix to
2649 previous change: make sure the "seek" variable ends up with the
2652 * providers/mbox/camel-mbox-summary.c (summary_rebuild): Update
2653 summary mtime as well as size.
2655 2000-06-14 Dan Winship <danw@helixcode.com>
2657 * providers/mbox/camel-mbox-folder.c (mbox_append_message): if the
2658 mbox doesn't end with a '\n', write one before appending the new
2661 2000-06-14 Jeffrey Stedfast <fejj@helixcode.com>
2663 * camel-mime-filter-crlf.c (filter): Updated the encoder to allocate
2664 more memory (since we are also now adding dots). Also updated the
2665 decoder as we have found that it sometimes passes the end of the
2668 * providers/pop3/camel-pop3-folder.c (get_message_by_uid): Took out the
2669 filter code (we already filter in
2670 camel_pop3_command_get_additional_data)
2672 * camel-folder.c (init): Updated: a separator is now a char* rather
2673 than a single char because IMAP can have a string for a directory
2674 separator. Also, since IMAP does not begin with a directory separator,
2675 there is a new argument (path_begins_with_sep) which decides if a
2676 directory should begin with a directory separator.
2678 * providers/imap/camel-imap-store.c (imap_create): Since, on connect,
2679 Camel tries to create INBOX (which already exists on every IMAP
2680 provider) we can return TRUE when the folder name is "INBOX".
2682 * providers/vee/camel-vee-folder.c (vee_init): Updated.
2684 * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Updated.
2686 * providers/mbox/camel-mbox-store.c (get_folder): Updated.
2688 * providers/mbox/camel-mbox-folder.c (mbox_init): Updated.
2690 * providers/pop3/camel-pop3-folder.c (camel_pop3_folder_new): Updated.
2692 2000-06-14 Dan Winship <danw@helixcode.com>
2694 * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_sync):
2695 Renamed from camel_mbox_summary_expunge. Takes a gboolean saying
2696 whether to expunge or just sync the mbox file. Change some
2697 g_errors to g_warning so we don't abort. Make the quick
2698 X-Evolution updating code lseek around correctly. Update the
2699 mbox mtime in the summary file even in the quick case.
2701 * providers/mbox/camel-mbox-summary.h: make
2702 CAMEL_MESSAGE_FOLDER_NOXEV not conflict with
2703 CAMEL_MESSAGE_FOLDER_FLAGGED defined in camel-mime-message.h
2705 * providers/mbox/camel-mbox-folder.c (mbox_close): call
2706 camel_mbox_summary_sync to save flag state if not expunging.
2707 (mbox_expunge): Update for camel_mbox_summary_expunge rename.
2709 2000-06-13 Jeffrey Stedfast <fejj@helixcode.com>
2711 * providers/imap/camel-imap-store.c (camel_imap_store_open):
2712 (camel_imap_store_close): Added.
2713 (camel_imap_command_extended): Fixed a segfault and updated
2714 to use camel_imap_status()
2715 (camel_imap_command): Updated to use camel_imap_status()
2716 (camel_imap_status): New convenience function for parsing
2717 the return status of an IMAP command
2719 2000-06-12 Jeffrey Stedfast <fejj@helixcode.com>
2721 * providers/imap/camel-imap-folder.c (imap_get_message_by_uid):
2722 Works like the POP fetch code, should work temporarily until
2723 we get around to coding it the way it "Should Be".
2725 * providers/pop3/camel-pop3-folder.c (get_message_by_uid): Now uses
2726 the camel-mime-filter-crlf decoder when retrieving messages.
2728 * camel-mime-filter-smtp.c: Deprecated.
2730 * providers/smtp/camel-smtp-transport.c (smtp_data): Updated to use
2731 camel-mime-filter-crlf with my 'dot' extension in place of
2732 camel-mime-filter-smtp
2734 * camel-mime-part.c (write_to_stream): Updated to reflect changes
2735 made to camel-mime-filter-crlf.c
2737 * camel-mime-filter-crlf.c (filter): Modified to be able to
2738 encode/decode dots ("\n.\n"<->"\n..\n"). Also fixed the decoder
2739 so that it should no longer get caught in an infinite loop.
2741 2000-06-12 Dan Winship <danw@helixcode.com>
2743 * providers/*/Makefile.am: don't pass a second (incorrect) -rpath
2744 in addition to the (correct) one automatically provided by
2747 * camel-mime-filter-crlf.c: New filter to do CRLF<->LF conversion.
2748 (Currently only tested in the LF->CRLF direction.)
2750 * camel-mime-part.c (write_to_stream): if content-type is text,
2751 and it's QP or B64 encoded, pass through the CRLF filter before
2752 the other filter to satisfy the "canonical encoding" rules in the
2755 2000-06-09 Dan Winship <danw@helixcode.com>
2757 * camel-session.c (camel_session_query_authenticator): Add another
2758 argument, "mode", which can be CAMEL_AUTHENTICATOR_ASK or
2759 CAMEL_AUTHENTICATOR_TELL, so callers can get the app to un-cache
2762 * providers/pop3/camel-pop3-store.c (pop3_connect): uncache the
2763 password if it doesn't work.
2765 2000-06-09 Jeffrey Stedfast <fejj@helixcode.com>
2767 * providers/imap/camel-imap-stream.c (stream_read): Updated to reflect
2768 changes made in camel-imap-store.c
2770 * providers/imap/camel-imap-store.c (imap_create): No longer checks to
2771 make sure a folder doesn't already exists (as this is no longer needed)
2772 (camel_imap_command): Now takes a CamelFolder argument so it can detect
2773 whether or not it needs to SELECT a folder or not
2774 (camel_imap_command_extended): Same.
2776 * providers/smtp/camel-smtp-transport.c (smtp_connect): Will now always
2777 send EHLO first, if that fails it will fall back on HELO.
2778 (esmtp_get_authtypes): Should now correctly parse authtypes.
2780 2000-06-07 Jeffrey Stedfast <fejj@helixcode.com>
2782 * providers/imap/camel-imap-summary.c: Now builds (not that it's worth
2785 * providers/imap/camel-imap-folder.c (imap_get_uids): Now uses the
2786 correct cast to a CamelImapMessageInfo structure (should get rid of
2789 * providers/imap/Makefile.am: Added rules to build
2792 * providers/imap/camel-imap-store.c (get_folder): Update.
2793 Moved imap_create here.
2795 * providers/imap/camel-imap-folder.c (delete_messages): Remove.
2796 (imap_create): Removed.
2797 (imap_delete): Removed.
2798 (imap_exists): Removed.
2800 * providers/imap/camel-imap-stream.h: Added typedef's for the stream
2802 * providers/imap/camel-imap-stream.c: Modified to build cleanly
2804 2000-06-07 Not Zed <NotZed@HelixCode.com>
2806 * camel-mime-utils.c (header_msgid_decode_internal): Properly
2807 dereference warning/debug messages.
2808 (header_references_decode): Check we actually have msgid stuff
2809 before trying to decode it ...
2811 2000-06-06 Jeffrey Stedfast <fejj@helixcode.com>
2813 * camel-imap-stream.[c,h]: Removed
2815 * providers/imap/camel-imap-stream.[c,h]: Relocated to this
2818 * providers/imap/camel-imap-summary.c: Added
2820 2000-06-06 Dan Winship <danw@helixcode.com>
2822 * camel-folder.c: Remove exists, create, delete. A CamelFolder
2823 now always references an existing folder. Remove delete_messages
2824 too since it wasn't being used. Add a "create" flag to
2825 get_subfolder saying whether or not to create the subfolder if it
2828 * camel-store.c (camel_store_get_folder): Add a "create" flag to
2829 say whether or not to create the folder if it doesn't yet exist.
2830 (camel_store_delete_folder): New method, moved from CamelFolder.
2831 (cache_folder, uncache_folder): Fix up a bit.
2832 (get_folder_name): Explain what this is for.
2834 * providers/mbox/camel-mbox-folder.c:
2835 * providers/mbox/camel-mbox-store.c: Update. Remove support for
2836 hierarchical folders to simplify this for now, since we're not
2837 using it, and it's not completely clear how they should work in an
2838 ELocalStorage world. Needs to be revisited.
2840 * providers/pop3/camel-pop3-folder.c (delete_messages): Remove.
2841 * providers/pop3/camel-pop3-store.c (get_folder): Update.
2843 * providers/vee/camel-vee-folder.c (exists): Remove.
2844 * providers/vee/camel-vee-store.c (vee_get_folder): Update.
2846 2000-06-06 Jeffrey Stedfast <fejj@helixcode.com>
2848 * providers/imap/camel-imap-*.[c,h]: Started on getting
2849 imap to build cleanly (tho some work has not been completed
2850 so it still won't build until camel-imap-summary is finished
2851 along with a few methods in camel-imap-folder)
2853 * camel-stream.[c,h]: Changed the read and write method prototypes
2854 to return an ssize_t type rather than an int and also changed
2855 the 'number of bytes' to read or write to a size_t type
2857 * camel-stream-fs.c: same as above
2859 * camel-stream-mem.c: again, same as above
2861 * camel-stream-buffer.c: same
2863 * camel-imap-stream.[c,h]: Added this new stream, cache's previously
2864 read data so each successive call will instead read from the cache
2866 2000-06-05 Dan Winship <danw@helixcode.com>
2868 * camel-mime-part.c (camel_mime_part_set_disposition): fix
2869 typo/braino (set "Content-Disposition", not "Content-Description")
2870 (camel_mime_part_set_filename): const poison
2872 2000-06-02 Not Zed <NotZed@HelixCode.com>
2874 * camel-mime-utils.c (base64_encode_step): Ick, damn signs! Fix a
2875 bug with sign extended bytes.
2877 * camel-mime-filter-smtp.c (filter): Changed layout/logic slightly
2878 (to match From filter)
2880 2000-06-02 Jeffrey Stedfast <fejj@helixcode.com>
2882 * camel-mime-filter-smtp.c (filter): Fixed the filter so that it
2883 wouldn't insert garbage under certain conditions.
2885 2000-06-02 Christopher James Lahey <clahey@helixcode.com>
2887 * camel-session.c: Don't ref the services in the cache.
2889 2000-06-02 Jeffrey Stedfast <fejj@helixcode.com>
2891 * providers/smtp/camel-smtp-transport.c: Rearanged where debug
2892 fprintf statements we placed so that any data the server sends
2893 back is printed out before an exception is set and the function
2896 2000-06-02 Not Zed <NotZed@HelixCode.com>
2898 * camel-mime-utils.c (header_decode_date): If we get a funny
2899 result, just throw it out. Basically a fix for the one true
2902 2000-06-01 Not Zed <NotZed@HelixCode.com>
2904 * camel-folder-summary.c (message_info_free): Free
2905 references/messsage id.
2906 (message_info_save): Save them.
2907 (message_info_load): Load them.
2908 (message_info_new): And get them from the new message.
2909 (CAMEL_FOLDER_SUMMARY_VERSION): Bumped for new changes.
2911 * camel-folder-summary.h: Added references and messageid to
2914 2000-06-02 Christopher James Lahey <clahey@helixcode.com>
2916 * camel-session.c: Ref and unref objects in the service cache
2919 * camel-store.c: Ref the folder when returning it using
2920 lookup_folder. Used the folder's full name for the key for the
2921 folder cache since that's used to uncache it.
2923 2000-06-02 Dan Winship <danw@helixcode.com>
2927 * providers/pop3/camel-pop3-store.c (pop3_connect): free msg on
2928 success as well as failure.
2929 (camel_pop3_command_get_additional_data): free buf after reading
2930 the last line (".").
2932 * providers/pop3/camel-pop3-folder.c (get_message_by_uid): free
2933 body data after creating the memstream from it (which will copy
2936 * providers/mbox/camel-mbox-folder.c (mbox_finalize): free summary
2939 * camel-data-wrapper.c (finalize): unref the stream, if it exists.
2941 2000-06-01 Not Zed <NotZed@HelixCode.com>
2943 * camel-mime-part.c (construct_from_parser): For a message part,
2944 set the default content-type to message/rfc822. Maybe needs to be
2945 done for multiparts too?
2947 2000-05-31 Not Zed <NotZed@HelixCode.com>
2949 * camel-mime-message.c (construct_from_parser): Typo in assersion.
2951 * camel-mime-parser.c (folder_scan_step): Use a default type of
2952 message/rfc822 for multipart/digest. Bug Z192.
2953 (folder_scan_drop_step): Remove warning.
2955 2000-05-30 Not Zed <NotZed@HelixCode.com>
2957 * providers/mbox/camel-mbox-folder.c (mbox_append_message): Init
2958 filter_from to NULL, for exception case.
2959 (mbox_get_message_by_uid): Cast off_t to long int for diagnostics.
2961 * camel-url.c (camel_url_hash): Hash funciton for using camel
2963 (camel_url_equal): equal function for same.
2965 * camel-session.c (camel_session_finalise): Free cached services.
2966 (camel_session_init): Init service cache.
2967 (service_cache_remove): destroy callback to remove a service from
2970 * camel-store.c (get_folder_internal): Remove the extra ref of the
2971 folder. That seems the right behaviour ...?
2972 (camel_store_get_type): Doh, actually call store init, so the
2974 (cache_folder): strdup the folder name! no wonder it never found
2977 2000-05-30 Jeffrey Stedfast <fejj@helixcode.com>
2979 * providers/imap/camel-imap-folder.c: Implemented a few more
2980 methods like imap_append and 1 or 2 others
2982 2000-05-29 Not Zed <NotZed@HelixCode.com>
2984 * camel-store.c (camel_store_init): Move it to here. If this
2985 level is going to maintain it, it should set it up. Lets see what
2986 caching folders breaks :(
2988 * providers/pop3/camel-pop3-store.c (camel_pop3_store_init): Dont
2989 init folder cache here.
2991 * providers/mbox/camel-mbox-summary.c
2992 (camel_mbox_summary_expunge): Make sure we copy messages which are
2993 still intact to the new folder.
2994 (camel_mbox_summary_expunge): Update the frompos as well when
2996 (camel_mbox_summary_expunge): Remove some debug, and dont offset
2999 * providers/vee/camel-vee-folder.c (vee_folder_build): Check the
3000 searched folder is open before trying to search it.
3001 (message_changed): Track changes to the source message in the
3003 (folder_changed): Track folder changes, re-query the folder that
3004 changed, and cascade the changed event as well.
3005 (camel_vee_folder_finalise): Free subfolder and subfolder summary.
3007 2000-05-29 Dan Winship <danw@helixcode.com>
3009 * camel-service.c (camel_service_new): Fix up some glib
3010 precondition stuff. Try to set the URL in camel_service_new before
3011 checking whether or not it's "empty" so that you can successfully
3012 set "sendmail:" as a URL.
3014 2000-05-28 Dan Winship <danw@helixcode.com>
3016 * camel-provider.h: Add a domain field to CamelProvider, to say
3017 what kind of data it provides.
3019 * providers/imap/camel-imap-provider.c:
3020 * providers/mbox/camel-mbox-provider.c:
3021 * providers/pop3/camel-pop3-provider.c:
3022 * providers/sendmail/camel-sendmail-provider.c:
3023 * providers/smtp/camel-smtp-provider.c: Set domain to "mail".
3025 * providers/nntp/camel-nntp-provider.c: Set domain to "news".
3027 * providers/vee/camel-vee-provider.c: Set domain to "vfolder". (So
3028 it doesn't end up being listed as a potential mail source in the
3029 mail config wizard.)
3031 * providers/pop3/camel-pop3-store.c: Split apart password and APOP
3032 auth, since some servers seem to do both, but don't really.
3033 (connect_to_server): Renamed from try_connect. Now actually does
3034 the connection up to the point of checking the greeting for APOP
3036 (query_auth_types): Return APOP, if appropriate. Call
3037 pop3_disconnect after connect_to_server since we don't really want
3039 (pop3_connect): Use connect_to_server rather than duplicating
3040 code. Fix a one-byte buffer overrun in the APOP code.
3041 (pop3_disconnect): Make this able to clean up after a partial
3043 (connect_to_server): Remove port number from error message since
3044 it's not terribly useful and we were getting it from the wrong
3047 * camel-mime-utils.c (header_address_list_format_append): Use
3048 `foo@bar' rather than `"" <foo@bar>' for email addresses with no
3051 2000-05-27 Jeffrey Stedfast <fejj@helixcode.com>
3053 * providers/imap/camel-imap-store.c: Removed
3054 camel_imap_command_get_additional_data() as it was
3055 completely useless, replaced with
3056 camel_imap_command_extended() which may eventually replace
3057 camel_imap_command() as well.
3059 * providers/imap/camel-imap-store.h: Modified to reflect
3060 changes made to camel-imap-store.c
3062 * providers/imap/camel-imap-folder.c: Wrote the first of many
3063 methods: camel_imap_init(), imap_open(), imap_expunge(),
3064 imap_get_message_count(), and imap_get_subfolder_names()
3066 2000-05-26 Dan Winship <danw@helixcode.com>
3068 * camel-multipart.c (camel_multipart_init): Don't set a default
3069 boundary. Require the caller to do that.
3070 (set_boundary): if boundary is NULL, generate a "random" boundary.
3072 * camel-mime-part-utils.c
3073 (camel_mime_part_construct_content_from_parser): Add a call to
3074 camel_multipart_set_boundary after creating a new multipart.
3076 2000-05-25 Jeffrey Stedfast <fejj@helixcode.com>
3078 * providers/imap/camel-imap-store.c (try_connect): Removed
3079 Exception code - Pop doesn't seem to set exceptions
3081 * providers/imap/camel-imap-folder.c: Initial code, mostly
3082 just a template for future code
3084 * providers/imap/imap.[c,h]: Source code from my personal
3085 mailer - for reference only!
3087 2000-05-25 NotZed <NotZed@HelixCode.com>
3089 * camel-mime-part-utils.c
3090 (camel_mime_part_construct_content_from_parser): Replace simple
3091 data wrapper here too, oops.
3093 * Makefile.am (libcamel_la_SOURCES): Removed
3094 camel-simple-data-wrapper again. Less code to maintain == better
3097 * camel-data-wrapper.c (construct_from_stream): Fixes for bug
3098 where text attachments dont work. Made data-wrapper concrete for
3101 2000-05-23 NotZed <NotZed@HelixCode.com>
3103 * providers/vee/camel-vee-folder.c (vee_folder_build_folder):
3104 Update the vfolder details for a single folder.
3106 2000-05-25 Jeffrey Stedfast <fejj@helixcode.com>
3108 * providers/smtp/camel-smtp-transport.c (_send_to): Took out code
3109 that had been there to reconnect to the server if it was not
3110 already connected - Mailer code was fixed so that this should not
3113 * providers/imap/camel-imap-store.[c,h]: Initial code.
3115 2000-05-24 Dan Winship <danw@helixcode.com>
3117 * camel.h: Re-add camel-simple-data-wrapper.h, which was removed
3120 2000-05-24 Jeffrey Stedfast <fejj@helixcode.com>
3122 * providers/smtp/camel-smtp-transport.[c,h]: Moved global
3123 variables into struct CamelSmtpTransport to make SMTP
3126 * providers/imap/camel-imap-*.h: Stolen from Mbox. Rough structure
3129 2000-05-23 Jeffrey Stedfast <fejj@helixcode.com>
3131 * providers/imap: Added some initial code to the camel tree
3134 * providers/imap/.cvsignore: Added to repository
3136 * providers/smtp/camel-smtp-transport.c: Added debug fprintf's
3137 so that testers can provide more information. Tested with simple
3138 messages and a reply to the hello@helixcode.com default message
3139 but should really be tested more.
3140 (smtp_data): Fixed to use data_wrapper_write_to_stream.
3142 * camel-mime-filter-smtp.c (filter): Modified to escape all lines
3143 beginning with a '.' and to place a \r before each \n if one did
3144 not previously exist. Removed code to escape "From " as it was
3145 found to not be needed for SMTP.
3147 2000-05-22 Jeffrey Stedfast <fejj@helixcode.com>
3149 * providers/smtp/camel-smtp-transport.c (smtp_data): Fixed the
3150 filtered stream. Fixes for stream changes, updated to use
3151 camel-mime-filter-smtp.
3153 * Makefile.am: Added camel-mime-filter-smtp.c
3155 * camel-mime-filter-smtp.[c,h]: Added to camel tree
3156 Smtp filter used to change \n into \r\n, escape lone dots,
3157 and escape "From "'s.
3159 2000-05-19 NotZed <NotZed@HelixCode.com>
3161 * camel-simple-data-wrapper.c (construct_from_stream): If we
3162 already have been constructed, unref our content.
3163 (write_to_stream): Check we've been constructued, and change for
3166 * camel-mime-parser.c: Removed exception stuff.
3168 * md5-utils.c (md5_get_digest_from_stream): repaired.
3170 * camel-mime-message.c: Remove exception from write_to_stream, and
3171 fix, and fix formatting.
3173 * providers/sendmail/camel-sendmail-transport.c (_send_internal):
3174 Fix for stream changes.
3176 * providers/pop3/camel-pop3-store.c (camel_pop3_command): Fixes
3179 * providers/mbox/camel-mbox-folder.c, and elsewhere, fix all
3181 (mbox_append_message): Use stream_close() now its back.
3182 (mbox_append_message): unref the from filter.
3184 * camel-stream-mem.c: And here.
3186 * camel-stream-fs.[ch]: Here too.
3188 * camel-stream-filter.c: Likewise. This is getting tedious.
3190 * camel-stream-buffer.c (stream_write): Fix a few little problems.
3191 (stream_close): Reimplement.
3192 (camel_stream_buffer_read_line): Slightly more efficient version,
3193 that also only allocates the right amount of memory for strings.
3195 * camel-seekable-substream.c: Likewise.
3197 * camel-seekable-stream.[ch]: Remove exceptions, fix formatting,
3198 changes for stream (re)fixes. set_bounds returns an error.
3200 * camel-stream.[ch]: Remove exceptions. Make flush and reset return
3201 an error code, repair all the screwed up formatting, and put back
3204 * camel-mime-part-utils.c
3205 (camel_mime_part_construct_content_from_parser): And here.
3207 * camel-mime-part.c (camel_mime_part_set_content): And this too.
3208 (write_to_stream): Fixed for stream changes.
3212 * providers/vee/camel-vee-folder.c (vee_search_by_expression):
3213 Implement. Performs an intersection of the two searches.
3214 (camel_vee_folder_finalise): Unref search folders.
3215 (vee_append_message): Implement append.
3217 2000-05-18 Dan Winship <danw@helixcode.com>
3219 * camel-folder.c: remove message_number_capability and require uid
3221 (camel_folder_list_subfolders, camel_folder_get_uid_list,
3222 camel_folder_get_subfolder_info, camel_folder_get_message_info):
3224 (camel_folder_get_subfolder_names,
3225 camel_folder_free_subfolder_names): new subfolder interfaces.
3226 (camel_folder_get_uids, camel_folder_free_uids): new uid
3228 (camel_folder_get_summary, camel_folder_free_summary): new summary
3231 * providers/mbox/camel-mbox-folder.c,
3232 * providers/nntp/camel-nntp-folder.c:
3233 * providers/vee/camel-vee-folder.c: Update for changes
3235 * providers/pop3/camel-pop3-folder.c: Implement get_uids, update
3238 2000-05-18 NotZed <NotZed@HelixCode.com>
3240 * providers/vee/camel-vee-folder.c: Guess!
3242 * camel-folder-search.c (search_user_flag): Implement user_flag
3245 * camel-folder-search.h: Added user_flag search capability
3248 * providers/mbox/camel-mbox-folder.c (mbox_init): Set USER flag in
3249 permanent flags for the folder.
3251 2000-05-17 Dan Winship <danw@helixcode.com>
3253 * camel-folder.c: Remove unused async open/close and
3254 copy_message_to functions.
3255 Rename functions without initial _. Fix glib preconditions and
3258 2000-05-17 Dan Winship <danw@helixcode.com>
3260 * camel-data-wrapper.c: remove get/set_output_stream operations.
3261 They're redundant with write_to_stream, and CamelMimePart and
3262 CamelMimeMessage only implement the latter, meaning that trying to
3263 get_output_stream on a CamelMimeMessage that was built from pieces
3264 rather than being parsed from a stream doesn't work. Anything that
3265 uses get_output_stream can be rewritten to use write_to_stream, so
3266 we'll standardize on that.
3267 (camel_data_wrapper_new): remove this: CamelDataWrapper is
3268 supposed to be an abstract class.
3269 (write_to_stream): remove default implementation. (Moved to
3270 CamelSimpleDataWrapper)
3272 * camel-simple-data-wrapper.c: resurrect, although it's not really
3273 the same thing it was before. A simple data wrapper, which is
3274 backed by a CamelStream.
3276 * camel-mime-part-utils.c
3277 (simple_data_wrapper_construct_from_parser): Use
3278 construct_from_stream rather than set_output_stream.
3279 (camel_mime_part_construct_content_from_parser): Change
3280 camel_data_wrapper_new to camel_simple_data_wrapper_new.
3282 * camel-mime-part.c (camel_mime_part_set_content): Change
3283 camel_data_wrapper_new to camel_simple_data_wrapper_new.
3286 2000-05-17 Darin Adler <darin@eazel.com>
3288 * camel-folder-summary.c: (message_info_load):
3289 Quick fix to get it to compile. I hope I don't get into trouble.
3291 2000-05-17 Dan Winship <danw@helixcode.com>
3293 * camel.h: Don't include the no-longer-distributed
3294 possibly-to-be-removed headers.
3296 * providers/smtp/camel-smtp-transport.c
3297 (smtp_get_email_addr_from_text): fix an off-by-one error in
3299 (smtp_data): use camel_data_wrapper_get_output_stream rather than
3300 data_wrapper->output_stream
3302 2000-05-17 NotZed <NotZed@HelixCode.com>
3304 * providers/mbox/camel-mbox-folder.c (message_changed): Snoop
3305 changes to user flags on the message into the summary as well.
3307 * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_init):
3308 Changed version init to include the parent class version info
3309 (i.e. add it not overwrite it).
3311 * camel-folder-summary.c (message_info_new): Initialise user_flags
3313 (message_info_load): And load user flags.
3314 (message_info_save): And save user flags.
3315 (message_info_free): And free them.
3316 (CAMEL_FOLDER_SUMMARY_VERSION): Bumped file revision.
3318 * camel-folder-summary.h: Added user-flags to summary.
3320 * camel-mime-message.c (camel_mime_message_set_user_flag): Dont
3321 use a hashtable for user flags.
3322 (camel_mime_message_get_user_flag): And changed here too.
3323 (camel_flag_get): New interface to get a flag from a flag
3324 list. Flag lists are easier to work with than hash tables, and
3326 (camel_flag_set): And set.
3327 (camel_flag_list_free): And free.
3328 (free_key_only): Discard.
3329 (finalize): Remove the flag list.
3331 2000-05-17 Jeffrey Stedfast <fejj@stampede.org>
3333 * providers/smtp/camel-smtp-transport.c: (smtp_helo): Error
3334 checking on gethostbyaddr() eliminating a possible segfault.
3336 2000-05-16 NotZed <NotZed@HelixCode.com>
3338 * providers/mbox/camel-mbox-folder.c (mbox_delete_message_by_uid):
3341 2000-05-12 NotZed <NotZed@HelixCode.com>
3343 * camel-movemail.c (camel_movemail): Open the destination with
3344 O_APPEND, so we dont blow away a partially transferred mbox.
3345 (camel_movemail): Loop if we get errno=INTR, and not fail.
3347 2000-05-11 NotZed <NotZed@HelixCode.com>
3349 * providers/mbox/camel-mbox-summary.c (summary_rebuild): Update
3350 the summarised file size, if everything went ok.
3351 (camel_mbox_summary_expunge): Clear header flags after updating.
3353 2000-05-16 Chris Toshok <toshok@helixcode.com>
3355 * providers/nntp/camel-nntp-folder.c:
3356 * providers/nntp/camel-nntp-folder.h:
3357 * providers/nntp/camel-nntp-provider.c:
3358 * providers/nntp/camel-nntp-store.c:
3359 * providers/nntp/camel-nntp-utils.c:
3360 * providers/nntp/camel-nntp-utils.h:
3361 get things working with new camel summary stuff.
3363 * providers/nntp/camel-nntp-summary.c:
3364 * providers/nntp/camel-nntp-summary.h:
3365 removed files since camel-folder-summary does all we need.
3367 2000-05-15 Jeffrey Stedfast <fejj@stampede.org>
3369 * providers/smtp/camel-smtp-transport.c: Added some preliminary
3372 2000-05-15 Dan Winship <danw@helixcode.com>
3374 * camel-folder.h: Remove camel_folder_get_summary, which no longer
3377 2000-05-11 Dan Winship <danw@helixcode.com>
3379 * Makefile.am: remove some cruft that we're not currently using.
3381 * camel-stream-mem.c (camel_stream_mem_new_with_buffer): Change
3382 to match prototype (size_t vs unsigned int) so it works on 64-bit
3383 machines. Noted by msw.
3385 2000-05-11 NotZed <NotZed@HelixCode.com>
3387 * providers/mbox/camel-mbox-folder.c (message_changed): Indicate
3388 the summary changed also.
3390 2000-05-11 Jeffrey Stedfast <fejj@stampede.org>
3392 * providers/smtp/camel-smtp-transport.c: (smtp_helo):
3393 Updated to more closely comply with RFC 821 standards
3395 2000-05-11 NotZed <NotZed@HelixCode.com>
3397 * camel-mime-part.c (write_to_stream): Unref the filter after
3398 adding it to the filtering stream.
3400 * providers/mbox/camel-mbox-summary.c
3401 (camel_mbox_summary_finalise): Free the folder path.
3402 (camel_mbox_summary_update): Also save summary when done.
3403 (camel_mbox_summary_expunge): Unindex items when deleting them.
3404 (camel_mbox_summary_expunge): Save the index as well as the
3407 * camel-folder-summary.c (camel_folder_summary_finalise): Free the
3409 (camel_folder_summary_touch): New function, indicate the summary
3411 (camel_folder_summary_remove): Dirty here.
3413 * camel-internet-address.c (internet_decode): Free multiple entry
3416 * camel-mime-utils.c (header_decode_mailbox): Plugged another
3417 memleak, free text after converting it.
3418 (header_decode_addrspec): More leaks plugged.
3420 * camel-mime-message.c (finalize): Free message_uid.
3421 (finalize): Free the recipients hashtable.
3423 2000-05-11 <notzed@helixcode.com>
3425 * camel-folder-summary.c (camel_folder_summary_finalise): Free
3426 summary items and charset filters.
3428 2000-05-10 <notzed@helixcode.com>
3430 * camel-folder-summary.c (camel_folder_summary_finalise): Don't
3431 free stuff in p, after we've free'd p.
3433 * providers/mbox/camel-mbox-folder.c (mbox_append_message): Unref
3434 the stream we created for appending.
3436 2000-05-10 Jeffrey Stedfast <fejj@stampede.org>
3438 * providers/smtp/camel-smtp-transport.c: (camel_smtp_transport_class_init):
3439 Added initialization for service_class
3441 2000-05-10 Dan Winship <danw@helixcode.com>
3443 * camel-multipart.c (write_to_stream): fix a stupid typo. Thank
3446 * camel-mime-part.c (write_to_stream): don't ref the stream before
3447 wrapper a filter around it, since nothing will ever unref it.
3449 2000-05-10 Christopher James Lahey <clahey@helixcode.com>
3451 * Makefile.am: Added camel-types.h, camel-folder-pt-proxy.h, and
3452 camel-thread-proxy.h.
3454 2000-05-09 Dan Winship <danw@helixcode.com>
3456 * providers/sendmail/camel-sendmail-transport.c (_send_internal):
3457 Bleah. Can't fsync a pipe. As a quick kludge, just don't
3458 stream_flush it. The right fix will require bringing back
3459 stream_close though.
3461 2000-05-09 Jeffrey Stedfast <fejj@stampede.org>
3462 * camel-internet-address.[c,h]: Undid my changes (moved
3463 struct _address back into came-internet-address.c)
3464 * providers/smtp/camel-smtp-transport.c: (_send): changed
3465 from using it's own address manipulation (using struct _address)
3466 to using camel_internet_address_get(). Also some format changes
3467 to keep consistant with the rest of Camel
3469 2000-05-09 Jeffrey Stedfast <fejj@stampede.org>
3471 * camel-internet-address.[c,h]: Moved struct _address from
3472 camel-internet-address.c to camel-internet-address.h
3473 (hopefully this doesn't break anything...)
3474 * providers/smtp/camel-smtp-transport.c: (_send): now
3475 populates the recipient list with To, Cc, and Bcc addresses.
3476 Should now be able to use this module.
3478 2000-05-09 Dan Winship <danw@helixcode.com>
3480 * providers/mbox/camel-mbox-folder.c (mbox_get_message_by_uid):
3481 one more refcounting fix I missed before.
3483 2000-05-08 Jeffrey Stedfast <fejj@stampede.org>
3485 * providers/smtp/camel-smtp-transport.c: no longer frees memory it
3486 shouldn't, updated to reflect camel-stream changes involving
3487 CamelException (perhaps it should use a different CamelException
3488 variable than is passed to the camel smtp module?)
3490 2000-05-08 Dan Winship <danw@helixcode.com>
3492 * camel-stream.c (camel_stream_read, camel_stream_write,
3493 camel_stream_flush, camel_stream_reset, camel_stream_printf,
3494 camel_stream_write_to_stream): Use CamelException to signal
3496 (camel_stream_write_strings): Remove. camel_stream_printf is more
3497 useful in most of the places that used this.
3498 (camel_stream_write_string): Change from macro to function to
3499 prevent problems with double-evaluation.
3501 * camel-seekable-stream.c (camel_seekable_stream_seek,
3502 camel_seekable_stream_set_bounds): Use CamelException.
3505 * camel-seekable-substream.c, camel-stream-buffer.c,
3506 camel-stream-filter.c, camel-stream-fs.c, camel-stream-mem.c:
3509 * camel-stream-fs.c: Remove the virtual init functions and move
3510 the code into the creator functions. Add CamelExceptions to
3511 creation functions that could fail.
3513 * camel-data-wrapper.c (camel_data_wrapper_write_to_stream): Use
3515 * camel-mime-message.c, camel-mime-part.c, camel-multipart.c
3516 (write_to_stream): Update.
3518 * camel-mime-parser.c: add an exception to the mime parser private
3519 data and pass that to stream functions as needed.
3521 * gmime-content-field.c, md5-utils.c: Update (badly) for stream
3524 * camel-exception.h (camel_exception_is_set): convenience macro.
3526 * providers/Makefile.am: disable SMTP for now
3528 * providers/mbox/camel-mbox-folder.c (mbox_append_message): Pass
3529 CamelException to the functions that now need it. Check the
3530 exception after calling camel_stream_flush, and fail if it fails.
3531 (mbox_get_message_by_uid): More updates.
3533 * providers/pop/camel-pop3-folder.c,
3534 providers/pop/camel-pop3-store.c,
3535 providers/sendmail/camel-sendmail/transport.c: Update.
3538 2000-05-08 NotZed <NotZed@HelixCode.com>
3540 * camel-mime-message.c (process_header): Format From and Reply-To
3541 to at least a decoded string. Should probably store them as an
3542 camelinternetaddress.
3544 * Merged NEW_SUMMARY branch back to trunk, and resolved conflicts.
3546 * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_update):
3548 (camel_mbox_summary_expunge): Force an update of the summary
3549 before we do anything.
3550 (camel_mbox_summary_expunge): Build new xev line in xevnew, and
3551 free that, and consify xev.
3552 (camel_mbox_summary_load): If we are rebuilding from scratch, make
3553 sure we clear the summary content.
3555 * camel-stream-filter.c (do_close): We NEED a stream close.
3557 2000-05-07 Dan Winship <danw@helixcode.com>
3559 Make camel not leak like a sieve.
3561 * camel-object.c: New subclass of GtkObject which is now the base
3562 of the Camel object hierarchy. Currently the only difference
3563 between CamelObject and GtkObject is that CamelObjects don't start
3566 * *.h: Move a bunch of typedefs to camel-types.h. Standardize on
3567 using <camel/foo.h> in header files rather than <foo.h>, "foo.h",
3568 or "camel/foo.h". Remove some unneeded includes.
3570 * camel-address.c, camel-data-wrapper.c, camel-folder-search.c,
3571 camel-folder-summary.c, camel-folder.c, camel-mime-filter.c,
3572 camel-mime-parser.c, camel-service.c, camel-session.c,
3573 camel-stream.c: These are now subclasses of CamelObject.
3575 * camel-data-wrapper.c (set_output_stream):
3576 * camel-medium.c (set_content_object):
3577 * camel-seekable-substream.c
3578 (init_with_seekable_stream_and_bounds):
3579 * providers/mbox/camel-mbox-folder.c (mbox_get_message_by_uid):
3580 remove gtk_object_sink calls.
3582 * camel-stream-buffer.c (init_vbuf):
3583 * camel-stream-filter.c (camel_stream_filter_new_with_stream):
3584 ref the original stream.
3586 * camel-folder-summary.c (camel_folder_summary_finalise): unref
3587 the filters when finalizing.
3589 * camel-mime-part-utils.c
3590 (simple_data_wrapper_construct_from_parser,
3591 camel_mime_part_construct_content_from_parser):
3592 * camel-mime-part.c (camel_mime_part_set_content): Unref objects
3593 that are created only to be handed off to other objects. If
3594 they're going to be needed later, they will have been additionally
3595 ref'ed by the object that needs them.
3597 * providers/pop3/camel-pop3-folder.c (get_message_by_number):
3598 unref the message stream after creating the data from it.
3600 * camel-stream.c, camel-stream-buffer.c, camel-stream-filter.c,
3601 camel-stream-fs.c, camel-stream-mem.c: Remove camel_stream_close,
3602 since its semantics are dubious (what happens when you close a
3603 stream other people still have references on?).
3605 * providers/nntp/camel-nntp-store.c:
3606 * providers/smtp/camel-smtp-transport.c:
3607 * providers/pop3/camel-pop3-store.c:
3608 replace camel_stream_close calls with gtk_object_unref.
3610 * providers/mbox/camel-mbox-folder.c:
3611 * providers/nntp/camel-nntp-folder.c:
3612 * providers/sendmail/camel-sendmail-transport.c:
3613 replace camel_stream_close with camel_stream_flush +
3616 2000-05-06 Dan Winship <danw@helixcode.com>
3618 * providers/pop3/camel-pop3-store.c (query_auth_types): A machine
3619 which serves neither POP nor KPOP is not a POP server.
3621 * providers/smtp/camel-smtp-provider.c: Note in the description
3622 that this provider is not yet tested.
3624 2000-05-08 <notzed@helixcode.com>
3626 * camel-mime-part.c (write_to_stream): Free the filter stream when
3629 * camel-mime-parser.c (folder_seek): Make sure we add the \n
3630 terminal when we seek as well (frob!).
3632 * camel-mime-utils.c (header_decode_addrspec): Plug minor memleak.
3634 * camel-mime-part.c (finalize): Free header tables once finished.
3636 * camel-folder-summary.c (camel_folder_summary_remove): Dont try
3637 to access info after its free'd.
3639 2000-05-07 NotZed <NotZed@HelixCode.com>
3641 * camel-mime-part.c (write_to_stream): Apply encoding to content
3642 part, when writing to a stream *sigh*.
3644 * camel-stream-filter.c (do_write): implement write for the
3645 filtering stream. Writes shouldn't be mixed with reads.
3646 (do_flush): Implemented flush. Again write/flush shouldn't be
3647 mixed with reads. Only flushes if the last op was write.
3648 (do_close): Force flush on close.
3650 * camel-mime-filter.c (filter_run): Oops, make sure we include the
3651 backlen in the total length before passing onto the filter.
3653 * camel-mime-filter-from.c: New filter, munges 'From ' lines into
3656 * camel-mime-parser.c (camel_mime_parser_header_remove): New
3657 function to remove the parser's raw header, rather than
3658 manipulating the header directly (wich doesn't work with
3661 * camel-mime-utils.c (header_address_list_clear): Fixed some
3662 broken(tm) logic, which would leak entries on multivalued lists.
3664 * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_load):
3665 Use ibex_save() to save the ibex. Makes a big difference to
3666 startup times for very large mailboxes.
3667 (camel_mbox_summary_expunge): Dum de dum, reimplemented. Designed
3668 to be much more robust, and to stop immediately if anything awry
3670 (copy_block): Utility function to copy n bytes from one fd to
3672 (header_write): Utility function to write out raw headers to an
3674 (camel_mbox_summary_update): Incremental summary updater.
3676 * providers/mbox/camel-mbox-folder.c (mbox_get_message_by_uid):
3677 Dont unref the stream, because of the broken(tm) ref model of gtk
3678 widget that for some odd reason is being perpetuated in camel.
3679 (mbox_expunge): Reenable expunge again.
3680 (mbox_append_message): Removed the optimised mbox append. If its
3681 an issue, it can go back later. Cleaned up a lot, checks error
3682 returns, and automagically translates 'From ' into '>From' as
3685 2000-05-07 <notzed@helixcode.com>
3687 * camel-mime-filter.c (filter_run): Oops, forgot to add the
3688 backlen to the pre-buffer (*poof*).
3690 2000-05-07 NotZed <NotZed@HelixCode.com>
3692 * camel-mime-message.c (construct_from_parser): Allow
3693 HSCAN_FROM_END to terminate the processing of a message.
3695 * camel-folder-summary.c (perform_content_info_load): Ick, dont
3696 try and append a node onto its own list.
3697 (camel_folder_summary_clear): Actually clear the indexes after
3698 we've removed the messages.
3699 (camel_folder_summary_clear): Set dirty if it changes.
3700 (camel_folder_summary_load): Clear dirty.
3701 (camel_folder_summary_save): Only save if dirty.
3703 * providers/mbox/camel-mbox-summary.c (summary_header_load): Oops,
3704 remember to call that parent class first ...
3705 (summary_header_save): Here too.
3706 (camel_mbox_summary_load): Do more checking to verify the index
3707 contents as well as teh summary contents, against the mbox
3709 (camel_mbox_summary_load): Removed some fo that checking, it needs
3710 more code to work reliably.
3712 2000-05-07 <notzed@helixcode.com>
3714 * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_load):
3715 Set the size and mtime of the mbox we indexed once done.
3717 * camel-folder-summary.c (camel_folder_summary_set_index): Dont
3718 write the index if it changes - let the claler fix it (uh, kind of
3719 impacts performance).
3720 (camel_folder_summary_load): close in.
3722 * camel-folder-summary.c (summary_format_string): Check header
3723 exists before trying to strip its leading spaces.
3725 2000-05-06 NotZed <NotZed@HelixCode.com>
3727 * camel-folder.h: Removed summary info from here, and include
3728 camel-folder-summary.h as well.
3730 * camel-mime-parser.c (camel_mime_parser_step): Allow it to accept
3733 * providers/mbox/camel-mbox-summary.c: Totally new file, now
3734 subclasses camel-folder-summary.
3736 * camel-folder-summary.c (message_info_load): Load the uid as a
3738 (message_info_save): And save too.
3739 (camel_folder_summary_clear): New function, clears the contents of
3742 * providers/mbox/camel-mbox-folder.c: Fixes for summary changes.
3743 (mbox_get_message_by_uid): Completely redone. Now cross-checks
3744 the summary information to make sure we get a real message.
3745 (mbox_append_message): Disabled the copy version of append for
3747 (mbox_expunge): Temporarily disabled the expunge function, until
3748 it is put back in camel-mbox-summary.c
3750 2000-05-05 NotZed <NotZed@HelixCode.com>
3752 * camel-folder-summary.c: And same here ...
3753 (camel_folder_summary_encode_fixed_int32): Ugh, fwrite doesn't
3754 return -1 on error ..
3755 (camel_folder_summary_decode_fixed_int32): Neither deos fread.
3756 (camel_folder_summary_encode_token): Fix here too.
3757 (summary_build_content_info): Use start-headers to get the pos of
3758 the message, not parser_tell(), which might not be what we
3759 expected because of parser_unstep().
3760 (camel_folder_summary_encode_token): Use bserch() to tokenise the
3761 values, rather than a linear search.
3763 * camel-mime-utils.c: Defined out some memory profiling stuff I
3764 left there by mistake.
3765 (header_decode_mailbox): Dont try to append the word part of a
3766 local address if we ran out of words.
3768 * camel-mime-parser.c (folder_scan_content): Apply the fix from
3769 the header scanner to here too.
3770 (folder_scan_header): Only check for end of header if we have
3771 space for it (didn't end the read with a newline)
3772 (folder_scan_header): inptr is the only real thing we need
3773 registerised for performance. Try to help the compiler be smart
3775 (folder_scan_header): Simplified the save header case a tad.
3777 Commented out some memory profiling stuff.
3779 2000-05-05 <notzed@helixcode.com>
3781 * camel-mime-utils.c (header_decode_mailbox): Plug a memory leak.
3782 (header_decode_text): Fixed memory leaks with g_string_append().
3783 (header_encode_string): And here too, and a few other places. The
3784 glib api is so awful ...
3785 (header_content_type_decode): More memory leaks.
3787 2000-05-05 <notzed@helixcode.com>
3789 * camel-mime-parser.c (folder_scan_init_with_fd): Make sure we
3790 init the end of buffer sentinal!
3791 (folder_scan_init_with_stream): And here too ...
3793 2000-05-04 NotZed <NotZed@HelixCode.com>
3795 * providers/mbox/camel-mbox-folder.c (summary_get_message_info):
3796 Maxcount is minimum of the max and the requested count, not the
3799 * camel-mime-parser.c (folder_scan_content): Properly set midline,
3800 so we dont falsely catch offset boundary markers (i.e. From inside
3802 (folder_read): Set a sentinal on the end of the read data (\n) so
3803 we dont have to check the buffer boundary in the inner loop.
3804 (mempool_*): New experimental memory management routines, speed
3805 up simple structure parsing by about 25% ... not compiled in by
3806 default. Something similar may be needed for camel-mime-utils to
3807 address performance issues with g_malloc and friends.
3809 * camel-mime-utils.c: Added a macro w(x) used to wrap all warnings
3810 about mime/rfc violations, so they can be turned off.
3812 * camel-folder-summary.c (summary_build_content_info): Step after
3813 the end of a message ...
3814 Turn into a stand-alone program for testing and profiling.
3816 2000-05-04 Dan Winship <danw@helixcode.com>
3818 * providers/pop3/camel-pop3-store.c (pop3_connect): Don't fall
3819 back to plaintext passwords if APOP fails, since it should also
3822 2000-05-04 Dan Winship <danw@helixcode.com>
3824 * camel-session.c (camel_session_list_providers): New function to
3825 replace camel_provider_scan. Returns a list of either (a) all
3826 currently-loaded providers, or (b) all available providers.
3828 * camel-url.[ch]: Add an "empty" flag to CamelURL (indicating that
3829 it contains only a protocol).
3831 * camel-service.c (camel_service_query_auth_types): Make this take
3832 a CamelException (since it may have to try to connect to the
3833 server, and it might not able to.)
3835 * providers/pop3/camel-pop3-store.c: add KPOP (Kerberized POP)
3836 support. This is mostly so I have two kinds of authmech to play
3837 with instead of just one. (But it does actually work.)
3839 * providers/smtp/camel-smtp-transport.c (query_auth_types): update
3840 for prototype change, but disable the functionality, since it
3841 doesn't really support any auth types yet.
3842 (camel_smtp_transport_get_type): add an object init function to
3843 set the service url_flags.
3845 2000-05-04 NotZed <NotZed@HelixCode.com>
3847 * providers/mbox/camel-mbox-summary.c: Yes, and anotherone.
3849 * camel-mime-utils.c: And another one.
3851 * camel-mime-part.c: And another one.
3853 * camel-mime-part-utils.c: And another one.
3855 * camel-folder-search.c: And another one.
3857 * camel-mime-parser.c: Reverted a change wihtout a ChangeLog entry.
3859 2000-05-04 NotZed <NotZed@HelixCode.com>
3861 * camel-folder-summary.[hc]: Yes, CamelFolderSummary is back ...
3862 ... re-usable class to summarise and index any stream or message
3863 and to manage/load/save the created summaries.
3865 * camel-folder.c: Include string.h to kill a warning.
3867 2000-05-03 Jason Leach <leach@wam.umd.edu>
3869 * Makefile.am (INCLUDES): add $(UNICODE_CFLAGS) to the INCLUDES,
3870 people who installed libunicde in non-standard include paths need
3873 2000-05-03 NotZed <NotZed@HelixCode.com>
3875 * camel-folder.h: Added pos/bodypos/endpos to the basic message
3876 content info object. Size to be removed? Moved the
3877 messageconentinfo and messageinfo back to camel-folder-summary.h.
3879 * camel-mime-filter-index.c (camel_mime_filter_index_set_ibex):
3880 New function to (re)set the index to use on a filter.
3882 * camel-mime-parser.c (camel_mime_parser_scan_from): Whole bunch
3884 (camel_mime_parser_drop_step): New function to drop a state from
3885 the parser. Needs more testing.
3887 * camel-mime-utils.c (rfc2047_decode_word): If the iconv handle is
3888 -1, then dont try and convert (crashes unicode_iconv?).
3889 (rfc2047_decode_word): Use alloca for variables instead of
3890 g_malloc - by the rfc they should always be short.
3891 (rfc2047_decode_word): If we can't do the charset conversion, undo
3892 the quoted-printable/base64 at least? Should probably convert
3893 unknown characters to the utf-8 unknown character.
3895 2000-05-02 Larry Ewing <lewing@helixcode.com>
3897 * camel-mime-utils.c (header_decode_date): fix typo when
3898 dereferencing saveoffset.
3900 2000-05-02 NotZed <NotZed@HelixCode.com>
3902 * camel-folder-search.c: Added some header doco.
3904 * camel.h: REmove gmime-utils.h from here.
3906 * providers/mbox/camel-mbox-search.[ch]: Removed. Functionally
3909 * providers/mbox/camel-mbox-folder.c (mbox_search_by_expression):
3910 Use the new CamelFolderSearch class to do the actual searching,
3911 just setup the search here.
3913 * camel-folder-search.[ch]: A helper class that providers may
3914 subclass to provide their own search functionality, or they can
3915 simply use as is, it supports body searches if an ibex is
3916 supplied, and header searches if a summary is supplied.
3918 2000-05-02 Matt Loper <matt@helixcode.com>
3920 * Makefile.am: set G_LOG_DOMAIN.
3921 * providers/MH/Makefile.am: same.
3922 * providers/maildir/Makefile.am: same.
3923 * providers/mbox/Makefile.am: same.
3924 * providers/nntp/Makefile.am: same.
3925 * providers/pop3/Makefile.am: same.
3926 * providers/sendmail/Makefile.am: same.
3927 * providers/smtp/Makefile.am: same.
3929 2000-05-02 NotZed <NotZed@HelixCode.com>
3931 * providers/mbox/camel-mbox-search.c
3932 (camel_mbox_folder_search_by_expression): Dont store/remove
3933 current search from the search list.
3935 * providers/mbox/camel-mbox-folder.h: Removed searches list,
3936 searches are all sync now.
3938 * gmime-utils.[ch]: What the hell, remove it. This will break the
3939 nntp provider. The mime parser can be used instead though.
3940 Removed from all code including it (but none were using it).
3942 * gmime-utils.c (_store_header_pair_from_string): Removed bizarre
3943 string_dichotomy version of this. This code is somewhat redundant
3944 now, and is headed for death anyway.
3946 * gstring-util.c (g_string_dichotomy): Same with this one.
3947 (g_string_clone): Removed a memory leak, g_string_new() allocates
3949 (g_string_append_g_string): Allow to append an empty gstring onto
3950 another gstring, dont abort()!
3952 * string-utils.c (string_dichotomy): Removed this incredibly weird
3955 * camel-folder.c (_create): Replaced the rather obtuse use of
3956 "string_dichotomy" function with a simple strrchr(). Still not
3959 * camel-folder-summary.c: cvs removed a long-removed file.
3961 * camel-mime-parser.c (folder_scan_header): Fix the previous
3962 overflow problem properly (can happen in 2 places).
3963 (header_append): A new macro to include the code changed above, so
3964 it only appears in one place.
3965 (folder_scan_step): Change the content type to text/plain if the
3966 multipart is broken. Doesn't actually change the header though.
3967 (header_append): Also move the header-start tracking stuff here.
3968 Could be a static function to save code.
3970 2000-05-02 <notzed@helixcode.com>
3972 * camel-mime-part-utils.c
3973 (simple_data_wrapper_construct_from_parser): Dont use autofill on
3974 these fucking long function anmes!!!!!!
3976 2000-05-02 NotZed <NotZed@HelixCode.com>
3978 * providers/mbox/camel-mbox-summary.c
3979 (camel_mbox_summary_expunge): Fix the offset for the summary when
3980 an item is expunged to take account of the From line.
3982 2000-05-01 NotZed <NotZed@HelixCode.com>
3984 * providers/mbox/camel-mbox-folder.h (CamelMboxFolder): Removed
3987 * providers/mbox/camel-mbox-search.c
3988 (camel_mbox_folder_search_cancel): Remove.d
3989 (camel_mbox_folder_search_complete): Removed.
3990 (camel_mbox_folder_search_by_expression): Changed back to sync
3992 (struct _searchcontext): Removed cancelled flag.
3993 (find_context): Removed.
3994 (func_header_contains): Debug out some search stuff.
3996 * providers/mbox/camel-mbox-search.h
3997 (camel_mbox_folder_search_by_expression): Moved back to sync api.
3999 * providers/mbox/camel-mbox-summary.c
4000 (camel_mbox_summary_set_flags_by_uid): New function to update the
4001 flags in the summary.
4002 (camel_mbox_summary_expunge): Expunge messages from a folder.
4003 (offset_content): Re-align offsets of summary when messages
4004 added/removed to an existing summary.
4005 (camel_mbox_summary_remove_uid): Remove a message summary entry by
4007 (index_folder): Restore flags from X-Evolution header, if they are set.
4008 (index_folder): Make sure we index using a decimal uid, since
4009 thats what everything else indexes off (oops).
4010 Upped SUMMARY_VERSION as a result.
4011 (camel_mbox_summary_expunge): Oops, my wrong, use the string uid
4014 * providers/mbox/camel-mbox-folder.c (_get_message_by_uid):
4015 Connect to the message_changed signal.
4016 (_init): Set permanent flags to something reasonable. No user
4018 (message_changed): If the flags of the message change, update the
4019 flags in the summary.
4020 (mbox_expunge): Implement the expunge.
4021 (camel_mbox_folder_class_init): Renamed all leading _'s to mbox_'s
4022 (mbox_expunge): Emit a folder_changed signal on expunge (uh, even
4025 * camel-folder.c (_finalize): Uh, dont free permanent_flags
4026 anymore (this wouldn't failed anyway, it was a GList !!!)
4027 (camel_folder_search_complete): Removed.
4028 (camel_folder_search_cancel): Removed.
4029 (camel_folder_expunge): Changed to only allow expunge on an open
4030 folder. It doesn't make sense for mbox, otherwise (?)
4031 (camel_folder_class_init): Added a folder_changed signal.
4033 * camel-folder.h (struct _CamelFolder): Change permanent_flags to
4035 (list_permanent_flags): Renamed to get_permanent_flags, and
4037 (camel_folder_expunge): Changed expunge to a void type. The
4038 messages would no longer be useful after they have been removed
4040 (CamelFolderClass): New function summary_get_by_uid() to get a single
4042 (*search*): Moved back to synchronous search api ... *sigh*
4044 * camel-folder.h: Removed CamelSearchFunc.
4046 * camel-mime-message.c (set_flag): Removed.
4047 (camel_mime_message_set_flag): Removed.
4048 (get_flag): Removed.
4049 (camel_mime_message_get_flag): Removed.
4050 (add_flag_to_list): Removed.
4051 (get_flag_list): Removed.
4052 (camel_mime_message_get_flag_list): Removed.
4053 (camel_mime_message_get_flags): New interface to get system flags.
4054 (camel_mime_message_set_flags): " to set ".
4055 (camel_mime_message_get_user_flag): To get a user flag.
4056 (camel_mime_message_set_user_flag): To set a user flag.
4057 (finalize): Hmm, the old one free'd the key and data, not good
4058 when the data is a boolean ...
4060 2000-04-30 Dan Winship <danw@helixcode.com>
4062 * camel-provider.h: Tweak the definition of CamelProvider. Among
4063 other things, a provider may now be both a store and a transport.
4065 * camel-provider.c: Remove a lot of code we had no intention of
4066 using. This now only contains two functions: camel_provider_init
4067 to read the installed .urls files, and camel_provider_load to
4068 load and register a new provider.
4070 * camel-session.c: Remove more unused code and simplify some of
4071 the remaining code. The list of available provider modules is now
4072 stored in the session, and it handles calling camel_provider_load
4073 to load them as needed. Provider registration is now done by
4074 calling back from the module init routine, which allows a single
4075 module to register providers for multiple URL types.
4077 * providers/*: Update provider structures and init routines for
4078 the new stuff. Add a .urls file to each provider specifying what
4079 urls it handles, and install that with the library.
4081 * providers/nntp/camel-nntp-provider.c: Add hints towards
4082 supporting both news: and nntp: URLs, and using nntp as both a
4083 store and a transport.
4085 2000-04-29 Dan Winship <danw@helixcode.com>
4087 * camel-internet-address.c (camel_internet_address_get): const
4090 * camel-mime-part-utils.c
4091 (simple_data_wrapper_construct_from_parser):
4092 camel_mime_parser_tell() returns an offset from where it started
4093 parsing, not necessarily from the start of data. Since we're
4094 parsing a bounded seekable_stream, we need to add the stream's
4095 starting bound to camel_mime_parser_tell's return value to
4096 create the substream in the right place.
4098 * camel-seekable-substream.c
4099 (camel_seekable_substream_new_with_seekable_stream_and_bounds):
4100 say CAMEL_STREAM_UNBOUND rather than -1 in doc.
4102 * camel-seekable-stream.c (camel_seekable_stream_seek): Add more
4105 2000-04-28 Dan Winship <danw@helixcode.com>
4107 * camel-mime-parser.c (folder_scan_header): fix a bug that would
4108 cause corruption with very long headers.
4110 2000-04-27 Ettore Perazzoli <ettore@helixcode.com>
4112 * providers/pop3/Makefile.am (INCLUDES): Add `-I$(srcdir)/../../..'
4113 to pick the Camel includes.
4114 * providers/sendmail/Makefile.am (INCLUDES): Likewise.
4116 * camel.h: Don't #include <camel/data-wrapper-repository.h> anymore.
4118 2000-04-27 NotZed <NotZed@HelixCode.com>
4120 * camel-mime-utils.c (check_header): Dont try and check a NULL
4123 * camel-recipient.[ch]: Dead. Its not pining.
4125 * camel-mime-message.h: Dont include recipients.h anymore.
4127 * camel-mime-message.c (camel_mime_message_add_recipient): Accept
4128 name/address separately, and store in an CamelInternetAddress.
4129 (add_recipient): Removed.
4130 (remove_recipient): Removed.
4131 (remove_recipient_address): Renamed from remove_receipient, works
4133 (camel_mime_message_remove_recipient_name): New function to remove
4135 (get_recipients): Removed.
4136 (camel_mime_message_get_recipients): Return a camel-internet-address.
4137 (write_to_stream): No longer write receipients directly.
4138 (write_recipients_to_stream): Removed.
4139 (write_one_recipient_to_stream): Removed.
4140 (camel_mime_message_init): Setup recipients hashtable, rather than
4141 usign the recipients stuff.
4142 (set_recipient_list_from_string): Killed, a violent and lengthy
4144 (process_header): Simplified recipient handling code a lot.
4145 (received_date_str, sent_date_str, reply_to_str, subject_str,
4146 from_str): Removed some oddly-defined global statics.
4147 (camel_mime_message_class_init): Dont initialise above variables
4149 (init_header_name_table): Removed, use a table to init this, and
4150 do it in class init (2 lines of code ...).
4152 * camel-news-address.c: Class to represent news addresses -
4153 currently empty, and not built.
4155 * camel-internet-address.h: Class to represent internet (email)
4158 * camel-address.h: Abstract class to represent (lists of)
4161 2000-04-27 Dan Winship <danw@helixcode.com>
4163 * camel-mime-part.c (write_to_stream): Revert previous change. I
4166 * camel-url.[ch] (camel_url_encode, camel_url_decode): expose
4169 2000-04-26 Dan Winship <danw@helixcode.com>
4171 * camel-mime-part.c (write_to_stream): Only write a newline
4172 between the headers and the content object if the content object
4173 is not a CamelMedium. (If the content is a medium, it may have its
4174 own headers, which then need to go before the blank line.)
4176 * camel-mime-body-part.[ch]: Remove. We weren't using the fields
4177 that made this different from camel-mime-part, so it basically
4178 just forced us to do lots of gratuitous typecasting.
4180 * camel-multipart.[ch]: Use CamelMimePart. Remove the multipart
4181 parent stuff, since we weren't using that either.
4183 * etc: update for CamelMimeBodyPart -> CamelMimePart
4185 2000-04-26 Dan Winship <danw@helixcode.com>
4187 * camel-medium.c (set_content_object): sink the content object
4188 after referencing it.
4190 * camel-mime-part.c: fix various little things in the handling
4191 of CamelMedium methods. Change camel_mime_part_set_text to the
4192 more generic camel_mime_part_set_content.
4194 * camel.h: sync to current reality
4196 * camel-folder-utils.[ch]: removed
4198 * camel-mime-utils.c (header_format_date): fix format specifier
4199 for time zone. Fix typo in month names array.
4201 2000-04-26 NotZed <NotZed@HelixCode.com>
4203 * camel-seekable-substream.c (stream_seek): Changed to have
4204 absolute seek semantics, not relative to the bounds.
4206 * camel-seekable-stream.c (reset): When we reset, seek to the
4207 start of the bound, if there is one.
4208 (stream_tell): Make tell virtual.
4210 * camel-stream-filter.c (do_available): Removed.
4212 * camel-stream-buffer.c: Remove leading _'s from static functions.
4213 (stream_read): Renamed from read(). Fancy that conflicting! (my
4216 * providers/pop3/camel-pop3-folder.c (get_message_by_number):
4217 Changed to stream_mem interface.
4219 * providers/mbox/camel-mbox-folder.c (_get_message_by_uid): Fixed
4220 for streamfs interface changes, and implement a failure case.
4221 (_append_message): Changed for fs stream interface change.
4223 * camel-multipart.c (print_part): Iterate rahter than callback. I
4224 hate glists's interface (hence, move this to write_to_stream).
4225 (write_to_stream): Return an error (yuck, this is a royal PITA to
4226 do with the stream write interface).
4228 * camel-mime-message.c: Removed leading _ from static names.
4230 * camel-mime-part.h: construct_from_parser() now returns an error
4233 * camel-mime-part-utils.c
4234 (camel_mime_part_construct_content_from_parser): Changed to use a
4235 camel-data-wrapper instead of a camel-simple-data-wrapper (no
4236 change needed elsewhere?).
4237 (simple_data_wrapper_construct_from_parser): Fixes for stream-mem
4240 * camel-simple-data-wrapper.[ch],
4241 camel-simple-data-wrapper-stream.[ch],
4242 camel-stream-data-wrapper.[ch], removed. Fixed including of these
4245 * camel-mime-part.c (camel_mime_part_set_text): Remove the use of
4246 the camel-simple-data-wrapper-stream, just use a mem stream.
4247 (write_to_stream): Renamed from my_*
4248 (construct_from_stream): Return an error on error.
4250 * camel-stream-mem.c (camel_stream_mem_new*): Remove mode
4253 * camel-stream-mem.h (enum CamelStreamMemMode): Removed. It
4256 * camel-data-wrapper.h: Add camel_data_wrapper_new() to create
4258 (write_to_stream, construct_from_stream): Return an error
4259 indicator for success. Fixed all methods to match (ICK).
4261 * Makefile.am (libcamel_la_SOURCES): Remove
4262 camel-simple-data-wrapper.c, camel-simple-data-wrapper-stream.c,
4263 camel-stream-data-wrapper.c. Obsoleted by code re-use!
4265 * camel-data-wrapper.c (construct_from_stream): Change the default
4266 implementation to just set the output stream == construction
4267 stream. Well, this lets me get rid of both simple-data-wrapper
4268 and stream-data-wrapper (unused anyway), and
4269 simple-data-wrapper-stream in one hit. CamelDataWrapper is now
4270 also a concrete class.
4271 (write_to_stream): Use camel_stream_write_to_stream() to
4272 calculate/return values (and save code).
4273 Include <errno.h> for obvious reasons.
4275 * camel-stream.c (eos): Provide a default implementation of .eos().
4276 (camel_stream_write_to_stream): Make it return an error code on
4278 (camel_stream_printf): Changed to return the number of bytes
4280 (camel_stream_available): Removed.
4282 * camel-stream-fs.h (enum CamelStreamFsMode): Removed. Changed to
4283 use unix modes and so forth (wasn't used for anything but new file
4284 creation and didn't work well either).
4286 * camel-stream-fs.c: Removed leading _'s for names. And removed
4287 some virtual method 'documentation'.
4288 (destroy): Dont try and close a closed/error fd. Only report
4289 error if close returns -1. Moved all the code to finalise(), and
4290 killed this function.
4291 (init_with_fd): Properly setup the seek offset, if it is a
4292 valid and seekable file descriptor.
4293 (init_with_fd_and_bounds): Use off_t for bounds, set bounds on the
4295 (init_with_name): Return error codes.
4296 (init_with_name_and_bounds): Ditto.
4297 (camel_stream_fs_new_with_name): REturn NULL object if it failed.
4298 (camel_stream_fs_new_with_name_and_bounds): Return NULL object on
4299 failure. Changed with_name* api's to take unix open style args
4301 (read): The bounded stream bounds checking seemed off, simplified
4303 (write): Implement bounds checking for writing, the comment was
4304 wrong, it could make sense to bound writing. Cleaned up a little.
4306 (eos): Removed. Use CamelStream's implementation now.
4307 (close): Reset the fd to -1, provide a warning for bad usage.
4308 (seek): Cleaned up. Changed the behaviour a little, the returned
4309 offset is the absolute position in the file, even in bounded
4311 (seek): Seek from end mirrors lseek() behaviour (reverse seeking).
4313 2000-04-25 NotZed <NotZed@HelixCode.com>
4315 * camel-stream-fs.h (struct _CamelStreamFs): Moved bounds and eof
4316 indicator to other parent classes.
4318 * camel-stream.c (camel_stream_printf): New utility
4319 function. Obvious use.
4321 * camel-stream-mem.c: Removed leading _'s from static func's.
4322 (camel_stream_mem_new_with_byte_array): Fixed for api changes, set
4323 the owner for the byte array to us.
4324 : Removed A bunch of gtk doc stuff for static (implementation) functions.
4325 (available): Removed.
4326 (write): Fixed the write implementation so that seek() works on a
4327 seekable memory stream, as expected. Seeking past the end of the
4328 buffer has unix semantics (filling with 0).
4329 (available): Removed.
4330 (write): Implement seekable stream bounded stream.
4331 (read): Implement seekable stream bounded stream.
4332 (close): Dont free the stream_mem if we're not the owner.
4333 (seek): Allow to seek beyond the end of memory area,
4334 implement bounds checking.
4335 (seek): Set errno on bad policy.
4337 * camel-stream-mem.h (struct _CamelStreamMem): Changed position to off_t.
4338 (new_with_buffer): Changed len to be a size_t.
4339 (set_buffer, set_byte_array): New interface functions.
4340 (struct _CamelStreamMem): Removed position, it is stored in the
4343 * camel-stream.h: Removed some of the seemingly random
4344 whitespace. Removed the available method (its not
4345 impelemented/useful enough).
4347 * camel-seekable-substream.c
4348 (init_with_seekable_stream_and_bounds): Remove the data_available
4349 stuff, it hasn't been properly implemented/finished, and may never
4350 work (unfortunately *sigh).
4351 (reemit_parent_signal): Removed part of the above change.
4352 (set_bounds): Removed (moved to seekable-stream).
4353 : Fixed up some of the generally unreadable indenting (sorry,
4354 wrapping at 80 characters with
4355 camels_really_long_function_names()
4356 just_doesnt_work_very_well_does_it().
4357 (available): Removed.
4358 (stream_seek): Fixup for object changes. Make sure we return -1
4359 if the parent stream can't seek.
4361 * camel-seekable-stream.c (ccamel_seekable_stream_set_bounds): New
4362 function to bound any seekable stream.
4364 (camel_seekable_stream_class_init): Implement an init function, to
4365 setup the stream bounds to unbound.
4367 * camel-seekable-stream.h (CamelSeekableStreamClass): New virtual
4368 method set_bounds for seekable streams.
4369 (CAMEL_STREAM_UNBOUND): New define for no bound.
4371 * camel-seekable-substream.h (struct _CamelSeekableSubstream):
4372 Removed sup_bound and inf_bound, moved to CamelSeekableStream (and
4373 renamed, and changed to off_t's).
4374 (new_with_seekable_stream_and_bounds): Use off_t as the bounds.
4375 (CamelSeekableSubstreamClass): Uh, why was the intialiser virtual?
4378 * camel-seekable-stream.[ch] (CamelSeekableStreamClass): Changed seek
4379 to accept an off_t as the offset.
4380 (struct _CamelSeekableStream): Renamed cur_pos to position and
4381 changed it to an off_t type.
4382 (enum CamelStreamSeekPolicy): Set to match the SEEK_* constants
4384 (get_current_position): Renamed to tell().
4386 * camel-stream-buffer.h: Commented out set_vbuf - never implemented.
4388 2000-04-25 Dan Winship <danw@helixcode.com>
4390 * camel-stream-buffer.c (_eos): only return TRUE if the parent is
4391 at eos AND the buffer has been exhausted
4393 * camel-mime-message.c: fix some incorrect macro usage that
4394 resulted in bogus casts
4396 2000-04-24 Dan Winship <danw@helixcode.com>
4398 * camel-mime-part-utils.c
4399 (simple_data_wrapper_construct_from_parser): fix a cut-and-pasto.
4401 * providers/mbox/camel-mbox-folder.c (_get_message_by_uid): ref
4402 (and sink) the message stream if we're going to unref it later.
4403 Otherwise it could get destroyed while there are still substreams
4404 attached to it. This needs a cleaner solution.
4406 * camel.h: remove data-wrapper-repository.h include(s)
4408 2000-04-24 NotZed <NotZed@HelixCode.com>
4410 * camel-mime-message.c (construct_from_parser): Allow MESSAGE_END
4411 _or_ EOF as valid termination conditions.
4413 * providers/mbox/camel-mbox-summary.c (message_struct_new): Decode
4414 and then re-encode the addresses, so they are consistently
4417 * camel-mime-utils.c (header_decode_mailbox): Store the address in
4418 a _header_address. And try to get a comment-stored name if there
4420 (header_decode_address): Actually return an address.
4421 (header_to_decode): Renamed to header_address_decode()
4422 (header_mailbox_decode): New function to get a single mailbox.
4423 (header_mime_decode): Return the major/minor value, as
4425 (header_address_new, and friends): Whole bunch of utility
4426 functions for working with the address thingies.
4427 (header_decode_domain): Free the string header, and dont expand
4430 * camel.c (camel_init): No longer call
4431 data_wrapper_repository_init.
4433 * camel-medium.c (write_to_stream): Moved (back) to
4438 (get_header): Make all these abstract, and spit warnings if
4439 called. I guess it could manage the list, but well, it doesn't.
4441 * camel-medium.h (struct _CamelMedium): Dont store headers here,
4442 the implementor is the only one who knows their format.
4443 (CamelMediumClass): Changed header values to be void *'s. They
4444 need not be strings?
4446 * camel-simple-data-wrapper.c (construct_from_stream): And we're
4447 back. Set the output stream.
4448 (construct_from_parser): Moved to camel-mime-part-utils.
4450 * camel-mime-part-utils.c
4451 (camel_mime_part_construct_content_from_parser): Create the
4452 contents of multipart and simple messages.
4453 (camel_mime_part_construct_content_from_parser): Oops, this was
4454 totally screwed up, try creating the right cotnent on the right
4457 * camel-multipart.c (construct_from_parser): Moved to
4458 camel-mime-part-utils.
4459 (separate_part): Removed.
4461 * camel-mime-part.c (construct_from_stream): Back again! This now
4462 switches over to using a mime parser for any mime parts, only.
4463 (my_write_to_stream): Write our headers and so forth here.
4464 (add_header): Add header directly, parent class is abstract.
4465 (remove_header): Ditto.
4466 (set_header): Ditto.
4468 * camel-data-wrapper.c (camel_data_wrapper_construct_from_stream):
4470 (camel_data_wrapper_construct_from_parser): Moved to
4473 * camel-data-wrapper.h: Put back construct_from_stream.
4475 * camel-mime-part.h: Put construct_from_parser in here, the
4476 data-wrapper shouldn't know about mime. Ok, so now to undo half
4477 of the last hours changes ... duh.
4479 2000-04-23 Dan Winship <danw@helixcode.com>
4481 * camel-mime-utils.c (header_to_decode, header_mime_decode): fix
4482 some obvious minor bugs noted by -Wall.
4484 2000-04-23 NotZed <NotZed@HelixCode.com>
4486 * providers/pop3/camel-pop3-folder.c (get_message_by_number): Use
4487 construct_from_stream instead of set_input_stream().
4489 * camel-simple-data-wrapper-stream.c
4490 (camel_simple_data_wrapper_stream_construct): REmoved the destroy
4492 (wrapper_destroy_cb): Removed.
4494 * camel-simple-data-wrapper.h: Add prototype for _construct()
4497 * camel.c: Include unicode.h to kill a warning.
4499 * camel-data-wrapper.h (CameldataWrapperClass): Removed
4500 construct_from_stream virtual method.
4501 Removed get/set input stream.
4503 * data-wrapper-repository.[ch]: Removed&from build. Obsoleted?
4504 The justification as is follows: It is mixing storage
4505 protocol/format with message architecture. It really just doesn't
4506 serve any purpose, as each medium implementor will have to have its
4507 own type->handler mapping, and the only current implementor,
4508 mimepart has a very simple structure and no need for this.
4510 * camel-medium.c (write_to_stream): Moved here from most of the
4511 stuff in camel-mime-part. Well, the MEDIUM is the one that knows
4512 what the headers are, and the content is, let it write it out.
4514 * camel-mime-part-utils.c (camel_mime_part_construct_content):
4515 Copied from camel-mime-part.c, removed handling of message
4516 followon state (moved to camel-mime-message).
4517 (camel_mime_part_construct_content_from_parser): Renamed from
4519 (camel_mime_part_construct_headers_from_stream):
4520 (camel_mime_part_construct_content_from_stream):
4521 (camel_mime_part_store_stream_in_buffer): Removed. Replaced by
4522 the new construct from parser stuff.
4524 * camel-mime-message.c (construct_from_parser): Do
4525 construct_from_parser for mime-message.
4526 (_write_to_stream): Set the mime-version header for medium to
4527 write out, rather than writing it out ourselves.
4529 * camel-data-wrapper.c (set_mime_type_field): Ref the
4530 content_field when we get it?
4531 (construct_from_stream): Removed.
4532 (camel_data_wrapper_construct_from_stream): Changed to a helper
4533 function, creates a mime_parser, and constructs from that.
4534 (set_input_stream): Removed.
4535 (camel_data_wrapper_set_input_stream): Removed.
4536 (get_input_stream): Removed.
4537 (camel_data_wrapper_get_input_stream): Removed.
4539 * camel-mime-parser.c (camel_mime_parser_unstep): New function.
4540 Cause a subsequent call to mime_parser_step() to return the same
4543 * providers/mbox/camel-mbox-folder.c (_get_message_by_uid):
4544 Initial test code using the mime parser to construct the message.
4545 (_get_message_by_uid): Use construct_from_stream() instead of
4546 creating our own parser.
4548 * camel-mime-part.c (construct_from_parser): part constructor.
4549 (camel_mime_part_construct_content): Basically a simpler
4550 replacement for the datawrapper repository.
4551 (camel_mime_part_init): Set the default type to text/plain.
4552 (camel_mime_part_construct_content): Removed to
4553 camel-mime-part-utils.c
4554 (my_get_output_stream): Removed. The streeam is in the
4556 (my_get_content_object): Removed. The content object is stored in
4557 the medium. If none is there, the object wasn't created properly.
4558 (my_write_content_to_stream): Removed. The content object is the
4559 one that knows how to write itself out!!!!!!!!
4560 (my_write_to_stream): Remove the base header writing stuff - has
4561 been moved to camel-medium, where it belongs. This can just be
4562 used to check for mandatory headers.
4563 (my_construct_from_stream): Removed.
4564 (my_set_input_stream): What the hell, i'll remove this too.
4565 Nobody seems to understand how it differs from create from stream,
4566 and they both seem to serve the same purpose ...
4568 * camel-simple-data-wrapper.c (construct_from_parser): Initial
4569 implementation of a content constructor.
4570 (construct_from_stream): Removed! Job taken over by
4571 construct_from_parser.
4573 * camel-multipart.c (construct_from_parser): Multipart
4574 construction routine.
4575 (camel_multipart_init): Set the default multipart type to
4576 multipart/mixed. Duh, no subtype is not allowed anyway.
4577 (set_input_stream): REmoved. Replaced by construct_from_parser.
4579 2000-04-22 Dan Winship <danw@helixcode.com>
4581 * camel-multipart.[ch]: clean, document, etc.
4582 (camel_multipart_init): pick a prettier default boundary. Still
4583 need to deal with the larger problem
4585 2000-04-22 NotZed <NotZed@HelixCode.com>
4587 * camel-mime-message.h (struct _CamelMimeMessage): Removed
4588 send_date, and received_date, and replaced it with a time_t
4589 'date' (this is what the header is called), and date_offset to
4590 store the GMT offset of the date.
4592 * camel-mime-message.c (camel_mime_message_set_from): Update raw
4594 (_set_from): Removed.
4595 (_get_from): Removed.
4596 (camel_mime_message_get_from): Moved implementation here.
4597 (camel_mime_message_get_subject): Move implementation here.
4598 (_get_subject): Nuked.
4599 (camel_mime_message_set_subject): Handle utf-8 input, and also
4600 update raw header when changed.
4601 (_set_subject): Removed.
4602 (_set_received_date): Removed.
4603 (camel_mime_message_set_received_date): Removed.
4604 (_get_received_date): Removed.
4605 (camel_mime_message_get_received_date): Removed.
4606 (_get_sent_date): Removed.
4607 (camel_mime_message_get_sent_date): Removed.
4608 (camel_mime_message_get_date): New function to get the date as a
4610 (camel_mime_message_set_date): Set the date as a time_t/offset.
4611 (camel_mime_message_get_date_string): Get the date as a string.
4612 (camel_mime_message_init): Initialise the current date as
4613 'CMAEL_MESSAGE_DATE_CURRENT'.
4614 (_set_reply_to): Removed.
4615 (camel_mime_message_set_reply_to): Moved implementation here.
4616 This is still broken, reply-to can have multiple addresses.
4617 (_get_reply_to): Removed.
4618 (_set_field): Removed, no longer used anywhere.
4619 (_get_field): Also removed.
4620 (_init_header_name_table): Add the Date header.
4621 (process_header): Also handle snooping of Date header here.
4623 * camel-stream-filter.c (finalise): Unref the source stream on
4624 finalise, and also call the parent class (oops).
4626 * camel-mime-parser.c (camel_mime_parser_state): New function to
4627 get the current parser state.
4628 (camel_mime_parser_stream): Allow you to get the stream back from
4630 (camel_mime_parser_fd): Alternative to allow you to get the fd
4631 back from the mime_parser.
4632 (folder_scan_init_with_stream): Properly ref/unref the stream.
4633 (folder_scan_close): Properly unref the stream/close the fd on
4635 (folder_scan_init_with_fd): Close the old fd if there is one.
4637 * camel-data-wrapper.c (camel_data_wrapper_construct_from_parser):
4638 New method, construct a data wrapper from an initialised parser.
4639 (construct_from_parser): Empty implementation.
4641 * providers/mbox/camel-mbox-summary.c (message_struct_new):
4642 Convert subject line to unicode, before storing in the summary.
4643 (strdup_trim): Removed, no longer needed.
4645 * providers/mbox/camel-mbox-folder.c (_get_message_by_uid): Ref
4646 the folder after setting it in the new message.
4648 * camel-mime-part.c (my_set_content_object): Have the headers
4649 follow the content-type change here too.
4650 (my_write_to_stream): Dont write content-type here, automatically
4651 stored in the headers ...
4652 (my_write_to_stream): Use header_disposition_format() to format
4653 the content-disposition header.
4654 (my_write_to_stream): Removed old code, all headers are now stored
4655 in the camel-medium level, always. Need to do the same with
4656 camel-mime-message i suppose ...
4657 (my_write_to_stream): Write the content using the parent class,
4658 not some weird function.
4659 (camel_mime_part_class_init): Dont override get_output_stream.
4660 (camel_mime_part_encoding_from_string): Bleh, make it
4663 * camel-mime-utils.c (header_content_type_is): Handle empty types.
4664 (header_encode_string): Start of an implementation of the rfc2047
4665 encoder. It does iso-8859-1, and us-ascii, and utf-8 (others get
4667 (rfc2047_encode_word): Convert a single word/string into rfc2047
4669 (quoted_encode): Different quoted-printable encoding for rfc2047
4670 encoding of headers.
4672 * gmime-content-field.c (gmime_content_field_write_to_stream): Use
4673 header_content_type_format() to format it.
4675 2000-04-21 NotZed <NotZed@HelixCode.com>
4677 * camel-mime-utils.h: Add prototype for header_param_list_free.
4679 * camel-recipient.c: New function to remove all the types of a
4680 recipient list. I think this whole object needs a major review.
4682 * camel-mime-message.c (camel_mime_message_class_init): Removed
4683 parse_header_pair override, override add_header instead.
4684 (_parse_header_pair): Renamed to add_header.
4685 (remove_header): Add this method, to make sure we keep upto date
4686 with removed headers too.
4687 (_set_field): If given a NULL value, clear it out.
4688 (_set_recipient_list_from_string): Constify.
4689 (set_header): Override set_header from camel_medium.
4690 (process_header): Local function to handle set/add/remove of each
4691 header we know about.
4693 * camel-mime-part.c (camel_mime_part_class_init): Removed
4694 parse_header_pair setup.
4695 (my_parse_header_pair): Moved into add_header(), removed.
4696 (my_set_disposition): Allow a NULL disposition to clear it.
4697 (my_set_content_id): Allow NULL content id to clear it.
4698 (remove_header): Track removed headers.
4699 (my_set_description): Allow NULL description to clear it.
4700 (my_set_content_MD5): Make sure we copy the md5 value, and allow a
4701 NULL value to reset it.
4702 (my_set_filename): Copy the filename.
4703 (my_set_header_lines): Removed. Nothing uses it, it doesn't
4704 actually serve any purpose.
4705 (camel_mime_part_set_header_lines): Ditto.
4706 (my_get_header_lines): Ditto.
4707 (camel_mime_part_get_header_lines): Ditto.
4708 (camel_mime_part_class_init): Remove *_header_lines setup.
4709 (camel_mime_part_init): Remove header_lines init.
4710 (my_finalize): Remove header_lines finalise.
4711 (my_write_to_stream): Write the headers here. This is just WRONG,
4712 camel_medium should be doing this.
4713 (my_get_output_stream): Kill a warning.
4714 (camel_mime_part_encoding_to_string): Ditto.
4715 (camel_mime_part_set_description): Unvirtualiase, use add_header()
4716 to do the processing.
4717 (my_set_description): Removed.
4718 (set_disposition): Renamed from my_set_disposition.
4719 (camel_mime_part_get_description): Get the descriptionf rom the
4721 (my_get_description): Removed.
4722 (my_set_filename): Removed.
4723 (camel_mime_part_get_filename): Get the parameter from the
4725 (camel_mime_part_encoding_from_string): Handle NULL string.
4726 (camel_mime_part_init): Remove reference to filename.
4727 (my_finalize): Dont free filename.
4729 * camel-mime-part.h (CamelMimePartClass): Removed
4730 parse_header_pair() method, it doesn't add anything that
4731 add_header() can't be used for.
4732 (CamelMimePartClass): Remove *_header_lines methods.
4733 (struct _CamelMimePart): Remove header_lines list.
4734 (struct _CamelMimePart): Removed filename attribute.
4736 * camel-medium.c (camel_medium_init): Init headers to null, not a
4738 (add_header): Append the headers as a list.
4739 (remove_header): Remove headers as a list.
4740 (get_header): Likewise for lookup.
4741 (free_header): Removed, no longer needed.
4742 (finalize): Free headers using header_raw_clear().
4743 (camel_medium_set_header): New function, to reset and override all
4744 values of a header with a new value.
4746 * camel-medium.h (struct _CamelMedium): Changed to use a
4747 header_raw struct rather than a hash table, to store headers
4748 (many headers can occur multiple times).
4750 * camel-mime-utils.c (header_raw_find_next): New function, allows
4751 you to find multi-valued header fields.
4752 (header_disposition_format): New function to format/create
4753 content-disposition header string.
4754 (header_param_list_format_append): Function to format parameter
4755 lists into a GString.
4756 (header_content_type_format): Function to format content-type into
4758 (header_set_param): allow NULL value to remove the parameter.
4759 (decode_token): Renamed from header_decode_token.
4760 (header_decode_token): New interface for external use.
4761 (quoted_decode): Made static to kill annoying warnings.
4762 (g_strdup_len): Killed, replaced with calls to g_strndup().
4763 (rfc2047_decode_word): Made static to kill warnings.
4764 (decode_coded_string): Terminated.
4765 (g_string_append_len): Made static to kill warnings.
4766 (header_decode_text): Made static to kill warnings.
4767 (header_decode_text): Constify.
4768 (rfc2047_decode_word): Constify.
4769 (header_param): Constify.
4770 (header_content_type_new): Copy the type/subtype strings.
4771 (header_param_list_decode): Made static.
4772 (header_param_list_format_append): Made static.
4773 (quoted_decode): Constify.
4774 (g_string_append_len): Constify.
4775 (header_token_decode): New function to decode a single token.
4777 * providers/mbox/camel-mbox-summary.c (header_write): Append a
4778 trailing \n when writing headers.
4779 (strdup_trim): Killed a warning.
4780 (camel_mbox_summary_set_uid): Make sure the next uid is at least 1
4781 higher than any existing one.
4782 (header_evolution_decode): Use header_token_decode to get the
4785 * camel-mime-parser.c (folder_scan_header): Strip the trailing \n
4786 of the end of all header lines.
4788 2000-04-20 NotZed <NotZed@HelixCode.com>
4790 * providers/mbox/camel-mbox-utils.[ch]: Removed.
4792 * providers/mbox/camel-mbox-parser.[ch]: Removed. Removed
4795 2000-04-20 Dan Winship <danw@helixcode.com>
4797 * camel-mime-utils.c (rfc2047_decode_word): use libunicode iconv
4798 functions rather than libc ones (since libc might not have them).
4799 (header_decode_date): add autoconfiscation on timezone code
4801 * camel.c (camel_init): call unicode_init ()
4803 2000-04-20 NotZed <NotZed@HelixCode.com>
4805 * providers/mbox/camel-mbox-summary.c (message_struct_new): Trim
4806 leading/trailing spaces off the raw headers.
4808 * MERGE NEW_PARSER branch into HEAD, fixed conflicts.
4810 * gmime-content-field.c (_print_parameter): Duh, removed again
4813 * camel-mime-utils.c (header_content_type_is): Constify.
4814 (header_content_type_unref): Killed a couple warnings.
4816 * camel-folder.c (_init): Removed more log crap.
4818 * providers/Makefile.am (SUBDIRS): Removed nntp, pending fixes for
4821 * providers/mbox/camel-mbox-folder.c (_get_message_by_number):
4822 Fixed for new summary interface. Added a warning for using this
4824 (_get_message_by_uid): Fixed for message new with session
4827 2000-04-19 Dan Winship <danw@helixcode.com>
4829 * camel-simple-data-wrapper-stream.c
4830 (camel_simple_data_wrapper_stream_get_type): This is a subtype of
4831 CamelSeekableStream, not CamelStream.
4833 * camel-seekable-substream.c: clean up a lot.
4834 (eos): When testing for end-of-stream, reset the parent position
4835 before testing if it is at end-of-stream, since either (a) it may
4836 have been seek'ed to eos by someone else, or (b) we may have been
4837 seek'ed away from eos and it hasn't been synced yet.
4839 * camel-medium.[ch] (camel_medium_add_header): const poison.
4840 (Belatedly goes with my change of 2000-02-23.)
4841 (camel_medium_init): Use g_strcase_{hash,equal} on the header
4844 2000-04-18 Dan Winship <danw@helixcode.com>
4846 * camel-mime-part.c (my_set_input_stream):
4847 * camel-data-wrapper.c (set_input_stream, set_output_stream): do
4848 better reference counting of streams so they actually go away
4851 * camel-log.[ch], *: Nuke camel log stuff. Replace calls to
4852 CAMEL_LOG_WARNING with calls to g_warning.
4854 * camel-data-wrapper.[ch]:
4855 * camel-simple-data-wrapper.[ch]:
4856 * camel-medium.[ch]: Clean, polish, document. Most of the gtk-doc
4857 comments added to camel-data-wrapper.c note serious problems that
4860 2000-04-17 Dan Winship <danw@helixcode.com>
4862 * camel-mime-message.[ch]: Remove the "session" field from
4863 CamelMimeMessage. Nothing uses it, about half of the existing
4864 calls to camel_mime_message_new_with_session pass NULL, and
4865 there's no obvious reason for it to be there.
4867 * providers/MH/camel-mh-folder.c:
4868 * providers/maildir/camel-maildir-folder.c:
4869 * providers/mbox/camel-mbox-folder.c:
4870 * providers/mbox/camel-mbox-utils.c:
4871 * providers/nntp/camel-nntp-folder.c:
4872 * providers/pop3/camel-pop3-folder.c: Use camel_mime_message_new
4873 instead of camel_mime_message_new_with_session.
4875 * camel-session.c (get_store_for_protocol_with_url): Set the
4876 exception if no provider is found.
4878 * camel-url.c: Add code to encode and decode %-escapes in URLs,
4879 and do some additional correctness-checking on URL syntax. From
4880 Tiago Antà o with modifications by me.
4882 2000-04-14 Chris Toshok <toshok@helixcode.com>
4884 * providers/Makefile.am (SUBDIRS): add nntp
4886 2000-04-14 Christopher James Lahey <clahey@helixcode.com>
4888 * providers/mbox/camel-mbox-folder.c: Fix switch statement.
4890 2000-04-14 Chris Toshok <toshok@helixcode.com>
4892 * providers/nntp/camel-nntp-folder.c (_exists): always return TRUE
4893 for now. we need to check the server response to make sure the
4895 (_get_message_by_uid): make sure to account for the \n we add to
4896 the string after every line.
4898 * providers/nntp/camel-nntp-utils.c (get_XOVER_headers): function
4899 to get the headers using the XOVER command.
4900 (get_HEAD_headers): function to get the headers using the HEAD
4901 command on each message. slooooooow.
4902 (camel_nntp_get_headers): make this function use either XOVER or HEAD
4903 versions depending on whether or not the server extension is present.
4905 2000-04-14 Dan Winship <danw@helixcode.com>
4907 * camel-formatter.[ch]: This didn't belong in Camel. Move to mail/
4909 * Makefile.am, camel-types.h: remove references to
4912 2000-04-12 Matt Loper <matt@helixcode.com>
4914 * camel-folder-pt-proxy.c (_folder_open_cb): Print warning message
4915 for broken function.
4916 (_folder_close_cb): Same.
4918 2000-04-12 Miguel de Icaza <miguel@gnu.org>
4920 * Makefile.am (pthread_SRC): Use correct names for the pthread
4923 2000-04-10 Dan Winship <danw@helixcode.com>
4925 * providers/pop3/camel-pop3-store.c (pop3_connect): fix various
4926 bugs in APOP code (still untested) and some of the error cases.
4928 * camel-provider.h: Clarify what provider.protocol, provider.name,
4929 and provider.description should be.
4931 * providers/mbox/camel-mbox-provider.c:
4932 * providers/pop3/camel-pop3-provider.c:
4933 * providers/sendmail/camel-sendmail-provider.c:
4934 * providers/smtp/camel-smtp-provider.c: update protocols, names,
4937 * providers/mbox/camel-mbox-folder.c (_get_message_by_number):
4938 implement get_message_by_number for the mail fetch code.
4940 2000-04-09 Jeffrey Stedfast <fejj@stampede.org>
4942 * providers/smtp/camel-smtp-transport.c: reformatted to fit
4943 the standard indent format used by helix code
4945 2000-04-09 Dan Winship <danw@helixcode.com>
4947 * camel-movemail.c: New file with new function to dot-lock an mbox
4948 file and copy it to a safe private directory.
4950 2000-04-08 Christopher James Lahey <clahey@helixcode.com>
4952 * providers/smtp/.cvsignore: Added a .cvsignore file.
4954 2000-04-08 Dan Winship <danw@helixcode.com>
4956 * providers/sendmail/camel-sendmail-transport.c (_send_internal):
4957 actually record the pid returned by fork(). Noticed by clahey.
4959 * providers/smtp/camel-smtp-transport.c: #include <sys/param.h>
4960 for MAXHOSTNAMELEN. (This is a stopgap: some of the uses of
4961 MAXHOSTNAMELEN are wrong anyway...)
4963 2000-04-07 Jeffrey Stedfast <fejj@stampede.org>
4965 * providers/smtp/camel-smtp-transport.c: fixes to numerous bugs;
4966 should now build fine.
4967 * providers/Makefile.am: Readded smtp now that smtp builds without
4970 2000-04-20 NotZed <NotZed@HelixCode.com>
4972 * providers/mbox/camel-mbox-summary.c
4973 (camel_mbox_summary_next_uid): Public function to get the next
4974 uid, makes sure its saved to disk too.
4976 * camel-mime-part.c (my_finalize): Fix disposition crap with a
4978 (my_set_disposition): Likewise.
4979 (my_get_disposition): And here.
4980 (my_write_to_stream): And here, needs more cleanup.
4982 * providers/mbox/camel-mbox-folder.c (_append_message): Assign a
4983 new uid at this point.
4985 * gmime-content-field.c (gmime_content_field_write_to_stream):
4986 Make something up if we have an invalid/missing content type
4989 2000-04-19 NotZed <NotZed@HelixCode.com>
4991 * providers/mbox/camel-mbox-folder.c (_delete): Fixed completely
4992 broken switch() syntax, only compiled because errno is a macro on
4994 (_list_subfolders): Likewise.
4996 2000-04-18 NotZed <NotZed@HelixCode.com>
4998 * camel-mime-parser.c (folder_scan_init): init stream to null.
5000 * providers/mbox/camel-mbox-summary.c
5001 (CAMEL_MBOX_SUMMARY_VERSION): Moved to .c file, incremented.
5002 (index_folder): Changed to have index passed via the summary.
5003 (decode_string): Do a sanity check on the string size, so we dont
5004 visit g_malloc()'s friendly abort().
5006 * camel-folder-pt-proxy.c (camel_folder_pt_proxy_class_init):
5007 Removed reference to set_name.
5008 (_set_name): Removed.
5010 * providers/mbox/camel-mbox-utils.c
5011 (parsed_information_to_mbox_summary): Removed. Most of this file
5012 is about to be binned.
5014 * providers/mbox/camel-mbox-search.c (func_header_contains): Fixes
5015 for changes to summary interface.
5016 (struct _searchcontext): Remove pointer to message info, get it
5017 straight from the mboxsummary.
5018 (camel_mbox_folder_search_by_expression): New summary interface.
5019 (camel_mbox_folder_search_by_expression): Uh, the summary is not
5020 an object anymore (well not yet).
5022 * providers/mbox/camel-mbox-folder.c
5023 (camel_mbox_folder_class_init): Removed set_name init.
5024 (_set_name): Removed.
5025 (_open): Call new summary interface.
5026 (_close): Use new summary interface.
5027 (_create): Removed a summary object leak.
5028 (_get_message_count): New summary interface.
5029 (_get_uid_list): Use new summary interface. FIXME: this is leaky.
5030 (_get_message_by_uid): Use the new summary interface, some
5032 (_append_message): Totally changed, basically just appends the
5033 message directly, ignores the summary (for now), the summary will
5034 fix itself up if it needs to.
5035 (_check_get_or_maybe_generate_summary_file): Bye bye old code.
5036 (summary_get_message_info): Implement get_message_info again, for
5039 * camel-folder.c (camel_folder_class_init): Removed set_name
5041 (_set_name): Moved contents into _init.
5042 (_init): Perform the old functions of set_name here.
5044 * camel-folder.h: Removed the set_name internal interface.
5046 2000-04-14 NotZed <NotZed@HelixCode.com>
5048 * providers/mbox/camel-mbox-summary.[ch]: Completely replaced with
5051 * Makefile.am (libcamel_la_SOURCES): Removed
5052 camel-folder-summary.[ch].
5054 * camel-folder.h (struct _CamelFolder): Removed summary.
5055 (struct _CamelFolder): Changed flags to be 1 bit bitfields.
5057 * camel-folder-summary.[ch]: Class removed entirely.
5059 * camel-folder.c (camel_folder_get_summary): Removed.
5060 (camel_folder_summary_get_message_info): Moved from
5061 camel-folder-summary.c
5062 (camel_folder_summary_get_subfolder_info): Moved from
5063 camel-folder-summary.c
5065 * camel-mime-parser.c (folder_scan_step): Store the start of
5066 headers and start of from in the scan state.
5067 (camel_mime_parser_tell_start_headers): Query the start of the
5069 (camel_mime_parser_tell_start_from): Query the cached start of
5072 2000-04-13 NotZed <NotZed@HelixCode.com>
5074 * gmime-content-field.c (gmime_content_field_free): Removed this
5075 function. If its too dangerous to use, it shouldn't be here.
5076 (gmime_content_field_ref): Also ref the embedded content-type.
5077 (gmime_content_field_unref): Ditto to unref it.
5079 * camel-mime-utils.h: Add a refcount for content-type header.
5081 * camel-mime-utils.c (header_content_type_unref): Implement unref
5083 (header_content_type_ref): Implement ref for header content type.
5085 2000-04-12 NotZed <NotZed@HelixCode.com>
5087 * gmime-content-field.h: Changed to use a _header_content_type.
5088 Added type/subtype back for compatability with clients.
5090 * gmime-content-field.c: Basically a total rewrite, and now just a
5091 thin wrapper ontop of header_content_type.
5092 (_free_parameter): Got rid of it.
5093 (gmime_content_field_new): Use header_content_type_* functions.
5094 (gmime_content_field_set_parameter): Likewise.
5095 (_print_parameter): Blow away.
5096 (gmime_content_field_write_to_stream): Get details from the
5097 content_type field. Should check if it needs to escape chars in
5099 (gmime_content_field_get_mime_type): Likewise.
5100 (___debug_print_parameter): Get rid of this rather annoyingly
5102 (gmime_content_field_get_parameter): Simplified function.
5103 (gmime_content_field_construct_from_string): Fixed this to use a
5105 (gmime_content_field_is_type): New function to test if a type matches.
5106 (gmime_content_field_construct_from_string): Track type/subtype
5107 from subordinate content_type header struct.
5109 * gmime-rfc2047.[ch]: Removed. Unused.
5111 * camel-stream-b64.[ch]: Blown away more duplicated code.
5113 * Makefile.am: Removed camel-stream-b64.[ch], and
5116 * camel-mime-part.c (my_get_content_object): Replaced
5117 camel-stream-b64 with camel-stream-filter/camel-mime-filter-basic.
5118 (my_write_content_to_stream): Replaced camel-stream-b64 with the
5119 camel-stream-filter with an encoder.
5120 (my_get_content_object): Also implement quoted-printable decoding.
5121 (my_write_content_to_stream): Also implement quoted-printable
5123 (my_get_output_stream): Took out stream-b64 code (nothing's being
5124 executed yet anyway).
5126 * gmime-base64.[ch]: Blown away. Not used, dont need it.
5128 * camel-mime-utils.h: Added offset for this header. Records where
5129 it is in the source.
5131 * camel-mime-utils.c (header_raw_append_parse): Add offset
5132 parameter, to store where the header is stored in the stream.
5133 (header_raw_append): Added offset param.
5134 (header_raw_find): Return offset, if a pointer supplied for it.
5135 (header_raw_replace): Add offset param.
5136 (header_content_type_new): New function, to create an empty
5138 (header_content_type_set_param): Set a parameter in the
5140 (header_set_param): Generic header parameter setting function.
5141 (header_decode_string): Handle NULL input.
5143 * camel-mime-parser.c (camel_mime_parser_headers_raw): New
5144 function to get access to all the raw headers.
5145 (folder_scan_header): Keep track of the header start position, and
5146 store it when saving the header.
5148 2000-04-11 NotZed <NotZed@HelixCode.com>
5150 * camel-mime-utils.c: Moved a bunch of printf's to debug.
5152 * camel-mime-parser.c: Moved a bunch of printf's to debug.
5153 (folder_scan_header): Detect end of each header line using the
5154 last scanned char, and not the last scanned position.
5156 * camel-mime-filter-index.[ch]: Indexing filter. Indexes unicode
5157 sequences into ibex files.
5159 2000-04-09 NotZed <NotZed@HelixCode.com>
5161 * camel-mime-part.c: Dont include gmime-base64.h
5163 * camel-mime-filter-charset.c (complete): Implement the completion
5166 * camel-mime-parser.c (folder_scan_step): If we get to the end of
5167 the body data, check any filters for outstanding completion data.
5168 (camel_mime_parser_scan_from): Set whether we scan for "From "
5171 * camel-stream-filter.c (do_read): If we get to end of stream on
5172 the source, then call the filtering completion function to see if
5173 we have any more data to return.
5175 * camel-mime-filter-basic.c (filter): Implement quoted printable
5176 encoding and decoding filters.
5177 (complete): And the complete function as well.
5179 * camel-mime-utils.c (base64_encode_close): Also take an input
5180 buffer, allow closing of filters.
5181 (quoted_encode_step): First cut, simple quoted-printable encoder.
5182 Doesn't handle trailing spaces/tabs on end of line properly yet.
5183 (quoted_encode_close): Complete a quoted-encoding.
5184 (is_qpsafe): New type check, for quoted-printable safe characters
5185 (that do not need encoding). Thats all bits used in the type
5186 table! Rebuilt the types table.
5187 (header_content_type_is): Checks a content type against at
5189 (header_content_type_param): Handle NULL content type pointer.
5191 2000-04-08 NotZed <NotZed@HelixCode.com>
5193 * camel-mime-filter-basic.c (filter): Implement the base64
5194 encoder. Problem is, there is no way to know when to close it.
5195 Close/Reset will have to provide the same args as filter, so it can
5196 flush remaining data *sigh*
5198 * camel-mime-utils.c (base64_encode_step): A rather complex base64
5200 (base64_step_close): Companion function to finish off the base64
5203 * camel-mime-part.c (my_write_content_to_stream): Changed to use
5204 camel_stream_write_to_stream().
5206 * camel-stream.[ch] (camel_stream_write_to_stream): From
5207 camel_stream_b64_write_to_stream(). Fixed some infinite loop
5208 bugs with error conditions.
5210 * camel-stream-b64.[ch] (camel_stream_b64_write_to_stream): Removed.
5211 This has nothing to do with stream-b64, so i've moved it to
5214 * camel-mime-utils.h: Add a comment about refcounting
5215 header_content_type struct.
5217 * Makefile.am: Added camel-stream-filter*.[ch].
5219 * camel-stream-filter.[ch]: Class to implement a generic
5220 (multipass) filter ontop of a stream. Only implements a read-only
5223 * camel-mime-parser.c (camel_mime_parser_filter_add): Ref the
5224 filter we just added.
5226 * Makefile.am: Added camel-mime-filter*.[ch].
5228 * camel-mime-filter-charset.[ch]: A filter to preform character set
5229 conversion (uses unicode_iconv).
5231 * camel-mime-filter-save.[ch]: A simple filter which will save all
5232 data directly to a file or file descriptor.
5234 * camel-mime-filter-basic.[ch]: Implements the basic mime filters,
5235 base64 and quoted-printable decoding (encoding not implemented yet).
5237 * camel-mime-filter.[ch]: A filtering class, which can filter streams
5238 of data without having to copy them. Simpler than stream classes,
5239 and can be plugged into a single stream class (when i write it).
5241 2000-04-07 Dan Winship <danw@helixcode.com>
5243 * providers/pop3/camel-pop3-store.c (pop3_connect): Clarify error
5245 (finalize): fix a bug in camel_exception usage
5246 (pop3_connect): Remember the password after asking for it the
5249 2000-04-07 NotZed <NotZed@HelixCode.com>
5251 * Makefile.am: Added camel-mime-parser/camel-mime-utils.
5253 * camel-mime-parser.c: Fast mime parser.
5255 * camel-mime-utils.c: Mime utility functions, and email header
5258 2000-04-07 NotZed <NotZed@HelixCode.com>
5260 * providers/Makefile.am: Removed smtp for now, its a long way from
5262 * providers/smtp/Makefile.in: Removed file that shouldn't have been
5265 2000-04-06 Matt Loper <matt@helixcode.com>
5267 * camel-folder-pt-proxy.c (_get_full_name): Remove exception param
5268 from get_full_name() called, since get_full_name() was changed to
5269 not have an exception in the last param (see dan's notes below).
5272 2000-04-06 Dan Winship <danw@helixcode.com>
5274 * camel-store.[ch]: Reorganize the folder-fetching methods and
5275 implement a folder cache so that multiple requests for the same
5276 folder will yield the same CamelFolder object (as long as it
5277 remains active). Includes some code to remove no-longer-active
5278 folders from the cache, but it doesn't get used since nothing is
5279 ever unref'ed in Camel right now...
5281 * providers/mbox/camel-mbox-store.c:
5282 * providers/pop3/camel-pop3-store.c: update for CamelStore
5285 * camel-folder.[ch]: Remove the (unused) CamelException argument
5286 from camel_folder_get_name and camel_folder_get_full_name.
5287 (camel_folder_set_name): make this go away since changing a
5288 folder's name after it has been created could result in it
5289 conflicting with a separately-issued folder.
5291 2000-04-05 Dan Winship <danw@helixcode.com>
5293 * g_url_new really wanted to take a CamelException. So, rename
5294 Gurl to CamelURL, g_url_* to camel_url_* (with camel_url_new
5295 taking an exception), and url-util.[ch] to camel-url.[ch]. Also
5296 force url->port to be numeric and remove camel_service_getport. (I
5297 was confused before: the URL RFC says the port must be numeric, so
5298 we don't want to do getportbyname.)
5300 2000-04-01 Dan Winship <danw@helixcode.com>
5302 * providers/mbox/camel-mbox-folder.c
5303 (_check_get_or_maybe_generate_summary_file): Compare
5304 mbox_file_size and mbox_modtime to the results of stat()ing the
5305 mbox file, not the summary file. Duh.
5306 (_close): Update the summary's mbox_file_size and mbox_modtime
5307 before writing it to disk.
5309 * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_save,
5310 camel_mbox_summary_load): Wow. I must have been tired when I wrote
5311 this code. First, the comparison bug above. Second, it was using
5312 ntohs and htons instead of ntohl and htonl. Third, I was reading
5313 the status flag byte in two different places and thus getting out
5314 of sync. Fourth, it was writing out field_length bytes of each
5315 header field after having converted field_length to network byte
5316 order, resulting in lots of random crap being appended, and the
5317 summary files being huge. (Fortunately, since the size/modtime
5318 comparison was biffed, the garbage summary read from disk was
5319 always immediately discarded.)
5321 * providers/mbox/camel-mbox-parser.c (camel_mbox_parse_file): fix
5322 an off-by-one error that caused the last-used UID to be reused if
5323 the summary file was regenerated. (That one wasn't my fault. :-)
5325 2000-03-31 Dan Winship <danw@helixcode.com>
5327 * camel-stream-mem.c: implement unimplemented methods
5329 * gmime-content-field.c
5330 (gmime_content_field_construct_from_string):
5331 * data-wrapper-repository.c
5332 (data_wrapper_repository_get_data_wrapper_type):
5333 * camel-simple-data-wrapper.c (my_write_to_stream):
5334 * camel-mime-part.c (my_set_input_stream):
5335 remove debugging printf()s that no longer seem useful.
5337 2000-03-31 Matt Loper <matt@helixcode.com>
5339 * camel-formatter.c (text_to_html): Added "convert_newlines_to_br"
5340 boolean param, to give the option of not converting '\n's to <br>
5341 tags. This way, when we stick stuff in a <pre> tag, newlines stay
5344 2000-03-30 Matt Loper <matt@helixcode.com>
5346 * camel-formatter.c (handle_text_plain): Use <pre> tag to force
5347 the use of monospaced fonts.
5349 2000-03-30 Dan Winship <danw@helixcode.com>
5351 * camel-service.c (camel_service_getport): Add a htons in the
5352 default_number case, and document the fact that the function
5353 returns the port in network byte order.
5355 * providers/pop3/camel-pop3-store.c (pop3_connect): Revert
5356 Miguel's change. The port number bug was actually somewhere
5357 else, and the IP address copying code was fine already.
5359 2000-03-29 Miguel de Icaza <miguel@gnu.org>
5361 * providers/pop3/camel-pop3-store.c (pop3_connect): Add htons
5362 (port), and only copy 4 bytes for the IP address to prevent a DNS
5365 2000-03-28 Dan Winship <danw@helixcode.com>
5367 * camel-seekable-substream.c
5368 (camel_seekable_substream_new_with_seekable_stream_and_bounds):
5369 make this return a CamelStream rather than a
5370 CamelSeekableSubstream, because that's the way Gtk objects tend to
5373 * camel-service.c (camel_service_gethost,
5374 camel_service_getport): convenience functions to canonicalize
5375 the host and port values of a service's URL.
5376 * providers/pop3/camel-pop3-store.c: use them
5378 * providers/mbox/camel-mbox-folder.c
5379 (_check_get_or_maybe_generate_summary_file): Make this work when
5380 the inbox file doesn't yet exist.
5382 2000-03-27 Dan Winship <danw@helixcode.com>
5384 * providers/mbox/camel-mbox-folder.c (_append_message): uncomment
5385 the call to unlink the temp file: there's no way to tell
5386 camel_stream_fs to truncate a file, so reusing the same file was
5387 resulting in junk at the ends of messages.
5389 * camel-folder.[ch]: add delete_message_by_{number,uid}.
5391 * providers/pop3/camel-pop3-folder.[ch]: implement
5392 delete_message_by_uid. Add a close method to do expunging
5393 of deleted messages if requested.
5395 * providers/pop3/camel-pop3-store.[ch]: support for
5396 CamelPop3Folder::close. (You have to close the connection
5397 in order to expunge the folder, thus the store may be
5398 connected in the CamelService::is_connected sense when it
5399 is not actually connected to the server.) Also some bugfixes.
5401 2000-03-27 NotZed <NotZed@HelixCode.com>
5403 * providers/mbox/camel-mbox-folder.c (_append_message): Unref the
5404 output_stream when done, close doesn't do it.
5405 (_append_message): Clear all uid's from the appending messages, so
5406 they are reassigned proper unique id's.
5408 * gmime-utils.c (get_header_array_from_stream): Actually free the
5409 header, it is copied elsewhere.
5411 2000-03-26 NotZed <NotZed@HelixCode.com>
5413 * providers/mbox/camel-mbox-utils.c (camel_mbox_write_xev): Added
5414 folder parameter to function. Fixed callers.
5415 (index_message): Index a message as it is assigned a unique id.
5417 * camel-mime-part.c (my_set_content_id): Make sure we malloc and
5418 copy the content_id, otherwise *poof*
5420 2000-03-25 NotZed <NotZed@HelixCode.com>
5422 * camel-medium.c (_finalize): Another leak, unref the content if
5425 * camel-recipient.c (camel_recipient_table_free): Plug another
5426 memory leak - actually free the recipient table.
5428 * camel-mime-message.c (_finalize): Plugged a memory leak with the
5431 * gmime-utils.c (_store_header_pair_from_string): A simpler, more
5432 debuggable and functionally identical header extraction function.
5434 2000-03-24 NotZed <NotZed@HelixCode.com>
5436 * gmime-content-field.c (gmime_content_field_set_parameter):
5437 Remove the hash table entry before freeing its key and data.
5439 2000-03-27 Dan Winship <danw@helixcode.com>
5441 * providers/Makefile.am (SUBDIRS): Add pop3.
5443 * providers/pop3/camel-pop3-store.c: keep separate input and
5444 output streams so the output doesn't end up being buffered.
5446 * providers/pop3/camel-pop3-folder.c (get_message_by_number):
5447 finish implementing this.
5449 2000-03-27 Michael Meeks <michael@helixcode.com>
5451 * camel-mime-part.c (my_set_disposition): fix so less broken.
5452 (my_finalize): remove dodgy disposition free.
5454 * camel-data-wrapper.c (my_set_mime_type_field): unref instead of
5457 2000-03-27 Dan Winship <danw@helixcode.com>
5459 * camel-service.c (camel_service_free_auth_types): new routine to
5460 free the data allocated by camel_service_query_auth_types.
5462 * providers/pop3/camel-pop3-store.c (free_auth_types): implement
5464 * camel-stream-mem.c (camel_stream_mem_new_with_buffer): rename
5465 camel_stream_mem_new_with_buffer to ..._with_byte_array and add a
5466 new ..._with_buffer that takes a char * rather than a GByteArray.
5468 * Remove CamelStreamBufferedFs, since CamelStreamBuffer makes it
5471 2000-03-25 Dan Winship <danw@helixcode.com>
5473 * camel-folder-summary.[ch]: change the CamelFolderSummary
5474 interfaces to allow partial summary queries (for dealing
5475 with very large folders). Remove the "extended_fields" from
5476 CamelFolderInfo and CamelMessageInfo: this is better dealt
5479 * providers/mbox/camel-mbox-summary.[ch]: Make CamelMboxSummary a
5480 subclass of CamelFolderSummary. Update interfaces for that. Remove
5481 the internal/external summary distinction. Remove the (unused) md5
5482 checksum in the folder summary. Change the summary file format
5483 (primarily to make it no longer byte-order dependent) and add a
5484 version number to it so it will be easier to change in the future.
5486 * providers/mbox/camel-mbox-folder.[ch]
5487 * providers/mbox/camel-mbox-search.c
5488 * providers/mbox/camel-mbox-utils.c: update for summary changes
5490 * camel-exception-list.def: add
5491 CAMEL_EXCEPTION_FOLDER_SUMMARY_INVALID
5493 2000-03-23 NotZed <NotZed@HelixCode.com>
5495 * providers/mbox/camel-mbox-provider.c: Added flag to provider
5496 initialisation, to match changed structure.
5498 2000-03-22 NotZed <NotZed@HelixCode.com>
5500 * camel-folder.[ch]: Added async search api.
5502 * providers/mbox/camel-mbox-search.c
5503 (camel_mbox_folder_search_by_expression): Changed to use an
5504 asynchronous interface.
5505 (camel_mbox_folder_search_cancel): Cancel function for async
5508 2000-03-23 Dan Winship <danw@helixcode.com>
5510 * camel-stream-buffer.c (camel_stream_buffer_read_line): Function
5511 to read one line of any size from a stream and return it in
5514 2000-03-22 Dan Winship <danw@helixcode.com>
5516 * camel-service.c (camel_service_query_auth_types): New function
5517 to query a service for the authentication protocols it supports.
5518 * providers/pop3/camel-pop3-store.c (query_auth_types): implement
5520 * camel-provider.c (camel_provider_scan): New function to
5521 scan the provider dir and return a list of all providers.
5523 * providers/pop3/camel-pop3-folder.c: fill this in partially
5524 * providers/pop3/camel-pop3-store.c: make camel_pop3_command
5525 return the text after "+OK"/"-ERR" and add a separate
5526 camel_pop3_get_additional_data to get the message body or
5527 whatever. Also make them take a CamelPop3Store rather than
5528 a CamelStreamBuffer.
5530 2000-03-22 Matt Loper <matt@helixcode.com>
5532 * camel-formatter.c (debug): Disabled some useless debug
5535 2000-03-21 Dan Winship <danw@helixcode.com>
5537 * providers/pop3: some initial bits of the POP3 provider, to
5538 make Matt happy. Incomplete, untested, etc.
5540 2000-03-21 bertrand <bertrand@helixcode.com>
5542 * providers/mbox/camel-mbox-summary.c
5543 (camel_mbox_summary_append_internal_to_external): copy the size field
5545 * providers/mbox/camel-mbox-folder.c (_get_message_by_uid): initialize
5546 message_info to NULL
5548 * camel-folder-summary.h: added the size field.
5550 * providers/mbox/camel-mbox-summary.h:
5551 added the received_date field.
5553 * providers/mbox/camel-mbox-summary.c:
5554 documented all functions.
5556 * camel-folder-summary.h: name change and
5559 * providers/mbox/camel-mbox-search.c: update to
5560 conform to name change in the summary fields.
5562 2000-03-10 bertrand <bertrand@helixcode.com>
5564 * camel-service.h: cosmetic changes.
5566 2000-03-09 Dan Winship <danw@helixcode.com>
5568 * s/HelixCode/Helix Code, Inc./ in the copyrights
5570 2000-03-07 bertrand <bertrand@helixcode.com>
5572 * camel-formatter.c (handle_mime_part):
5573 plug mem leaks due to bad documentation
5574 of camel_content_field_get_mime_type
5575 (print_camel_body_part): idem
5576 (handle_multipart_alternative): idem
5578 * gmime-content-field.c (gmime_content_field_get_mime_type):
5582 * camel-mime-part.c (my_finalize): unref the
5583 content_input_stream if any.
5585 2000-03-06 bertrand <bertrand@helixcode.com>
5587 * camel-stream-fs.c (_seek): fix a bogus calculation
5588 in the return position.
5590 2000-03-05 bertrand <bertrand@helixcode.com>
5592 * camel-session.h: cosmetic fixes.
5594 * camel-stream-fs.c (_read):
5595 (_seek): fixed the current position so that it refers
5596 to the current position in the stream, not in its parent.
5598 2000-03-04 NotZed <NotZed@HelixCode.com>
5600 * providers/mbox/camel-mbox-search.c
5601 (camel_mbox_folder_search_by_expression): Ref the summary
5602 after we have got it.
5604 2000-03-04 bertrand <bertrand@helixcode.com>
5606 * camel-mime-part.c (my_write_content_to_stream):
5607 stream the raw content instead of nothing if the encoding
5610 * camel-stream-fs.c (_seek): handle eos more
5613 * camel-formatter.c (get_bonobo_tag_for_object):
5614 bonobo-goad-id is the good key to look for.
5615 (get_bonobo_tag_for_object): close the <object> tag.
5616 (get_bonobo_tag_for_object): the correct syntax for the
5617 to set a parameter inside an <object> tag is :
5618 <object classid="..."> <param name="uid" value="..."> <param ...>
5621 2000-03-03 bertrand <bertrand@helixcode.com>
5623 * providers/mbox/camel-mbox-folder.c (_get_message_by_uid):
5624 use set_input_stream instead of construct_from_stream
5625 to feed the message object.
5627 * camel-data-wrapper.c (my_write_to_stream): reset output stream.
5628 (my_set_input_stream): unref the previous input stream.
5629 use the set_output_stream for default behaviour.
5630 (my_set_output_stream): unref previous output stream.
5632 * camel-mime-part.c (my_write_content_to_stream): reset content
5633 object output stream.
5635 2000-03-03 NotZed <NotZed@HelixCode.com>
5637 * providers/mbox/camel-mbox-utils.c (camel_mbox_write_xev): Make
5638 sure we open with create with a creation mask.
5640 2000-03-01 NotZed <NotZed@HelixCode.com>
5642 * camel-mime-part-utils.c
5643 (camel_mime_part_construct_content_from_stream): DO NOT assert on
5644 content type, we have fallback code 4 lines below it ... *sigh*
5646 2000-02-29 NotZed <NotZed@HelixCode.com>
5648 * Makefile.am (libcamelinclude_HEADERS): Added camel-stream-buffer
5651 * camel-stream-buffer.[ch]: Generic buffer which can be applied to
5654 2000-03-03 bertrand <bertrand@helixcode.com>
5656 * camel-formatter.c (handle_image): in the case
5657 of images, put the content object output stream
5658 in the url. This allows the message browser
5659 to show inline images.
5661 * camel-stream-b64.c (my_read_encode): fixed state
5664 2000-03-02 bertrand <bertrand@helixcode.com>
5666 * camel-stream-b64.c (my_read_encode): don't forget to
5667 set the state to 0 after 3.
5668 (my_read_encode): don't forget to encode, even in state 3.
5670 * camel-simple-data-wrapper.c: static functions are prefixed
5671 with my_ instead of _
5672 * camel-multipart.c: static functions are prefixed
5673 with my_ instead of _
5674 (my_write_to_stream): commented.
5675 (my_write_to_stream): warning in case the boudary is set
5676 but is a zero length string.
5678 * camel-mime-part.c (camel_mime_part_encoding_from_string):
5681 * camel-mime-part.c: Replaced all static functions
5682 with name begining with _ by the same name begining
5683 with "my_" to prevent the possible conflicts
5684 with system symbols Dan warned us about.
5686 * camel-stream-b64.c (camel_stream_b64_write_to_stream):
5687 use CamelStreamB64 type for the input stream.
5689 * camel-mime-part.c (_get_content_object): remove
5691 (_write_content_to_stream): implement the b64
5692 encoding the new way (that is using camel_stream_b64)
5694 * camel-data-wrapper.c (my_write_to_stream):
5695 fix implementation so that it writes properly
5696 to the output stream even.
5698 * camel-stream-b64.c (camel_stream_b64_write_to_stream):
5701 2000-02-29 bertrand <bertrand@helixcode.com>
5703 * camel-stream-b64.c (camel_stream_b64_write_to_stream): new
5706 * camel-data-wrapper.c (_write_to_stream): default
5709 * gmime-utils.c (_store_header_pair_from_string):
5710 revert strange changes.
5712 * camel-stream-b64.c (my_read_decode): set eos to true when we
5713 have read the whole input stream.
5714 (my_reset): set eos to FALSE.
5716 2000-02-28 NotZed <NotZed@HelixCode.com>
5718 * camel-mime-part.c (_parse_header_pair): Dont free this either.
5720 * camel-medium.c (_remove_header): Ugh, dont free the header
5721 before we actually remove it.
5722 (_add_header): Ugh, dont free hashtable entries which may be
5723 duplicated (hash_insert _will_ reference that memory).
5725 * string-utils.c (string_trim): Trimming a 0-length string is not
5728 * camel-mime-message.c (_parse_header_pair): Fixed very broken
5729 memory handling of header_name/value.
5731 * providers/mbox/camel-mbox-utils.c (camel_mbox_write_xev):
5732 Initialise end_of_last_message always.
5733 (camel_mbox_copy_file_chunk): Stop trying to read if we run out of
5734 data, rather than looping forever.
5735 (camel_mbox_write_xev): Use an open flag when opening with create.
5737 * camel-folder.c (camel_folder_search_by_expression): No, its not
5738 a fatal error to search on a non-searchable folder, you just dont
5740 (_open): Dont open an opened folder (i dont see why this is really
5741 a bug, but what the hell ...)
5743 * providers/mbox/camel-mbox-folder.c (_init): Set search cap on.
5744 (_open): Call parent class to perform open. Remove folder-open
5745 check to parent instead.
5746 (_create): open takes a creation mask, dont use umask to try and
5748 (_delete): Dont bother checking folder==NULL, its already been
5749 checked on the external interface (changed to an assertion, this
5750 would have to be a camel bug).
5751 (_delete_messages): Likewise.
5753 (_init): Dont go and clear all the paths and shit that the parent
5754 open just setup for us.
5755 (_delete_messages): Get rid of more umask stuff.
5756 (_append_message): Make sure we pass file mode to open with create.
5757 (_append_message): Cleaned up some indenting to make it readable.
5759 * camel-stream-b64.c (my_read_encode): Fixed a typo.
5761 * providers/mbox/camel-mbox-search.c: Changed to use e-sexp,
5762 rather than filter-sexp.
5764 2000-02-28 bertrand <bertrand@helixcode.com>
5766 * camel-stream-b64.c (my_read_encode): encoding
5769 2000-02-23 bertrand <Bertrand.Guiheneuf@aful.org>
5771 * camel-stream-b64.c: changed the __static
5772 suffix into a my_ prefix.
5773 (camel_stream_b64_set_mode): reset the persistent
5775 (my_read_decode): remove superfluous %
5777 * providers/mbox/camel-mbox-utils.c (camel_mbox_copy_file_chunk):
5778 fix exception description message.
5780 2000-02-24 Dan Winship <danw@helixcode.com>
5782 * camel-session.c: Add camel_session_get_transport_for_protocol.
5784 * camel-transport.h:
5785 * camel-transport.c: Add an abstract CamelTransport class.
5787 * providers/sendmail/*: A CamelTransport that uses sendmail
5790 2000-02-24 Dan Winship <danw@helixcode.com>
5792 * camel-folder.c: use CamelExceptions for run-time errors, not
5793 incorrect code. Don't bother validating that an object exists from
5794 inside one of its methods, since you couldn't have gotten there if
5795 it didn't. Fix some code style bugs.
5797 (_init): Rename init_with_store to init and add parent_folder,
5798 separator, and name arguments.
5799 (_set_name): Get separator from self, not parent_store now.
5802 * camel-store.c: Remove get/set_separator.
5804 * providers/mbox/: Update for above.
5806 2000-02-23 Dan Winship <danw@helixcode.com>
5808 * camel-medium.c (_finalize): Free the data in the headers hash
5810 (_add_header): g_strdup the header name and value when adding it.
5812 * camel-mime-part-utils.c
5813 (camel_mime_part_construct_headers_from_stream): Free the header
5814 data after calling camel_medium_add_header, since it will have
5815 g_strdup()ed it itself.
5817 2000-02-22 NotZed <NotZed@HelixCode.com>
5819 * providers/mbox/camel-mbox-search.c: Dont compile by default.
5821 * providers/mbox/Makefile.am: Fuck off the filter code.
5823 2000-02-22 bertrand <Bertrand.Guiheneuf@aful.org>
5825 * camel-stream-b64.c (read_decode__static):
5826 don't read the char if we reached the length
5827 of the output buffer. Hours lost on this
5830 * camel-folder.c (camel_folder_get_subfolder):
5831 (camel_folder_create):
5832 (camel_folder_delete):
5833 (camel_folder_delete_messages):
5834 (camel_folder_list_subfolders):
5835 (camel_folder_expunge):
5836 (camel_folder_get_message_by_number):
5837 (camel_folder_get_message_count):
5838 (camel_folder_append_message):
5839 (camel_folder_copy_message_to):
5840 (camel_folder_get_summary):
5841 (camel_folder_get_message_uid):
5842 (camel_folder_get_message_by_uid):
5843 (camel_folder_get_uid_list):
5844 Check folder state (open/close) and raise an
5845 exception if it is not ok.
5847 * providers/mbox/camel-mbox-folder.c (_create):
5848 create the file and the path with two different
5851 * camel-folder.c (_create): handle the case
5852 when the folder name starts with '/'
5854 * camel-exception.c (camel_exception_new): use
5855 (void) instead of () in decl.
5857 * camel-exception.h: cosmetic fixes.
5859 * camel-exception.c (camel_exception_init): new routine.
5860 Fix a bug in mail/message-list.c
5863 * camel-folder.h: cosmetic changes.
5865 * camel-stream-b64.c (reset__static): added a
5866 reset method. Thanks message-browser to find
5869 * providers/mbox/Makefile.am (libcamelmbox_la_LIBADD): readd
5872 2000-02-21 bertrand <Bertrand.Guiheneuf@aful.org>
5874 * camel-formatter.c (lookup_unique_id):
5875 awful hack to test get_output_stream.
5876 * camel-stream-b64.[ch] :
5877 b64 encoding/decoding is now implemented as
5881 2000-02-21 bertrand <Bertrand.Guiheneuf@aful.org>
5883 * camel-seekable-substream.c (_reemit_parent_signal):
5884 emit "data_available" when parent stream emits it.
5887 2000-02-21 NotZed <NotZed@HelixCode.com>
5889 * providers/mbox/Makefile.am: Uh, fixed LIBADD again. What was
5890 there was never ever going to work, wasn't it tested?
5893 2000-02-21 Dan Winship <danw@helixcode.com>
5895 * camel-session.h: (struct _CamelSession): Add authenticator.
5897 * camel-session.c (camel_session_new): Add authenticator.
5898 (camel_session_query_authenticator): New function to query the
5899 session authenticator for password, etc, information.
5901 2000-02-21 Dan Winship <danw@helixcode.com>
5903 * camel-session.c: add CamelExceptions to several functions. Use
5904 camel_session_new to initialize the session and URL fields of
5905 created CamelStores as appropriate.
5910 * camel-service.c: Move the session and url (and associated
5911 functions) from CamelStore to CamelService. Add url_flags to
5912 CamelService so subclasses can specify which URL components
5913 are mandatory for them. Add camel_session_new for
5914 camel_session_get_store* to use.
5916 * providers/mbox/camel-mbox-folder.c:
5917 * providers/mbox/camel-mbox-store.c:
5918 * providers/mbox/camel-mbox-store.h: Update for above changes.
5920 * camel-exception-list.def: Once camel is being used for real,
5921 exceptions won't be renumberable. So renumber them now to make
5922 more room to add exceptions to the various categories later, and
5923 add a big warning message.
5925 2000-02-20 Dan Winship <danw@helixcode.com>
5927 * providers/mbox/Makefile.am: add libibex back to
5928 libcamelmbox_la_LIBADD
5930 2000-02-18 NotZed <NotZed@HelixCode.com>
5932 * providers/mbox/camel-mbox-search.h
5933 (camel_mbox_folder_search_by_expression): Added exception to call,
5936 * providers/mbox/camel-mbox-search.c
5937 (camel_mbox_folder_search_by_expression): Major changes, to use
5938 the sexp evaluator from filter/filter-sexp.c to implement the
5940 (func_body_contains): Changed to support multiple strings in 1
5941 command (results or'd together)
5943 * url-util.c (g_url_new): Fixed a typo (colon == 0 isn't right),
5944 and made it so full url's are absolute pathed (Dan, this is how it
5945 has to work!). Also, always include a path part, even if it is an
5948 2000-02-18 Dan Winship <danw@helixcode.com>
5950 * camel/camel-types.h: New header with the typedefs for all camel
5951 classes. Now the class headers can just include this and the
5952 header for the parent type. This makes it possible for
5953 CamelService to include a CamelSession without creating an
5957 * composer/e-msg-composer-attachment-bar.h:
5958 * mail/folder-browser.c:
5959 * mail/message-list.c: frob #includes to match the new reality
5961 2000-02-17 Dan Winship <danw@helixcode.com>
5963 * camel/camel-service.h:
5964 * camel/camel-service.c: Make camel-service us a Gurl internally.
5965 Remove the login/password interfaces and instead provide
5966 camel_service_connect_with_url. Add CamelExceptions
5968 2000-02-17 bertrand <Bertrand.Guiheneuf@aful.org>
5970 * camel/camel-formatter.c (handle_text_plain):
5971 (handle_text_html): use camel_stream_reset instead
5972 of seek. The formatter should be able to work
5973 with all streams, not only seekable streams.
5974 In the case where some provider implementation
5975 would not be able to provide a reset method
5976 to their stream, implementors would have
5977 to find a workaround.
5979 * camel/camel-session.c (camel_session_new): use
5980 (void) instean of () in function decl.
5982 * camel/camel-folder.c: ifdef async operation
5985 * camel/camel-seekable-stream.c (_seek): added a warning.
5986 (_reset): default implementation of reset for seekable
5989 * camel/camel-mime-message.h: set_received_date declaration fix.
5992 * camel/providers/mbox/camel-mbox-provider.c (camel_provider_module_init):
5993 use (void) instead of ().
5995 * camel/camel-stream.c (camel_stream_reset):
5996 new method for CamelStream.
5998 2000-02-17 Dan Winship <danw@helixcode.com>
6000 * camel/url-util.c (g_url_to_string): New function to convert
6001 a Gurl back into a char *.
6003 2000-02-17 bertrand <Bertrand.Guiheneuf@aful.org>
6005 * camel/camel-formatter.c (handle_text_plain):
6006 revamped so that it uses the output stream
6008 (handle_text_html): ditto.
6011 * camel/camel-simple-data-wrapper.h:
6012 * camel/camel-simple-data-wrapper.c (camel_simple_data_wrapper_new):
6013 use (void) instead of ().
6014 (_get_output_stream): simple implementation.
6016 2000-02-16 bertrand <Bertrand.Guiheneuf@aful.org>
6018 * camel/camel-data-wrapper.c (_set_input_stream): ref input stream
6019 (_set_output_stream): ref output stream
6020 (_finalize): unref input and output streams
6022 * camel/camel-seekable-substream.c (_set_bounds): don't
6023 seek the begining of the substream.
6024 (_eos): fix eos condition testing.
6025 (_finalize): unref parent stream
6026 (_init_with_seekable_stream_and_bounds): ref parent stream
6028 * camel/gstring-util.c (g_string_equal_for_hash):
6029 (g_string_equal_for_glist): return type is int.
6032 * camel/camel.c (camel_init): use (void)
6035 2000-02-16 NotZed <NotZed@HelixCode.com>
6037 * providers/mbox/Makefile.am (libcamelmbox_la_LIBADD): Added
6038 libfilter to link line (temporarily?). Required for
6041 2000-02-15 bertrand <bertrand@helixcode.com>
6043 * camel/camel-multipart.c (_localize_part):
6044 this routine replaces the _read_part routine
6045 and does not store the part in a buffer.
6046 (_set_input_stream): use the set_input_stream
6047 instead of the construct_from_stream.
6048 each bodypart is given an input stream.
6050 * camel/camel-mime-part-utils.c:
6051 include the data-wrapper-repository header.
6052 (camel_mime_part_construct_content_from_stream):
6053 use the set_input_stream instead of the
6054 construct_from_stream method.
6056 * camel/camel-seekable-substream.c (_set_bounds):
6057 cur position is set to 0 not to inf_bound.
6059 2000-02-15 bertrand <Bertrand.Guiheneuf@aful.org>
6061 * camel/camel-mime-part.c: include gmime-base64.h
6062 various compilation and runtime fixes.
6063 (_set_input_stream): store the input substream
6064 for the content object.
6066 * camel/camel-data-wrapper.h: declare the
6067 set/get function on input/output stream.
6069 * camel/camel-mime-part.c (_get_content_object):
6070 don't use a temporary mem stream.
6072 * camel/camel-seekable-substream.c (_seek):
6074 (_read): the substream can be unlimited in length
6076 * camel/camel-data-wrapper.c (camel_data_wrapper_class_init):
6077 set the get/set_input/output_stream methods.
6079 * camel/camel-multipart.c (_construct_from_stream):
6080 camel_stream_seek -> camel_seekable_stream_seek
6082 2000-02-14 Miguel de Icaza <miguel@gnu.org>
6084 * camel/providers/mbox/Makefile.am (libcamelmbox_la_LIBADD): Add
6085 the unicode libraries as well.
6087 * camel/camel-provider.c (camel_provider_register_as_module): Add
6088 error reporting here. Desire to use Solaris increases. Hair loss
6089 in the last two hours: 5,400.
6091 * camel/providers/mbox/camel-mbox-provider.c
6092 (camel_mbox_get_provider): Renamed function.
6094 * camel/camel.h: All include files use camel/ now here.
6096 * camel/providers/mbox/Makefile.am: Drop all the dynamism from
6097 Camel, and make this a standard library.
6099 2000-02-14 bertrand <Bertrand.Guiheneuf@aful.org>
6101 * camel/gmime-utils.c (get_header_array_from_stream): use the
6103 (gmime_read_line_from_stream): ditto.
6105 * camel/camel-stream-fs.h (struct ): add the eof field
6108 * camel/camel-stream-fs.c (camel_stream_fs_init): set eof.
6109 (_read): set eof on end of file.
6110 (_eos): implemented.
6112 * camel/gmime-utils.c (get_header_array_from_stream):
6113 make a blocking version of the header parser.
6114 When the fs stream uses gnome-vfs, this should
6116 (gmime_read_line_from_stream): ditto.
6118 2000-02-11 bertrand <Bertrand.Guiheneuf@aful.org>
6120 * camel/camel-stream-fs.c:
6121 everywhere, when using the cur_pos field, do it
6122 on the CamelSeekableStream object.
6125 * camel/camel-seekable-stream.c (camel_seekable_stream_seek):
6126 s/camel_stream_seek/camel_seekable_stream_seek/g
6128 * camel/camel-seekable-stream.h:
6129 (struct ): added a field to store the
6132 * camel/camel-seekable-stream.c (camel_seekable_stream_get_current_position):
6133 New function. Allows to get the current position
6134 of a seekable stream.
6137 2000-02-13 NotZed <notzed@zedzone.helixcode.com>
6139 * providers/mbox/camel-mbox-search.c: New file, implements the
6140 search api for mbox folders.
6142 * providers/mbox/Makefile.am: Link with ibex.
6144 * camel-folder.c (camel_folder_has_search_capability): Api
6146 (camel_folder_search_by_expression): Ditto.
6148 2000-02-12 NotZed <notzed@zedzone.helixcode.com>
6150 * providers/mbox/camel-mbox-folder.c (_set_name): Setup index
6152 (_init_with_store): Init index filename. Hmm, none of these
6153 names ever seem to get free'd (FIXME?)
6155 * providers/mbox/camel-mbox-folder.h: Add index file name.
6157 2000-02-12 NotZed <notzed@helixcode.com>
6159 * camel-folder.h: Add folder search functions.
6161 ** Created ChangeLog just for camel **
6162 - refer to ../ChangeLog for changes prior to this date.