Merge with camel-async.
[platform/upstream/evolution-data-server.git] / camel / ChangeLog
1 2000-08-11  Not Zed  <NotZed@HelixCode.com>
2
3         * camel-mime-parser.c (folder_scan_header): A better way to
4         compress leading whitespace.  The code is probably invalid anyway,
5         I dont think it will work across buffer boundaries.
6
7         * providers/mbox/camel-mbox-folder.c (mbox_append_message): And
8         write out proper format From lines here too.
9
10         * providers/mbox/camel-mbox-summary.c
11         (camel_mbox_summary_build_from): New function to build a more
12         compatible mbox "From " line.
13         (camel_mbox_summary_sync): Write From lines in the proper format.
14
15 2000-08-10  Not Zed  <NotZed@HelixCode.com>
16
17         * providers/mh/camel-mh-store.c (get_folder): Remove warnin g.
18
19         * providers/mbox/camel-mbox-store.c (xrename): Kill some warnings
20         with constification.
21
22         * providers/imap/camel-imap-folder.c (imap_append_message): Fixed
23         for append api change.  Eek this routine seriously wastes memory.
24
25         * providers/mh/camel-mh-folder.c (mh_search_free): Impelemnt.
26         (mh_append_message): Fix for api change, and include user flags
27         and tags in new message.
28
29         * providers/vee/camel-vee-folder.c (vee_search_by_expression): Fix
30         for search api change.
31
32         * camel-folder.c (camel_folder_search_free): New function for
33         freeing search results.
34         (search_free): Changed my mind, implement a default that actually
35         does something.  Free as to the old interface.
36         (camel_folder_append_message): Changed to accept a
37         camelmessageinfo rather than flags, which just doesn't have enough
38         info in it.
39         (copy_message_to): Change for append_message api change.
40         (move_message_to): Likewise.
41
42         * providers/mbox/camel-mbox-folder.c (mbox_search_free):
43         Implement.
44         (mbox_append_message): Fix for api change, and also copy user
45         flags/tags across to new summary.
46
47         * camel-folder-search.c (search_user_tag): A search expression
48         that returns the current use flag by name.
49         (camel_folder_search_free_result): New function to free the result
50         of a search.
51
52         * camel-folder-summary.c: Bump summary version.
53         (message_info_new): 
54         (message_info_load): 
55         (message_info_save): 
56         (camel_message_info_dup_to): 
57         (camel_message_info_free): Added support for arbitrary tag/value
58         pairs (CamelTag's).
59         (camel_tag_get): 
60         (camel_tag_set):
61         (camel_tag_list_size):
62         (camel_tag_list_free): Operations for working with CamelTags.
63
64 2000-08-09  Peter Williams  <peterw@helixcode.com>
65
66         * camel-store.c (camel_store_get_folder): Connect beforehand, if
67         necessary.
68
69         * providers/imap/camel-imap-store.c (camel_imap_store_init): Default
70         the dir_sep to "/" so that certain functions can safely assume that
71         dir_sep is valid (at least, nonnull).
72
73 2000-08-09  Ettore Perazzoli  <ettore@helixcode.com>
74
75         * providers/nntp/camel-nntp-folder.c
76         (nntp_folder_set_message_flags): Get rid of an unused variable.
77
78         * providers/nntp/Makefile.am (INCLUDES): Fix includes so that we
79         don't use installed headers anymore.  [I copied this over from the
80         IMAP provider, that does not seem to have this problem.]
81
82 2000-08-09  Not Zed  <NotZed@HelixCode.com>
83
84         * camel-folder-search.c (camel_folder_search_execute_expression):
85         Reorder search result in summary order if we searched with a
86         summary.
87
88 2000-08-08  Dan Winship  <danw@helixcode.com>
89
90         * camel-uid-cache.c: New code to keep an on-disk cache of what
91         UIDs have been seen in a folder.
92
93         * camel-provider.h: Add new flags CAMEL_PROVIDER_IS_SOURCE (mail
94         can arrive in it by non-Camel means) and CAMEL_PROVIDER_IS_STORAGE
95         (you can work with mail directly without needing to copy it local).
96
97         * providers/*/camel-*-provider.c: Add flags as needed: imap and
98         mbox are SOURCE and STORAGE. mh and nntp are just STORAGE, pop3 is
99         just SOURCE.
100
101         * camel-mime-message.c (process_header): Add another subject
102         g_strstrip that fejj's earlier commit missed.
103
104 2000-08-08  Peter Williams  <peterw@helixcode.com>
105
106         * camel-provider.h: Remove some GTK stuff that I missed.
107
108         * providers/imap/camel-imap-store.c (imap_noop): Turn this
109         back on with the new timeout interface in CamelSession.
110
111         * camel-session.[ch] (camel_session_register_timeout): New
112         interface for Camel to register timeouts. Basically the
113         GTK timeout interface is copied. We do this because Camel isn't
114         allowed to use GTK anymore.
115         
116 2000-08-07  Not Zed  <NotZed@HelixCode.com>
117
118         * providers/mh/camel-mh-folder.c (mh_append_message): Only retry
119         another uid if we had a name clash, otherwise fail.
120
121 2000-08-07  Jeffrey Stedfast  <fejj@helixcode.com>
122
123         * providers/imap/camel-imap-folder.c
124         (imap_get_subfolder_names_internal): If we are trying to get a
125         subfolder listing of the root folder, always make sure INBOX is
126         there...
127
128         * providers/imap/camel-imap-utils.c (imap_parse_list_response): 
129         Check for NIL as a directory separator.
130
131 2000-08-07  Peter Williams  <peterw@helixcode.com>
132
133         * providers/nntp/Makefile.am: Reorder the INCLUDES to pull
134         in the camel headers from the local source tree before
135         the ones in $(includedir). This was causing compile problems
136         because the installed, Gtk-based camel-object.h was included
137         before the uninstall Camel-based one.
138
139 2000-08-07  Jeffrey Stedfast  <fejj@helixcode.com>
140
141         * providers/imap/camel-imap-utils.c (imap_translate_sexp): Strip
142         all \n's from the expression
143
144         * string-utils.c (strip): New convenience function to strip
145         occurences of a single char from a string
146
147         * camel-mime-message.c (camel_mime_message_set_subject): Do a
148         g_strstrip on the subject so we can stop getting those annoying
149         leading spaces
150
151 2000-08-07  Dan Winship  <danw@helixcode.com>
152
153         * camel-folder.c (camel_folder_free_deep): Fix this to not require
154         NULL-termination of the array.
155
156 2000-08-04  Jeffrey Stedfast  <fejj@helixcode.com>
157
158         * providers/imap/camel-imap-store.c (imap_connect): If we fail to
159         get a dir_sep, then supply the default of "/".
160         (get_folder): Undo changes by Peter
161
162 2000-08-04  Peter Williams  <peterw@helixcode.com>
163
164         * providers/imap/camel-imap-store.c (get_folder): Prevent a coredump
165         when get_folder()ing from a store with dir_sep = NULL.
166
167 2000-08-04  Peter Williams  <peterw@helixcode.com>
168
169         * camel-store.h: Include camel-object.h. Ettore said this wasn't
170         compiling.
171
172 2000-08-04  Not Zed  <NotZed@HelixCode.com>
173
174         * camel-url.c (camel_url_set_protocol): 
175         (camel_url_set_host): 
176         (camel_url_set_path): 
177         (camel_url_set_port): Url editing functions.
178
179 2000-08-04  Dan Winship  <danw@helixcode.com>
180
181         * providers/pop3/camel-pop3-folder.c (pop3_set_message_flags): 
182         (pop3_sync): Indexes into the flags array are message_number minus
183         1, not just message_number.
184
185         * providers/pop3/camel-pop3-store.c: add a debugging macro for
186         doing protocol tracing.
187
188 2000-08-03  Jeffrey Stedfast  <fejj@helixcode.com>
189
190         * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Only
191         call imap_get_summary_internal if the folder can hold messages
192
193         * providers/nntp/camel-nntp-provider.c (camel_provider_module_init): 
194         Initialize the service_cache for the news/nntp providers
195
196 2000-08-03  Peter Williams  <peterw@helixcode.com>
197
198         * providers/nntp/Makefile.am (INCLUDES): Add -I$(top_srcdir) to
199         pull in libibex/ibex.h
200
201 2000-08-02  Not Zed  <NotZed@HelixCode.com>
202
203         * providers/mh/camel-mh-summary.c (camel_mh_summary_sync): Expunge
204         from the end, so the index isn't messed up when you remove a
205         message.
206
207         * providers/mh/camel-mh-folder.c (mh_append_message): Fix a bug
208         where it would never open an output file/uid.
209
210         * providers/mbox/camel-mbox-store.c (rename_folder):
211         Implementation for mbox as well.
212
213         * camel-store.c (camel_store_rename_folder): New method to rename folders.
214         (rename_folder): Default implementation.
215
216         * providers/mh/camel-mh-store.c (delete_folder): Implement this.
217         (rename_folder): Implement a rename operation.
218
219 2000-08-02  Dan Winship  <danw@helixcode.com>
220
221         * providers/MH: Kill this. It doesn't have any code to do anything
222         the new mh provider doesn't do better.
223
224         * providers/Makefile.am: Remove reference to MH subdir, and
225         promote nntp to fully-supported status, since it does compile and
226         all.
227
228         * camel-mime-message.c (camel_mime_message_set_subject): Trim
229         trailing space from the subject. I've now seen replies from two
230         different people that tricked the threading code by (a) not having
231         References/In-Reply-To, and (b) adding an extra space to the end
232         of the subject line so the subject-based threading fails too. Who
233         writes these broken mailers anyway?
234
235 2000-08-01  Jeffrey Stedfast  <fejj@helixcode.com>
236
237         * providers/smtp/camel-smtp-transport.c (smtp_helo): When forced
238         to use the IP, place it in square brackets.
239
240         * providers/imap/camel-imap-utils.c (imap_translate_sexp): New and
241         improved sexp parser. An honest try at using e-sexp is wrapped in
242         a #ifdef at the bottom of the file but is currently not used
243
244         * providers/imap/camel-imap-folder.c (imap_search_by_expression):
245         We want to do a UID SEARCH so we get UIDs back instead of sequence
246         numbers
247
248 2000-08-01  Not Zed  <NotZed@HelixCode.com>
249
250         * providers/mh: New mh provider implementation.
251
252         * providers/Makefile.am (SUBDIRS): Added mh provider.
253
254 2000-07-31  Jeffrey Stedfast  <fejj@helixcode.com>
255
256         * providers/imap/camel-imap-folder.c (imap_get_message_info_internal): 
257         Some IMAP servers don't wrap the UID in ()'s so don't depend on that
258         (imap_get_summary_internal): Same
259
260         * providers/imap/camel-imap-utils.c (free_sexp_node): Oops, forgot to
261         free node->function - not good.
262
263 2000-07-31  Peter Williams  <peterw@helixcode.com>
264
265         * providers/vee/camel-vee-folder.c (vee_search_by_expression): Add
266         a NULL to the matches pointer array so that g_strfreev knows where
267         the end is.
268
269 2000-07-31  Jeffrey Stedfast  <fejj@helixcode.com>
270
271         * providers/imap/camel-imap-utils.c (imap_translate_sexp): New
272         convenience function to translate a Camel sexp into the equivalent
273         IMAP sexp.
274
275         * providers/imap/camel-imap-store.c: More places now use
276         imap_next_word
277
278         * providers/imap/camel-imap-folder.c (imap_search_by_expression):
279         Implemented initial version (this may or may not work quite right)
280
281 2000-07-28  Jeffrey Stedfast  <fejj@helixcode.com>
282
283         * providers/imap/camel-imap-folder.c (imap_expunge): Make sure
284         the third word/token (whatever) is "EXPUNGE" and not something
285         else like "EXISTS" or "RECENT". When removing the message from
286         the summary also make sure to free that data to avoid leakage.
287         Also make sure to subtract 1 from the 'id' since IMAP starts
288         at 1 and our summary starts at 0 :-)
289
290 2000-07-28  Jeffrey Stedfast  <fejj@helixcode.com>
291         
292         * providers/imap/camel-imap-store.c (camel_imap_status): Cleaned
293         up a bit, now uses imap_next_word()
294         (camel_imap_command_extended): Now uses imap_next_word(). When
295         checking for RECENT, allow the first digit of the recent-count
296         be between 0 and 9 inclusive instead of exclusive.
297
298         * providers/imap/camel-imap-folder.c (imap_expunge): Optimized.
299         No longer will it need to reload the summary as it now instead
300         removes the appropriate message summaries from the cache.
301         (camel_imap_folder_changed): If recent == 0 then return. If 
302         recent < 0 then just emit the folder_changed signal, don't reload
303         summaries.
304
305 2000-07-28  Jeffrey Stedfast  <fejj@helixcode.com>
306
307         * providers/imap/camel-imap-folder.c
308         (imap_get_message_count_internal): Get message count when STATUS
309         is not available.
310         (imap_init): folder->has_search_capability is required for IMAP so
311         should always be set to TRUE (is currently being set to FALSE as
312         I've not yet implemented SEARCH support).
313         (camel_imap_folder_changed): Seem to have fixed my optimization
314         hack
315
316 2000-07-28  Jon K Hellan  <hellan@acm.org>
317
318         * providers/imap/camel-imap-store.h (CamelImapServerLevel): New
319         enum.
320         (CamelImapStore): Added server_level and has_status_capability
321         members.
322
323         * providers/imap/camel-imap-store.c (imap_connect): Detect
324         IMAP4REV1, IMAP4 and STATUS in capability response.
325
326         * providers/imap/camel-imap-folder.c
327         (imap_get_message_count_internal): Use STATUS only if server
328         supports it. TODO: Get message count when STATUS not supported.
329         (imap_get_message, imap_get_summary_internal,
330         imap_get_message_info_internal): Handle IMAP4 as well.
331         (imap_protocol_get_summary_specifier): New function: Make a data
332         item specifier for the header lines we need, appropriate to the
333         server level.
334
335 2000-07-27  Peter Williams <peterw@helixcode.com>
336
337         * camel-mime-utils.c (header_decode_lwsp): More
338         checks for end of string.
339
340         * providers/imap/camel-imap-store.c:
341         (imap_command_extended): Free the elements of our
342         array (huge mem leak)
343
344         * providers/imap/camel-imap-folder.c:
345         (summary_get_internal): Same as above.
346         
347
348 2000-07-27  Jeffrey Stedfast  <fejj@helixcode.com>
349
350         * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
351         Fixed my routine to only fetch new headers, my IDs were off by 1
352         on the high end, so when it would fetch the last newly arrived
353         message it would fail and end up fetching all of the summaries
354         because of the corruption.
355
356 2000-07-27  Jeffrey Stedfast  <fejj@helixcode.com>
357
358         * camel-url.c (camel_url_to_string): If the path doesn't begin
359         with a / and there is a host, prepend a / to the path.
360
361 2000-07-27  Jeffrey Stedfast  <fejj@helixcode.com>
362         
363         * providers/imap/Makefile.am: Added camel-imap-utils.[c,h]
364         
365         * providers/imap/camel-imap-utils.[c,h]: Utilities for parsing
366         server responses for use in both camel-imap-store.c and
367         camel-imap-folder.c
368         
369         * providers/imap/camel-imap-folder.c (imap_get_summary_internal):
370         Free all the pointers in the headers array.
371         (imap_get_subfolder_names_internal): Updated to use
372         imap_parse_list_response
373         (imap_parse_subfolder_list): Removed in favor of
374         imap_parse_list_response
375
376         * providers/imap/camel-imap-store.c (camel_imap_command_extended):
377         Free all the pointers in the data array.
378         (imap_connect): Updated to use imap_parse_list_response and fixed
379         a leak
380         (folder_is_selectable): Updated.
381
382 2000-07-27  Jeffrey Stedfast  <fejj@helixcode.com>
383         
384         * providers/imap/camel-imap-folder.c (imap_get_message_info): Now
385         uses a hash table for looking up message info rather than a linear
386         search :)
387
388 2000-07-27  Peter Williams  <peterw@helixcode.com>
389
390         * providers/*/Makefile.am: Don't specify SUBDIRS =
391         [nothing]. Messes up distcheck.
392         
393 2000-07-26  Peter Williams  <peterw@helixcode.com>
394         
395         * camel-mime-parser.c (folder_scan_init): Initialize
396         outbuf to be "" -- it's not guaranteed to be zeroed.
397         
398         * camel-mime-utils.c (header_references_decode): Return
399         if the header is NULL -> or "" <-. Don't do our stupid
400         mailer trick if we point to \0.
401         (header_decode_quoted_string): Don't rip past end of 
402         string!
403         
404 2000-07-26  Dan Winship  <danw@helixcode.com>
405
406         * camel-movemail.c (movemail_external): routine to call an
407         external movemail program.
408         (camel_movemail): Nuke return value, use movemail_external when
409         available and useful, and don't delete "dest" on errors, since
410         it might have started non-empty.
411
412 2000-07-26  Jeffrey Stedfast  <fejj@helixcode.com>
413
414         * camel-url.c (camel_url_to_string): Should now always prepend a '/'
415         before the path if it doesn't already exist.
416
417         * providers/imap/camel-imap-folder.c: Fixed a few compiler warnings
418
419 2000-07-25  Jeffrey Stedfast  <fejj@helixcode.com>
420
421         * providers/imap/camel-imap-folder.c (imap_summary_free): Fixed the
422         real problem that Peter was running into.
423
424 2000-07-25  Dan Winship  <danw@helixcode.com>
425
426         * camel-mime-message.c (write_to_stream): Don't add a Mime-Version
427         header to a message that already has one.
428
429         * camel-internet-address.c (internet_encode): Don't put <>s around
430         addresses with no name part.
431
432 2000-07-25  Peter Williams  <peterw@helixcode.com>
433
434         * providers/imap/camel-imap-folder.c (imap_expunge): Set 
435         imap_folder->summary to NULL after calling imap_summary_free,
436         so we don't get stuck with a junk summary pointer. Should
437         we free it at all?
438
439 2000-07-25  Jeffrey Stedfast  <fejj@helixcode.com>
440
441         * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
442         Optimized to try and get the new message headers without reloading
443         the entire summary from scratch.
444         (imap_get_summary_internal): Will now sync() before attempting to
445         reload the summary so that flags are set in the reloaded summary
446         as well.
447
448 2000-07-24  Jeffrey Stedfast  <fejj@helixcode.com>
449
450         * providers/imap/camel-imap-store.c (get_folder): Updated to give
451         special attention to the root folder.
452
453         * providers/imap/camel-imap-folder.c
454         (imap_get_subfolder_names_internal): Updated to handle the root
455         folder
456         (imap_get_message_count_internal): return 0 if folder can't hold
457         messages
458         (camel_imap_folder_new): Change so that root folder gets special
459         attention and always gets can_hold_messages set to FALSE
460
461 2000-07-24  Dan Winship  <danw@helixcode.com>
462
463         * camel-folder.c: Remove exceptions from a number of methods that
464         work on what ought to be static data: get_parent_folder,
465         get_parent_store, get_message_count, get_unread_message_count,
466         get_permanent_flags, get_message_flags, set_message_flags,
467         get_message_user_flag, set_message_user_flag, get_uids,
468         get_summary, get_subfolder_names. Turn camel_folder_delete_message
469         into a macro. (Mostly a pull-up from the camel-async branch.)
470
471         * providers/{imap,mbox,nntp,pop3,vee}: Update for CamelFolder
472         changes
473
474 2000-07-24  Jeffrey Stedfast  <fejj@helixcode.com>
475
476         * providers/imap/camel-imap-folder.c (imap_get_message_info): Updated
477         to port easily to the new Camel API
478         (imap_init): Don't SELECT INBOX, we don't need to do that
479
480 2000-07-24  Jeffrey Stedfast  <fejj@helixcode.com>
481
482         * providers/imap/camel-imap-folder.c (camel_imap_folder_new): 
483         Initialize the summary and subfolder listing.
484         (imap_summary_free): Now takes a GPtrArray arg rather than a 
485         CamelImapFolder as it increases it's usefullness for free()'ing
486         temporary summaries.
487         (imap_get_message_count_internal): A new convenience function for
488         getting the actual message count on a server to be used by 
489         imap_get_summary_internal)
490         (imap_get_message_count): Since the Camel API is on the move again, 
491         the future version of this function will not be able to make a
492         call to the store, it must only access previously fetched data (thus 
493         the creation of the _internal function)
494         (imap_get_subfolder_names_internal): Again, because the future version
495         of imap_get_subfolder_names will not take an exception, we must rename
496         this function which will be called by camel_imap_folder_new()
497         (imap_get_subfolder_names): We now return the previously collected
498         subfolder listing that the _internal function fetched previously
499         (imap_get_summary_internal): Again, same idea as the previous _internal
500         functions...
501         (imap_get_summary): Again... now returns a previously aquired summary
502
503         * providers/imap/camel-imap-store.c (imap_noop): This will hopefully
504         prevent the imap store from disconnecting.
505         (imap_connect): Modified to add a gtk timeout event that will call
506         imap_noop() every 10 minutes (we may want to change this time value)
507         (imap_disconnect): Modified to remove the NOOP timeout event from the
508         store.
509         (camel_imap_command_extended): Commented out the code that would try
510         and detect if the store was disconnected and then reconnect if it was
511         needed.
512
513 2000-07-24  Dan Winship  <danw@helixcode.com>
514
515         * camel-folder.[ch]: Remove camel_folder_get_message_uid, which
516         was not used, and not implemented by any provider.
517
518         * providers/nntp/camel-nntp-folder.c: Remove get_message_uid
519         non-implementation.
520
521         * camel-folder-pt-proxy.[ch], camel-arg-collector.c,
522         camel-marshal-utils.[ch]: Bye bye bye.
523
524         * Makefile.am: remove reference to camel-arg-collector.c
525
526 2000-07-23  Jeffrey Stedfast  <fejj@helixcode.com>
527
528         * providers/imap/camel-imap-store.c (imap_disconnect): Made it a
529         little more forgiving. Also set current_folder to NULL as there is
530         no selected folder after a disconnect.
531         (stream_is_alive): Detects whether or not a socket is "alive"
532         (camel_imap_command_extended): Use stream_is_alive() to aid in the
533         detection of a disconnected state.
534
535 2000-07-22  Jeffrey Stedfast  <fejj@helixcode.com>
536
537         * providers/imap/camel-imap-store.c (get_folder): Clear
538         CamelExceptions when appropriate (eg when folder is marked as
539         \NoSelect). Still needs some cleanup and perhaps Dan will have a
540         better way of doing this as this seems like a messy way of
541         handling this.
542
543         * providers/imap/camel-imap-folder.c (imap_get_uids): Took out
544         some debug statements as they are no longer needed.
545
546 2000-07-21  Jeffrey Stedfast  <fejj@helixcode.com>
547
548         * providers/imap/camel-imap-folder.c (imap_get_subfolder_names):
549         Updated to not strip out subfolders that are marked as \NoSelect
550         because this will be correctly handled in store->get_folder from
551         now on.
552
553         * providers/imap/camel-imap-store.c (folder_is_selectable): New
554         convenience function for use in get_folder().
555         (parse_list_response): Now takes a char **flags argument which is
556         needed by folder_is_selectable().
557         (imap_connect): Updated to reflect changes to
558         parse_list_response().
559
560 2000-07-21  Jeffrey Stedfast  <fejj@helixcode.com>
561         
562         * providers/imap/camel-imap-stream.c (stream_read): Updated with
563         some of the same fixes I've made to camel-imap-folder.c like
564         recalculating message part lengths.
565
566         * providers/imap/camel-imap-store.c (camel_imap_command_extended):
567         Rewrote the code to check for "* %d RECENT". Still needs to be
568         modified, but should no longer cause an infinite loop by detecting
569         mis-detecting RECENT messages.
570
571 2000-07-20  Jeffrey Stedfast  <fejj@helixcode.com>
572
573         * providers/imap/camel-imap-folder.c (imap_get_summary):
574         (imap_get_message_info): Oops. Fix UID parser to allow 0 and 9 to
575         be in the range of valid UID chars.
576
577 2000-07-20  Peter Williams  <peterw@helixcode.com>
578
579         * camel-object.c (camel_object_unref): Add a new global mutex
580         'refcount' held when refcounting operations occur.
581
582 2000-07-19  Peter Williams  <peterw@helixcode.com>
583
584         * camel-object.c (camel_type_lock_up): Correct the recursiveness;
585         the locklevel is stored as a private, so each thread has its own
586         idea of the locklevel. Thus one thread can relock, but a different
587         one will think that it's a level 0 and try to lock the type_system
588         mutex.
589
590 2000-07-19  Jeffrey Stedfast  <fejj@helixcode.com>
591
592         * providers/imap/camel-imap-folder.c: General cleanup working
593         towards getting Actions->Expunge working correctly.
594
595         * providers/imap/camel-imap-store.c
596         (cammel_imap_command_extended): Added code to look for "* %d
597         RECENT" and to emit the folder_changed signal if there are any
598         recent messages. Note: this is a hack and needs to be rewritten
599         badly.
600
601 2000-07-19  Jeffrey Stedfast  <fejj@helixcode.com>
602
603         * providers/imap/camel-imap-folder.c (imap_get_summary): If the
604         folder's message count is not the same as the number of summaries,
605         free the old summary and create a new summary.
606
607 2000-07-18  Jeffrey Stedfast  <fejj@helixcode.com>
608
609         * providers/imap/camel-imap-folder.c
610         (camel_imap_folder_class_init): Added in
611         imap_[g,s]et_message_user_flag() methods
612         (imap_get_message_info): Rewrote to use the more efficient way of
613         downloading summary information and also added a UID comparison so
614         that if the UID requested doesn't match the UID received, it
615         returns NULL.  FIXME: When the mailer gets NULL when it requested
616         message info, it seems that it displays a row for that message and
617         when you try and select the blank row, it segfaults.
618
619         * providers/imap/camel-imap-store.c (get_folder): Oops, this
620         should not be checking against "/", it should be checking against
621         dir_sep.
622
623         * providers/imap/camel-imap-folder.c (imap_parse_subfolder_line):
624         Updated to trim out the leading namespace.
625         (imap_get_subfolder_names): Let the subfolder parser trim the
626         namespace off the folder name.
627
628 2000-07-17  Peter Williams  <peterw@helixcode.com>
629
630         * camel-object.c (camel_type_lock_up): New function; the
631         Camel type_system lock is now fakey-recursive, being controlled
632         by a semaphore that goes up and down and is protected by another
633         lock. Theoretically all we need is the lock on the semaphore,
634         but this we catch exceptions "better" (by deadlocking).
635         (camel_type_lock_down): Corresponding to above.
636         (all functions): s,G_LOCK,camel_type_lock_up, etc.
637
638 2000-07-17  Jeffrey Stedfast  <fejj@helixcode.com>
639
640         * providers/imap/camel-imap-store.c (imap_disconnect): Send a
641         "LOGOUT" command.
642
643         * providers/imap/camel-imap-folder.c (imap_get_message): Hacks to
644         get IMAP code to work with CommunigatePro and MS Exchange (and any
645         other servers that send back a UID at the end of each FETCH inside
646         of the main body of the message part).
647         (imap_sync): Un-#if 0 the code that sets the flags on the IMAP
648         server for messages that have changed. Oops, don't mask with
649         DELETED to find out if the message has been answered ;-)
650         (imap_expunge): sync before expunging.
651
652 2000-07-16  Jeffrey Stedfast  <fejj@helixcode.com>
653
654         * providers/imap/camel-imap-store.c: All SELECT calls now pass
655         a NULL folder argument to camel_imap_command_extended() since it's
656         not needed.
657         (imap_connect): Moved service_class->connect() to the point right
658         after a connection is established with the server rather than
659         waiting until the end of the function.
660         (camel_imap_command): Updated the documentation comment
661         (camel_imap_command_extended): Before sending a command, first
662         check to make sure we are connected; if we aren't, then reconnect.
663         Don't strncmp() command with "SELECT" as it's redundant.
664
665         * providers/imap/camel-imap-folder.c: All SELECT calls now pass
666         a NULL folder argument to camel_imap_command_extended() since it's
667         not needed. Also s/camel_imap_command/camel_imap_command_extended as
668         I will probably be doing away with camel_imap_command() or at least
669         only using it for LOGIN and similar commands where the server won't
670         notify us of any recent messages.
671
672 2000-07-15  Jeffrey Stedfast  <fejj@helixcode.com>
673
674         * providers/imap/camel-imap-folder.c (camel_imap_folder_new): 
675         One last fix to get rid of hard-coded "/" directory separators
676
677 2000-07-14  Peter Williams  <peterw@helixcode.com>
678
679         * camel-object.c : Implement 'events', which are suspiciously
680         like signals except without all the marshalling baggage, and
681         with quasi-thread-safety.
682         (camel_object_class_declare_event): New func.
683         (camel_object_hook_event): Ditto.
684         (camel_object_trigger_event): Ditto.
685         (obj_class_init): Declare the "finalize" event.
686         (obj_class_finalize): Free the hashtable of events->preps
687         (obj_finalize): Free the hashtable of events->hooklists
688         (camel_object_unref): Trigger the finalize event (ourselves,
689         to prevent massively unpleasant looping things.)
690         
691 2000-07-14  Peter Williams  <peterw@helixcode.com>
692         
693         * camel-object.c (make_global_classfuncs): Change to return
694         a CamelObjectClass. Change parents to a GSList and free it
695         when done.
696         (camel_object_new): Don't allocate a classfuncs for every object;
697         merely give it a reference to the global_classfuncs. Convert
698         parents to a GSList and free it when done.
699         (camel_object_unref): Don't free the classfuncs. Free the parents
700         list, which is changed to a GSList.
701
702 2000-07-14  Jeffrey Stedfast  <fejj@helixcode.com>
703
704         * string-utils.c (string_unquote): New convenience function
705         to unquote a string if it's encapsulated by "'s
706         
707         * providers/imap/camel-imap-folder.c:
708         * providers/imap/camel-imap-store.c: Made the necessary changes
709         to stop using hard coded directory separators.
710
711 2000-07-13  Dan Winship  <danw@helixcode.com>
712
713         * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_load):
714         If the summary is for a smaller mbox, and rebuilding from the
715         last-known end position fails, try rebuilding from the beginning.
716         Deals with the case where the user edits the mbox and makes it
717         bigger, without adding new messages.
718
719 2000-07-13  Peter Williams  <peterw@helixcode.com>
720
721         * camel-object.c: Rewritten to not be based on GtkObject,
722         but a tiny threadsafe ripoff thereof. Objects still cannot
723         be shared across threads, but ref/unref/destroy/new/etc
724         will work. Signals are not implemented because doing it
725         robustly would be a major pain in the butt, but class
726         functions are. There's a small demonstration that it doesn't
727         crash in ./temp-test.c: build it with ./make-test.sh.
728         * camel-stream.c, camel-seekable-stream.c, camel-stream-mem.c:
729         moved over to CamelObject. Proof of concept: two levels of
730         subclass and class functions, all working without coredumps.
731         To port to CamelObject:
732         - s,GTK_,CAMEL_,g in the cast checks
733         - s,gtk_type_new,camel_object_new,g
734         - s,GtkType,CamelType,g
735         - Change get_type function over to camel_type_declare
736         - instead of hooking to finalize function, it goes into the
737           type declaration.
738         - remove signals.
739         - instead of GTK_OBJECT(so)->klass, CAMEL_OBJECT_GET_CLASS(so)
740         - s,gtk_type_class,camel_type_get_global_classfuncs,g
741         - don't chain finalize handlers; it will be done for you
742         
743 2000-07-13  Jeffrey Stedfast  <fejj@helixcode.com>
744
745         * providers/imap/camel-imap-folder.c: 
746         * providers/imap/camel-imap-store.c: If a SELECT fails, set
747         imap_store->current_folder to NULL so a SELECT is forced before
748         any message/folder operations are requested. Also, because some
749         users don't use a namespace, make sure that if the url->path is 
750         "/" we don't use it when creating the folder_path.
751         (camel_imap_command[_extended]): Since we allow the passing of
752         a NULL folder which we can use to bypass a forced SELECT, no need
753         to check for the individual commands that don't require a folder
754         to be selected.
755
756 2000-07-13  Jeffrey Stedfast  <fejj@helixcode.com>
757
758         * providers/imap/camel-imap-folder.c: 
759         * providers/imap/camel-imap-store.c: Updated to use CAMEL_IMAP_OK, 
760         CAMEL_IMAP_NO, CAMEL_IMAP_BAD, and CAMEL_IMAP_FAIL rather than the 
761         ones copied from the POP3 provider. 
762
763 2000-07-13  Jeffrey Stedfast  <fejj@helixcode.com>
764
765         * providers/imap/camel-imap-folder.c (imap_get_summary): Oops.
766         If the number of messages in the folder is 0, don't fetch
767         summaries 1 thru 0, just return an empty summary.
768         (imap_copy_message_to): Fixed to use message UID and also send
769         the source folder as an arg to camel_imap_command rather than NULL.
770         (imap_move_message_to): Same.
771         (imap_init): If SELECT is successful, we need to set the current
772         folder to the one selected, this was causing problems with move/copy
773
774 2000-07-13  Dan Winship  <danw@helixcode.com>
775
776         * camel-service.h: define a set of CAMEL_SERVICE_URL_ALLOW_* flags
777         parallel to the _NEED_* flags, and make the _NEED_* flags imply
778         the _ALLOW_* ones.
779
780         * providers/imap/camel-imap-store.c (camel_imap_store_init): imap
781         urls ALLOW_PATH
782
783 2000-07-13  Jeffrey Stedfast  <fejj@helixcode.com>
784
785         * providers/imap/camel-imap-folder.c (imap_get_summary): New
786         and improved approach to fetching an entire folder summary
787         that should be much much faster than the old way as it gets
788         the entire folder summary in 1 shot rather than requesting
789         message by message. As with the last update, this version
790         also only fetches the minimum number of header fields.
791         (imap_get_summary): Oops, forgot to free the temp 
792         GPtrArray *headers
793
794 2000-07-13  Jeffrey Stedfast  <fejj@helixcode.com>
795
796         * providers/imap/camel-imap-folder.c (imap_get_summary): Don't
797         fetch the entire RFC822 header, just fetch the fields we want.
798         (imap_get_message_info): Same.
799
800 2000-07-13  Not Zed  <NotZed@HelixCode.com>
801
802         * camel-mime-filter-basic.c (camel_mime_filter_basic_new_type):
803         Reset filter on setup.
804         (reset): When resetting qp encoding, set the state to -1, instead
805         of 0.
806
807         * camel-mime-utils.c (quoted_encode_step): Actually count the
808         characters output sofar (it never counted any).  Bunch of other
809         fixes.
810         (quoted_encode_close): Also flush out final character, if there's
811         one.
812
813 2000-07-12  Jeffrey Stedfast  <fejj@helixcode.com>
814
815         Chris forgot to add #include <e-util/e-util.h> to the source files
816         
817         * providers/imap/camel-imap-store.c (imap_connect): Fixed Peter's 
818         fix, we don't want to send a string to a %d.
819
820 2000-07-12  Christopher James Lahey  <clahey@helixcode.com>
821
822         * camel-folder-search.c, providers/imap/camel-imap-store.c:
823         Changed from strstrcase to e_strstrcase.
824
825         * string-utils.c, string-utils.h: Removed strstrcase (in favor of
826         e_strstrcase in e-util/e-util.c.)
827
828 2000-07-12  Chris Toshok  <toshok@helixcode.com>
829
830         * providers/nntp/camel-nntp-folder.c
831         (nntp_folder_set_message_flags): get the article num out of our
832         uid and mark it read in the newsrc.
833         (nntp_folder_get_message): get the message id out of the uid to
834         fetch the article.
835
836         * providers/nntp/camel-nntp-utils.c (get_XOVER_headers): the uid
837         is now <article-num>,<messageid>
838         (get_HEAD_headers): same.
839
840         * camel-mime-parser.c (folder_scan_step): go to HSCAN_MESSAGE
841         state when ct->subtype is "news" as well as "rfc822".  this makes
842         attachments of type "message/news" display properly.
843
844 2000-07-12  Dan Winship  <danw@helixcode.com>
845
846         * camel-folder.c (camel_folder_free_deep,
847         camel_folder_free_shallow, camel_folder_free_nop): Useful default
848         implementations for free_{uids,subfolder_names,summary}.
849         (free_subfolder_names, free_uids): Make these g_warning-ing
850         default implementations.
851
852         * providers/*/camel-*-folder.c: Use the new functions where
853         appropriate, remove duplicated code.
854
855 2000-07-12  Peter Williams  <peterw@helixcode.com>
856
857         * providers/imap/camel-imap-store.c (query_auth_types): Check for
858         NULL parameters when setting the exception so as to not crash on
859         Solaris (can't handle a %s passed NULL).
860         (imap_connect): Same.
861         
862 2000-07-12  Jeffrey Stedfast  <fejj@helixcode.com>
863
864         * providers/mbox/camel-mbox-folder.c (mbox_delete_message): Use
865         mbox_set_message_flags () instead of setting the flags by hand. This
866         fixes the problem of the "message_changed" signal not being emitted
867         at the correct time.
868
869         * providers/imap/camel-imap-folder.c: "folder_changed" signals should
870         pass a third argument (which is ignored).
871
872         * camel-folder.c: Undo gtk signal emits done in set_flags and 
873         expunge.
874         (move_message_to): 
875         (copy_message_to): Create info as a const CamelMessageInfo
876
877 2000-07-12  Chris Toshok  <toshok@helixcode.com>
878
879         * providers/nntp/Makefile.am: don't add test-newsrc to the build
880         since it needs libcamel (which isn't built at the time test-newsrc
881         needs linking.)
882
883         * providers/nntp/camel-nntp-utils.c (get_HEAD_headers): fill in
884         MessageInfo->message_id.
885         (get_XOVER_headers): same.
886
887         * providers/nntp/camel-nntp-folder.c (nntp_folder_init): move
888         summary loading here.
889         (nntp_folder_sync): summary/newsrc changes should be stored here.
890         put a comment to that effect.
891         (nntp_folder_set_message_flags): don't save the newsrc here.
892         (nntp_folder_get_uids): use g_ptr_array_index instead of the
893         cast/addition.
894         (nntp_folder_get_summary): no need to check if we should generate
895         the summary here.  already done.
896         (nntp_folder_get_message_info): implement.
897
898         * providers/nntp/camel-nntp-store.c
899         (camel_nntp_store_get_toplevel_dir): use evolution_dir instead of
900         computing it ourselves.
901         (nntp_store_disconnect): call camel_nntp_newsrc_write.
902         (ensure_news_dir_exists): new function to create the news/<news
903         server> subdir.
904         (camel_nntp_store_class_init): hook up connect/disconnect and
905         finalize.
906         (nntp_store_connect): if ensure_news_dir_exists fails throw an
907         exception.
908
909 2000-07-12  Peter Williams  <peterw@helixcode.com>
910
911         * camel-folder.c (camel_folder_set_message_flags): Emit a message_changed
912         signal once the flags are set on the message.
913         (camel_folder_set_user_flag): Ditto.
914         (camel_folder_expunge): Emit a folder_changed if no exception.
915
916 2000-07-12  Jeffrey Stedfast  <fejj@helixcode.com>
917
918         * camel-stream.c: Use size_t and ssize_t for read/write methods
919         
920         * providers/imap/camel-imap-folder.c (imap_set_message_flags): 
921         Updated to emit the message_changed signal.
922         (imap_delete_message): Updated to use imap_set_message_flags ().
923         (imap_move_message_to): Updated to use imap_set_message_flags ()
924         and to emit the folder_changed signal on the destination folder.
925         (imap_copy_message_to): Updated to emit the folder_changed signal 
926         on the destination folder.
927         (imap_append_message): Updated to emit the folder_changed signal 
928         on the destination folder.
929
930 2000-07-11  Jeffrey Stedfast  <fejj@helixcode.com>
931
932         * camel-folder.c (camel_folder_append_message): Now takes a
933         flags argument to specify the flags to be set on the message
934         since we might not necessarily want the flags to be wiped clean.
935         (move_message_to):
936         (copy_message_to): Updated to send a flags argument to 
937         append_message (); currently sends the original message's flags.
938
939         * providers/mbox/camel-mbox-folder.c (mbox_append_message): 
940         * providers/imap/camel-imap-folder.c (imap_append_message): 
941         Updated.
942
943 2000-07-11  Dan Winship  <danw@helixcode.com>
944
945         * camel-folder.c: Remove exceptions from a number of methods
946         that work on what ought to be static data: get_parent_folder,
947         get_parent_store, get_message_count, get_unread_message_count,
948         get_permanent_flags, get_message_flags, set_message_flags,
949         get_message_user_flag, set_message_user_flag, get_message_uid,
950         get_uids, get_summary, get_subfolder_names. Turn
951         camel_folder_delete_message into a macro.
952
953         * providers/{mbox,pop3,vee}: Update for CamelFolder changes
954
955         * providers/Makefile.am: Disable imap and nntp for now
956
957 2000-07-11  Jeffrey Stedfast  <fejj@helixcode.com>
958
959         * providers/imap/camel-imap-folder.c (imap_search_by_expression): 
960         This shouldn't return NULL, it should return g_ptr_array_new ()
961         so the mailer gets what it expects.
962
963 2000-07-10  Jeffrey Stedfast  <fejj@helixcode.com>
964
965         * camel-folder-summary.c (camel_folder_summary_decode_string): 
966         Oops, an unsigned integer can never be < 0
967
968 2000-07-10  Dan Winship  <danw@helixcode.com>
969
970         * providers/vee/camel-vee-folder.c (vee_search_by_expression):
971         Initialize a variable to make this not crash again. And fix a bug
972         so it actually does something.
973
974 2000-07-10  Jeffrey Stedfast  <fejj@helixcode.com>
975
976         * camel-folder-summary.c: Cleaned up a bunch of compile warnings
977
978 2000-07-10  Dan Winship  <danw@helixcode.com>
979
980         * providers/vee: kill more debugging messages
981
982 2000-07-10  Jeffrey Stedfast  <fejj@helixcode.com>
983
984         * providers/mbox/camel-mbox-folder.c (mbox_get_unread_message_count): 
985         * providers/vee/camel-vee-folder.c (vee_get_unread_message_count): 
986         * providers/imap/camel-imap-folder.c (imap_get_unread_message_count):
987         Implemented.
988
989         * camel-folder.c (camel_folder_get_unread_message_count): New
990         convenience function to allow the mailer to query the number
991         of unread messages in a folder (for displaying message stats
992         in a folder tree?).
993
994 2000-07-09  Dan Winship  <danw@helixcode.com>
995
996         * camel-mime-utils.c (header_references_dup): New function to copy
997         a header_references structure.
998
999         * camel-folder-summary.c (camel_message_info_dup_to): New function
1000         to (deep) copy the data from one CamelMessageInfo into another.
1001         (camel_message_info_free): And free the data.
1002
1003         * providers/vee/camel-vee-folder.c (vee_sync): Implement. (empty).
1004         (vee_search_by_expression): belatedly update for
1005         camel_folder_search change.
1006         (vee_folder_build): belatedly update for camel_folder_search
1007         change. Use camel_message_info_dup_to and camel_message_info_free
1008         (in particular, so that we get message_id and references info so
1009         vfolders can be threaded).
1010         (vee_folder_build_folder): Ditto.
1011
1012 2000-07-08  Jeffrey Stedfast  <fejj@helixcode.com>
1013
1014         * providers/nntp/camel-nntp-folder.c: 
1015         * providers/nntp/camel-nntp-utils.c: 
1016         * providers/nntp/camel-nntp-store.c: Update to reflect past changes
1017         in the Camel API. Use gtk macro casts wherever possible and use glib's
1018         memory functions instead of standard c's (since they are not 
1019         compatable)
1020
1021         * providers/smtp/camel-smtp-transport.c: 
1022         * providers/imap/camel-imap-store.c: Wrap debug print statements
1023         in a macro
1024
1025         * providers/imap/camel-imap-stream.c (stream_read): Make sure
1026         that we get up to and including the last \n of the mime part.
1027
1028         * providers/imap/camel-imap-folder.c (imap_get_message): Make sure
1029         that we get up to and including the last \n of the mime part.
1030         Wrap debug print statements in a macro.
1031
1032         * providers/imap/camel-imap-stream.c (stream_read): Only cache
1033         the important data (aka the mime part requested and no extra
1034         server response stuff)
1035
1036 2000-07-07  Dan Winship  <danw@helixcode.com>
1037
1038         * camel-mime-utils.c (header_references_decode): Work around
1039         In-Reply-To's with unquoted punctuation. So many broken mailers.
1040
1041         * camel-folder.c (camel_folder_search_by_expression): Make this
1042         return a GPtrArray rather than a GList.
1043
1044         * camel-folder-search.c (camel_folder_search_execute_expression):
1045         * providers/imap/camel-imap-folder.c (imap_search_by_expression):
1046         * providers/mbox/camel-mbox-folder.c (mbox_search_by_expression):
1047         * providers/nntp/camel-nntp-folder.c (nntp_search_by_expression):
1048         Update to return a GPtrArray rather than a GList.
1049
1050 2000-07-07  Jeffrey Stedfast  <fejj@helixcode.com>
1051
1052         * providers/smtp/camel-smtp-transport.c (esmtp_get_authtypes): 
1053         Fixed the parser to actually work
1054
1055 2000-07-06  Dan Winship  <danw@helixcode.com>
1056
1057         * camel-mime-utils.c (header_references_decode): Make this deal
1058         with the full RFC822 References/In-Reply-To format rather than
1059         just the more-nicely-behaved RFC1036 version. (Needed to parse
1060         In-Reply-To headers with extra junk in them.)
1061
1062 2000-07-06  Jeffrey Stedfast  <fejj@helixcode.com>
1063
1064         * providers/imap/camel-imap-folder.c (imap_get_summary): Parse for
1065         more header information to allow message threading in IMAP.
1066         (imap_get_message_info): Same.
1067
1068         * camel-folder-summary.c: Renamed summary_format_* to
1069         camel_summary_format_* and moved them into public scope.
1070
1071         * providers/smtp/camel-smtp-transport.c (smtp_connect): Oops. Don't
1072         pass port # as a string in the error code (if it fails to connect).
1073
1074         * providers/imap/camel-imap-folder.c (imap_append_message): Changed
1075         over to camel_imap_command_extended as that was the source of the
1076         problems - apparently appending replies with more than just 1 line.
1077
1078 2000-07-05  Dan Winship  <danw@helixcode.com>
1079
1080         * camel-folder-search.c (search_header_contains): make header
1081         matching case-insensitive
1082
1083         * camel-folder-summary.c:
1084         * camel-session.c:
1085         * providers/mbox/camel-mbox-folder.c:
1086         * providers/mbox/camel-mbox-summary.c: Remove some non-error case
1087         debugging-type messages.
1088
1089 2000-07-05  Ettore Perazzoli  <ettore@helixcode.com>
1090
1091         * providers/mbox/camel-mbox-summary.c (d): Define to empty so that
1092         we get rid of a ton of debugging messages.
1093
1094 2000-07-05  Jeffrey Stedfast  <fejj@helixcode.com>
1095
1096         * camel-mime-utils.h: Added prototype for uudecode_step
1097
1098         * camel-mime-utils.c (uudecode_step): Cleaned up some junk that
1099         should have been cleaned up when debugging printf's were taken out.
1100
1101 2000-07-05  Ettore Perazzoli  <ettore@helixcode.com>
1102
1103         * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_sync):
1104         Update the X-Evolution: header even if the in-memory UID and the
1105         saved UID are not the same.  Otherwise mboxes with clashing UIDs
1106         can never be fixed.
1107
1108         * camel-folder-summary.c
1109         (camel_folder_summary_add_from_parser): Add the message to the
1110         summary before doing any ibex stuff.  In fact, this might also
1111         have the side effect of reassigning the UID so it needs to be done
1112         before we start using the UID.
1113
1114         * providers/mbox/camel-mbox-folder.c (mbox_append_message): Add
1115         debugging message to keep track of the UIDs we add.
1116
1117 2000-07-05  Dan Winship  <danw@helixcode.com>
1118
1119         * camel-folder-summary.c: Add "Cc" to summary and bump summary
1120         version number.
1121
1122         * camel-folder-search.c (search_header_contains): make "Cc" a
1123         searchable header.
1124
1125 2000-07-03  Ettore Perazzoli  <ettore@helixcode.com>
1126
1127         * camel-folder-summary.c (camel_folder_summary_next_uid_string):
1128         New.
1129         (camel_folder_summary_add): Use
1130         `camel_folder_summary_next_uid_string()' instead of recomputing
1131         the UID manually here.
1132         (camel_folder_summary_add_from_parser): Likewise.
1133
1134 2000-07-03  Ettore Perazzoli  <ettore@helixcode.com>
1135
1136         * camel-folder-summary.c (camel_folder_summary_set_uid): Removed.
1137
1138 2000-07-03  Dan Winship  <danw@helixcode.com>
1139
1140         * camel-folder-summary.c (message_info_new): Parse In-Reply-To
1141         with header_references_decode, not header_msgid_decode.
1142
1143         * camel-mime-message.c (camel_mime_message_class_init): message
1144         headers are case-insensitive.
1145
1146         * providers/pop3/camel-pop3-store.c (camel_pop3_command): Fix a
1147         bug in error-setting code.
1148         (pop3_connect): Don't re-prompt for password in the KPOP case.
1149         (pop3_get_response): New function, split out from
1150         camel_pop3_command.
1151         (connect_to_server): Use pop3_get_response to parse the greeting
1152         message, and error out appropriately if it's -ERR.
1153
1154 2000-07-02  Dan Winship  <danw@helixcode.com>
1155
1156         * camel-folder.c (camel_folder_freeze, camel_folder_thaw): New
1157         functions to freeze and thaw a folder (to prevent message/folder
1158         changed signals in the middle of a long series of operations).
1159         (camel_folder_class_init): Change signals to GTK_RUN_FIRST.
1160         (message_changed, folder_changed): Add default implementations
1161         that stop the emission and record info for later if the folder is
1162         frozen.
1163
1164         * providers/mbox/camel-mbox-folder.c (mbox_sync): leftover fixes
1165         from the close->sync change: don't destroy the ibex, summary, and
1166         search when syncing.
1167         (append_message): emit "folder_changed" on a successful append.
1168
1169 2000-07-02  Jeffrey Stedfast  <fejj@helixcode.com>
1170
1171         * camel-mime-utils.c (uudecode_step): A rather complex uudecoder
1172         written in the spirit of Zucchi-ness, is it up to par? Only the 
1173         Z-man can tell us :-)
1174
1175 2000-07-01  Dan Winship  <danw@helixcode.com>
1176
1177         * camel-service.c (camel_service_get_name): New method, to return
1178         an end-user-friendly name corresponding to a service. (eg, "POP
1179         service for danw on trna.helixcode.com").
1180
1181         * providers/imap/camel-imap-store.c,
1182         providers/mbox/camel-mbox-store.c,
1183         providers/nntp/camel-nntp-store.c,
1184         providers/pop3/camel-pop3-store.c,
1185         providers/sendmail/camel-sendmail-transport.c,
1186         providers/smtp/camel-smtp-transport.c: Implement.
1187
1188         * providers/imap/Makefile.am: remove unneeded
1189         libcamelimap_la_LDADD.
1190
1191         * providers/pop3/camel-pop3-store.c (connect_to_server): fix the
1192         CAPA-parsing code to not get into an infinite loop.
1193
1194 2000-07-01  Jeffrey Stedfast  <fejj@helixcode.com>
1195
1196         * providers/imap/camel-imap-folder.c (imap_get_message): Fixed
1197         the bug that would sometimes leave part of the server response
1198         tacked on to the end of the message.
1199
1200         * camel-folder.c: Renamed _by_uid methods. Since we no longer
1201         have get-by-number methods, no need to have the _by_uid 
1202         extensions. 
1203         (get_message_by_uid): Renamed to get_message
1204         (delete_message_by_uid): Renamed to delete_message
1205         (summary_get_by_uid): Renamed to get_message_info
1206
1207         * providers/mbox/camel-mbox-folder.c: 
1208         * providers/pop3/camel-pop3-folder.c:
1209         * providers/imap/camel-imap-folder.c:
1210         * providers/vee/camel-vee-folder.c: Updated to reflect
1211         camel-folder changes.
1212
1213 2000-06-30  Jeffrey Stedfast  <fejj@helixcode.com>
1214
1215         * camel-folder.c (camel_folder_copy_message_to): New function, to
1216         copy a message from one folder to another. The default
1217         implementation just uses append_message, but providers can 
1218         implement more efficient versions for use when both folders are on 
1219         the same store.
1220
1221         * broken-date-parser.[c,h]: Utilities for parsing broken
1222         date strings.
1223         
1224         * providers/imap/camel-imap-folder.c (imap_move_message_to): 
1225         (imap_copy_message_to): Implemented.
1226
1227         * camel-mime-utils.c (header_decode_date): Wrote some code to try
1228         and un-mangle broken date formats and then parse that new string 
1229         instead.
1230
1231 2000-06-30  Dan Winship  <danw@helixcode.com>
1232
1233         * camel-folder.c (camel_folder_move_message_to): New function, to
1234         move a message from one folder to another. The default
1235         implementation just uses append_message and delete_message, but
1236         providers can implement more efficient versions for use when both
1237         folders are on the same store.
1238
1239 2000-06-29  Jeffrey Stedfast  <fejj@helixcode.com>
1240
1241         * providers/imap/camel-imap-folder.c (imap_expunge): Should now
1242         print a meaningful error message when it doesn't succeed
1243
1244 2000-06-28  Jeffrey Stedfast  <fejj@helixcode.com>
1245
1246         * providers/imap/camel-imap-store.c (imap_connect): Changed to
1247         keep prompting user for a valid password until it either
1248         authenticates or until Canceled by the user.
1249         (camel_imap_command_extended): Improved speed (replaced the
1250         g_strjoinv call with a faster implementation)
1251
1252         * providers/pop3/camel-pop3-store.c 
1253         (camel_pop3_command_get_additional_data): Fixed.
1254         (pop3_connect): Changed to keep prompting the user for a
1255         password until it either works or until Canceled by the user.
1256
1257         * providers/mbox/camel-mbox-summary.c: General cleanup
1258         (camel_mbox_summary_sync): Fixed a memory leak and added
1259         CamelException handling.
1260
1261         * providers/mbox/camel-mbox-store.c (delete_folder): Fixed a 
1262         memory leak
1263
1264         * providers/mbox/camel-mbox-folder.c (mbox_append_message): 
1265         Default 'off_t seek' to -1 so as to make sure it's initialized
1266         before it's used in the case of a bad stat() call.
1267         (mbox_sync): Updated
1268         (mbox_expunge): Updated
1269
1270 2000-06-27  Jeffrey Stedfast  <fejj@helixcode.com>
1271
1272         * providers/imap/camel-imap-store.c (imap_connect): Move the 
1273         CAPABILITY command here so we don't have to keep checking
1274         each time we open a folder.
1275         (camel_imap_command_extended): If we are doing an EXAMINE,
1276         don't bother doing a SELECT first.
1277
1278         * providers/imap/camel-imap-folder.c (imap_init): Update so
1279         folder->has_search_capability depends on the parent IMAP store
1280         (since this is really dependant on the IMAP implementation and
1281         not the folder)
1282
1283 2000-06-27  Christopher James Lahey  <clahey@helixcode.com>
1284
1285         * providers/smtp/camel-smtp-transport.c: Don't close the filter
1286         stream when done with it (this causes the source stream to close);
1287         Instead, just flush it when done.
1288
1289 2000-06-27  Michael Zucchi  <zucchi@zedzone.mmc.com.au>
1290
1291         * camel-folder-search.c (search_header_contains): Make header
1292         search 'to' match 'to', and not 'from', small typo, fixes #317.
1293
1294 2000-06-26  Christopher James Lahey  <clahey@helixcode.com>
1295
1296         * providers/mbox/camel-mbox-summary.c: Added debugging
1297         information.
1298
1299 2000-06-23  Jeffrey Stedfast  <fejj@helixcode.com>
1300
1301         * providers/imap/camel-imap-store.c: 
1302         * providers/imap/camel-imap-folder.c: Improved folder parsing.
1303         Not specifying a namespace should no longer list the entire
1304         filesystem.
1305
1306 2000-06-22  Chris Toshok  <toshok@helixcode.com>
1307
1308         * providers/nntp/.cvsignore: ignore test-newsrc
1309
1310         * providers/nntp/camel-nntp-store.c,
1311         providers/nntp/camel-nntp-store.h,
1312         providers/nntp/camel-nntp-folder.c,
1313         providers/nntp/camel-nntp-folder.h,
1314         providers/nntp/camel-nntp-utils.c: Bring the nntp provider up to a
1315         state where it builds and is usable with the current camel.  there
1316         are still warts (semi-broken .newsrc file handling, and a lack of
1317         a subscribe ui -- in fact no way to add a new server, really), but
1318         it'll display news messages.
1319
1320         * providers/nntp/Makefile.am (libcamelnntp_la_SOURCES): add
1321         camel-nntp-newsrc.c
1322         (libcamelnntpinclude_HEADERS): add camel-nntp-newsrc.h
1323         also, add test-newsrc stuff.
1324         
1325         * providers/nntp/test-newsrc.c: new file that tests the newsrc
1326         stuff by parsing and regurgitating a .newsrc file for a particular
1327         server.
1328
1329         * providers/nntp/camel-nntp-newsrc.c,
1330         providers/nntp/camel-nntp-newsrc.h: new files, initial support for .newsrc files.
1331
1332 2000-06-22  Jeffrey Stedfast  <fejj@helixcode.com>
1333
1334         * providers/imap/camel-imap-folder.c (imap_get_message_count): 
1335         Oops. Now appends the namespace to the folder before querying
1336         for the number of messages.
1337
1338         * providers/imap/camel-imap-store.c (imap_folder_exists): New
1339         convenience function for use by imap_create().
1340         (get_folder): If folder is specified as "/", we really want
1341         "INBOX".
1342
1343         * providers/sendmail/camel-sendmail-provider.c:
1344         * providers/vee/camel-vee-provider.c:
1345         * providers/smtp/camel-smtp-provider.c:
1346         * providers/mbox/camel-mbox-provider.c:
1347         * providers/pop3/camel-pop3-provider.c:
1348         * providers/imap/camel-imap-provider.c: Updated
1349         
1350         * camel-session.c: Moved service_cache hash table into the
1351         providers.
1352         (service_cache_remove): Updated.
1353         (camel_session_get_service): Updated.
1354
1355         * camel-url.c (camel_url_hash): Took out the hashing of
1356         url->passwd. We don't want this anymore.
1357
1358         * providers/imap/camel-imap-folder.c (imap_init): Took out
1359         references to 'namespace'
1360         (camel_imap_folder_init): Same
1361
1362         * providers/imap/camel-imap-folder.h: No more namespace. We are
1363         instead going to use url->path as the namespace.
1364
1365 2000-06-21  Jeffrey Stedfast  <fejj@helixcode.com>
1366
1367         * providers/imap/camel-imap-store.c (imap_create): Modified to
1368         use the "namespace" (url->path) if it exists.
1369
1370         * providers/imap/camel-imap-folder.c (imap_delete_message_by_uid):
1371         Now just sets the deleted flag on the summary rather than speaking 
1372         directly to the IMAP server. This is both faster and cleaner.
1373
1374 2000-06-21  Dan Winship  <danw@helixcode.com>
1375
1376         * providers/pop3/camel-pop3-store.c (query_auth_types): Fix dumb
1377         bug.
1378
1379 2000-06-21  Jeffrey Stedfast  <fejj@helixcode.com>
1380
1381         * providers/imap/camel-imap-folder.c (imap_get_message_by_uid): 
1382         We are getting mail in IMAP now!! whoo-hoo!. Stripped out the 
1383         filtering so messages may have some dot-stuffing, but the 
1384         filtering can always be added back in later when we know it 
1385         works and isn't the problem.
1386
1387 2000-06-21  Peter Williams  <peterw@curious-george.helixcode.com>
1388
1389         * providers/mbox/camel-mbox-folder.c (mbox_init): Use the basename
1390         of the mailbox so we don't get pathnames like ~/evolution/inbox///movemail.ibex
1391
1392 2000-06-21  Dan Winship  <danw@helixcode.com>
1393
1394         * camel-folder-summary.c (message_info_new): Set date_received
1395         based on the first (most recent) "Received" header.
1396
1397 2000-06-20  Dan Winship  <danw@helixcode.com>
1398
1399         * camel-mime-part.c (write_to_stream): flush the filter stream
1400         before unreffing it, so it will camel_mime_filter_complete.
1401
1402         * camel-stream-filter.c (camel_stream_filter_class_init): Fix a
1403         braino so camel_stream_flush works here.
1404
1405         * camel-stream-mem.c (stream_seek): Fix a bug that resulted in
1406         large attachments being silently dropped.
1407
1408         * providers/pop3/camel-pop3-store.c
1409         (camel_pop3_command_get_additional_data): Don't use g_strjoinv
1410         here, since it is O(n^2) on the length of the output string, and
1411         we can do O(n).
1412
1413         * camel-mime-part-utils.c
1414         (simple_data_wrapper_construct_from_parser): add a CRLF decoder
1415         after the QP/B64 decoder if it's text.
1416
1417 2000-06-20  Jeffrey Stedfast  <fejj@helixcode.com>
1418
1419         * providers/imap/camel-imap-folder.c (imap_get_summary): Only
1420         fetch the summary if the folder summary doesn't already exist.
1421         When the summary *does* exist, start fetching from 1, not 0.
1422         (imap_free_summary): Don't do anything here.
1423         (imap_finalize): Free the summary here instead of in
1424         imap_free_summary().
1425         (imap_set_message_flags): Implemented
1426         (imap_sync): Added code to set flags on messages that have had
1427         their flags changed (however I #if'd it out until we are more
1428         confidant in the IMAP code :)
1429         (imap_summary_get_by_uid): Now parese flags correctly.
1430         (imap_get_summary): Now parese flags correctly. Also correctly
1431         parses the UID correctly.
1432
1433         * camel-url.c (check_equal): No need to check s1 if s2 is NULL
1434         (camel_url_equal): Don't check the passwd component of the url.
1435
1436 2000-06-20  Dan Winship  <danw@helixcode.com>
1437
1438         * camel-folder-summary.c (camel_folder_summary_add): mark the
1439         message info with CAMEL_MESSAGE_FOLDER_FLAGGED if we change the
1440         uid, so the folder will know that it's dirty.
1441
1442 2000-06-20  Jeffrey Stedfast  <fejj@helixcode.com>
1443
1444         * providers/imap/camel-imap-store.c (camel_imap_command_extended): 
1445         Now returns the last line of data that the server sends back as
1446         well. This is needed for commands like SELECT (like Peter pointed
1447         out).
1448         (camel_imap_command): No longer checks for SELECT (no need)
1449
1450         * providers/imap/camel-imap-folder.c: Added namespace stuff
1451         which we will need later on...
1452         (imap_parse_subfolder_line): Convenience function for use in
1453         get_subfolder_names()
1454         (imap_get_subfolder_names): Updated. Also changed it to use LIST
1455         instead of LSUB (temporary change).
1456
1457 2000-06-19  Jeffrey Stedfast  <fejj@helixcode.com>
1458
1459         * providers/imap/camel-imap-folder.c (camel_imap_folder_init): Set
1460         summary equal to NULL.
1461         (imap_get_summary): Store the summary in the ImapFolder
1462         (imap_summary_get_by_uid): If we have a summary cache in the
1463         ImapFolder, first check to see if that message info is in the
1464         cached summary first, if not fetch it directly from the IMAP
1465         server and append it to the summary cache.
1466         (imap_get_message_flags): Don't free the message info that we get
1467         back from summary_get_by_uid as we don't want to be corrupting our
1468         cached summary.
1469
1470 2000-06-19  Peter Williams  <peterw@curious-george.helixcode.com>
1471
1472         * providers/imap/camel-imap-store.c (camel_imap_command{,_extended}): When
1473         SELECT'ing a folder for an IMAP command, use _extended to grab the entire
1474         response (before we just used camel_imap_command and missed the OK codes)
1475
1476 2000-06-18  Jeffrey Stedfast  <fejj@helixcode.com>
1477
1478         * providers/imap/camel-imap-folder.c (imap_summary_get_by_uid): 
1479         Now gets the message flags as it should.
1480         (imap_get_summary): Same as imap_summary_get_by_uid
1481         (imap_get_permanent_flags): Return the permanent flags stored
1482         on the folder.
1483         (imap_get_message_flags): Return message flags associated with
1484         given uid. Note: we may want to somehow cache summary info so
1485         that we don't have to keep querying the IMAP provider in
1486         imap_summary_get_by_uid().
1487
1488 2000-06-17  Jeffrey Stedfast  <fejj@helixcode.com>
1489
1490         * providers/imap/camel-imap-folder.c (imap_free_summary): We were
1491         leaking memory - but not anymore!
1492         (imap_get_summary): We now get the UIDs and the beginnings of the
1493         code to get the message flags as well.
1494
1495 2000-06-17  Dan Winship  <danw@helixcode.com>
1496
1497         * camel-mime-parser.c (folder_scan_header): Don't copy newlines
1498         into the parsed header text, and turn any number of tabs and
1499         spaces after a newline into a single space.
1500
1501 2000-06-17  Jeffrey Stedfast  <fejj@helixcode.com>
1502
1503         * providers/imap/camel-imap-folder.c (imap_init): Should now
1504         correctly do CAPABILITY.
1505
1506 2000-06-17  Dan Winship  <danw@helixcode.com>
1507
1508         * providers/mbox/camel-mbox-summary.c: Add some debugging printfs
1509         when rebulding summary to help figure out why people's summaries
1510         are always being rebuilt.
1511
1512 2000-06-17  Jeffrey Stedfast  <fejj@helixcode.com>
1513
1514         * providers/imap/camel-imap-folder.c (imap_search_by_expression):
1515         Began to implement, need to get information on how to
1516         deconstruct @expression into an IMAP search expression and
1517         parse the results.
1518         (imap_init): Now queries the IMAP provider for CAPABILITY to
1519         determine if SEARCH is implemented or not.
1520
1521         * providers/imap/imap.c: Removed - no longer a need to have
1522         this as an example for anyone interesting to help mecode IMAP
1523         support.
1524         
1525 2000-06-16  Jeffrey Stedfast  <fejj@helixcode.com>
1526
1527         * providers/imap/camel-imap-folder.c (imap_sync): Added code
1528         to expunge if called for (still need to finish coding this).
1529         (imap_get_uids): Implemented.
1530         (imap_get_summary): Found a way to get the date
1531         (imap_summary_get_by_uid): Same.
1532         (imap_free_summary): Implemented.
1533
1534         * string-utils.c (strstrcase): Fixed a compile warning
1535
1536         * providers/imap/camel-imap-summary.c: Removed - we don't
1537         need a CamelImapSummary structure.
1538
1539 2000-06-16  Dan Winship  <danw@helixcode.com>
1540
1541         Move flag handling from CamelMimeMessage to CamelFolder. This
1542         simplifies several flag-handling pieces of code in the mailer, and
1543         lets you change a message's flags without having to fetch the
1544         message body. It also means that fully-constructed
1545         CamelMimeMessages are now essentially constant, which will help
1546         simplify locking issues later since it means two threads
1547         interested in the same message can just work with separate copies
1548         of it.
1549
1550         * camel-mime-message.h (struct _CamelMimeMessage): Removed flags
1551         and user_flags (moved to summary). Removed expunged and
1552         message_number which were unused. Removed message_uid and folder
1553         which are no longer needed in the new scheme.
1554         (struct CamelMimeMessageClass): Removed message_changed signal and
1555         get/set_message_number methods.
1556
1557         * camel-mime-message.c: Updates for CamelMimeMessage changes.
1558         (camel_mime_message_get/set_flags,
1559         camel_mime_message_get/set_user_flag): Replaced with methods in
1560         CamelFolder.
1561         (camel_flag_get, camel_flag_set, camel_flag_list_size,
1562         camel_flag_list_free): Moved verbatim to camel-folder-summary.c
1563         
1564         * camel-folder.c (camel_folder_get/set_message_flags,
1565         camel_folder_get/set_message_user_flag): New methods (and
1566         corresponding useless default implementations)
1567         (camel_folder_class_init): add a message_changed signal
1568
1569         * camel-folder-summary.c (camel_flag_get, camel_flag_set,
1570         camel_flag_list_size, camel_flag_list_free): Moved here from
1571         camel-mime-message.c
1572
1573         * providers/mbox/camel-mbox-folder.c (message_changed): Removed.
1574         (mbox_get_message_flags, mbox_set_message_flags,
1575         mbox_get_message_user_flag, mbox_set_message_user_flag): Tweak
1576         summary bits as appropriate. (Functionality moved here from
1577         message_changed.)
1578         (mbox_get_message_by_uid): Update for CamelMimeMessage changes
1579         (less stuff to initialize).
1580
1581         * providers/imap/camel-imap-folder.c (message_changed): Remove
1582         this. It was just copied from the mbox provider and doesn't deal
1583         with the real IMAP flag stuff anyway. (So there's currently no
1584         flag support in the IMAP provider.)
1585         (imap_get_message_by_uid): Update for CamelMimeMessage changes.
1586
1587         * providers/vee/camel-vee-folder.c: (message_changed): Remove old
1588         one. Add a new one to listen for message_changed on each folder
1589         and re-emit message_changed signals that correspond to messages in
1590         the vfolder.
1591         (vee_get/set_message_flags, vee_get/set_message_user_flag): Proxy
1592         flag setting to the underlying real messages.
1593         (vee_append_message): Removed for now; there's no way to translate
1594         this into the new CamelMimeMessage/CamelFolder scheme, but (a)
1595         there's also no code which would ever call it and (b) we're
1596         probably going want a better interface than append_message for
1597         message drag and drop to work anyway. To be revisited.
1598
1599 2000-06-16  Dan Winship  <danw@helixcode.com>
1600
1601         * camel-mime-utils.c (rfc2047_decode_word): 
1602         * camel-mime-part-utils.c (simple_data_wrapper_construct_from_parser): 
1603         * camel-folder-summary.c (summary_build_content_info): 
1604         KLUDGE! Since neither ETable nor GtkHTML supports UTF-8 yet,
1605         output ISO-8859-1 instead, so Ettore can read his Italian mail. :)
1606         This will be reverted later.
1607
1608 2000-06-15  Jeffrey Stedfast  <fejj@helixcode.com>
1609
1610         * providers/imap/camel-imap-folder.c (imap_get_summary): Started to 
1611         implement - may want to use ENVELOPE instead of BODY.PEEK[HEADER]
1612         (imap_summary_get_by_uid): Started to code, I've got to find a way to 
1613         get the date in time_t format and also get the flags
1614
1615         * string-utils.c (strstrcase): Added this convenience function - I
1616         know about strcasestr() but it's not portable.
1617
1618 2000-06-15  Dan Winship  <danw@helixcode.com>
1619
1620         * camel-service.c: Remove camel_service_connect_with_url. (URLs
1621         must be specified when the service is requested from the session,
1622         so that there can only ever be one service for any URL.)
1623
1624         * camel-folder.c: (camel_folder_open, camel_folder_is_open,
1625         camel_folder_get_mode): Kill. Folders are now always open, and
1626         handle "closing" sorts of operations at sync or finalize time.
1627         (camel_folder_sync): renamed from camel_folder_close. Syncs state
1628         to the store but doesn't necessarily close/disconnect.
1629
1630         * providers/*/camel-*-folder.c: Merge "open" methods into "init"
1631         methods. Rename close to sync and update appropriately.
1632
1633         * providers/imap/camel-imap-store.c: Remove camel_imap_store_open
1634         and camel_imap_store_close, which should not have been copied from
1635         the POP provider (where the exist to work around limitations of
1636         the POP protocol).
1637
1638         * providers/mbox/camel-mbox-summary.c: fix a bug. (don't expunge
1639         deleted messages if called with expunge == FALSE)
1640         
1641         * providers/pop3/camel-pop3-store.c (connect_to_server): Check
1642         server for various interesting extensions.
1643
1644         * providers/pop3/camel-pop3-folder.c (get_uids): If the server
1645         supports UIDL, use real UIDs rather than fake ones.
1646         (etc): Map uids back to numbers appropriately
1647
1648         * providers/mbox/camel-mbox-folder.c (mbox_append_message): Fix to
1649         previous change: make sure the "seek" variable ends up with the
1650         value it should.
1651
1652         * providers/mbox/camel-mbox-summary.c (summary_rebuild): Update
1653         summary mtime as well as size.
1654
1655 2000-06-14  Dan Winship  <danw@helixcode.com>
1656
1657         * providers/mbox/camel-mbox-folder.c (mbox_append_message): if the
1658         mbox doesn't end with a '\n', write one before appending the new
1659         message.
1660
1661 2000-06-14  Jeffrey Stedfast  <fejj@helixcode.com>
1662
1663         * camel-mime-filter-crlf.c (filter): Updated the encoder to allocate 
1664         more memory (since we are also now adding dots). Also updated the
1665         decoder as we have found that it sometimes passes the end of the 
1666         buffer.
1667
1668         * providers/pop3/camel-pop3-folder.c (get_message_by_uid): Took out the
1669         filter code (we already filter in 
1670         camel_pop3_command_get_additional_data)
1671
1672         * camel-folder.c (init): Updated: a separator is now a char* rather 
1673         than a single char because IMAP can have a string for a directory 
1674         separator. Also, since IMAP does not begin with a directory separator,
1675         there is a new argument (path_begins_with_sep) which decides if a 
1676         directory should begin with a directory separator.
1677
1678         * providers/imap/camel-imap-store.c (imap_create): Since, on connect,
1679         Camel tries to create INBOX (which already exists on every IMAP 
1680         provider) we can return TRUE when the folder name is "INBOX".
1681
1682         * providers/vee/camel-vee-folder.c (vee_init): Updated.
1683
1684         * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Updated.
1685
1686         * providers/mbox/camel-mbox-store.c (get_folder): Updated.
1687
1688         * providers/mbox/camel-mbox-folder.c (mbox_init): Updated.
1689
1690         * providers/pop3/camel-pop3-folder.c (camel_pop3_folder_new): Updated.
1691
1692 2000-06-14  Dan Winship  <danw@helixcode.com>
1693
1694         * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_sync):
1695         Renamed from camel_mbox_summary_expunge. Takes a gboolean saying
1696         whether to expunge or just sync the mbox file. Change some
1697         g_errors to g_warning so we don't abort. Make the quick
1698         X-Evolution updating code lseek around correctly. Update the
1699         mbox mtime in the summary file even in the quick case.
1700
1701         * providers/mbox/camel-mbox-summary.h: make
1702         CAMEL_MESSAGE_FOLDER_NOXEV not conflict with
1703         CAMEL_MESSAGE_FOLDER_FLAGGED defined in camel-mime-message.h
1704
1705         * providers/mbox/camel-mbox-folder.c (mbox_close): call
1706         camel_mbox_summary_sync to save flag state if not expunging.
1707         (mbox_expunge): Update for camel_mbox_summary_expunge rename.
1708
1709 2000-06-13  Jeffrey Stedfast  <fejj@helixcode.com>
1710
1711         * providers/imap/camel-imap-store.c (camel_imap_store_open): 
1712         (camel_imap_store_close): Added.
1713         (camel_imap_command_extended): Fixed a segfault and updated
1714         to use camel_imap_status()
1715         (camel_imap_command): Updated to use camel_imap_status()
1716         (camel_imap_status): New convenience function for parsing
1717         the return status of an IMAP command
1718
1719 2000-06-12  Jeffrey Stedfast  <fejj@helixcode.com>
1720
1721         * providers/imap/camel-imap-folder.c (imap_get_message_by_uid): 
1722         Works like the POP fetch code, should work temporarily until
1723         we get around to coding it the way it "Should Be".
1724
1725         * providers/pop3/camel-pop3-folder.c (get_message_by_uid): Now uses
1726         the camel-mime-filter-crlf decoder when retrieving messages.
1727
1728         * camel-mime-filter-smtp.c: Deprecated.
1729
1730         * providers/smtp/camel-smtp-transport.c (smtp_data): Updated to use
1731         camel-mime-filter-crlf with my 'dot' extension in place of
1732         camel-mime-filter-smtp
1733
1734         * camel-mime-part.c (write_to_stream): Updated to reflect changes
1735         made to camel-mime-filter-crlf.c
1736
1737         * camel-mime-filter-crlf.c (filter): Modified to be able to
1738         encode/decode dots ("\n.\n"<->"\n..\n"). Also fixed the decoder
1739         so that it should no longer get caught in an infinite loop.
1740
1741 2000-06-12  Dan Winship  <danw@helixcode.com>
1742
1743         * providers/*/Makefile.am: don't pass a second (incorrect) -rpath
1744         in addition to the (correct) one automatically provided by
1745         automake.
1746
1747         * camel-mime-filter-crlf.c: New filter to do CRLF<->LF conversion.
1748         (Currently only tested in the LF->CRLF direction.)
1749
1750         * camel-mime-part.c (write_to_stream): if content-type is text,
1751         and it's QP or B64 encoded, pass through the CRLF filter before
1752         the other filter to satisfy the "canonical encoding" rules in the
1753         MIME spec.
1754
1755 2000-06-09  Dan Winship  <danw@helixcode.com>
1756
1757         * camel-session.c (camel_session_query_authenticator): Add another
1758         argument, "mode", which can be CAMEL_AUTHENTICATOR_ASK or
1759         CAMEL_AUTHENTICATOR_TELL, so callers can get the app to un-cache
1760         bad info.
1761
1762         * providers/pop3/camel-pop3-store.c (pop3_connect): uncache the
1763         password if it doesn't work.
1764
1765 2000-06-09  Jeffrey Stedfast  <fejj@helixcode.com>
1766
1767         * providers/imap/camel-imap-stream.c (stream_read): Updated to reflect
1768         changes made in camel-imap-store.c
1769
1770         * providers/imap/camel-imap-store.c (imap_create): No longer checks to
1771         make sure a folder doesn't already exists (as this is no longer needed)
1772         (camel_imap_command): Now takes a CamelFolder argument so it can detect
1773         whether or not it needs to SELECT a folder or not
1774         (camel_imap_command_extended): Same.
1775
1776         * providers/smtp/camel-smtp-transport.c (smtp_connect): Will now always
1777         send EHLO first, if that fails it will fall back on HELO.
1778         (esmtp_get_authtypes): Should now correctly parse authtypes.
1779
1780 2000-06-07  Jeffrey Stedfast  <fejj@helixcode.com>
1781
1782         * providers/imap/camel-imap-summary.c: Now builds (not that it's worth
1783         much yet).
1784         
1785         * providers/imap/camel-imap-folder.c (imap_get_uids): Now uses the 
1786         correct cast to a CamelImapMessageInfo structure (should get rid of 
1787         compile warnings).
1788
1789         * providers/imap/Makefile.am: Added rules to build 
1790         camel-imap-stream
1791         
1792         * providers/imap/camel-imap-store.c (get_folder): Update.
1793         Moved imap_create here.
1794
1795         * providers/imap/camel-imap-folder.c (delete_messages): Remove.
1796         (imap_create): Removed.
1797         (imap_delete): Removed.
1798         (imap_exists): Removed.
1799
1800         * providers/imap/camel-imap-stream.h: Added typedef's for the stream
1801
1802         * providers/imap/camel-imap-stream.c: Modified to build cleanly
1803
1804 2000-06-07  Not Zed  <NotZed@HelixCode.com>
1805
1806         * camel-mime-utils.c (header_msgid_decode_internal): Properly
1807         dereference warning/debug messages.
1808         (header_references_decode): Check we actually have msgid stuff
1809         before trying to decode it ...
1810
1811 2000-06-06  Jeffrey Stedfast  <fejj@helixcode.com>
1812
1813         * camel-imap-stream.[c,h]: Removed
1814
1815         * providers/imap/camel-imap-stream.[c,h]: Relocated to this
1816         location
1817
1818         * providers/imap/camel-imap-summary.c: Added
1819
1820 2000-06-06  Dan Winship  <danw@helixcode.com>
1821
1822         * camel-folder.c: Remove exists, create, delete. A CamelFolder
1823         now always references an existing folder. Remove delete_messages
1824         too since it wasn't being used. Add a "create" flag to
1825         get_subfolder saying whether or not to create the subfolder if it
1826         doesn't yet exist.
1827
1828         * camel-store.c (camel_store_get_folder): Add a "create" flag to
1829         say whether or not to create the folder if it doesn't yet exist.
1830         (camel_store_delete_folder): New method, moved from CamelFolder.
1831         (cache_folder, uncache_folder): Fix up a bit.
1832         (get_folder_name): Explain what this is for.
1833
1834         * providers/mbox/camel-mbox-folder.c: 
1835         * providers/mbox/camel-mbox-store.c: Update. Remove support for
1836         hierarchical folders to simplify this for now, since we're not
1837         using it, and it's not completely clear how they should work in an
1838         ELocalStorage world. Needs to be revisited.
1839
1840         * providers/pop3/camel-pop3-folder.c (delete_messages): Remove.
1841         * providers/pop3/camel-pop3-store.c (get_folder): Update.
1842
1843         * providers/vee/camel-vee-folder.c (exists): Remove.
1844         * providers/vee/camel-vee-store.c (vee_get_folder): Update.
1845
1846 2000-06-06  Jeffrey Stedfast  <fejj@helixcode.com>
1847
1848         * providers/imap/camel-imap-*.[c,h]: Started on getting 
1849         imap to build cleanly (tho some work has not been completed
1850         so it still won't build until camel-imap-summary is finished
1851         along with a few methods in camel-imap-folder)
1852
1853         * camel-stream.[c,h]: Changed the read and write method prototypes
1854         to return an ssize_t type rather than an int and also changed
1855         the 'number of bytes' to read or write to a size_t type
1856
1857         * camel-stream-fs.c: same as above
1858
1859         * camel-stream-mem.c: again, same as above
1860
1861         * camel-stream-buffer.c: same
1862
1863         * camel-imap-stream.[c,h]: Added this new stream, cache's previously 
1864         read data so each successive call will instead read from the cache
1865         
1866 2000-06-05  Dan Winship  <danw@helixcode.com>
1867
1868         * camel-mime-part.c (camel_mime_part_set_disposition): fix
1869         typo/braino (set "Content-Disposition", not "Content-Description")
1870         (camel_mime_part_set_filename): const poison
1871
1872 2000-06-02  Not Zed  <NotZed@HelixCode.com>
1873
1874         * camel-mime-utils.c (base64_encode_step): Ick, damn signs!  Fix a
1875         bug with sign extended bytes.
1876
1877         * camel-mime-filter-smtp.c (filter): Changed layout/logic slightly
1878         (to match From filter)
1879
1880 2000-06-02  Jeffrey Stedfast  <fejj@helixcode.com>
1881
1882         * camel-mime-filter-smtp.c (filter): Fixed the filter so that it 
1883         wouldn't insert garbage under certain conditions.
1884
1885 2000-06-02  Christopher James Lahey  <clahey@helixcode.com>
1886
1887         * camel-session.c: Don't ref the services in the cache.
1888
1889 2000-06-02  Jeffrey Stedfast  <fejj@helixcode.com>
1890
1891         * providers/smtp/camel-smtp-transport.c: Rearanged where debug
1892         fprintf statements we placed so that any data the server sends 
1893         back is printed out before an exception is set and the function
1894         returns.
1895
1896 2000-06-02  Not Zed  <NotZed@HelixCode.com>
1897
1898         * camel-mime-utils.c (header_decode_date): If we get a funny
1899         result, just throw it out.  Basically a fix for the one true
1900         broken TradeClient.
1901
1902 2000-06-01  Not Zed  <NotZed@HelixCode.com>
1903
1904         * camel-folder-summary.c (message_info_free): Free
1905         references/messsage id.
1906         (message_info_save): Save them.
1907         (message_info_load): Load them.
1908         (message_info_new): And get them from the new message.
1909         (CAMEL_FOLDER_SUMMARY_VERSION): Bumped for new changes.
1910
1911         * camel-folder-summary.h: Added references and messageid to
1912         summary.
1913
1914 2000-06-02  Christopher James Lahey  <clahey@helixcode.com>
1915
1916         * camel-session.c: Ref and unref objects in the service cache
1917         properly.
1918
1919         * camel-store.c: Ref the folder when returning it using
1920         lookup_folder.  Used the folder's full name for the key for the
1921         folder cache since that's used to uncache it.
1922
1923 2000-06-02  Dan Winship  <danw@helixcode.com>
1924
1925         Fun with purify.
1926
1927         * providers/pop3/camel-pop3-store.c (pop3_connect): free msg on
1928         success as well as failure.
1929         (camel_pop3_command_get_additional_data): free buf after reading
1930         the last line (".").
1931
1932         * providers/pop3/camel-pop3-folder.c (get_message_by_uid): free
1933         body data after creating the memstream from it (which will copy
1934         the data).
1935
1936         * providers/mbox/camel-mbox-folder.c (mbox_finalize): free summary
1937         and index paths.
1938
1939         * camel-data-wrapper.c (finalize): unref the stream, if it exists.
1940
1941 2000-06-01  Not Zed  <NotZed@HelixCode.com>
1942
1943         * camel-mime-part.c (construct_from_parser): For a message part,
1944         set the default content-type to message/rfc822.  Maybe needs to be
1945         done for multiparts too?
1946
1947 2000-05-31  Not Zed  <NotZed@HelixCode.com>
1948
1949         * camel-mime-message.c (construct_from_parser): Typo in assersion.
1950
1951         * camel-mime-parser.c (folder_scan_step): Use a default type of
1952         message/rfc822 for multipart/digest.  Bug Z192.
1953         (folder_scan_drop_step): Remove warning.
1954
1955 2000-05-30  Not Zed  <NotZed@HelixCode.com>
1956
1957         * providers/mbox/camel-mbox-folder.c (mbox_append_message): Init
1958         filter_from to NULL, for exception case.
1959         (mbox_get_message_by_uid): Cast off_t to long int for diagnostics.
1960
1961         * camel-url.c (camel_url_hash): Hash funciton for using camel
1962         url's as hash keys.
1963         (camel_url_equal): equal function for same.
1964
1965         * camel-session.c (camel_session_finalise): Free cached services.
1966         (camel_session_init): Init service cache.
1967         (service_cache_remove): destroy callback to remove a service from
1968         the cache.
1969
1970         * camel-store.c (get_folder_internal): Remove the extra ref of the
1971         folder.  That seems the right behaviour ...?
1972         (camel_store_get_type): Doh, actually call store init, so the
1973         cache works.
1974         (cache_folder): strdup the folder name!  no wonder it never found
1975         it again.
1976
1977 2000-05-30  Jeffrey Stedfast  <fejj@helixcode.com>
1978
1979         * providers/imap/camel-imap-folder.c: Implemented a few more
1980         methods like imap_append and 1 or 2 others
1981
1982 2000-05-29  Not Zed  <NotZed@HelixCode.com>
1983
1984         * camel-store.c (camel_store_init): Move it to here.  If this
1985         level is going to maintain it, it should set it up.  Lets see what
1986         caching folders breaks :(
1987
1988         * providers/pop3/camel-pop3-store.c (camel_pop3_store_init): Dont
1989         init folder cache here.
1990
1991         * providers/mbox/camel-mbox-summary.c
1992         (camel_mbox_summary_expunge): Make sure we copy messages which are
1993         still intact to the new folder.
1994         (camel_mbox_summary_expunge): Update the frompos as well when
1995         moving the content.
1996         (camel_mbox_summary_expunge): Remove some debug, and dont offset
1997         frompos?
1998
1999         * providers/vee/camel-vee-folder.c (vee_folder_build): Check the
2000         searched folder is open before trying to search it.
2001         (message_changed): Track changes to the source message in the
2002         summary.
2003         (folder_changed): Track folder changes, re-query the folder that
2004         changed, and cascade the changed event as well.
2005         (camel_vee_folder_finalise): Free subfolder and subfolder summary.
2006
2007 2000-05-29  Dan Winship  <danw@helixcode.com>
2008
2009         * camel-service.c (camel_service_new): Fix up some glib
2010         precondition stuff. Try to set the URL in camel_service_new before
2011         checking whether or not it's "empty" so that you can successfully
2012         set "sendmail:" as a URL.
2013
2014 2000-05-28  Dan Winship  <danw@helixcode.com>
2015
2016         * camel-provider.h: Add a domain field to CamelProvider, to say
2017         what kind of data it provides.
2018
2019         * providers/imap/camel-imap-provider.c: 
2020         * providers/mbox/camel-mbox-provider.c: 
2021         * providers/pop3/camel-pop3-provider.c: 
2022         * providers/sendmail/camel-sendmail-provider.c: 
2023         * providers/smtp/camel-smtp-provider.c: Set domain to "mail".
2024
2025         * providers/nntp/camel-nntp-provider.c: Set domain to "news".
2026
2027         * providers/vee/camel-vee-provider.c: Set domain to "vfolder". (So
2028         it doesn't end up being listed as a potential mail source in the
2029         mail config wizard.)
2030
2031         * providers/pop3/camel-pop3-store.c: Split apart password and APOP
2032         auth, since some servers seem to do both, but don't really.
2033         (connect_to_server): Renamed from try_connect. Now actually does
2034         the connection up to the point of checking the greeting for APOP
2035         support.
2036         (query_auth_types): Return APOP, if appropriate. Call
2037         pop3_disconnect after connect_to_server since we don't really want
2038         to be connected.
2039         (pop3_connect): Use connect_to_server rather than duplicating
2040         code. Fix a one-byte buffer overrun in the APOP code.
2041         (pop3_disconnect): Make this able to clean up after a partial
2042         connect.
2043         (connect_to_server): Remove port number from error message since
2044         it's not terribly useful and we were getting it from the wrong
2045         place anyway.
2046
2047         * camel-mime-utils.c (header_address_list_format_append): Use
2048         `foo@bar' rather than `"" <foo@bar>' for email addresses with no
2049         name component.
2050
2051 2000-05-27  Jeffrey Stedfast  <fejj@helixcode.com>
2052
2053         * providers/imap/camel-imap-store.c: Removed 
2054         camel_imap_command_get_additional_data() as it was
2055         completely useless, replaced with 
2056         camel_imap_command_extended() which may eventually replace
2057         camel_imap_command() as well.
2058
2059         * providers/imap/camel-imap-store.h: Modified to reflect
2060         changes made to camel-imap-store.c
2061
2062         * providers/imap/camel-imap-folder.c: Wrote the first of many
2063         methods: camel_imap_init(), imap_open(), imap_expunge(), 
2064         imap_get_message_count(), and imap_get_subfolder_names()
2065
2066 2000-05-26  Dan Winship  <danw@helixcode.com>
2067
2068         * camel-multipart.c (camel_multipart_init): Don't set a default
2069         boundary. Require the caller to do that.
2070         (set_boundary): if boundary is NULL, generate a "random" boundary.
2071
2072         * camel-mime-part-utils.c
2073         (camel_mime_part_construct_content_from_parser): Add a call to
2074         camel_multipart_set_boundary after creating a new multipart.
2075
2076 2000-05-25  Jeffrey Stedfast  <fejj@helixcode.com>
2077
2078         * providers/imap/camel-imap-store.c (try_connect): Removed
2079         Exception code - Pop doesn't seem to set exceptions
2080
2081         * providers/imap/camel-imap-folder.c: Initial code, mostly
2082         just a template for future code
2083
2084         * providers/imap/imap.[c,h]: Source code from my personal
2085         mailer - for reference only!
2086
2087 2000-05-25  NotZed  <NotZed@HelixCode.com>
2088
2089         * camel-mime-part-utils.c
2090         (camel_mime_part_construct_content_from_parser): Replace simple
2091         data wrapper here too, oops.
2092
2093         * Makefile.am (libcamel_la_SOURCES): Removed
2094         camel-simple-data-wrapper again.  Less code to maintain == better
2095         code.
2096         
2097         * camel-data-wrapper.c (construct_from_stream): Fixes for bug
2098         where text attachments dont work.  Made data-wrapper concrete for
2099         the second time.
2100
2101 2000-05-23  NotZed  <NotZed@HelixCode.com>
2102
2103         * providers/vee/camel-vee-folder.c (vee_folder_build_folder):
2104         Update the vfolder details for a single folder.
2105
2106 2000-05-25  Jeffrey Stedfast  <fejj@helixcode.com>
2107
2108         * providers/smtp/camel-smtp-transport.c (_send_to): Took out code
2109         that had been there to reconnect to the server if it was not
2110         already connected - Mailer code was fixed so that this should not
2111         be needed.
2112
2113         * providers/imap/camel-imap-store.[c,h]: Initial code.
2114
2115 2000-05-24  Dan Winship  <danw@helixcode.com>
2116
2117         * camel.h: Re-add camel-simple-data-wrapper.h, which was removed
2118         for some reason.
2119
2120 2000-05-24  Jeffrey Stedfast  <fejj@helixcode.com>
2121
2122         * providers/smtp/camel-smtp-transport.[c,h]: Moved global
2123         variables into struct CamelSmtpTransport to make SMTP
2124         thread-safe
2125
2126         * providers/imap/camel-imap-*.h: Stolen from Mbox. Rough structure
2127         for Imap.
2128         
2129 2000-05-23  Jeffrey Stedfast  <fejj@helixcode.com>
2130
2131         * providers/imap: Added some initial code to the camel tree
2132         for IMAPv4
2133
2134         * providers/imap/.cvsignore: Added to repository
2135
2136         * providers/smtp/camel-smtp-transport.c: Added debug fprintf's
2137         so that testers can provide more information. Tested with simple
2138         messages and a reply to the hello@helixcode.com default message
2139         but should really be tested more.
2140         (smtp_data): Fixed to use data_wrapper_write_to_stream.
2141
2142         * camel-mime-filter-smtp.c (filter): Modified to escape all lines
2143         beginning with a '.' and to place a \r before each \n if one did
2144         not previously exist. Removed code to escape "From " as it was
2145         found to not be needed for SMTP.
2146
2147 2000-05-22  Jeffrey Stedfast  <fejj@helixcode.com>
2148
2149         * providers/smtp/camel-smtp-transport.c (smtp_data): Fixed the 
2150         filtered stream. Fixes for stream changes, updated to use 
2151         camel-mime-filter-smtp.
2152
2153         * Makefile.am: Added camel-mime-filter-smtp.c
2154         
2155         * camel-mime-filter-smtp.[c,h]: Added to camel tree
2156         Smtp filter used to change \n into \r\n, escape lone dots,
2157         and escape "From "'s.
2158
2159 2000-05-19  NotZed  <NotZed@HelixCode.com>
2160
2161         * camel-simple-data-wrapper.c (construct_from_stream): If we
2162         already have been constructed, unref our content.
2163         (write_to_stream): Check we've been constructued, and change for
2164         stream api changes.
2165
2166         * camel-mime-parser.c: Removed exception stuff.
2167
2168         * md5-utils.c (md5_get_digest_from_stream): repaired.
2169
2170         * camel-mime-message.c: Remove exception from write_to_stream, and
2171         fix, and fix formatting.
2172
2173         * providers/sendmail/camel-sendmail-transport.c (_send_internal):
2174         Fix for stream changes.
2175
2176         * providers/pop3/camel-pop3-store.c (camel_pop3_command): Fixes
2177         for stream changes.
2178
2179         * providers/mbox/camel-mbox-folder.c, and elsewhere, fix all
2180         stream api changes.
2181         (mbox_append_message): Use stream_close() now its back.
2182         (mbox_append_message): unref the from filter.
2183
2184         * camel-stream-mem.c: And here.
2185
2186         * camel-stream-fs.[ch]: Here too.
2187
2188         * camel-stream-filter.c: Likewise.  This is getting tedious.
2189
2190         * camel-stream-buffer.c (stream_write): Fix a few little problems.
2191         (stream_close): Reimplement.
2192         (camel_stream_buffer_read_line): Slightly more efficient version,
2193         that also only allocates the right amount of memory for strings.
2194
2195         * camel-seekable-substream.c: Likewise.
2196
2197         * camel-seekable-stream.[ch]: Remove exceptions, fix formatting,
2198         changes for stream (re)fixes.  set_bounds returns an error.
2199
2200         * camel-stream.[ch]: Remove exceptions.  Make flush and reset return
2201         an error code, repair all the screwed up formatting, and put back
2202         close.
2203
2204         * camel-mime-part-utils.c
2205         (camel_mime_part_construct_content_from_parser): And here.
2206
2207         * camel-mime-part.c (camel_mime_part_set_content): And this too.
2208         (write_to_stream): Fixed for stream changes.
2209
2210         * camel.h: Fixed.
2211
2212         * providers/vee/camel-vee-folder.c (vee_search_by_expression):
2213         Implement.  Performs an intersection of the two searches.
2214         (camel_vee_folder_finalise): Unref search folders.
2215         (vee_append_message): Implement append.
2216
2217 2000-05-18  Dan Winship  <danw@helixcode.com>
2218
2219         * camel-folder.c: remove message_number_capability and require uid
2220         capatibility.
2221         (camel_folder_list_subfolders, camel_folder_get_uid_list,
2222         camel_folder_get_subfolder_info, camel_folder_get_message_info):
2223         removed
2224         (camel_folder_get_subfolder_names,
2225         camel_folder_free_subfolder_names): new subfolder interfaces.
2226         (camel_folder_get_uids, camel_folder_free_uids): new uid
2227         interfaces
2228         (camel_folder_get_summary, camel_folder_free_summary): new summary
2229         interfaces
2230
2231         * providers/mbox/camel-mbox-folder.c,
2232         * providers/nntp/camel-nntp-folder.c:
2233         * providers/vee/camel-vee-folder.c: Update for changes
2234
2235         * providers/pop3/camel-pop3-folder.c: Implement get_uids, update
2236         for other changes.
2237
2238 2000-05-18  NotZed  <NotZed@HelixCode.com>
2239
2240         * providers/vee/camel-vee-folder.c: Guess!
2241
2242         * camel-folder-search.c (search_user_flag): Implement user_flag
2243         search term.
2244
2245         * camel-folder-search.h: Added user_flag search capability
2246         (user-flag "blah")
2247
2248         * providers/mbox/camel-mbox-folder.c (mbox_init): Set USER flag in
2249         permanent flags for the folder.
2250
2251 2000-05-17  Dan Winship  <danw@helixcode.com>
2252
2253         * camel-folder.c: Remove unused async open/close and
2254         copy_message_to functions.
2255         Rename functions without initial _. Fix glib preconditions and
2256         gtk-doc comments.
2257
2258 2000-05-17  Dan Winship  <danw@helixcode.com>
2259
2260         * camel-data-wrapper.c: remove get/set_output_stream operations.
2261         They're redundant with write_to_stream, and CamelMimePart and
2262         CamelMimeMessage only implement the latter, meaning that trying to
2263         get_output_stream on a CamelMimeMessage that was built from pieces
2264         rather than being parsed from a stream doesn't work. Anything that
2265         uses get_output_stream can be rewritten to use write_to_stream, so
2266         we'll standardize on that.
2267         (camel_data_wrapper_new): remove this: CamelDataWrapper is
2268         supposed to be an abstract class.
2269         (write_to_stream): remove default implementation. (Moved to
2270         CamelSimpleDataWrapper)
2271         
2272         * camel-simple-data-wrapper.c: resurrect, although it's not really
2273         the same thing it was before. A simple data wrapper, which is
2274         backed by a CamelStream.
2275
2276         * camel-mime-part-utils.c
2277         (simple_data_wrapper_construct_from_parser): Use
2278         construct_from_stream rather than set_output_stream.
2279         (camel_mime_part_construct_content_from_parser): Change
2280         camel_data_wrapper_new to camel_simple_data_wrapper_new.
2281
2282         * camel-mime-part.c (camel_mime_part_set_content): Change
2283         camel_data_wrapper_new to camel_simple_data_wrapper_new.
2284         
2285
2286 2000-05-17  Darin Adler  <darin@eazel.com>
2287
2288         * camel-folder-summary.c: (message_info_load):
2289         Quick fix to get it to compile. I hope I don't get into trouble.
2290
2291 2000-05-17  Dan Winship  <danw@helixcode.com>
2292
2293         * camel.h: Don't include the no-longer-distributed
2294         possibly-to-be-removed headers.
2295
2296         * providers/smtp/camel-smtp-transport.c
2297         (smtp_get_email_addr_from_text): fix an off-by-one error in
2298         address parsing
2299         (smtp_data): use camel_data_wrapper_get_output_stream rather than
2300         data_wrapper->output_stream
2301
2302 2000-05-17  NotZed  <NotZed@HelixCode.com>
2303
2304         * providers/mbox/camel-mbox-folder.c (message_changed): Snoop
2305         changes to user flags on the message into the summary as well.
2306
2307         * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_init):
2308         Changed version init to include the parent class version info
2309         (i.e. add it not overwrite it).
2310
2311         * camel-folder-summary.c (message_info_new): Initialise user_flags
2312         to empty.
2313         (message_info_load): And load user flags.
2314         (message_info_save): And save user flags.
2315         (message_info_free): And free them.
2316         (CAMEL_FOLDER_SUMMARY_VERSION): Bumped file revision.
2317
2318         * camel-folder-summary.h: Added user-flags to summary.
2319
2320         * camel-mime-message.c (camel_mime_message_set_user_flag): Dont
2321         use a hashtable for user flags.
2322         (camel_mime_message_get_user_flag): And changed here too.
2323         (camel_flag_get): New interface to get a flag from a flag
2324         list.  Flag lists are easier to work with than hash tables, and
2325         save memory too.
2326         (camel_flag_set): And set.
2327         (camel_flag_list_free): And free.
2328         (free_key_only): Discard.
2329         (finalize): Remove the flag list.
2330
2331 2000-05-17  Jeffrey Stedfast  <fejj@stampede.org>
2332
2333         * providers/smtp/camel-smtp-transport.c: (smtp_helo): Error
2334         checking on gethostbyaddr() eliminating a possible segfault.
2335
2336 2000-05-16  NotZed  <NotZed@HelixCode.com>
2337
2338         * providers/mbox/camel-mbox-folder.c (mbox_delete_message_by_uid):
2339         Implement.
2340
2341 2000-05-12  NotZed  <NotZed@HelixCode.com>
2342
2343         * camel-movemail.c (camel_movemail): Open the destination with
2344         O_APPEND, so we dont blow away a partially transferred mbox.
2345         (camel_movemail): Loop if we get errno=INTR, and not fail.
2346
2347 2000-05-11  NotZed  <NotZed@HelixCode.com>
2348
2349         * providers/mbox/camel-mbox-summary.c (summary_rebuild): Update
2350         the summarised file size, if everything went ok.
2351         (camel_mbox_summary_expunge): Clear header flags after updating.
2352
2353 2000-05-16  Chris Toshok  <toshok@helixcode.com>
2354
2355         * providers/nntp/camel-nntp-folder.c:
2356         * providers/nntp/camel-nntp-folder.h:
2357         * providers/nntp/camel-nntp-provider.c: 
2358         * providers/nntp/camel-nntp-store.c: 
2359         * providers/nntp/camel-nntp-utils.c: 
2360         * providers/nntp/camel-nntp-utils.h: 
2361         get things working with new camel summary stuff.
2362
2363         * providers/nntp/camel-nntp-summary.c: 
2364         * providers/nntp/camel-nntp-summary.h: 
2365         removed files since camel-folder-summary does all we need.
2366
2367 2000-05-15  Jeffrey Stedfast  <fejj@stampede.org>
2368
2369         * providers/smtp/camel-smtp-transport.c: Added some preliminary
2370         AUTH support.
2371
2372 2000-05-15  Dan Winship  <danw@helixcode.com>
2373
2374         * camel-folder.h: Remove camel_folder_get_summary, which no longer
2375         exists.
2376
2377 2000-05-11  Dan Winship  <danw@helixcode.com>
2378
2379         * Makefile.am: remove some cruft that we're not currently using.
2380
2381         * camel-stream-mem.c (camel_stream_mem_new_with_buffer): Change
2382         to match prototype (size_t vs unsigned int) so it works on 64-bit
2383         machines. Noted by msw.
2384
2385 2000-05-11  NotZed  <NotZed@HelixCode.com>
2386
2387         * providers/mbox/camel-mbox-folder.c (message_changed): Indicate
2388         the summary changed also.
2389
2390 2000-05-11  Jeffrey Stedfast  <fejj@stampede.org>
2391
2392         * providers/smtp/camel-smtp-transport.c: (smtp_helo): 
2393         Updated to more closely comply with RFC 821 standards
2394
2395 2000-05-11  NotZed  <NotZed@HelixCode.com>
2396
2397         * camel-mime-part.c (write_to_stream): Unref the filter after
2398         adding it to the filtering stream.
2399
2400         * providers/mbox/camel-mbox-summary.c
2401         (camel_mbox_summary_finalise): Free the folder path.
2402         (camel_mbox_summary_update): Also save summary when done.
2403         (camel_mbox_summary_expunge): Unindex items when deleting them.
2404         (camel_mbox_summary_expunge): Save the index as well as the
2405         summary.
2406
2407         * camel-folder-summary.c (camel_folder_summary_finalise): Free the
2408         summary path.
2409         (camel_folder_summary_touch): New function, indicate the summary
2410         info changed.
2411         (camel_folder_summary_remove): Dirty here.
2412
2413         * camel-internet-address.c (internet_decode): Free multiple entry
2414         addresses properly.
2415
2416         * camel-mime-utils.c (header_decode_mailbox): Plugged another
2417         memleak, free text after converting it.
2418         (header_decode_addrspec): More leaks plugged.
2419
2420         * camel-mime-message.c (finalize): Free message_uid.
2421         (finalize): Free the recipients hashtable.
2422
2423 2000-05-11    <notzed@helixcode.com>
2424
2425         * camel-folder-summary.c (camel_folder_summary_finalise): Free
2426         summary items and charset filters.
2427
2428 2000-05-10    <notzed@helixcode.com>
2429
2430         * camel-folder-summary.c (camel_folder_summary_finalise): Don't
2431         free stuff in p, after we've free'd p.
2432
2433         * providers/mbox/camel-mbox-folder.c (mbox_append_message): Unref
2434         the stream we created for appending.
2435
2436 2000-05-10  Jeffrey Stedfast  <fejj@stampede.org>
2437
2438         * providers/smtp/camel-smtp-transport.c: (camel_smtp_transport_class_init):
2439         Added initialization for service_class
2440
2441 2000-05-10  Dan Winship  <danw@helixcode.com>
2442
2443         * camel-multipart.c (write_to_stream): fix a stupid typo. Thank
2444         you, C.
2445
2446         * camel-mime-part.c (write_to_stream): don't ref the stream before
2447         wrapper a filter around it, since nothing will ever unref it.
2448
2449 2000-05-10  Christopher James Lahey  <clahey@helixcode.com>
2450
2451         * Makefile.am: Added camel-types.h, camel-folder-pt-proxy.h, and
2452         camel-thread-proxy.h.
2453
2454 2000-05-09  Dan Winship  <danw@helixcode.com>
2455
2456         * providers/sendmail/camel-sendmail-transport.c (_send_internal):
2457         Bleah. Can't fsync a pipe. As a quick kludge, just don't
2458         stream_flush it. The right fix will require bringing back
2459         stream_close though.
2460
2461 2000-05-09  Jeffrey Stedfast  <fejj@stampede.org>
2462         * camel-internet-address.[c,h]: Undid my changes (moved
2463         struct _address back into came-internet-address.c)
2464         * providers/smtp/camel-smtp-transport.c: (_send): changed
2465         from using it's own address manipulation (using struct _address)
2466         to using camel_internet_address_get(). Also some format changes
2467         to keep consistant with the rest of Camel
2468
2469 2000-05-09  Jeffrey Stedfast  <fejj@stampede.org>
2470
2471         * camel-internet-address.[c,h]: Moved struct _address from
2472         camel-internet-address.c to camel-internet-address.h
2473         (hopefully this doesn't break anything...)
2474         * providers/smtp/camel-smtp-transport.c: (_send): now
2475         populates the recipient list with To, Cc, and Bcc addresses.
2476         Should now be able to use this module.
2477
2478 2000-05-09  Dan Winship  <danw@helixcode.com>
2479
2480         * providers/mbox/camel-mbox-folder.c (mbox_get_message_by_uid):
2481         one more refcounting fix I missed before.
2482
2483 2000-05-08  Jeffrey Stedfast  <fejj@stampede.org>
2484
2485         * providers/smtp/camel-smtp-transport.c: no longer frees memory it
2486         shouldn't, updated to reflect camel-stream changes involving
2487         CamelException (perhaps it should use a different CamelException
2488         variable than is passed to the camel smtp module?)
2489
2490 2000-05-08  Dan Winship  <danw@helixcode.com>
2491
2492         * camel-stream.c (camel_stream_read, camel_stream_write,
2493         camel_stream_flush, camel_stream_reset, camel_stream_printf,
2494         camel_stream_write_to_stream): Use CamelException to signal
2495         failure.
2496         (camel_stream_write_strings): Remove. camel_stream_printf is more
2497         useful in most of the places that used this.
2498         (camel_stream_write_string): Change from macro to function to
2499         prevent problems with double-evaluation.
2500
2501         * camel-seekable-stream.c (camel_seekable_stream_seek,
2502         camel_seekable_stream_set_bounds): Use CamelException.
2503         (reset): Update.
2504
2505         * camel-seekable-substream.c, camel-stream-buffer.c,
2506         camel-stream-filter.c, camel-stream-fs.c, camel-stream-mem.c:
2507         Update.
2508
2509         * camel-stream-fs.c: Remove the virtual init functions and move
2510         the code into the creator functions. Add CamelExceptions to
2511         creation functions that could fail.
2512
2513         * camel-data-wrapper.c (camel_data_wrapper_write_to_stream): Use
2514         CamelException.
2515         * camel-mime-message.c, camel-mime-part.c, camel-multipart.c
2516         (write_to_stream): Update.
2517
2518         * camel-mime-parser.c: add an exception to the mime parser private
2519         data and pass that to stream functions as needed.
2520         
2521         * gmime-content-field.c, md5-utils.c: Update (badly) for stream
2522         changes.
2523         
2524         * camel-exception.h (camel_exception_is_set): convenience macro.
2525
2526         * providers/Makefile.am: disable SMTP for now
2527
2528         * providers/mbox/camel-mbox-folder.c (mbox_append_message): Pass
2529         CamelException to the functions that now need it. Check the
2530         exception after calling camel_stream_flush, and fail if it fails.
2531         (mbox_get_message_by_uid): More updates.
2532
2533         * providers/pop/camel-pop3-folder.c,
2534         providers/pop/camel-pop3-store.c,
2535         providers/sendmail/camel-sendmail/transport.c: Update.
2536
2537
2538 2000-05-08  NotZed  <NotZed@HelixCode.com>
2539
2540         * camel-mime-message.c (process_header): Format From and Reply-To
2541         to at least a decoded string.  Should probably store them as an
2542         camelinternetaddress.
2543
2544         * Merged NEW_SUMMARY branch back to trunk, and resolved conflicts.
2545         
2546         * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_update):
2547         Return status.
2548         (camel_mbox_summary_expunge): Force an update of the summary
2549         before we do anything.
2550         (camel_mbox_summary_expunge): Build new xev line in xevnew, and
2551         free that, and consify xev.
2552         (camel_mbox_summary_load): If we are rebuilding from scratch, make
2553         sure we clear the summary content.
2554
2555         * camel-stream-filter.c (do_close): We NEED a stream close.
2556
2557 2000-05-07  Dan Winship  <danw@helixcode.com>
2558
2559         Make camel not leak like a sieve.
2560
2561         * camel-object.c: New subclass of GtkObject which is now the base
2562         of the Camel object hierarchy. Currently the only difference
2563         between CamelObject and GtkObject is that CamelObjects don't start
2564         out floating.
2565
2566         * *.h: Move a bunch of typedefs to camel-types.h. Standardize on
2567         using <camel/foo.h> in header files rather than <foo.h>, "foo.h",
2568         or "camel/foo.h". Remove some unneeded includes.
2569
2570         * camel-address.c, camel-data-wrapper.c, camel-folder-search.c,
2571         camel-folder-summary.c, camel-folder.c, camel-mime-filter.c,
2572         camel-mime-parser.c, camel-service.c, camel-session.c,
2573         camel-stream.c: These are now subclasses of CamelObject.
2574
2575         * camel-data-wrapper.c (set_output_stream):
2576         * camel-medium.c (set_content_object):
2577         * camel-seekable-substream.c
2578         (init_with_seekable_stream_and_bounds):
2579         * providers/mbox/camel-mbox-folder.c (mbox_get_message_by_uid): 
2580         remove gtk_object_sink calls.
2581
2582         * camel-stream-buffer.c (init_vbuf): 
2583         * camel-stream-filter.c (camel_stream_filter_new_with_stream):
2584         ref the original stream.
2585
2586         * camel-folder-summary.c (camel_folder_summary_finalise): unref
2587         the filters when finalizing.
2588
2589         * camel-mime-part-utils.c
2590         (simple_data_wrapper_construct_from_parser,
2591         camel_mime_part_construct_content_from_parser):
2592         * camel-mime-part.c (camel_mime_part_set_content): Unref objects
2593         that are created only to be handed off to other objects. If
2594         they're going to be needed later, they will have been additionally
2595         ref'ed by the object that needs them.
2596
2597         * providers/pop3/camel-pop3-folder.c (get_message_by_number):
2598         unref the message stream after creating the data from it.
2599
2600         * camel-stream.c, camel-stream-buffer.c, camel-stream-filter.c,
2601         camel-stream-fs.c, camel-stream-mem.c: Remove camel_stream_close,
2602         since its semantics are dubious (what happens when you close a
2603         stream other people still have references on?).
2604
2605         * providers/nntp/camel-nntp-store.c:
2606         * providers/smtp/camel-smtp-transport.c:
2607         * providers/pop3/camel-pop3-store.c:
2608         replace camel_stream_close calls with gtk_object_unref.
2609
2610         * providers/mbox/camel-mbox-folder.c:
2611         * providers/nntp/camel-nntp-folder.c:
2612         * providers/sendmail/camel-sendmail-transport.c:
2613         replace camel_stream_close with camel_stream_flush +
2614         gtk_object_unref
2615
2616 2000-05-06  Dan Winship  <danw@helixcode.com>
2617
2618         * providers/pop3/camel-pop3-store.c (query_auth_types): A machine
2619         which serves neither POP nor KPOP is not a POP server.
2620
2621         * providers/smtp/camel-smtp-provider.c: Note in the description
2622         that this provider is not yet tested.
2623
2624 2000-05-08    <notzed@helixcode.com>
2625
2626         * camel-mime-part.c (write_to_stream): Free the filter stream when
2627         done.
2628
2629         * camel-mime-parser.c (folder_seek): Make sure we add the \n
2630         terminal when we seek as well (frob!).
2631
2632         * camel-mime-utils.c (header_decode_addrspec): Plug minor memleak.
2633
2634         * camel-mime-part.c (finalize): Free header tables once finished.
2635
2636         * camel-folder-summary.c (camel_folder_summary_remove): Dont try
2637         to access info after its free'd.
2638
2639 2000-05-07  NotZed  <NotZed@HelixCode.com>
2640
2641         * camel-mime-part.c (write_to_stream): Apply encoding to content
2642         part, when writing to a stream *sigh*.
2643
2644         * camel-stream-filter.c (do_write): implement write for the
2645         filtering stream.  Writes shouldn't be mixed with reads.
2646         (do_flush): Implemented flush.  Again write/flush shouldn't be
2647         mixed with reads.  Only flushes if the last op was write.
2648         (do_close): Force flush on close.
2649
2650         * camel-mime-filter.c (filter_run): Oops, make sure we include the
2651         backlen in the total length before passing onto the filter.
2652
2653         * camel-mime-filter-from.c: New filter, munges 'From ' lines into
2654         '>From ', for mbox.
2655
2656         * camel-mime-parser.c (camel_mime_parser_header_remove): New
2657         function to remove the parser's raw header, rather than
2658         manipulating the header directly (wich doesn't work with
2659         mempools).
2660
2661         * camel-mime-utils.c (header_address_list_clear): Fixed some
2662         broken(tm) logic, which would leak entries on multivalued lists.
2663
2664         * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_load):
2665         Use ibex_save() to save the ibex.  Makes a big difference to
2666         startup times for very large mailboxes.
2667         (camel_mbox_summary_expunge): Dum de dum, reimplemented.  Designed
2668         to be much more robust, and to stop immediately if anything awry
2669         happens.
2670         (copy_block): Utility function to copy n bytes from one fd to
2671         another.
2672         (header_write): Utility function to write out raw headers to an
2673         fd.
2674         (camel_mbox_summary_update): Incremental summary updater.
2675
2676         * providers/mbox/camel-mbox-folder.c (mbox_get_message_by_uid):
2677         Dont unref the stream, because of the broken(tm) ref model of gtk
2678         widget that for some odd reason is being perpetuated in camel.  
2679         (mbox_expunge): Reenable expunge again.
2680         (mbox_append_message): Removed the optimised mbox append.  If its
2681         an issue, it can go back later.  Cleaned up a lot, checks error
2682         returns, and automagically translates 'From ' into '>From' as
2683         necessary.
2684
2685 2000-05-07    <notzed@helixcode.com>
2686
2687         * camel-mime-filter.c (filter_run): Oops, forgot to add the
2688         backlen to the pre-buffer (*poof*).
2689
2690 2000-05-07  NotZed  <NotZed@HelixCode.com>
2691
2692         * camel-mime-message.c (construct_from_parser): Allow
2693         HSCAN_FROM_END to terminate the processing of a message.
2694
2695         * camel-folder-summary.c (perform_content_info_load): Ick, dont
2696         try and append a node onto its own list.
2697         (camel_folder_summary_clear): Actually clear the indexes after
2698         we've removed the messages.
2699         (camel_folder_summary_clear): Set dirty if it changes.
2700         (camel_folder_summary_load): Clear dirty.
2701         (camel_folder_summary_save): Only save if dirty.
2702
2703         * providers/mbox/camel-mbox-summary.c (summary_header_load): Oops,
2704         remember to call that parent class first ...
2705         (summary_header_save): Here too.
2706         (camel_mbox_summary_load): Do more checking to verify the index
2707         contents as well as teh summary contents, against the mbox
2708         contents.
2709         (camel_mbox_summary_load): Removed some fo that checking, it needs
2710         more code to work reliably.
2711
2712 2000-05-07    <notzed@helixcode.com>
2713
2714         * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_load):
2715         Set the size and mtime of the mbox we indexed once done.
2716
2717         * camel-folder-summary.c (camel_folder_summary_set_index): Dont
2718         write the index if it changes - let the claler fix it (uh, kind of
2719         impacts performance).
2720         (camel_folder_summary_load): close in.
2721
2722         * camel-folder-summary.c (summary_format_string): Check header
2723         exists before trying to strip its leading spaces.
2724
2725 2000-05-06  NotZed  <NotZed@HelixCode.com>
2726
2727         * camel-folder.h: Removed summary info from here, and include
2728         camel-folder-summary.h as well.
2729         
2730         * camel-mime-parser.c (camel_mime_parser_step): Allow it to accept
2731         a NULL databuffer.
2732
2733         * providers/mbox/camel-mbox-summary.c: Totally new file, now
2734         subclasses camel-folder-summary.
2735
2736         * camel-folder-summary.c (message_info_load): Load the uid as a
2737         string.
2738         (message_info_save): And save too.
2739         (camel_folder_summary_clear): New function, clears the contents of
2740         the summary.
2741
2742         * providers/mbox/camel-mbox-folder.c: Fixes for summary changes.
2743         (mbox_get_message_by_uid): Completely redone.  Now cross-checks
2744         the summary information to make sure we get a real message.
2745         (mbox_append_message): Disabled the copy version of append for
2746         now.
2747         (mbox_expunge): Temporarily disabled the expunge function, until
2748         it is put back in camel-mbox-summary.c
2749
2750 2000-05-05  NotZed  <NotZed@HelixCode.com>
2751
2752         * camel-folder-summary.c: And same here ...
2753         (camel_folder_summary_encode_fixed_int32): Ugh, fwrite doesn't
2754         return -1 on error ..
2755         (camel_folder_summary_decode_fixed_int32): Neither deos fread.
2756         (camel_folder_summary_encode_token): Fix here too.
2757         (summary_build_content_info): Use start-headers to get the pos of
2758         the message, not parser_tell(), which might not be what we
2759         expected because of parser_unstep().
2760         (camel_folder_summary_encode_token): Use bserch() to tokenise the
2761         values, rather than a linear search.
2762
2763         * camel-mime-utils.c: Defined out some memory profiling stuff I
2764         left there by mistake.
2765         (header_decode_mailbox): Dont try to append the word part of a
2766         local address if we ran out of words.
2767
2768         * camel-mime-parser.c (folder_scan_content): Apply the fix from
2769         the header scanner to here too.
2770         (folder_scan_header): Only check for end of header if we have
2771         space for it (didn't end the read with a newline)
2772         (folder_scan_header): inptr is the only real thing we need
2773         registerised for performance.  Try to help the compiler be smart
2774         about it ..
2775         (folder_scan_header): Simplified the save header case a tad.
2776
2777         Commented out some memory profiling stuff.
2778
2779 2000-05-05    <notzed@helixcode.com>
2780
2781         * camel-mime-utils.c (header_decode_mailbox): Plug a memory leak.
2782         (header_decode_text): Fixed memory leaks with g_string_append().
2783         (header_encode_string): And here too, and a few other places.  The
2784         glib api is so awful ...
2785         (header_content_type_decode): More memory leaks.
2786
2787 2000-05-05    <notzed@helixcode.com>
2788
2789         * camel-mime-parser.c (folder_scan_init_with_fd): Make sure we
2790         init the end of buffer sentinal!
2791         (folder_scan_init_with_stream): And here too ...
2792
2793 2000-05-04  NotZed  <NotZed@HelixCode.com>
2794
2795         * providers/mbox/camel-mbox-folder.c (summary_get_message_info):
2796         Maxcount is minimum of the max and the requested count, not the
2797         maximum :)
2798
2799         * camel-mime-parser.c (folder_scan_content): Properly set midline,
2800         so we dont falsely catch offset boundary markers (i.e. From inside
2801         content).
2802         (folder_read): Set a sentinal on the end of the read data (\n) so
2803         we dont have to check the buffer boundary in the inner loop.
2804         (mempool_*): New experimental memory management routines, speed
2805         up simple structure parsing by about 25% ... not compiled in by
2806         default.  Something similar may be needed for camel-mime-utils to
2807         address performance issues with g_malloc and friends.
2808
2809         * camel-mime-utils.c: Added a macro w(x) used to wrap all warnings
2810         about mime/rfc violations, so they can be turned off.
2811
2812         * camel-folder-summary.c (summary_build_content_info): Step after
2813         the end of a message ...
2814         Turn into a stand-alone program for testing and profiling.
2815
2816 2000-05-04  Dan Winship  <danw@helixcode.com>
2817
2818         * providers/pop3/camel-pop3-store.c (pop3_connect): Don't fall
2819         back to plaintext passwords if APOP fails, since it should also
2820         fail.
2821
2822 2000-05-04  Dan Winship  <danw@helixcode.com>
2823
2824         * camel-session.c (camel_session_list_providers): New function to
2825         replace camel_provider_scan. Returns a list of either (a) all
2826         currently-loaded providers, or (b) all available providers.
2827
2828         * camel-url.[ch]: Add an "empty" flag to CamelURL (indicating that
2829         it contains only a protocol).
2830
2831         * camel-service.c (camel_service_query_auth_types): Make this take
2832         a CamelException (since it may have to try to connect to the
2833         server, and it might not able to.)
2834
2835         * providers/pop3/camel-pop3-store.c: add KPOP (Kerberized POP)
2836         support. This is mostly so I have two kinds of authmech to play
2837         with instead of just one. (But it does actually work.)
2838
2839         * providers/smtp/camel-smtp-transport.c (query_auth_types): update
2840         for prototype change, but disable the functionality, since it
2841         doesn't really support any auth types yet.
2842         (camel_smtp_transport_get_type): add an object init function to
2843         set the service url_flags.
2844
2845 2000-05-04  NotZed  <NotZed@HelixCode.com>
2846
2847         * providers/mbox/camel-mbox-summary.c: Yes, and anotherone.
2848
2849         * camel-mime-utils.c: And another one.
2850
2851         * camel-mime-part.c: And another one.
2852
2853         * camel-mime-part-utils.c: And another one.
2854
2855         * camel-folder-search.c: And another one.
2856
2857         * camel-mime-parser.c: Reverted a change wihtout a ChangeLog entry.
2858
2859 2000-05-04  NotZed  <NotZed@HelixCode.com>
2860
2861         * camel-folder-summary.[hc]: Yes, CamelFolderSummary is back ...
2862         ... re-usable class to summarise and index any stream or message
2863         and to manage/load/save the created summaries.
2864         
2865         * camel-folder.c: Include string.h to kill a warning.
2866
2867 2000-05-03  Jason Leach  <leach@wam.umd.edu>
2868
2869         * Makefile.am (INCLUDES): add $(UNICODE_CFLAGS) to the INCLUDES,
2870         people who installed libunicde in non-standard include paths need
2871         this.
2872
2873 2000-05-03  NotZed  <NotZed@HelixCode.com>
2874
2875         * camel-folder.h: Added pos/bodypos/endpos to the basic message
2876         content info object.  Size to be removed?  Moved the
2877         messageconentinfo and messageinfo back to camel-folder-summary.h.
2878
2879         * camel-mime-filter-index.c (camel_mime_filter_index_set_ibex):
2880         New function to (re)set the index to use on a filter.
2881
2882         * camel-mime-parser.c (camel_mime_parser_scan_from): Whole bunch
2883         of inline docs.
2884         (camel_mime_parser_drop_step): New function to drop a state from
2885         the parser.  Needs more testing.
2886
2887         * camel-mime-utils.c (rfc2047_decode_word): If the iconv handle is
2888         -1, then dont try and convert (crashes unicode_iconv?).
2889         (rfc2047_decode_word): Use alloca for variables instead of
2890         g_malloc - by the rfc they should always be short.
2891         (rfc2047_decode_word): If we can't do the charset conversion, undo
2892         the quoted-printable/base64 at least?  Should probably convert
2893         unknown characters to the utf-8 unknown character.
2894
2895 2000-05-02  Larry Ewing  <lewing@helixcode.com>
2896
2897         * camel-mime-utils.c (header_decode_date): fix typo when
2898         dereferencing saveoffset.
2899
2900 2000-05-02  NotZed  <NotZed@HelixCode.com>
2901
2902         * camel-folder-search.c: Added some header doco.
2903
2904         * camel.h: REmove gmime-utils.h from here.
2905
2906         * providers/mbox/camel-mbox-search.[ch]: Removed.  Functionally
2907         redundant.
2908
2909         * providers/mbox/camel-mbox-folder.c (mbox_search_by_expression):
2910         Use the new CamelFolderSearch class to do the actual searching,
2911         just setup the search here.
2912
2913         * camel-folder-search.[ch]: A helper class that providers may
2914         subclass to provide their own search functionality, or they can
2915         simply use as is, it supports body searches if an ibex is
2916         supplied, and header searches if a summary is supplied.
2917
2918 2000-05-02  Matt Loper  <matt@helixcode.com>
2919
2920         * Makefile.am: set G_LOG_DOMAIN.
2921         * providers/MH/Makefile.am: same.
2922         * providers/maildir/Makefile.am: same.
2923         * providers/mbox/Makefile.am: same.
2924         * providers/nntp/Makefile.am: same.
2925         * providers/pop3/Makefile.am: same.
2926         * providers/sendmail/Makefile.am: same. 
2927         * providers/smtp/Makefile.am: same.             
2928
2929 2000-05-02  NotZed  <NotZed@HelixCode.com>
2930
2931         * providers/mbox/camel-mbox-search.c
2932         (camel_mbox_folder_search_by_expression): Dont store/remove
2933         current search from the search list.
2934         
2935         * providers/mbox/camel-mbox-folder.h: Removed searches list,
2936         searches are all sync now.
2937
2938         * gmime-utils.[ch]: What the hell, remove it.  This will break the
2939         nntp provider.  The mime parser can be used instead though.
2940         Removed from all code including it (but none were using it).
2941
2942         * gmime-utils.c (_store_header_pair_from_string): Removed bizarre
2943         string_dichotomy version of this.  This code is somewhat redundant
2944         now, and is headed for death anyway.
2945
2946         * gstring-util.c (g_string_dichotomy): Same with this one.
2947         (g_string_clone): Removed a memory leak, g_string_new() allocates
2948         its own memory.
2949         (g_string_append_g_string): Allow to append an empty gstring onto
2950         another gstring, dont abort()!
2951
2952         * string-utils.c (string_dichotomy): Removed this incredibly weird
2953         function.
2954
2955         * camel-folder.c (_create): Replaced the rather obtuse use of
2956         "string_dichotomy" function with a simple strrchr().  Still not
2957         sure it'll work.
2958
2959         * camel-folder-summary.c: cvs removed a long-removed file.
2960
2961         * camel-mime-parser.c (folder_scan_header): Fix the previous
2962         overflow problem properly (can happen in 2 places).
2963         (header_append): A new macro to include the code changed above, so
2964         it only appears in one place.
2965         (folder_scan_step): Change the content type to text/plain if the
2966         multipart is broken.  Doesn't actually change the header though.
2967         (header_append): Also move the header-start tracking stuff here.
2968         Could be a static function to save code.
2969
2970 2000-05-02    <notzed@helixcode.com>
2971
2972         * camel-mime-part-utils.c
2973         (simple_data_wrapper_construct_from_parser): Dont use autofill on
2974         these fucking long function anmes!!!!!!
2975
2976 2000-05-02  NotZed  <NotZed@HelixCode.com>
2977
2978         * providers/mbox/camel-mbox-summary.c
2979         (camel_mbox_summary_expunge): Fix the offset for the summary when
2980         an item is expunged to take account of the From line.
2981
2982 2000-05-01  NotZed  <NotZed@HelixCode.com>
2983
2984         * providers/mbox/camel-mbox-folder.h (CamelMboxFolder): Removed
2985         search_id.
2986
2987         * providers/mbox/camel-mbox-search.c
2988         (camel_mbox_folder_search_cancel): Remove.d
2989         (camel_mbox_folder_search_complete): Removed.
2990         (camel_mbox_folder_search_by_expression): Changed back to sync
2991         api.
2992         (struct _searchcontext): Removed cancelled flag.
2993         (find_context): Removed.
2994         (func_header_contains): Debug out some search stuff.
2995
2996         * providers/mbox/camel-mbox-search.h
2997         (camel_mbox_folder_search_by_expression): Moved back to sync api.
2998
2999         * providers/mbox/camel-mbox-summary.c
3000         (camel_mbox_summary_set_flags_by_uid): New function to update the
3001         flags in the summary.
3002         (camel_mbox_summary_expunge): Expunge messages from a folder.
3003         (offset_content): Re-align offsets of summary when messages
3004         added/removed to an existing summary.
3005         (camel_mbox_summary_remove_uid): Remove a message summary entry by
3006         uid.
3007         (index_folder): Restore flags from X-Evolution header, if they are set.
3008         (index_folder): Make sure we index using a decimal uid, since
3009         thats what everything else indexes off (oops).
3010         Upped SUMMARY_VERSION as a result.
3011         (camel_mbox_summary_expunge): Oops, my wrong, use the string uid
3012         to unindex on.
3013
3014         * providers/mbox/camel-mbox-folder.c (_get_message_by_uid):
3015         Connect to the message_changed signal.
3016         (_init): Set permanent flags to something reasonable.  No user
3017         flags yet ...
3018         (message_changed): If the flags of the message change, update the
3019         flags in the summary.
3020         (mbox_expunge): Implement the expunge.
3021         (camel_mbox_folder_class_init): Renamed all leading _'s to mbox_'s
3022         (mbox_expunge): Emit a folder_changed signal on expunge (uh, even
3023         if it didn't ...)
3024
3025         * camel-folder.c (_finalize): Uh, dont free permanent_flags
3026         anymore (this wouldn't failed anyway, it was a GList !!!)
3027         (camel_folder_search_complete): Removed.
3028         (camel_folder_search_cancel): Removed.
3029         (camel_folder_expunge): Changed to only allow expunge on an open
3030         folder.  It doesn't make sense for mbox, otherwise (?)
3031         (camel_folder_class_init): Added a folder_changed signal.
3032
3033         * camel-folder.h (struct _CamelFolder): Change permanent_flags to
3034         a bitfield.
3035         (list_permanent_flags): Renamed to get_permanent_flags, and
3036         returns a bitfield.
3037         (camel_folder_expunge): Changed expunge to a void type.  The
3038         messages would no longer be useful after they have been removed
3039         ...
3040         (CamelFolderClass): New function summary_get_by_uid() to get a single
3041         summary.
3042         (*search*): Moved back to synchronous search api ... *sigh*
3043         
3044         * camel-folder.h: Removed CamelSearchFunc.
3045
3046         * camel-mime-message.c (set_flag): Removed.
3047         (camel_mime_message_set_flag): Removed.
3048         (get_flag): Removed.
3049         (camel_mime_message_get_flag): Removed.
3050         (add_flag_to_list): Removed.
3051         (get_flag_list): Removed.
3052         (camel_mime_message_get_flag_list): Removed.
3053         (camel_mime_message_get_flags): New interface to get system flags.
3054         (camel_mime_message_set_flags):  " to set ".
3055         (camel_mime_message_get_user_flag): To get a user flag.
3056         (camel_mime_message_set_user_flag): To set a user flag.
3057         (finalize): Hmm, the old one free'd the key and data, not good
3058         when the data is a boolean ...
3059
3060 2000-04-30  Dan Winship  <danw@helixcode.com>
3061
3062         * camel-provider.h: Tweak the definition of CamelProvider. Among
3063         other things, a provider may now be both a store and a transport.
3064
3065         * camel-provider.c: Remove a lot of code we had no intention of
3066         using. This now only contains two functions: camel_provider_init
3067         to read the installed .urls files, and camel_provider_load to
3068         load and register a new provider.
3069
3070         * camel-session.c: Remove more unused code and simplify some of
3071         the remaining code. The list of available provider modules is now
3072         stored in the session, and it handles calling camel_provider_load
3073         to load them as needed. Provider registration is now done by
3074         calling back from the module init routine, which allows a single
3075         module to register providers for multiple URL types.
3076
3077         * providers/*: Update provider structures and init routines for
3078         the new stuff. Add a .urls file to each provider specifying what
3079         urls it handles, and install that with the library.
3080
3081         * providers/nntp/camel-nntp-provider.c: Add hints towards
3082         supporting both news: and nntp: URLs, and using nntp as both a
3083         store and a transport.
3084
3085 2000-04-29  Dan Winship  <danw@helixcode.com>
3086
3087         * camel-internet-address.c (camel_internet_address_get): const
3088         poison
3089
3090         * camel-mime-part-utils.c
3091         (simple_data_wrapper_construct_from_parser):
3092         camel_mime_parser_tell() returns an offset from where it started
3093         parsing, not necessarily from the start of data. Since we're
3094         parsing a bounded seekable_stream, we need to add the stream's
3095         starting bound to camel_mime_parser_tell's return value to
3096         create the substream in the right place.
3097
3098         * camel-seekable-substream.c
3099         (camel_seekable_substream_new_with_seekable_stream_and_bounds):
3100         say CAMEL_STREAM_UNBOUND rather than -1 in doc.
3101
3102         * camel-seekable-stream.c (camel_seekable_stream_seek): Add more
3103         info to docs.
3104
3105 2000-04-28  Dan Winship  <danw@helixcode.com>
3106
3107         * camel-mime-parser.c (folder_scan_header): fix a bug that would
3108         cause corruption with very long headers.
3109
3110 2000-04-27  Ettore Perazzoli  <ettore@helixcode.com>
3111
3112         * providers/pop3/Makefile.am (INCLUDES): Add `-I$(srcdir)/../../..'
3113         to pick the Camel includes.
3114         * providers/sendmail/Makefile.am (INCLUDES): Likewise.
3115
3116         * camel.h: Don't #include <camel/data-wrapper-repository.h> anymore.
3117
3118 2000-04-27  NotZed  <NotZed@HelixCode.com>
3119
3120         * camel-mime-utils.c (check_header): Dont try and check a NULL
3121         header.
3122
3123         * camel-recipient.[ch]: Dead.  Its not pining.
3124
3125         * camel-mime-message.h: Dont include recipients.h anymore.
3126
3127         * camel-mime-message.c (camel_mime_message_add_recipient): Accept
3128         name/address separately, and store in an CamelInternetAddress.
3129         (add_recipient): Removed.
3130         (remove_recipient): Removed.
3131         (remove_recipient_address): Renamed from remove_receipient, works
3132         via address.
3133         (camel_mime_message_remove_recipient_name): New function to remove
3134         by name.
3135         (get_recipients): Removed.
3136         (camel_mime_message_get_recipients): Return a camel-internet-address.
3137         (write_to_stream): No longer write receipients directly.
3138         (write_recipients_to_stream): Removed.
3139         (write_one_recipient_to_stream): Removed.
3140         (camel_mime_message_init): Setup recipients hashtable, rather than
3141         usign the recipients stuff.
3142         (set_recipient_list_from_string): Killed, a violent and lengthy
3143         death.
3144         (process_header): Simplified recipient handling code a lot.
3145         (received_date_str, sent_date_str, reply_to_str, subject_str,
3146         from_str): Removed some oddly-defined global statics.
3147         (camel_mime_message_class_init): Dont initialise above variables
3148         anymore.
3149         (init_header_name_table): Removed, use a table to init this, and
3150         do it in class init (2 lines of code ...).
3151
3152         * camel-news-address.c: Class to represent news addresses -
3153         currently empty, and not built.
3154
3155         * camel-internet-address.h: Class to represent internet (email)
3156         addresses.
3157
3158         * camel-address.h: Abstract class to represent (lists of)
3159         addresses.
3160
3161 2000-04-27  Dan Winship  <danw@helixcode.com>
3162
3163         * camel-mime-part.c (write_to_stream): Revert previous change. I
3164         was confused.
3165
3166         * camel-url.[ch] (camel_url_encode, camel_url_decode): expose
3167         these routines.
3168
3169 2000-04-26  Dan Winship  <danw@helixcode.com>
3170
3171         * camel-mime-part.c (write_to_stream): Only write a newline
3172         between the headers and the content object if the content object
3173         is not a CamelMedium. (If the content is a medium, it may have its
3174         own headers, which then need to go before the blank line.)
3175
3176         * camel-mime-body-part.[ch]: Remove. We weren't using the fields
3177         that made this different from camel-mime-part, so it basically
3178         just forced us to do lots of gratuitous typecasting.
3179
3180         * camel-multipart.[ch]: Use CamelMimePart. Remove the multipart
3181         parent stuff, since we weren't using that either.
3182
3183         * etc: update for CamelMimeBodyPart -> CamelMimePart
3184
3185 2000-04-26  Dan Winship  <danw@helixcode.com>
3186
3187         * camel-medium.c (set_content_object): sink the content object
3188         after referencing it.
3189
3190         * camel-mime-part.c: fix various little things in the handling
3191         of CamelMedium methods. Change camel_mime_part_set_text to the
3192         more generic camel_mime_part_set_content.
3193
3194         * camel.h: sync to current reality
3195
3196         * camel-folder-utils.[ch]: removed
3197
3198         * camel-mime-utils.c (header_format_date): fix format specifier
3199         for time zone. Fix typo in month names array.
3200
3201 2000-04-26  NotZed  <NotZed@HelixCode.com>
3202
3203         * camel-seekable-substream.c (stream_seek): Changed to have
3204         absolute seek semantics, not relative to the bounds.
3205
3206         * camel-seekable-stream.c (reset): When we reset, seek to the
3207         start of the bound, if there is one.
3208         (stream_tell): Make tell virtual.
3209
3210         * camel-stream-filter.c (do_available): Removed.
3211
3212         * camel-stream-buffer.c: Remove leading _'s from static functions.
3213         (stream_read): Renamed from read().  Fancy that conflicting!  (my
3214         boo!)  Others too.
3215
3216         * providers/pop3/camel-pop3-folder.c (get_message_by_number):
3217         Changed to stream_mem interface.
3218
3219         * providers/mbox/camel-mbox-folder.c (_get_message_by_uid): Fixed
3220         for streamfs interface changes, and implement a failure case.
3221         (_append_message): Changed for fs stream interface change.
3222
3223         * camel-multipart.c (print_part): Iterate rahter than callback.  I
3224         hate glists's interface (hence, move this to write_to_stream).
3225         (write_to_stream): Return an error (yuck, this is a royal PITA to
3226         do with the stream write interface).
3227
3228         * camel-mime-message.c: Removed leading _ from static names.
3229
3230         * camel-mime-part.h: construct_from_parser() now returns an error
3231         code.
3232
3233         * camel-mime-part-utils.c
3234         (camel_mime_part_construct_content_from_parser): Changed to use a
3235         camel-data-wrapper instead of a camel-simple-data-wrapper (no
3236         change needed elsewhere?).
3237         (simple_data_wrapper_construct_from_parser): Fixes for stream-mem
3238         interface changes.
3239
3240         * camel-simple-data-wrapper.[ch],
3241         camel-simple-data-wrapper-stream.[ch],
3242         camel-stream-data-wrapper.[ch], removed.  Fixed including of these
3243         files.
3244         
3245         * camel-mime-part.c (camel_mime_part_set_text): Remove the use of
3246         the camel-simple-data-wrapper-stream, just use a mem stream.
3247         (write_to_stream): Renamed from my_*
3248         (construct_from_stream): Return an error on error.
3249
3250         * camel-stream-mem.c (camel_stream_mem_new*): Remove mode
3251         parameter.
3252
3253         * camel-stream-mem.h (enum CamelStreamMemMode): Removed.  It
3254         wasn't used at all.
3255
3256         * camel-data-wrapper.h: Add camel_data_wrapper_new() to create
3257         these.
3258         (write_to_stream, construct_from_stream): Return an error
3259         indicator for success.  Fixed all methods to match (ICK).
3260
3261         * Makefile.am (libcamel_la_SOURCES): Remove
3262         camel-simple-data-wrapper.c, camel-simple-data-wrapper-stream.c,
3263         camel-stream-data-wrapper.c.  Obsoleted by code re-use!
3264
3265         * camel-data-wrapper.c (construct_from_stream): Change the default
3266         implementation to just set the output stream == construction
3267         stream.  Well, this lets me get rid of both simple-data-wrapper
3268         and stream-data-wrapper (unused anyway), and
3269         simple-data-wrapper-stream in one hit.  CamelDataWrapper is now
3270         also a concrete class.
3271         (write_to_stream): Use camel_stream_write_to_stream() to
3272         calculate/return values (and save code).
3273         Include <errno.h> for obvious reasons.
3274
3275         * camel-stream.c (eos): Provide a default implementation of .eos().
3276         (camel_stream_write_to_stream): Make it return an error code on
3277         error.
3278         (camel_stream_printf): Changed to return the number of bytes
3279         written/error.
3280         (camel_stream_available): Removed.
3281
3282         * camel-stream-fs.h (enum CamelStreamFsMode): Removed.  Changed to
3283         use unix modes and so forth (wasn't used for anything but new file
3284         creation and didn't work well either).
3285
3286         * camel-stream-fs.c: Removed leading _'s for names.  And removed
3287         some virtual method 'documentation'.
3288         (destroy): Dont try and close a closed/error fd.  Only report
3289         error if close returns -1.  Moved all the code to finalise(), and
3290         killed this function.
3291         (init_with_fd): Properly setup the seek offset, if it is a
3292         valid and seekable file descriptor.
3293         (init_with_fd_and_bounds): Use off_t for bounds, set bounds on the
3294         seekable stream.
3295         (init_with_name): Return error codes.
3296         (init_with_name_and_bounds): Ditto.
3297         (camel_stream_fs_new_with_name): REturn NULL object if it failed.
3298         (camel_stream_fs_new_with_name_and_bounds): Return NULL object on
3299         failure.  Changed with_name* api's to take unix open style args
3300         and flags.
3301         (read): The bounded stream bounds checking seemed off, simplified
3302         code a bit.
3303         (write): Implement bounds checking for writing, the comment was
3304         wrong, it could make sense to bound writing.  Cleaned up a little.
3305         (available): Gone.
3306         (eos): Removed.  Use CamelStream's implementation now.
3307         (close): Reset the fd to -1, provide a warning for bad usage.
3308         (seek): Cleaned up.  Changed the behaviour a little, the returned
3309         offset is the absolute position in the file, even in bounded
3310         streams.        
3311         (seek): Seek from end mirrors lseek() behaviour (reverse seeking).
3312
3313 2000-04-25  NotZed  <NotZed@HelixCode.com>
3314
3315         * camel-stream-fs.h (struct _CamelStreamFs): Moved bounds and eof
3316         indicator to other parent classes.
3317
3318         * camel-stream.c (camel_stream_printf): New utility
3319         function.  Obvious use.
3320
3321         * camel-stream-mem.c: Removed leading _'s from static func's.
3322         (camel_stream_mem_new_with_byte_array): Fixed for api changes, set
3323         the owner for the byte array to us.
3324         : Removed A bunch of gtk doc stuff for static (implementation) functions.
3325         (available): Removed.
3326         (write): Fixed the write implementation so that seek() works on a
3327         seekable memory stream, as expected.  Seeking past the end of the
3328         buffer has unix semantics (filling with 0).
3329         (available): Removed.
3330         (write): Implement seekable stream bounded stream.
3331         (read): Implement seekable stream bounded stream.
3332         (close): Dont free the stream_mem if we're not the owner.
3333         (seek): Allow to seek beyond the end of memory area,
3334         implement bounds checking.
3335         (seek): Set errno on bad policy.
3336
3337         * camel-stream-mem.h (struct _CamelStreamMem): Changed position to off_t.
3338         (new_with_buffer): Changed len to be a size_t.
3339         (set_buffer, set_byte_array): New interface functions.
3340         (struct _CamelStreamMem): Removed position, it is stored in the
3341         superclass.
3342
3343         * camel-stream.h: Removed some of the seemingly random
3344         whitespace.  Removed the available method (its not
3345         impelemented/useful enough).
3346
3347         * camel-seekable-substream.c
3348         (init_with_seekable_stream_and_bounds): Remove the data_available
3349         stuff, it hasn't been properly implemented/finished, and may never
3350         work (unfortunately *sigh).
3351         (reemit_parent_signal): Removed part of the above change.
3352         (set_bounds): Removed (moved to seekable-stream).
3353         : Fixed up some of the generally unreadable indenting (sorry,
3354         wrapping at 80 characters with
3355         camels_really_long_function_names()
3356         just_doesnt_work_very_well_does_it().
3357         (available): Removed.
3358         (stream_seek): Fixup for object changes.  Make sure we return -1
3359         if the parent stream can't seek.
3360
3361         * camel-seekable-stream.c (ccamel_seekable_stream_set_bounds): New
3362         function to bound any seekable stream.
3363         : Removed _'s.
3364         (camel_seekable_stream_class_init): Implement an init function, to
3365         setup the stream bounds to unbound.
3366
3367         * camel-seekable-stream.h (CamelSeekableStreamClass): New virtual
3368         method set_bounds for seekable streams.
3369         (CAMEL_STREAM_UNBOUND): New define for no bound.
3370
3371         * camel-seekable-substream.h (struct _CamelSeekableSubstream):
3372         Removed sup_bound and inf_bound, moved to CamelSeekableStream (and
3373         renamed, and changed to off_t's).
3374         (new_with_seekable_stream_and_bounds): Use off_t as the bounds.
3375         (CamelSeekableSubstreamClass): Uh, why was the intialiser virtual?
3376         Removed.
3377
3378         * camel-seekable-stream.[ch] (CamelSeekableStreamClass): Changed seek
3379         to accept an off_t as the offset.
3380         (struct _CamelSeekableStream): Renamed cur_pos to position and
3381         changed it to an off_t type.
3382         (enum CamelStreamSeekPolicy): Set to match the SEEK_* constants
3383         from lseek().
3384         (get_current_position): Renamed to tell().
3385
3386         * camel-stream-buffer.h: Commented out set_vbuf - never implemented.
3387
3388 2000-04-25  Dan Winship  <danw@helixcode.com>
3389
3390         * camel-stream-buffer.c (_eos): only return TRUE if the parent is
3391         at eos AND the buffer has been exhausted
3392
3393         * camel-mime-message.c: fix some incorrect macro usage that
3394         resulted in bogus casts
3395
3396 2000-04-24  Dan Winship  <danw@helixcode.com>
3397
3398         * camel-mime-part-utils.c
3399         (simple_data_wrapper_construct_from_parser): fix a cut-and-pasto.
3400
3401         * providers/mbox/camel-mbox-folder.c (_get_message_by_uid): ref
3402         (and sink) the message stream if we're going to unref it later.
3403         Otherwise it could get destroyed while there are still substreams
3404         attached to it. This needs a cleaner solution.
3405
3406         * camel.h: remove data-wrapper-repository.h include(s)
3407
3408 2000-04-24  NotZed  <NotZed@HelixCode.com>
3409
3410         * camel-mime-message.c (construct_from_parser): Allow MESSAGE_END
3411         _or_ EOF as valid termination conditions.
3412
3413         * providers/mbox/camel-mbox-summary.c (message_struct_new): Decode
3414         and then re-encode the addresses, so they are consistently
3415         formatted.
3416
3417         * camel-mime-utils.c (header_decode_mailbox): Store the address in
3418         a _header_address.  And try to get a comment-stored name if there
3419         is one.
3420         (header_decode_address): Actually return an address.
3421         (header_to_decode): Renamed to header_address_decode()
3422         (header_mailbox_decode): New function to get a single mailbox.
3423         (header_mime_decode): Return the major/minor value, as
3424         appropriate.
3425         (header_address_new, and friends): Whole bunch of utility
3426         functions for working with the address thingies.
3427         (header_decode_domain): Free the string header, and dont expand
3428         '.' into ' . '.
3429
3430         * camel.c (camel_init): No longer call
3431         data_wrapper_repository_init.
3432
3433         * camel-medium.c (write_to_stream): Moved (back) to
3434         camel-mime-part.
3435         (add_header):
3436         (set_header):
3437         (remove_header): 
3438         (get_header): Make all these abstract, and spit warnings if
3439         called.  I guess it could manage the list, but well, it doesn't.
3440
3441         * camel-medium.h (struct _CamelMedium): Dont store headers here,
3442         the implementor is the only one who knows their format.
3443         (CamelMediumClass): Changed header values to be void *'s.  They
3444         need not be strings?
3445
3446         * camel-simple-data-wrapper.c (construct_from_stream): And we're
3447         back.  Set the output stream.
3448         (construct_from_parser): Moved to camel-mime-part-utils.
3449
3450         * camel-mime-part-utils.c
3451         (camel_mime_part_construct_content_from_parser): Create the
3452         contents of multipart and simple messages.
3453         (camel_mime_part_construct_content_from_parser): Oops, this was
3454         totally screwed up, try creating the right cotnent on the right
3455         object.
3456
3457         * camel-multipart.c (construct_from_parser): Moved to
3458         camel-mime-part-utils.
3459         (separate_part): Removed.
3460
3461         * camel-mime-part.c (construct_from_stream): Back again!  This now
3462         switches over to using a mime parser for any mime parts, only.
3463         (my_write_to_stream): Write our headers and so forth here.
3464         (add_header): Add header directly, parent class is abstract.
3465         (remove_header): Ditto.
3466         (set_header): Ditto.
3467
3468         * camel-data-wrapper.c (camel_data_wrapper_construct_from_stream):
3469         Remade abstract.
3470         (camel_data_wrapper_construct_from_parser): Moved to
3471         camel_mime_part.
3472
3473         * camel-data-wrapper.h: Put back construct_from_stream.
3474
3475         * camel-mime-part.h: Put construct_from_parser in here, the
3476         data-wrapper shouldn't know about mime.  Ok, so now to undo half
3477         of the last hours changes ... duh.
3478         
3479 2000-04-23  Dan Winship  <danw@helixcode.com>
3480
3481         * camel-mime-utils.c (header_to_decode, header_mime_decode): fix
3482         some obvious minor bugs noted by -Wall.
3483
3484 2000-04-23  NotZed  <NotZed@HelixCode.com>
3485
3486         * providers/pop3/camel-pop3-folder.c (get_message_by_number): Use
3487         construct_from_stream instead of set_input_stream().
3488
3489         * camel-simple-data-wrapper-stream.c
3490         (camel_simple_data_wrapper_stream_construct): REmoved the destroy
3491         callback code.
3492         (wrapper_destroy_cb): Removed.
3493
3494         * camel-simple-data-wrapper.h: Add prototype for _construct()
3495         method.
3496
3497         * camel.c: Include unicode.h to kill a warning.
3498
3499         * camel-data-wrapper.h (CameldataWrapperClass): Removed
3500         construct_from_stream virtual method.
3501         Removed get/set input stream.
3502
3503         * data-wrapper-repository.[ch]: Removed&from build.  Obsoleted?
3504         The justification as is follows: It is mixing storage
3505         protocol/format with message architecture.  It really just doesn't
3506         serve any purpose, as each medium implementor will have to have its
3507         own type->handler mapping, and the only current implementor,
3508         mimepart has a very simple structure and no need for this.
3509
3510         * camel-medium.c (write_to_stream): Moved here from most of the
3511         stuff in camel-mime-part.  Well, the MEDIUM is the one that knows
3512         what the headers are, and the content is, let it write it out.
3513
3514         * camel-mime-part-utils.c (camel_mime_part_construct_content):
3515         Copied from camel-mime-part.c, removed handling of message
3516         followon state (moved to camel-mime-message).
3517         (camel_mime_part_construct_content_from_parser): Renamed from
3518         construct_content.
3519         (camel_mime_part_construct_headers_from_stream):
3520         (camel_mime_part_construct_content_from_stream):
3521         (camel_mime_part_store_stream_in_buffer): Removed.  Replaced by
3522         the new construct from parser stuff.
3523
3524         * camel-mime-message.c (construct_from_parser): Do
3525         construct_from_parser for mime-message.
3526         (_write_to_stream): Set the mime-version header for medium to
3527         write out, rather than writing it out ourselves.
3528
3529         * camel-data-wrapper.c (set_mime_type_field): Ref the
3530         content_field when we get it?
3531         (construct_from_stream): Removed.
3532         (camel_data_wrapper_construct_from_stream): Changed to a helper
3533         function, creates a mime_parser, and constructs from that.
3534         (set_input_stream): Removed.
3535         (camel_data_wrapper_set_input_stream): Removed.
3536         (get_input_stream): Removed.
3537         (camel_data_wrapper_get_input_stream): Removed.
3538
3539         * camel-mime-parser.c (camel_mime_parser_unstep): New function.
3540         Cause a subsequent call to mime_parser_step() to return the same
3541         state over again.
3542
3543         * providers/mbox/camel-mbox-folder.c (_get_message_by_uid):
3544         Initial test code using the mime parser to construct the message.
3545         (_get_message_by_uid): Use construct_from_stream() instead of
3546         creating our own parser.
3547
3548         * camel-mime-part.c (construct_from_parser): part constructor.
3549         (camel_mime_part_construct_content): Basically a simpler
3550         replacement for the datawrapper repository.
3551         (camel_mime_part_init): Set the default type to text/plain.
3552         (camel_mime_part_construct_content): Removed to
3553         camel-mime-part-utils.c
3554         (my_get_output_stream): Removed.  The streeam is in the
3555         data-wrapper.
3556         (my_get_content_object): Removed.  The content object is stored in
3557         the medium.  If none is there, the object wasn't created properly.
3558         (my_write_content_to_stream): Removed.  The content object is the
3559         one that knows how to write itself out!!!!!!!!
3560         (my_write_to_stream): Remove the base header writing stuff - has
3561         been moved to camel-medium, where it belongs.  This can just be
3562         used to check for mandatory headers.
3563         (my_construct_from_stream): Removed.
3564         (my_set_input_stream): What the hell, i'll remove this too.
3565         Nobody seems to understand how it differs from create from stream,
3566         and they both seem to serve the same purpose ...
3567
3568         * camel-simple-data-wrapper.c (construct_from_parser): Initial
3569         implementation of a content constructor.
3570         (construct_from_stream): Removed!  Job taken over by
3571         construct_from_parser.
3572
3573         * camel-multipart.c (construct_from_parser): Multipart
3574         construction routine.
3575         (camel_multipart_init): Set the default multipart type to
3576         multipart/mixed.  Duh, no subtype is not allowed anyway.
3577         (set_input_stream): REmoved.  Replaced by construct_from_parser.
3578
3579 2000-04-22  Dan Winship  <danw@helixcode.com>
3580
3581         * camel-multipart.[ch]: clean, document, etc.
3582         (camel_multipart_init): pick a prettier default boundary. Still
3583         need to deal with the larger problem
3584
3585 2000-04-22  NotZed  <NotZed@HelixCode.com>
3586
3587         * camel-mime-message.h (struct _CamelMimeMessage): Removed
3588         send_date, and received_date, and replaced it with a time_t
3589         'date' (this is what the header is called), and date_offset to
3590         store the GMT offset of the date.
3591
3592         * camel-mime-message.c (camel_mime_message_set_from): Update raw
3593         header as we go.
3594         (_set_from): Removed.
3595         (_get_from): Removed.
3596         (camel_mime_message_get_from): Moved implementation here.
3597         (camel_mime_message_get_subject): Move implementation here.
3598         (_get_subject): Nuked.
3599         (camel_mime_message_set_subject): Handle utf-8 input, and also
3600         update raw header when changed.
3601         (_set_subject): Removed.
3602         (_set_received_date): Removed.
3603         (camel_mime_message_set_received_date): Removed.
3604         (_get_received_date): Removed.
3605         (camel_mime_message_get_received_date): Removed.
3606         (_get_sent_date): Removed.
3607         (camel_mime_message_get_sent_date): Removed.
3608         (camel_mime_message_get_date): New function to get the date as a
3609         time_t/offset.
3610         (camel_mime_message_set_date): Set the date as a time_t/offset.
3611         (camel_mime_message_get_date_string): Get the date as a string.
3612         (camel_mime_message_init): Initialise the current date as
3613         'CMAEL_MESSAGE_DATE_CURRENT'.
3614         (_set_reply_to): Removed.
3615         (camel_mime_message_set_reply_to): Moved implementation here.
3616         This is still broken, reply-to can have multiple addresses.
3617         (_get_reply_to): Removed.
3618         (_set_field): Removed, no longer used anywhere.
3619         (_get_field): Also removed.
3620         (_init_header_name_table): Add the Date header.
3621         (process_header): Also handle snooping of Date header here.
3622
3623         * camel-stream-filter.c (finalise): Unref the source stream on
3624         finalise, and also call the parent class (oops).
3625
3626         * camel-mime-parser.c (camel_mime_parser_state): New function to
3627         get the current parser state.
3628         (camel_mime_parser_stream): Allow you to get the stream back from
3629         the mime_parser.
3630         (camel_mime_parser_fd): Alternative to allow you to get the fd
3631         back from the mime_parser.
3632         (folder_scan_init_with_stream): Properly ref/unref the stream.
3633         (folder_scan_close): Properly unref the stream/close the fd on
3634         exit.
3635         (folder_scan_init_with_fd): Close the old fd if there is one.
3636
3637         * camel-data-wrapper.c (camel_data_wrapper_construct_from_parser):
3638         New method, construct a data wrapper from an initialised parser.
3639         (construct_from_parser): Empty implementation.
3640         
3641         * providers/mbox/camel-mbox-summary.c (message_struct_new):
3642         Convert subject line to unicode, before storing in the summary.
3643         (strdup_trim): Removed, no longer needed.
3644
3645         * providers/mbox/camel-mbox-folder.c (_get_message_by_uid): Ref
3646         the folder after setting it in the new message.
3647
3648         * camel-mime-part.c (my_set_content_object): Have the headers
3649         follow the content-type change here too.
3650         (my_write_to_stream): Dont write content-type here, automatically
3651         stored in the headers ...
3652         (my_write_to_stream): Use header_disposition_format() to format
3653         the content-disposition header.
3654         (my_write_to_stream): Removed old code, all headers are now stored
3655         in the camel-medium level, always.  Need to do the same with
3656         camel-mime-message i suppose ...
3657         (my_write_to_stream): Write the content using the parent class,
3658         not some weird function.
3659         (camel_mime_part_class_init): Dont override get_output_stream.
3660         (camel_mime_part_encoding_from_string): Bleh, make it
3661         case-insensitive.
3662
3663         * camel-mime-utils.c (header_content_type_is): Handle empty types.
3664         (header_encode_string): Start of an implementation of the rfc2047
3665         encoder.  It does iso-8859-1, and us-ascii, and utf-8 (others get
3666         tricky *sigh*)
3667         (rfc2047_encode_word): Convert a single word/string into rfc2047
3668         encoding.
3669         (quoted_encode): Different quoted-printable encoding for rfc2047
3670         encoding of headers.
3671
3672         * gmime-content-field.c (gmime_content_field_write_to_stream): Use
3673         header_content_type_format() to format it.
3674
3675 2000-04-21  NotZed  <NotZed@HelixCode.com>
3676
3677         * camel-mime-utils.h: Add prototype for header_param_list_free.
3678
3679         * camel-recipient.c: New function to remove all the types of a
3680         recipient list.  I think this whole object needs a major review.
3681
3682         * camel-mime-message.c (camel_mime_message_class_init): Removed
3683         parse_header_pair override, override add_header instead.
3684         (_parse_header_pair): Renamed to add_header.
3685         (remove_header): Add this method, to make sure we keep upto date
3686         with removed headers too.
3687         (_set_field): If given a NULL value, clear it out.
3688         (_set_recipient_list_from_string): Constify.
3689         (set_header): Override set_header from camel_medium.
3690         (process_header): Local function to handle set/add/remove of each
3691         header we know about.
3692
3693         * camel-mime-part.c (camel_mime_part_class_init): Removed
3694         parse_header_pair setup.
3695         (my_parse_header_pair): Moved into add_header(), removed.
3696         (my_set_disposition): Allow a NULL disposition to clear it.
3697         (my_set_content_id): Allow NULL content id to clear it.
3698         (remove_header): Track removed headers.
3699         (my_set_description): Allow NULL description to clear it.
3700         (my_set_content_MD5): Make sure we copy the md5 value, and allow a
3701         NULL value to reset it.
3702         (my_set_filename): Copy the filename.
3703         (my_set_header_lines): Removed.  Nothing uses it, it doesn't
3704         actually serve any purpose.
3705         (camel_mime_part_set_header_lines): Ditto.
3706         (my_get_header_lines): Ditto.
3707         (camel_mime_part_get_header_lines): Ditto.
3708         (camel_mime_part_class_init): Remove *_header_lines setup.
3709         (camel_mime_part_init): Remove header_lines init.
3710         (my_finalize): Remove header_lines finalise.
3711         (my_write_to_stream): Write the headers here.  This is just WRONG,
3712         camel_medium should be doing this.
3713         (my_get_output_stream): Kill a warning.
3714         (camel_mime_part_encoding_to_string): Ditto.
3715         (camel_mime_part_set_description): Unvirtualiase, use add_header()
3716         to do the processing.
3717         (my_set_description): Removed.
3718         (set_disposition): Renamed from my_set_disposition.
3719         (camel_mime_part_get_description): Get the descriptionf rom the
3720         get_header method.
3721         (my_get_description): Removed.
3722         (my_set_filename): Removed.
3723         (camel_mime_part_get_filename): Get the parameter from the
3724         disposition.
3725         (camel_mime_part_encoding_from_string): Handle NULL string.
3726         (camel_mime_part_init): Remove reference to filename.
3727         (my_finalize): Dont free filename.
3728
3729         * camel-mime-part.h (CamelMimePartClass): Removed
3730         parse_header_pair() method, it doesn't add anything that
3731         add_header() can't be used for.
3732         (CamelMimePartClass): Remove *_header_lines methods.
3733         (struct _CamelMimePart): Remove header_lines list.
3734         (struct _CamelMimePart): Removed filename attribute.
3735
3736         * camel-medium.c (camel_medium_init): Init headers to null, not a
3737         hashtable.
3738         (add_header): Append the headers as a list.
3739         (remove_header): Remove headers as a list.
3740         (get_header): Likewise for lookup.
3741         (free_header): Removed, no longer needed.
3742         (finalize): Free headers using header_raw_clear().
3743         (camel_medium_set_header): New function, to reset and override all
3744         values of a header with a new value.
3745
3746         * camel-medium.h (struct _CamelMedium): Changed to use a
3747         header_raw struct rather than a hash table, to store headers
3748         (many headers can occur multiple times).
3749
3750         * camel-mime-utils.c (header_raw_find_next): New function, allows
3751         you to find multi-valued header fields.
3752         (header_disposition_format): New function to format/create
3753         content-disposition header string.
3754         (header_param_list_format_append): Function to format parameter
3755         lists into a GString.
3756         (header_content_type_format): Function to format content-type into
3757         a usable format.
3758         (header_set_param): allow NULL value to remove the parameter.
3759         (decode_token): Renamed from header_decode_token.
3760         (header_decode_token): New interface for external use.
3761         (quoted_decode): Made static to kill annoying warnings.
3762         (g_strdup_len): Killed, replaced with calls to g_strndup().
3763         (rfc2047_decode_word): Made static to kill warnings.
3764         (decode_coded_string): Terminated.
3765         (g_string_append_len): Made static to kill warnings.
3766         (header_decode_text): Made static to kill warnings.
3767         (header_decode_text): Constify.
3768         (rfc2047_decode_word): Constify.
3769         (header_param): Constify.
3770         (header_content_type_new): Copy the type/subtype strings.
3771         (header_param_list_decode): Made static.
3772         (header_param_list_format_append): Made static.
3773         (quoted_decode): Constify.
3774         (g_string_append_len): Constify.
3775         (header_token_decode): New function to decode a single token.
3776
3777         * providers/mbox/camel-mbox-summary.c (header_write): Append a
3778         trailing \n when writing headers.
3779         (strdup_trim): Killed a warning.
3780         (camel_mbox_summary_set_uid): Make sure the next uid is at least 1
3781         higher than any existing one.
3782         (header_evolution_decode): Use header_token_decode to get the
3783         token.
3784
3785         * camel-mime-parser.c (folder_scan_header): Strip the trailing \n
3786         of the end of all header lines.
3787
3788 2000-04-20  NotZed  <NotZed@HelixCode.com>
3789
3790         * providers/mbox/camel-mbox-utils.[ch]: Removed.
3791
3792         * providers/mbox/camel-mbox-parser.[ch]: Removed.  Removed
3793         references to it.
3794
3795 2000-04-20  Dan Winship  <danw@helixcode.com>
3796
3797         * camel-mime-utils.c (rfc2047_decode_word): use libunicode iconv
3798         functions rather than libc ones (since libc might not have them).
3799         (header_decode_date): add autoconfiscation on timezone code
3800
3801         * camel.c (camel_init): call unicode_init ()
3802
3803 2000-04-20  NotZed  <NotZed@HelixCode.com>
3804
3805         * providers/mbox/camel-mbox-summary.c (message_struct_new): Trim
3806         leading/trailing spaces off the raw headers.
3807
3808         * MERGE NEW_PARSER branch into HEAD, fixed conflicts.
3809         
3810         * gmime-content-field.c (_print_parameter): Duh, removed again
3811         (@@#$@ cvs merge).
3812
3813         * camel-mime-utils.c (header_content_type_is): Constify.
3814         (header_content_type_unref): Killed a couple warnings.
3815
3816         * camel-folder.c (_init): Removed more log crap.
3817
3818         * providers/Makefile.am (SUBDIRS): Removed nntp, pending fixes for
3819         summary changes.
3820
3821         * providers/mbox/camel-mbox-folder.c (_get_message_by_number):
3822         Fixed for new summary interface.  Added a warning for using this
3823         broken api.
3824         (_get_message_by_uid): Fixed for message new with session
3825         vanishing.
3826
3827 2000-04-19  Dan Winship  <danw@helixcode.com>
3828
3829         * camel-simple-data-wrapper-stream.c
3830         (camel_simple_data_wrapper_stream_get_type): This is a subtype of
3831         CamelSeekableStream, not CamelStream.
3832
3833         * camel-seekable-substream.c: clean up a lot.
3834         (eos): When testing for end-of-stream, reset the parent position
3835         before testing if it is at end-of-stream, since either (a) it may
3836         have been seek'ed to eos by someone else, or (b) we may have been
3837         seek'ed away from eos and it hasn't been synced yet.
3838
3839         * camel-medium.[ch] (camel_medium_add_header): const poison.
3840         (Belatedly goes with my change of 2000-02-23.)
3841         (camel_medium_init): Use g_strcase_{hash,equal} on the header
3842         array.
3843         
3844 2000-04-18  Dan Winship  <danw@helixcode.com>
3845
3846         * camel-mime-part.c (my_set_input_stream): 
3847         * camel-data-wrapper.c (set_input_stream, set_output_stream): do
3848         better reference counting of streams so they actually go away
3849         when they should.
3850
3851         * camel-log.[ch], *: Nuke camel log stuff. Replace calls to
3852         CAMEL_LOG_WARNING with calls to g_warning.
3853
3854         * camel-data-wrapper.[ch]:
3855         * camel-simple-data-wrapper.[ch]:
3856         * camel-medium.[ch]: Clean, polish, document. Most of the gtk-doc
3857         comments added to camel-data-wrapper.c note serious problems that
3858         need to be fixed.
3859
3860 2000-04-17  Dan Winship  <danw@helixcode.com>
3861
3862         * camel-mime-message.[ch]: Remove the "session" field from
3863         CamelMimeMessage. Nothing uses it, about half of the existing
3864         calls to camel_mime_message_new_with_session pass NULL, and
3865         there's no obvious reason for it to be there.
3866
3867         * providers/MH/camel-mh-folder.c:
3868         * providers/maildir/camel-maildir-folder.c:
3869         * providers/mbox/camel-mbox-folder.c:
3870         * providers/mbox/camel-mbox-utils.c:
3871         * providers/nntp/camel-nntp-folder.c:
3872         * providers/pop3/camel-pop3-folder.c: Use camel_mime_message_new
3873         instead of camel_mime_message_new_with_session.
3874
3875         * camel-session.c (get_store_for_protocol_with_url): Set the
3876         exception if no provider is found.
3877
3878         * camel-url.c: Add code to encode and decode %-escapes in URLs,
3879         and do some additional correctness-checking on URL syntax. From
3880         Tiago Antào with modifications by me.
3881
3882 2000-04-14  Chris Toshok  <toshok@helixcode.com>
3883
3884         * providers/Makefile.am (SUBDIRS): add nntp
3885
3886 2000-04-14  Christopher James Lahey  <clahey@helixcode.com>
3887
3888         * providers/mbox/camel-mbox-folder.c: Fix switch statement.
3889
3890 2000-04-14  Chris Toshok  <toshok@helixcode.com>
3891
3892         * providers/nntp/camel-nntp-folder.c (_exists): always return TRUE
3893         for now.  we need to check the server response to make sure the
3894         group exists.
3895         (_get_message_by_uid): make sure to account for the \n we add to
3896         the string after every line.
3897
3898         * providers/nntp/camel-nntp-utils.c (get_XOVER_headers): function
3899         to get the headers using the XOVER command.
3900         (get_HEAD_headers): function to get the headers using the HEAD
3901         command on each message. slooooooow.
3902         (camel_nntp_get_headers): make this function use either XOVER or HEAD
3903         versions depending on whether or not the server extension is present.
3904
3905 2000-04-14  Dan Winship  <danw@helixcode.com>
3906
3907         * camel-formatter.[ch]: This didn't belong in Camel. Move to mail/
3908
3909         * Makefile.am, camel-types.h: remove references to
3910         camel-formatter.
3911
3912 2000-04-12  Matt Loper  <matt@helixcode.com>
3913
3914         * camel-folder-pt-proxy.c (_folder_open_cb): Print warning message
3915         for broken function.
3916         (_folder_close_cb): Same.
3917
3918 2000-04-12  Miguel de Icaza  <miguel@gnu.org>
3919
3920         * Makefile.am (pthread_SRC): Use correct names for the pthread
3921         source variables.
3922
3923 2000-04-10  Dan Winship  <danw@helixcode.com>
3924
3925         * providers/pop3/camel-pop3-store.c (pop3_connect): fix various
3926         bugs in APOP code (still untested) and some of the error cases.
3927
3928         * camel-provider.h: Clarify what provider.protocol, provider.name,
3929         and provider.description should be.
3930
3931         * providers/mbox/camel-mbox-provider.c: 
3932         * providers/pop3/camel-pop3-provider.c: 
3933         * providers/sendmail/camel-sendmail-provider.c: 
3934         * providers/smtp/camel-smtp-provider.c: update protocols, names,
3935         and descriptions
3936
3937         * providers/mbox/camel-mbox-folder.c (_get_message_by_number):
3938         implement get_message_by_number for the mail fetch code.
3939
3940 2000-04-09  Jeffrey Stedfast  <fejj@stampede.org>
3941
3942         * providers/smtp/camel-smtp-transport.c: reformatted to fit
3943         the standard indent format used by helix code
3944
3945 2000-04-09  Dan Winship  <danw@helixcode.com>
3946
3947         * camel-movemail.c: New file with new function to dot-lock an mbox
3948         file and copy it to a safe private directory.
3949
3950 2000-04-08  Christopher James Lahey  <clahey@helixcode.com>
3951
3952         * providers/smtp/.cvsignore: Added a .cvsignore file.
3953
3954 2000-04-08  Dan Winship  <danw@helixcode.com>
3955
3956         * providers/sendmail/camel-sendmail-transport.c (_send_internal):
3957         actually record the pid returned by fork(). Noticed by clahey.
3958
3959         * providers/smtp/camel-smtp-transport.c: #include <sys/param.h>
3960         for MAXHOSTNAMELEN. (This is a stopgap: some of the uses of
3961         MAXHOSTNAMELEN are wrong anyway...)
3962
3963 2000-04-07  Jeffrey Stedfast  <fejj@stampede.org>
3964
3965         * providers/smtp/camel-smtp-transport.c: fixes to numerous bugs;
3966         should now build fine.
3967         * providers/Makefile.am: Readded smtp now that smtp builds without
3968         error.
3969
3970 2000-04-20  NotZed  <NotZed@HelixCode.com>
3971
3972         * providers/mbox/camel-mbox-summary.c
3973         (camel_mbox_summary_next_uid): Public function to get the next
3974         uid, makes sure its saved to disk too.
3975
3976         * camel-mime-part.c (my_finalize): Fix disposition crap with a
3977         real disposition.
3978         (my_set_disposition): Likewise.
3979         (my_get_disposition): And here.
3980         (my_write_to_stream): And here, needs more cleanup.
3981
3982         * providers/mbox/camel-mbox-folder.c (_append_message): Assign a
3983         new uid at this point.
3984
3985         * gmime-content-field.c (gmime_content_field_write_to_stream):
3986         Make something up if we have an invalid/missing content type
3987         (i.e. text/plain).
3988
3989 2000-04-19  NotZed  <NotZed@HelixCode.com>
3990
3991         * providers/mbox/camel-mbox-folder.c (_delete): Fixed completely
3992         broken switch() syntax, only compiled because errno is a macro on
3993         some systems.
3994         (_list_subfolders): Likewise.
3995
3996 2000-04-18  NotZed  <NotZed@HelixCode.com>
3997
3998         * camel-mime-parser.c (folder_scan_init): init stream to null.
3999
4000         * providers/mbox/camel-mbox-summary.c
4001         (CAMEL_MBOX_SUMMARY_VERSION): Moved to .c file, incremented.
4002         (index_folder): Changed to have index passed via the summary.
4003         (decode_string): Do a sanity check on the string size, so we dont
4004         visit g_malloc()'s friendly abort().
4005
4006         * camel-folder-pt-proxy.c (camel_folder_pt_proxy_class_init):
4007         Removed reference to set_name.
4008         (_set_name): Removed.
4009
4010         * providers/mbox/camel-mbox-utils.c
4011         (parsed_information_to_mbox_summary): Removed.  Most of this file
4012         is about to be binned.
4013
4014         * providers/mbox/camel-mbox-search.c (func_header_contains): Fixes
4015         for changes to summary interface.
4016         (struct _searchcontext): Remove pointer to message info, get it
4017         straight from the mboxsummary.
4018         (camel_mbox_folder_search_by_expression): New summary interface.
4019         (camel_mbox_folder_search_by_expression): Uh, the summary is not
4020         an object anymore (well not yet).
4021
4022         * providers/mbox/camel-mbox-folder.c
4023         (camel_mbox_folder_class_init): Removed set_name init.
4024         (_set_name): Removed.
4025         (_open): Call new summary interface.
4026         (_close): Use new summary interface.
4027         (_create): Removed a summary object leak.
4028         (_get_message_count): New summary interface.
4029         (_get_uid_list): Use new summary interface. FIXME: this is leaky.
4030         (_get_message_by_uid): Use the new summary interface, some
4031         cleanup.
4032         (_append_message): Totally changed, basically just appends the
4033         message directly, ignores the summary (for now), the summary will
4034         fix itself up if it needs to.
4035         (_check_get_or_maybe_generate_summary_file): Bye bye old code.
4036         (summary_get_message_info): Implement get_message_info again, for
4037         folder.
4038
4039         * camel-folder.c (camel_folder_class_init): Removed set_name
4040         setup.
4041         (_set_name): Moved contents into _init.
4042         (_init): Perform the old functions of set_name here.
4043
4044         * camel-folder.h: Removed the set_name internal interface.
4045
4046 2000-04-14  NotZed  <NotZed@HelixCode.com>
4047
4048         * providers/mbox/camel-mbox-summary.[ch]: Completely replaced with
4049         new code.
4050
4051         * Makefile.am (libcamel_la_SOURCES): Removed
4052         camel-folder-summary.[ch].
4053
4054         * camel-folder.h (struct _CamelFolder): Removed summary.
4055         (struct _CamelFolder): Changed flags to be 1 bit bitfields.
4056
4057         * camel-folder-summary.[ch]: Class removed entirely.
4058
4059         * camel-folder.c (camel_folder_get_summary): Removed.
4060         (camel_folder_summary_get_message_info): Moved from
4061         camel-folder-summary.c
4062         (camel_folder_summary_get_subfolder_info): Moved from
4063         camel-folder-summary.c
4064
4065         * camel-mime-parser.c (folder_scan_step): Store the start of
4066         headers and start of from in the scan state.
4067         (camel_mime_parser_tell_start_headers): Query the start of the
4068         headers.
4069         (camel_mime_parser_tell_start_from): Query the cached start of
4070         from marker.
4071
4072 2000-04-13  NotZed  <NotZed@HelixCode.com>
4073
4074         * gmime-content-field.c (gmime_content_field_free): Removed this
4075         function.  If its too dangerous to use, it shouldn't be here.
4076         (gmime_content_field_ref): Also ref the embedded content-type.
4077         (gmime_content_field_unref): Ditto to unref it.
4078
4079         * camel-mime-utils.h: Add a refcount for content-type header.
4080
4081         * camel-mime-utils.c (header_content_type_unref): Implement unref
4082         for content-type.
4083         (header_content_type_ref): Implement ref for header content type.
4084
4085 2000-04-12  NotZed  <NotZed@HelixCode.com>
4086
4087         * gmime-content-field.h: Changed to use a _header_content_type.
4088         Added type/subtype back for compatability with clients.
4089         
4090         * gmime-content-field.c: Basically a total rewrite, and now just a
4091         thin wrapper ontop of header_content_type.
4092         (_free_parameter): Got rid of it.
4093         (gmime_content_field_new): Use header_content_type_* functions.
4094         (gmime_content_field_set_parameter): Likewise.
4095         (_print_parameter): Blow away.
4096         (gmime_content_field_write_to_stream): Get details from the
4097         content_type field.  Should check if it needs to escape chars in
4098         the paramter value.
4099         (gmime_content_field_get_mime_type): Likewise.
4100         (___debug_print_parameter): Get rid of this rather annoyingly
4101         named function.
4102         (gmime_content_field_get_parameter): Simplified function.
4103         (gmime_content_field_construct_from_string): Fixed this to use a
4104         real parser.
4105         (gmime_content_field_is_type): New function to test if a type matches.
4106         (gmime_content_field_construct_from_string): Track type/subtype
4107         from subordinate content_type header struct.
4108
4109         * gmime-rfc2047.[ch]: Removed.  Unused.
4110
4111         * camel-stream-b64.[ch]: Blown away more duplicated code.
4112
4113         * Makefile.am: Removed camel-stream-b64.[ch], and
4114         gmime-base64.[ch].
4115
4116         * camel-mime-part.c (my_get_content_object): Replaced
4117         camel-stream-b64 with camel-stream-filter/camel-mime-filter-basic.
4118         (my_write_content_to_stream): Replaced camel-stream-b64 with the
4119         camel-stream-filter with an encoder.
4120         (my_get_content_object): Also implement quoted-printable decoding.
4121         (my_write_content_to_stream): Also implement quoted-printable
4122         encoding.
4123         (my_get_output_stream): Took out stream-b64 code (nothing's being
4124         executed yet anyway).
4125
4126         * gmime-base64.[ch]: Blown away.  Not used, dont need it.
4127
4128         * camel-mime-utils.h: Added offset for this header.  Records where
4129         it is in the source.
4130
4131         * camel-mime-utils.c (header_raw_append_parse): Add offset
4132         parameter, to store where the header is stored in the stream.
4133         (header_raw_append): Added offset param.
4134         (header_raw_find): Return offset, if a pointer supplied for it.
4135         (header_raw_replace): Add offset param.
4136         (header_content_type_new): New function, to create an empty
4137         content type.
4138         (header_content_type_set_param): Set a parameter in the
4139         content-type.
4140         (header_set_param): Generic header parameter setting function.
4141         (header_decode_string): Handle NULL input.
4142
4143         * camel-mime-parser.c (camel_mime_parser_headers_raw): New
4144         function to get access to all the raw headers.
4145         (folder_scan_header): Keep track of the header start position, and
4146         store it when saving the header.
4147
4148 2000-04-11  NotZed  <NotZed@HelixCode.com>
4149
4150         * camel-mime-utils.c: Moved a bunch of printf's to debug.
4151
4152         * camel-mime-parser.c: Moved a bunch of printf's to debug.
4153         (folder_scan_header): Detect end of each header line using the
4154         last scanned char, and not the last scanned position.
4155
4156         * camel-mime-filter-index.[ch]: Indexing filter.  Indexes unicode
4157         sequences into ibex files.
4158
4159 2000-04-09  NotZed  <NotZed@HelixCode.com>
4160
4161         * camel-mime-part.c: Dont include gmime-base64.h
4162
4163         * camel-mime-filter-charset.c (complete): Implement the completion
4164         function.
4165
4166         * camel-mime-parser.c (folder_scan_step): If we get to the end of
4167         the body data, check any filters for outstanding completion data.
4168         (camel_mime_parser_scan_from): Set whether we scan for "From "
4169         headers or not.
4170
4171         * camel-stream-filter.c (do_read): If we get to end of stream on
4172         the source, then call the filtering completion function to see if
4173         we have any more data to return.
4174
4175         * camel-mime-filter-basic.c (filter): Implement quoted printable
4176         encoding and decoding filters.
4177         (complete): And the complete function as well.
4178
4179         * camel-mime-utils.c (base64_encode_close): Also take an input
4180         buffer, allow closing of filters.
4181         (quoted_encode_step): First cut, simple quoted-printable encoder.
4182         Doesn't handle trailing spaces/tabs on end of line properly yet.
4183         (quoted_encode_close): Complete a quoted-encoding.
4184         (is_qpsafe): New type check, for quoted-printable safe characters
4185         (that do not need encoding).  Thats all bits used in the type
4186         table!  Rebuilt the types table.
4187         (header_content_type_is): Checks a content type against at
4188         type/subtype match.
4189         (header_content_type_param): Handle NULL content type pointer.
4190
4191 2000-04-08  NotZed  <NotZed@HelixCode.com>
4192
4193         * camel-mime-filter-basic.c (filter): Implement the base64
4194         encoder.  Problem is, there is no way to know when to close it.
4195         Close/Reset will have to provide the same args as filter, so it can
4196         flush remaining data *sigh*
4197
4198         * camel-mime-utils.c (base64_encode_step): A rather complex base64
4199         encoder, fast?
4200         (base64_step_close): Companion function to finish off the base64
4201         sequence.
4202
4203         * camel-mime-part.c (my_write_content_to_stream): Changed to use
4204         camel_stream_write_to_stream().
4205
4206         * camel-stream.[ch] (camel_stream_write_to_stream): From
4207         camel_stream_b64_write_to_stream().  Fixed some infinite loop
4208         bugs with error conditions.
4209
4210         * camel-stream-b64.[ch] (camel_stream_b64_write_to_stream): Removed.
4211         This has nothing to do with stream-b64, so i've moved it to
4212         CamelStream.
4213
4214         * camel-mime-utils.h: Add a comment about refcounting
4215         header_content_type struct.
4216
4217         * Makefile.am: Added camel-stream-filter*.[ch].
4218
4219         * camel-stream-filter.[ch]: Class to implement a generic
4220         (multipass) filter ontop of a stream.  Only implements a read-only
4221         stream.
4222
4223         * camel-mime-parser.c (camel_mime_parser_filter_add): Ref the
4224         filter we just added.
4225
4226         * Makefile.am: Added camel-mime-filter*.[ch].
4227
4228         * camel-mime-filter-charset.[ch]: A filter to preform character set
4229         conversion (uses unicode_iconv).
4230
4231         * camel-mime-filter-save.[ch]: A simple filter which will save all
4232         data directly to a file or file descriptor.
4233
4234         * camel-mime-filter-basic.[ch]: Implements the basic mime filters,
4235         base64 and quoted-printable decoding (encoding not implemented yet).
4236
4237         * camel-mime-filter.[ch]: A filtering class, which can filter streams
4238         of data without having to copy them.  Simpler than stream classes,
4239         and can be plugged into a single stream class (when i write it).
4240
4241 2000-04-07  Dan Winship  <danw@helixcode.com>
4242
4243         * providers/pop3/camel-pop3-store.c (pop3_connect): Clarify error
4244         messages.
4245         (finalize): fix a bug in camel_exception usage
4246         (pop3_connect): Remember the password after asking for it the
4247         first time.
4248
4249 2000-04-07  NotZed  <NotZed@HelixCode.com>
4250
4251         * Makefile.am: Added camel-mime-parser/camel-mime-utils.
4252
4253         * camel-mime-parser.c: Fast mime parser.
4254
4255         * camel-mime-utils.c: Mime utility functions, and email header
4256         parsers.
4257
4258 2000-04-07  NotZed  <NotZed@HelixCode.com>
4259
4260         * providers/Makefile.am: Removed smtp for now, its a long way from
4261         building.
4262         * providers/smtp/Makefile.in: Removed file that shouldn't have been
4263         checked in.
4264
4265 2000-04-06  Matt Loper  <matt@helixcode.com>
4266
4267         * camel-folder-pt-proxy.c (_get_full_name): Remove exception param
4268         from get_full_name() called, since get_full_name() was changed to
4269         not have an exception in the last param (see dan's notes below).
4270         (_get_name): same.
4271
4272 2000-04-06  Dan Winship  <danw@helixcode.com>
4273
4274         * camel-store.[ch]: Reorganize the folder-fetching methods and
4275         implement a folder cache so that multiple requests for the same
4276         folder will yield the same CamelFolder object (as long as it
4277         remains active). Includes some code to remove no-longer-active
4278         folders from the cache, but it doesn't get used since nothing is
4279         ever unref'ed in Camel right now...
4280         
4281         * providers/mbox/camel-mbox-store.c:
4282         * providers/pop3/camel-pop3-store.c: update for CamelStore
4283         changes.
4284
4285         * camel-folder.[ch]: Remove the (unused) CamelException argument
4286         from camel_folder_get_name and camel_folder_get_full_name.
4287         (camel_folder_set_name): make this go away since changing a
4288         folder's name after it has been created could result in it
4289         conflicting with a separately-issued folder.
4290         
4291 2000-04-05  Dan Winship  <danw@helixcode.com>
4292
4293         * g_url_new really wanted to take a CamelException. So, rename
4294         Gurl to CamelURL, g_url_* to camel_url_* (with camel_url_new
4295         taking an exception), and url-util.[ch] to camel-url.[ch]. Also
4296         force url->port to be numeric and remove camel_service_getport. (I
4297         was confused before: the URL RFC says the port must be numeric, so
4298         we don't want to do getportbyname.)
4299
4300 2000-04-01  Dan Winship  <danw@helixcode.com>
4301
4302         * providers/mbox/camel-mbox-folder.c
4303         (_check_get_or_maybe_generate_summary_file): Compare
4304         mbox_file_size and mbox_modtime to the results of stat()ing the
4305         mbox file, not the summary file. Duh.
4306         (_close): Update the summary's mbox_file_size and mbox_modtime
4307         before writing it to disk.
4308
4309         * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_save,
4310         camel_mbox_summary_load): Wow. I must have been tired when I wrote
4311         this code. First, the comparison bug above. Second, it was using
4312         ntohs and htons instead of ntohl and htonl. Third, I was reading
4313         the status flag byte in two different places and thus getting out
4314         of sync. Fourth, it was writing out field_length bytes of each
4315         header field after having converted field_length to network byte
4316         order, resulting in lots of random crap being appended, and the
4317         summary files being huge. (Fortunately, since the size/modtime
4318         comparison was biffed, the garbage summary read from disk was
4319         always immediately discarded.)
4320
4321         * providers/mbox/camel-mbox-parser.c (camel_mbox_parse_file): fix
4322         an off-by-one error that caused the last-used UID to be reused if
4323         the summary file was regenerated. (That one wasn't my fault. :-)
4324
4325 2000-03-31  Dan Winship  <danw@helixcode.com>
4326
4327         * camel-stream-mem.c: implement unimplemented methods
4328
4329         * gmime-content-field.c
4330         (gmime_content_field_construct_from_string):
4331         * data-wrapper-repository.c
4332         (data_wrapper_repository_get_data_wrapper_type):
4333         * camel-simple-data-wrapper.c (my_write_to_stream):
4334         * camel-mime-part.c (my_set_input_stream):
4335         remove debugging printf()s that no longer seem useful.
4336
4337 2000-03-31  Matt Loper  <matt@helixcode.com>
4338
4339         * camel-formatter.c (text_to_html): Added "convert_newlines_to_br"
4340         boolean param, to give the option of not converting '\n's to <br>
4341         tags. This way, when we stick stuff in a <pre> tag, newlines stay
4342         newlines.
4343
4344 2000-03-30  Matt Loper  <matt@helixcode.com>
4345
4346         * camel-formatter.c (handle_text_plain): Use <pre> tag to force
4347         the use of monospaced fonts.
4348
4349 2000-03-30  Dan Winship  <danw@helixcode.com>
4350
4351         * camel-service.c (camel_service_getport): Add a htons in the
4352         default_number case, and document the fact that the function
4353         returns the port in network byte order.
4354
4355         * providers/pop3/camel-pop3-store.c (pop3_connect): Revert
4356         Miguel's change. The port number bug was actually somewhere
4357         else, and the IP address copying code was fine already.
4358         
4359 2000-03-29  Miguel de Icaza  <miguel@gnu.org>
4360
4361         * providers/pop3/camel-pop3-store.c (pop3_connect): Add htons
4362         (port), and only copy 4 bytes for the IP address to prevent a DNS
4363         attack. 
4364
4365 2000-03-28  Dan Winship  <danw@helixcode.com>
4366
4367         * camel-seekable-substream.c
4368         (camel_seekable_substream_new_with_seekable_stream_and_bounds):
4369         make this return a CamelStream rather than a
4370         CamelSeekableSubstream, because that's the way Gtk objects tend to
4371         work.
4372
4373         * camel-service.c (camel_service_gethost,
4374         camel_service_getport): convenience functions to canonicalize
4375         the host and port values of a service's URL.
4376         * providers/pop3/camel-pop3-store.c: use them
4377
4378         * providers/mbox/camel-mbox-folder.c
4379         (_check_get_or_maybe_generate_summary_file): Make this work when
4380         the inbox file doesn't yet exist.
4381
4382 2000-03-27  Dan Winship  <danw@helixcode.com>
4383
4384         * providers/mbox/camel-mbox-folder.c (_append_message): uncomment
4385         the call to unlink the temp file: there's no way to tell
4386         camel_stream_fs to truncate a file, so reusing the same file was
4387         resulting in junk at the ends of messages.
4388
4389         * camel-folder.[ch]: add delete_message_by_{number,uid}.
4390
4391         * providers/pop3/camel-pop3-folder.[ch]: implement
4392         delete_message_by_uid. Add a close method to do expunging
4393         of deleted messages if requested.
4394
4395         * providers/pop3/camel-pop3-store.[ch]: support for
4396         CamelPop3Folder::close. (You have to close the connection
4397         in order to expunge the folder, thus the store may be
4398         connected in the CamelService::is_connected sense when it
4399         is not actually connected to the server.) Also some bugfixes.
4400
4401 2000-03-27  NotZed  <NotZed@HelixCode.com>
4402
4403         * providers/mbox/camel-mbox-folder.c (_append_message): Unref the
4404         output_stream when done, close doesn't do it.
4405         (_append_message): Clear all uid's from the appending messages, so
4406         they are reassigned proper unique id's.
4407
4408         * gmime-utils.c (get_header_array_from_stream): Actually free the
4409         header, it is copied elsewhere.
4410
4411 2000-03-26  NotZed  <NotZed@HelixCode.com>
4412
4413         * providers/mbox/camel-mbox-utils.c (camel_mbox_write_xev): Added
4414         folder parameter to function.  Fixed callers.
4415         (index_message): Index a message as it is assigned a unique id.
4416
4417         * camel-mime-part.c (my_set_content_id): Make sure we malloc and
4418         copy the content_id, otherwise *poof*
4419
4420 2000-03-25  NotZed  <NotZed@HelixCode.com>
4421
4422         * camel-medium.c (_finalize): Another leak, unref the content if
4423         finished with it.
4424
4425         * camel-recipient.c (camel_recipient_table_free): Plug another
4426         memory leak - actually free the recipient table.
4427
4428         * camel-mime-message.c (_finalize): Plugged a memory leak with the
4429         flags table.
4430
4431         * gmime-utils.c (_store_header_pair_from_string): A simpler, more
4432         debuggable and functionally identical header extraction function.
4433
4434 2000-03-24  NotZed  <NotZed@HelixCode.com>
4435
4436         * gmime-content-field.c (gmime_content_field_set_parameter):
4437         Remove the hash table entry before freeing its key and data.
4438
4439 2000-03-27  Dan Winship  <danw@helixcode.com>
4440
4441         * providers/Makefile.am (SUBDIRS): Add pop3.
4442
4443         * providers/pop3/camel-pop3-store.c: keep separate input and
4444         output streams so the output doesn't end up being buffered.
4445
4446         * providers/pop3/camel-pop3-folder.c (get_message_by_number):
4447         finish implementing this.
4448
4449 2000-03-27  Michael Meeks  <michael@helixcode.com>
4450
4451         * camel-mime-part.c (my_set_disposition): fix so less broken.
4452         (my_finalize): remove dodgy disposition free.
4453
4454         * camel-data-wrapper.c (my_set_mime_type_field): unref instead of
4455         free on mime_type.
4456
4457 2000-03-27  Dan Winship  <danw@helixcode.com>
4458
4459         * camel-service.c (camel_service_free_auth_types): new routine to
4460         free the data allocated by camel_service_query_auth_types.
4461
4462         * providers/pop3/camel-pop3-store.c (free_auth_types): implement
4463
4464         * camel-stream-mem.c (camel_stream_mem_new_with_buffer): rename
4465         camel_stream_mem_new_with_buffer to ..._with_byte_array and add a
4466         new ..._with_buffer that takes a char * rather than a GByteArray.
4467
4468         * Remove CamelStreamBufferedFs, since CamelStreamBuffer makes it
4469         redundant.
4470
4471 2000-03-25  Dan Winship  <danw@helixcode.com>
4472
4473         * camel-folder-summary.[ch]: change the CamelFolderSummary
4474         interfaces to allow partial summary queries (for dealing
4475         with very large folders). Remove the "extended_fields" from
4476         CamelFolderInfo and CamelMessageInfo: this is better dealt
4477         with by subtyping.
4478
4479         * providers/mbox/camel-mbox-summary.[ch]: Make CamelMboxSummary a
4480         subclass of CamelFolderSummary. Update interfaces for that. Remove
4481         the internal/external summary distinction. Remove the (unused) md5
4482         checksum in the folder summary. Change the summary file format
4483         (primarily to make it no longer byte-order dependent) and add a
4484         version number to it so it will be easier to change in the future.
4485         
4486         * providers/mbox/camel-mbox-folder.[ch]
4487         * providers/mbox/camel-mbox-search.c
4488         * providers/mbox/camel-mbox-utils.c: update for summary changes
4489
4490         * camel-exception-list.def: add
4491         CAMEL_EXCEPTION_FOLDER_SUMMARY_INVALID
4492         
4493 2000-03-23  NotZed  <NotZed@HelixCode.com>
4494
4495         * providers/mbox/camel-mbox-provider.c: Added flag to provider
4496         initialisation, to match changed structure.
4497
4498 2000-03-22  NotZed  <NotZed@HelixCode.com>
4499
4500         * camel-folder.[ch]: Added async search api.
4501
4502         * providers/mbox/camel-mbox-search.c
4503         (camel_mbox_folder_search_by_expression): Changed to use an
4504         asynchronous interface.
4505         (camel_mbox_folder_search_cancel): Cancel function for async
4506         interface.
4507
4508 2000-03-23  Dan Winship  <danw@helixcode.com>
4509
4510         * camel-stream-buffer.c (camel_stream_buffer_read_line): Function
4511         to read one line of any size from a stream and return it in
4512         allocated memory.
4513
4514 2000-03-22  Dan Winship  <danw@helixcode.com>
4515
4516         * camel-service.c (camel_service_query_auth_types): New function
4517         to query a service for the authentication protocols it supports.
4518         * providers/pop3/camel-pop3-store.c (query_auth_types): implement
4519
4520         * camel-provider.c (camel_provider_scan): New function to
4521         scan the provider dir and return a list of all providers.
4522
4523         * providers/pop3/camel-pop3-folder.c: fill this in partially
4524         * providers/pop3/camel-pop3-store.c: make camel_pop3_command
4525         return the text after "+OK"/"-ERR" and add a separate
4526         camel_pop3_get_additional_data to get the message body or
4527         whatever. Also make them take a CamelPop3Store rather than
4528         a CamelStreamBuffer.
4529
4530 2000-03-22  Matt Loper  <matt@helixcode.com>
4531
4532         * camel-formatter.c (debug): Disabled some useless debug
4533         messaging.
4534
4535 2000-03-21  Dan Winship  <danw@helixcode.com>
4536
4537         * providers/pop3: some initial bits of the POP3 provider, to
4538         make Matt happy. Incomplete, untested, etc.
4539
4540 2000-03-21  bertrand  <bertrand@helixcode.com>
4541
4542         * providers/mbox/camel-mbox-summary.c 
4543         (camel_mbox_summary_append_internal_to_external): copy the size field
4544
4545         * providers/mbox/camel-mbox-folder.c (_get_message_by_uid): initialize 
4546         message_info to NULL
4547
4548         * camel-folder-summary.h: added the size field.
4549
4550         * providers/mbox/camel-mbox-summary.h: 
4551         added the received_date field.
4552
4553         * providers/mbox/camel-mbox-summary.c:
4554         documented all functions.
4555
4556         * camel-folder-summary.h: name change and 
4557         new fields.
4558
4559         * providers/mbox/camel-mbox-search.c: update to 
4560         conform to name change in the summary fields.
4561
4562 2000-03-10  bertrand  <bertrand@helixcode.com>
4563
4564         * camel-service.h: cosmetic changes.
4565
4566 2000-03-09  Dan Winship  <danw@helixcode.com>
4567
4568         * s/HelixCode/Helix Code, Inc./ in the copyrights
4569
4570 2000-03-07  bertrand  <bertrand@helixcode.com>
4571
4572         * camel-formatter.c (handle_mime_part): 
4573         plug mem leaks due to bad documentation
4574         of camel_content_field_get_mime_type
4575         (print_camel_body_part): idem
4576         (handle_multipart_alternative): idem
4577
4578         * gmime-content-field.c (gmime_content_field_get_mime_type): 
4579         documentation fix.
4580
4581
4582         * camel-mime-part.c (my_finalize): unref the 
4583         content_input_stream if any. 
4584
4585 2000-03-06  bertrand  <bertrand@helixcode.com>
4586
4587         * camel-stream-fs.c (_seek): fix a bogus calculation
4588         in the return position.
4589
4590 2000-03-05  bertrand  <bertrand@helixcode.com>
4591
4592         * camel-session.h: cosmetic fixes.
4593
4594         * camel-stream-fs.c (_read): 
4595         (_seek): fixed the current position so that it refers
4596         to the current position in the stream, not in its parent.
4597
4598 2000-03-04  NotZed  <NotZed@HelixCode.com>
4599
4600         * providers/mbox/camel-mbox-search.c
4601         (camel_mbox_folder_search_by_expression): Ref the summary
4602         after we have got it.
4603
4604 2000-03-04  bertrand  <bertrand@helixcode.com>
4605
4606         * camel-mime-part.c (my_write_content_to_stream): 
4607         stream the raw content instead of nothing if the encoding
4608         is not supported.
4609
4610         * camel-stream-fs.c (_seek): handle eos more
4611         properly.
4612
4613         * camel-formatter.c (get_bonobo_tag_for_object): 
4614         bonobo-goad-id is the good key to look for. 
4615         (get_bonobo_tag_for_object): close the <object> tag.
4616         (get_bonobo_tag_for_object): the correct syntax for the
4617         to set a parameter inside an <object> tag is :
4618         <object classid="..."> <param name="uid" value="..."> <param ...>
4619         </object>
4620
4621 2000-03-03  bertrand  <bertrand@helixcode.com>
4622
4623         * providers/mbox/camel-mbox-folder.c (_get_message_by_uid): 
4624         use set_input_stream instead of construct_from_stream
4625         to feed the message object. 
4626
4627         * camel-data-wrapper.c (my_write_to_stream): reset output stream.
4628         (my_set_input_stream): unref the previous input stream.
4629         use the set_output_stream for default behaviour.
4630         (my_set_output_stream): unref previous output stream.
4631
4632         * camel-mime-part.c (my_write_content_to_stream): reset content
4633         object output stream.
4634
4635 2000-03-03  NotZed  <NotZed@HelixCode.com>
4636
4637         * providers/mbox/camel-mbox-utils.c (camel_mbox_write_xev): Make
4638         sure we open with create with a creation mask.
4639
4640 2000-03-01  NotZed  <NotZed@HelixCode.com>
4641
4642         * camel-mime-part-utils.c
4643         (camel_mime_part_construct_content_from_stream): DO NOT assert on
4644         content type, we have fallback code 4 lines below it ... *sigh*
4645
4646 2000-02-29  NotZed  <NotZed@HelixCode.com>
4647
4648         * Makefile.am (libcamelinclude_HEADERS): Added camel-stream-buffer
4649         to build.
4650
4651         * camel-stream-buffer.[ch]: Generic buffer which can be applied to
4652         any stream.
4653
4654 2000-03-03  bertrand  <bertrand@helixcode.com>
4655
4656         * camel-formatter.c (handle_image): in the case
4657         of images, put the content object output stream
4658         in the url. This allows the message browser
4659         to show inline images.
4660
4661         * camel-stream-b64.c (my_read_encode): fixed state
4662         0 keep value. 
4663
4664 2000-03-02  bertrand  <bertrand@helixcode.com>
4665
4666         * camel-stream-b64.c (my_read_encode): don't forget to 
4667         set the state to 0 after 3.
4668         (my_read_encode): don't forget to encode, even in state 3.
4669
4670         * camel-simple-data-wrapper.c: static functions are prefixed 
4671         with my_ instead of _
4672         * camel-multipart.c: static functions are prefixed 
4673         with my_ instead of _
4674         (my_write_to_stream): commented.
4675         (my_write_to_stream): warning in case the boudary is set
4676         but is a zero length string.
4677
4678         * camel-mime-part.c (camel_mime_part_encoding_from_string): 
4679         remove debug trace. 
4680         
4681         * camel-mime-part.c: Replaced all static functions
4682         with name begining with _ by the same name begining
4683         with "my_" to prevent the possible conflicts 
4684         with system symbols Dan warned us about. 
4685         
4686         * camel-stream-b64.c (camel_stream_b64_write_to_stream): 
4687         use CamelStreamB64 type for the input stream.
4688
4689         * camel-mime-part.c (_get_content_object): remove 
4690         debugging trace
4691         (_write_content_to_stream): implement the b64 
4692         encoding the new way (that is using camel_stream_b64)
4693
4694         * camel-data-wrapper.c (my_write_to_stream): 
4695         fix implementation so that it writes properly
4696         to the output stream even.
4697
4698         * camel-stream-b64.c (camel_stream_b64_write_to_stream): 
4699         fix implementation. 
4700
4701 2000-02-29  bertrand  <bertrand@helixcode.com>
4702
4703         * camel-stream-b64.c (camel_stream_b64_write_to_stream): new
4704         utility function. 
4705
4706         * camel-data-wrapper.c (_write_to_stream): default
4707         implementation. 
4708
4709         * gmime-utils.c (_store_header_pair_from_string): 
4710         revert strange changes. 
4711
4712         * camel-stream-b64.c (my_read_decode): set eos to true when we
4713         have read the whole input stream. 
4714         (my_reset): set eos to FALSE.
4715
4716 2000-02-28  NotZed  <NotZed@HelixCode.com>
4717
4718         * camel-mime-part.c (_parse_header_pair): Dont free this either.
4719
4720         * camel-medium.c (_remove_header): Ugh, dont free the header
4721         before we actually remove it.
4722         (_add_header): Ugh, dont free hashtable entries which may be
4723         duplicated (hash_insert _will_ reference that memory).
4724
4725         * string-utils.c (string_trim): Trimming a 0-length string is not
4726         an error.
4727
4728         * camel-mime-message.c (_parse_header_pair): Fixed very broken
4729         memory handling of header_name/value.
4730
4731         * providers/mbox/camel-mbox-utils.c (camel_mbox_write_xev):
4732         Initialise end_of_last_message always.
4733         (camel_mbox_copy_file_chunk): Stop trying to read if we run out of
4734         data, rather than looping forever.
4735         (camel_mbox_write_xev): Use an open flag when opening with create.
4736
4737         * camel-folder.c (camel_folder_search_by_expression): No, its not
4738         a fatal error to search on a non-searchable folder, you just dont
4739         get any matches.
4740         (_open): Dont open an opened folder (i dont see why this is really
4741         a bug, but what the hell ...)
4742
4743         * providers/mbox/camel-mbox-folder.c (_init): Set search cap on.
4744         (_open): Call parent class to perform open.  Remove folder-open
4745         check to parent instead.
4746         (_create): open takes a creation mask, dont use umask to try and
4747         set the open mode.
4748         (_delete): Dont bother checking folder==NULL, its already been
4749         checked on the external interface (changed to an assertion, this
4750         would have to be a camel bug).
4751         (_delete_messages): Likewise.
4752         (_create): Ditto.
4753         (_init): Dont go and clear all the paths and shit that the parent
4754         open just setup for us.
4755         (_delete_messages): Get rid of more umask stuff.
4756         (_append_message): Make sure we pass file mode to open with create.
4757         (_append_message): Cleaned up some indenting to make it readable.
4758
4759         * camel-stream-b64.c (my_read_encode): Fixed a typo.
4760
4761         * providers/mbox/camel-mbox-search.c: Changed to use e-sexp,
4762         rather than filter-sexp.
4763
4764 2000-02-28  bertrand  <bertrand@helixcode.com>
4765
4766         * camel-stream-b64.c (my_read_encode): encoding
4767         filter.
4768
4769 2000-02-23  bertrand  <Bertrand.Guiheneuf@aful.org>
4770
4771         * camel-stream-b64.c: changed the __static 
4772         suffix into a my_ prefix. 
4773         (camel_stream_b64_set_mode): reset the persistent
4774         status. 
4775         (my_read_decode): remove superfluous %
4776         
4777         * providers/mbox/camel-mbox-utils.c (camel_mbox_copy_file_chunk): 
4778         fix exception description message.
4779
4780 2000-02-24  Dan Winship  <danw@helixcode.com>
4781
4782         * camel-session.c: Add camel_session_get_transport_for_protocol.
4783
4784         * camel-transport.h:
4785         * camel-transport.c: Add an abstract CamelTransport class.
4786
4787         * providers/sendmail/*: A CamelTransport that uses sendmail
4788         to deliver mail.
4789
4790 2000-02-24  Dan Winship  <danw@helixcode.com>
4791
4792         * camel-folder.c: use CamelExceptions for run-time errors, not
4793         incorrect code. Don't bother validating that an object exists from
4794         inside one of its methods, since you couldn't have gotten there if
4795         it didn't. Fix some code style bugs.
4796
4797         (_init): Rename init_with_store to init and add parent_folder,
4798         separator, and name arguments.
4799         (_set_name): Get separator from self, not parent_store now.
4800
4801         * camel-store.h:
4802         * camel-store.c: Remove get/set_separator.
4803
4804         * providers/mbox/: Update for above.
4805
4806 2000-02-23  Dan Winship  <danw@helixcode.com>
4807
4808         * camel-medium.c (_finalize): Free the data in the headers hash
4809         table.
4810         (_add_header): g_strdup the header name and value when adding it.
4811
4812         * camel-mime-part-utils.c
4813         (camel_mime_part_construct_headers_from_stream): Free the header
4814         data after calling camel_medium_add_header, since it will have
4815         g_strdup()ed it itself.
4816
4817 2000-02-22  NotZed  <NotZed@HelixCode.com>
4818
4819         * providers/mbox/camel-mbox-search.c: Dont compile by default.
4820
4821         * providers/mbox/Makefile.am: Fuck off the filter code.
4822
4823 2000-02-22  bertrand  <Bertrand.Guiheneuf@aful.org>
4824
4825         * camel-stream-b64.c (read_decode__static): 
4826         don't read the char if we reached the length
4827         of the output buffer. Hours lost on this
4828         %$!@# bug : 3.5
4829
4830         * camel-folder.c (camel_folder_get_subfolder): 
4831         (camel_folder_create): 
4832         (camel_folder_delete): 
4833         (camel_folder_delete_messages): 
4834         (camel_folder_list_subfolders): 
4835         (camel_folder_expunge): 
4836         (camel_folder_get_message_by_number): 
4837         (camel_folder_get_message_count): 
4838         (camel_folder_append_message): 
4839         (camel_folder_copy_message_to): 
4840         (camel_folder_get_summary): 
4841         (camel_folder_get_message_uid): 
4842         (camel_folder_get_message_by_uid): 
4843         (camel_folder_get_uid_list): 
4844         Check folder state (open/close) and raise an
4845         exception if it is not ok. 
4846         
4847         * providers/mbox/camel-mbox-folder.c (_create): 
4848         create the file and the path with two different
4849         names.
4850
4851         * camel-folder.c (_create): handle the case 
4852         when the folder name starts with '/'
4853
4854         * camel-exception.c (camel_exception_new): use 
4855         (void) instead of () in decl.
4856
4857         * camel-exception.h: cosmetic fixes.
4858
4859         * camel-exception.c (camel_exception_init): new routine.
4860         Fix a bug in mail/message-list.c
4861         
4862
4863         * camel-folder.h: cosmetic changes.
4864
4865         * camel-stream-b64.c (reset__static): added a
4866         reset method. Thanks message-browser to find
4867         so much bugs :)
4868
4869         * providers/mbox/Makefile.am (libcamelmbox_la_LIBADD): readd
4870         Unicode libs.
4871
4872 2000-02-21  bertrand  <Bertrand.Guiheneuf@aful.org>
4873
4874         * camel-formatter.c (lookup_unique_id): 
4875         awful hack to test get_output_stream.
4876         * camel-stream-b64.[ch] :
4877         b64 encoding/decoding is now implemented as
4878         a stream. 
4879         
4880
4881 2000-02-21  bertrand  <Bertrand.Guiheneuf@aful.org>
4882
4883         * camel-seekable-substream.c (_reemit_parent_signal): 
4884         emit "data_available" when parent stream emits it. 
4885
4886
4887 2000-02-21  NotZed  <NotZed@HelixCode.com>
4888
4889         * providers/mbox/Makefile.am: Uh, fixed LIBADD again.  What was
4890         there was never ever going to work, wasn't it tested?
4891
4892
4893 2000-02-21  Dan Winship  <danw@helixcode.com>
4894
4895         * camel-session.h: (struct _CamelSession): Add authenticator.
4896
4897         * camel-session.c (camel_session_new): Add authenticator.
4898         (camel_session_query_authenticator): New function to query the
4899         session authenticator for password, etc, information.
4900
4901 2000-02-21  Dan Winship  <danw@helixcode.com>
4902
4903         * camel-session.c: add CamelExceptions to several functions. Use
4904         camel_session_new to initialize the session and URL fields of
4905         created CamelStores as appropriate.
4906
4907         * camel-store.h:
4908         * camel-store.c
4909         * camel-service.h:
4910         * camel-service.c: Move the session and url (and associated
4911         functions) from CamelStore to CamelService. Add url_flags to
4912         CamelService so subclasses can specify which URL components
4913         are mandatory for them. Add camel_session_new for
4914         camel_session_get_store* to use.
4915
4916         * providers/mbox/camel-mbox-folder.c:
4917         * providers/mbox/camel-mbox-store.c:
4918         * providers/mbox/camel-mbox-store.h: Update for above changes.
4919
4920         * camel-exception-list.def: Once camel is being used for real,
4921         exceptions won't be renumberable. So renumber them now to make
4922         more room to add exceptions to the various categories later, and
4923         add a big warning message.
4924
4925 2000-02-20  Dan Winship  <danw@helixcode.com>
4926
4927         * providers/mbox/Makefile.am: add libibex back to
4928         libcamelmbox_la_LIBADD
4929
4930 2000-02-18  NotZed  <NotZed@HelixCode.com>
4931
4932         * providers/mbox/camel-mbox-search.h
4933         (camel_mbox_folder_search_by_expression): Added exception to call,
4934         and fixed caller.
4935
4936         * providers/mbox/camel-mbox-search.c
4937         (camel_mbox_folder_search_by_expression): Major changes, to use
4938         the sexp evaluator from filter/filter-sexp.c to implement the
4939         searching.
4940         (func_body_contains): Changed to support multiple strings in 1
4941         command (results or'd together)
4942
4943         * url-util.c (g_url_new): Fixed a typo (colon == 0 isn't right),
4944         and made it so full url's are absolute pathed (Dan, this is how it
4945         has to work!).  Also, always include a path part, even if it is an
4946         empty string.
4947
4948 2000-02-18  Dan Winship  <danw@helixcode.com>
4949
4950         * camel/camel-types.h: New header with the typedefs for all camel
4951         classes. Now the class headers can just include this and the
4952         header for the parent type. This makes it possible for
4953         CamelService to include a CamelSession without creating an
4954         #include loop.
4955
4956         * camel/*:      
4957         * composer/e-msg-composer-attachment-bar.h:
4958         * mail/folder-browser.c:
4959         * mail/message-list.c: frob #includes to match the new reality
4960
4961 2000-02-17  Dan Winship  <danw@helixcode.com>
4962
4963         * camel/camel-service.h:
4964         * camel/camel-service.c: Make camel-service us a Gurl internally.
4965         Remove the login/password interfaces and instead provide
4966         camel_service_connect_with_url. Add CamelExceptions
4967
4968 2000-02-17  bertrand  <Bertrand.Guiheneuf@aful.org>
4969
4970         * camel/camel-formatter.c (handle_text_plain): 
4971         (handle_text_html): use camel_stream_reset instead
4972         of seek. The formatter should be able to work 
4973         with all streams, not only seekable streams. 
4974         In the case where some provider implementation
4975         would not be able to provide a reset method 
4976         to their stream, implementors would have
4977         to find a workaround.
4978
4979         * camel/camel-session.c (camel_session_new): use
4980         (void) instean of () in function decl.
4981
4982         * camel/camel-folder.c: ifdef async operation 
4983         related code. 
4984
4985         * camel/camel-seekable-stream.c (_seek): added a warning.
4986         (_reset): default implementation of reset for seekable
4987         stream.
4988
4989         * camel/camel-mime-message.h: set_received_date declaration fix.
4990         cosmetic changes.
4991
4992         * camel/providers/mbox/camel-mbox-provider.c (camel_provider_module_init): 
4993         use (void) instead of ().
4994
4995         * camel/camel-stream.c (camel_stream_reset): 
4996         new method for CamelStream.
4997
4998 2000-02-17  Dan Winship  <danw@helixcode.com>
4999
5000         * camel/url-util.c (g_url_to_string): New function to convert
5001         a Gurl back into a char *.
5002
5003 2000-02-17  bertrand  <Bertrand.Guiheneuf@aful.org>
5004
5005         * camel/camel-formatter.c (handle_text_plain): 
5006         revamped so that it uses the output stream
5007         of the data wrapper
5008         (handle_text_html): ditto.
5009         
5010         
5011         * camel/camel-simple-data-wrapper.h: 
5012         * camel/camel-simple-data-wrapper.c (camel_simple_data_wrapper_new): 
5013         use (void) instead of ().
5014         (_get_output_stream): simple implementation. 
5015
5016 2000-02-16  bertrand  <Bertrand.Guiheneuf@aful.org>
5017
5018         * camel/camel-data-wrapper.c (_set_input_stream): ref input stream
5019         (_set_output_stream): ref output stream
5020         (_finalize): unref input and output streams
5021
5022         * camel/camel-seekable-substream.c (_set_bounds): don't
5023         seek the begining of the substream.
5024         (_eos): fix eos condition testing. 
5025         (_finalize): unref parent stream
5026         (_init_with_seekable_stream_and_bounds): ref parent stream
5027
5028         * camel/gstring-util.c (g_string_equal_for_hash): 
5029         (g_string_equal_for_glist): return type is int.
5030
5031         * camel/camel.h: 
5032         * camel/camel.c (camel_init): use (void) 
5033         instead of ().
5034         
5035 2000-02-16  NotZed  <NotZed@HelixCode.com>
5036
5037         * providers/mbox/Makefile.am (libcamelmbox_la_LIBADD): Added
5038         libfilter to link line (temporarily?).  Required for
5039         filter-sexp.
5040
5041 2000-02-15  bertrand  <bertrand@helixcode.com>
5042
5043         * camel/camel-multipart.c (_localize_part): 
5044         this routine replaces the _read_part routine
5045         and does not store the part in a buffer. 
5046         (_set_input_stream): use the set_input_stream
5047         instead of the construct_from_stream.
5048         each bodypart is given an input stream. 
5049
5050         * camel/camel-mime-part-utils.c: 
5051         include the data-wrapper-repository header. 
5052         (camel_mime_part_construct_content_from_stream): 
5053         use the set_input_stream instead of the 
5054         construct_from_stream method. 
5055
5056         * camel/camel-seekable-substream.c (_set_bounds): 
5057         cur position is set to 0 not to inf_bound.
5058
5059 2000-02-15  bertrand  <Bertrand.Guiheneuf@aful.org>
5060
5061         * camel/camel-mime-part.c: include gmime-base64.h
5062         various compilation and runtime fixes.
5063         (_set_input_stream): store the input substream 
5064         for the content object.
5065
5066         * camel/camel-data-wrapper.h: declare the 
5067         set/get function on input/output stream.
5068
5069         * camel/camel-mime-part.c (_get_content_object): 
5070         don't use a temporary mem stream.       
5071
5072         * camel/camel-seekable-substream.c (_seek): 
5073         (_eos): 
5074         (_read): the substream can be unlimited in length
5075
5076         * camel/camel-data-wrapper.c (camel_data_wrapper_class_init): 
5077         set the get/set_input/output_stream methods.    
5078
5079         * camel/camel-multipart.c (_construct_from_stream): 
5080         camel_stream_seek -> camel_seekable_stream_seek
5081
5082 2000-02-14  Miguel de Icaza  <miguel@gnu.org>
5083
5084         * camel/providers/mbox/Makefile.am (libcamelmbox_la_LIBADD): Add
5085         the unicode libraries as well.
5086
5087         * camel/camel-provider.c (camel_provider_register_as_module): Add
5088         error reporting here.  Desire to use Solaris increases.  Hair loss
5089         in the last two hours: 5,400.
5090
5091         * camel/providers/mbox/camel-mbox-provider.c
5092         (camel_mbox_get_provider): Renamed function.
5093
5094         * camel/camel.h: All include files use camel/ now here.
5095
5096         * camel/providers/mbox/Makefile.am: Drop all the dynamism from
5097         Camel, and make this a standard library.
5098
5099 2000-02-14  bertrand  <Bertrand.Guiheneuf@aful.org>
5100
5101         * camel/gmime-utils.c (get_header_array_from_stream): use the 
5102         eos stream method. 
5103         (gmime_read_line_from_stream): ditto.
5104
5105         * camel/camel-stream-fs.h (struct ): add the eof field
5106         cosmetics changes. 
5107
5108         * camel/camel-stream-fs.c (camel_stream_fs_init): set eof.
5109         (_read): set eof on end of file.
5110         (_eos): implemented.
5111
5112         * camel/gmime-utils.c (get_header_array_from_stream): 
5113         make a blocking version of the header parser. 
5114         When the fs stream uses gnome-vfs, this should
5115         be changed. 
5116         (gmime_read_line_from_stream): ditto. 
5117
5118 2000-02-11  bertrand  <Bertrand.Guiheneuf@aful.org>
5119
5120         * camel/camel-stream-fs.c: 
5121         everywhere, when using the cur_pos field, do it
5122         on the CamelSeekableStream object.
5123         (_seek): small fix. 
5124
5125         * camel/camel-seekable-stream.c (camel_seekable_stream_seek): 
5126         s/camel_stream_seek/camel_seekable_stream_seek/g
5127
5128         * camel/camel-seekable-stream.h: 
5129         (struct ): added a field to store the
5130         current position.
5131
5132         * camel/camel-seekable-stream.c (camel_seekable_stream_get_current_position): 
5133         New function. Allows to get the current position 
5134         of a seekable stream.
5135         
5136
5137 2000-02-13  NotZed  <notzed@zedzone.helixcode.com>
5138
5139         * providers/mbox/camel-mbox-search.c: New file, implements the
5140         search api for mbox folders.
5141
5142         * providers/mbox/Makefile.am: Link with ibex.
5143
5144         * camel-folder.c (camel_folder_has_search_capability): Api
5145         additions.
5146         (camel_folder_search_by_expression): Ditto.
5147
5148 2000-02-12  NotZed  <notzed@zedzone.helixcode.com>
5149
5150         * providers/mbox/camel-mbox-folder.c (_set_name): Setup index
5151         filename as well.
5152         (_init_with_store): Init index filename.  Hmm, none of these
5153         names ever seem to get free'd (FIXME?)
5154
5155         * providers/mbox/camel-mbox-folder.h: Add index file name.
5156
5157 2000-02-12  NotZed  <notzed@helixcode.com>
5158
5159         * camel-folder.h: Add folder search functions.
5160
5161         ** Created ChangeLog just for camel **
5162          - refer to ../ChangeLog for changes prior to this date.