2000-10-11 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (imap_move_message_to): Quote
the mailbox name as it may contain spaces.
(imap_copy_message_to): Same.
svn path=/trunk/; revision=5853
2000-10-09 Chris Toshok <toshok@helixcode.com>
* providers/nntp/camel-nntp-store.c (finalize): write out the
newsrc.
(nntp_store_get_name): if @brief, just return host.
* providers/nntp/camel-nntp-newsrc.c: robustification and bug
fixes.
svn path=/trunk/; revision=5808
2000-10-08 Miguel de Icaza <miguel@helixcode.com>
* camel-mime-part.c (write_to_stream): Issue a warning if h->value
is NULL.
svn path=/trunk/; revision=5785
2000-10-06 Chris Toshok <toshok@helixcode.com>
* providers/nntp/camel-nntp-grouplist.c: new file.
* providers/nntp/camel-nntp-grouplist.h: new file.
* providers/nntp/camel-nntp-types.h: new file.
svn path=/trunk/; revision=5767
2000-10-06 Jeffrey Stedfast <fejj@helixcode.com>
* camel-mime-utils.c (quoted_encode): Fix so that we don't encode
every single char in the word. Also, do we need a safemask? I
don't see why we would.
(header_encode_string): Don't strip off the last char!!
svn path=/trunk/; revision=5766
2000-10-06 Jeffrey Stedfast <fejj@helixcode.com>
* camel-mime-utils.c (quoted_encode): Fix so that we don't encode
every single char in the word. Also, do we need a safemask? I
don't see why we would.
svn path=/trunk/; revision=5765
2000-10-05 Jeffrey Stedfast <fejj@helixcode.com>
* camel-mime-utils.c (header_address_list_format_append): Encode
the name part of the address and don't quote the name.
(header_decode_text): Rewrote from scratch, the old code was badly
broken.
svn path=/trunk/; revision=5758
2000-10-05 Jeffrey Stedfast <fejj@helixcode.com>
* camel-mime-utils.c (quoted_encode_step): Modified to not encode
space chars in the middle of a line.
(isblank): New macro if we're not on a system with the GNU isblank
extension.
* camel-mime-message.c (camel_mime_message_set_from): Reversed my
changes, don't header_encode_phrase - it generates broken headers.
(camel_mime_message_set_reply_to): Same.
svn path=/trunk/; revision=5747
2000-10-04 Chris Toshok <toshok@helixcode.com>
* providers/nntp/camel-nntp-utils.c (camel_nntp_get_headers):
revert to old method (only use XOVER if OVER is supported.)
* providers/nntp/camel-nntp-store.c
(camel_nntp_store_get_overview_fmt): handle the case where the
OVER extension isn't listed but LIST OVERVIEW.FMT works (again,
INN 2.2). enable the OVER extension in this case.
svn path=/trunk/; revision=5739
2000-10-04 Chris Toshok <toshok@helixcode.com>
* providers/nntp/camel-nntp-utils.c (get_XOVER_headers): return a
gboolean so we can tell if this command worked. we can't key off
the OVER extension being present because at least one server (INN
2.2) doesn't report the OVER extension but implements the XOVER
command. This could of course just be because I'm a loser for
thinking they were related in the first place.
(camel_nntp_get_headers): always try XOVER first, and if it fails
revert to the slow method.
svn path=/trunk/; revision=5723
* providers/mbox/camel-mbox-store.c (get_folder): Fix a case where
a variable was free'd and then possibly used in an error message.
svn path=/trunk/; revision=5722
2000-10-04 Chris Toshok <toshok@helixcode.com>
* providers/nntp/camel-nntp-store.c (nntp_store_get_folder_info):
use "nntp:" instead of "news:" since "news:" urls aren't supposed
to have host/user/port info in them. also, if there's a user
defined in the url, put it in the urls for our folders.
svn path=/trunk/; revision=5717
2000-10-04 Chris Toshok <toshok@helixcode.com>
* providers/nntp/camel-nntp-auth.c (camel_nntp_auth_authenticate):
borrow some code from the imap provider to query the user for
their password, and pass the user/passwd to nntp. be extra
paranoid and zero out the password before freeing it.
* providers/nntp/camel-nntp-store.c (camel_nntp_store_init): add
ALLOW_USER/ALLOW_PASSWORD/ALLOW_AUTH to the url flags.
(nntp_store_query_auth_types_generic): return our list of
auth_types.
(nntp_store_query_auth_types_connected): broken, return same as in
query_auth_types_generic.
svn path=/trunk/; revision=5716
* providers/imap/camel-imap-store.c (imap_connect): IMAP4
(pre-rev1) doesn't support the 'LIST "" ""' idiom, so don't use
it. Just assume the dir_sep is '/'. Shrug.
svn path=/trunk/; revision=5714
2000-10-04 Not Zed <NotZed@HelixCode.com>
* camel-mime-utils.c (header_content_type_is): Handle the case
where ct != NULL, but type and subtype are, and also match that
against text/plain.
* camel-folder-summary.c: Bump summary file version.
(message_info_save): Save the size from the messageinfo.
(message_info_load): Load the size from the summary file.
(message_info_load): Fixed up the time_t saving/loading. There
was a reason the warning was left there ... obviously nobody could
read the comment "/* warnings, leave them here */", why do i even
bother.
(camel_folder_summary_decode_time_t): Decode a time_t value from
the summary file.
(camel_folder_summary_encode_time_t): Encode a time_t value to the
summary file.
svn path=/trunk/; revision=5706
2000-10-03 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-command.c (camel_imap_command): Quote
the mailbox name when sending a SELECT request otherwise mailboxes
with spaces in their names will cause problems.
* camel-mime-message.c (camel_mime_message_set_reply_to): encode
before setting.
(camel_mime_message_set_from): Same.
svn path=/trunk/; revision=5697
* providers/imap/camel-imap-command.c: New file containing
camel_imap_command and friends. Major camel_imap_command rewrite
to remove duplicated code, make the parsing of literals be
more safe/correct, deal with RECENT/EXPUNGE responses more
consistently, and make it possible to implement the AUTHENTICATE
command.
* providers/imap/camel-imap-utils.c (imap_parse_nstring): New
function, to parse an IMAP "nstring".
* providers/imap/camel-imap-store.c: Move command stuff to
camel-imap-command.c. Update for camel_imap_command changes.
* providers/imap/camel-imap-folder.c: Update for
camel_imap_command changes.
(imap_append_message): CRLF filter the message before sending it.
* providers/imap/Makefile.am: Add camel-imap-command.[ch], remove
camel-imap-stream.[ch] for now.
svn path=/trunk/; revision=5693
2000-10-02 Jeffrey Stedfast <fejj@helixcode.com>
* camel-mime-message.c (camel_mime_message_has_8bit_parts): New
convenience function to determine if there are any 8bit mime parts
in a mime message.
(camel_mime_message_encode_8bit_parts): New convenience function
to recursively reencode all 8bit mime parts to either
quoted-printable or base64 depending on which would be the best
encoding for that part.
* providers/smtp/camel-smtp-transport.c (smtp_data): If the mime
message contains 8bit parts and the server doesn't support 8bit
transfers, reencode those parts before proceding with the send.
(smtp_mail): If the mime message contains 8bit parts and the
server supports the 8BITMIME extension to SMTP, notify the server
that we'll be sending it 8bit mime parts.
(_send_to): Find out if the message contains 8bit parts.
svn path=/trunk/; revision=5677
* camel-folder.[ch]: Remove
camel_folder_{get,free}_subfolder_info, as we want to be able to
scan the whole subfolder tree without having to open any folders,
so this needs to be in CamelStore. Remove can_hold_folders and
can_hold_messages flags; things that don't hold messages are no
longer considered CamelFolders.
* camel-folder-summary.[ch]: Remove CamelFolderInfo stuff.
* camel-store.[ch]: Add camel_store_{get,free}_folder_info, as
well as camel_store_free_folder_info_full and ..._nop for default
implementations, and camel_folder_info_free and
camel_folder_info_build as convenience functions. Turn
CamelFolderInfo into a tree structure and also add an "url"
member.
* providers/*/camel-*-folder.c: Remove subfolder_info and can_hold
stuff.
* providers/*/camel-*-store.c: Add folder_info stuff.
* providers/imap/camel-imap-folder.c (imap_summary_free): Free the
summary elements with camel_message_info_free, not
camel_folder_info_free. Oops.
* providers/imap/camel-imap-utils.c: const poison
svn path=/trunk/; revision=5663
2000-09-28 Jeffrey Stedfast <fejj@helixcode.com>
* providers/smtp/camel-smtp-transport.c: Fixed some memory leaks.
(camel_smtp_transport_init): Initialize supports_8bit to FALSE.
(smtp_helo): If server supports 8bit, set supports_8bit to TRUE.
* camel-transport.h (struct _CamelTransport): Added variable
gboolean supports_8bit (we'll need this eventually? - see bugzilla
bug #53)
* providers/smtp/camel-smtp-transport.c
(smtp_get_email_addr_from_text): Ugh, no wonder people were
getting illegal seek warnings *sigh*. I guess I can only blame
myself for this one though :-(
svn path=/trunk/; revision=5631
2000-09-28 Jeffrey Stedfast <fejj@helixcode.com>
* providers/smtp/camel-smtp-transport.c (_send_to): Don't send the
recipient data through smtp_get_email_addr_from_text - this is a
complete waste. In fact, we don't want to have to use that
function ever.
* camel-internet-address.c, camel-address.c: Added some gtk-doc comments.
svn path=/trunk/; revision=5629
2000-09-28 Jeffrey Stedfast <fejj@helixcode.com>
* camel-mime-utils.c (header_encode_string): Make sure to add the
space char after an encoded word when the encoding is iso-8859-1.
svn path=/trunk/; revision=5626
2000-09-28 Not Zed <NotZed@HelixCode.com>
* camel-mime-utils.c (header_fold): New function to fold headers.
2000-09-27 Not Zed <NotZed@HelixCode.com>
* camel-mime-parser.c (folder_scan_header): If we had an empty
header, then it must be end of the headers too.
(folder_scan_init): No we dont need to init the outbuf with a nul
terminator.
* camel-folder-summary.c (camel_folder_summary_set_uid): New
function to reset the uid to a higher value.
* providers/mbox/camel-mbox-summary.c (camel_mbox_summary_sync):
"something failed (yo!)" what sort of crap is this? Fixed all the
indenting again, what wanker keeps running stuff through indent?
(message_info_new): Check the uid we loaded off the disk, if it
existed already, assign a new one. If it didn't then make sure
the nextuid is higher.
* camel-charset-map.c: New file, used to build a large unicode
decoding mapping table, and use it to determine what is the
lowest charset a given word can be encoded with. Uses tables from
libunicode's source.
* camel-internet-address.c (internet_encode): Use
header_phrase_encode to properly encode the fullname, as required.
refixed indenting. Who keeps doing that?
(camel_internet_address_find_address): Changed fatal return/warnings
into assertions.
* camel-mime-utils.c (header_raw_append_parse): Check : explicitly
(removed from is_fieldname() macro).
(camel_mime_special_table): Changed to short, so we can represent
more bit types.
(quoted_encode): Take a mask of the safe chars for this encoding.
(header_address_decode): Removed a #warning that makes no sense
anymore.
(header_decode_date): Fixed the 'broken date' parser code, if it
ever decoded it it just threw away the result.
(header_encode_string): Use better charset matching for encoding
strings as well.
2000-08-31 Not Zed <NotZed@HelixCode.com>
* providers/mh/camel-mh-summary.c (camel_mh_summary_sync): Save
the index if we do a sync.
(camel_mh_summary_check): Save the index here too. Probably.
svn path=/trunk/; revision=5615
* providers/imap/camel-imap-store.c (camel_imap_command_extended):
Return untagged data in a GPtrArray rather than a string, since it
saves processing time and is much easier to deal with for several
commands. Update for camel_imap_folder_changed change.
(camel_imap_fetch_command): Update for camel_imap_folder_changed
change.
(imap_connect, imap_folder_exists): Update for
camel_imap_command_extended change.
* providers/imap/camel-imap-folder.c
(imap_get_message_count_internal,
imap_get_subfolder_info_internal, imap_search_by_expression):
Update for camel_imap_command_extended change.
(imap_get_summary_internal, imap_get_message_info_internal): Use
camel_imap_fetch_command here now to get around the
camel_imap_command_extended change.
(camel_imap_folder_changed): turn expunged into a GArray of ints
rather than a GPtrArray of strings representing ints.
svn path=/trunk/; revision=5608
2000-09-26 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c
(imap_get_message_count_internal): Quote the folder name as it may
contain spaces.
(imap_get_subfolder_info_internal): Same.
* providers/imap/camel-imap-utils.c (imap_parse_list_response): Do
proper unquoting for folder names.
(func_get_current_date): Implemented.
* providers/imap/camel-imap-store.c
(imap_folder_exists): Quote the folder name as it may have spaces.
(imap_create): Same.
(check_current_folder): Same.
svn path=/trunk/; revision=5592
2000-09-22 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c
(imap_get_message_count_internal): Again...wrap the folder names
in quotes
* providers/imap/camel-imap-store.c (imap_folder_exists): Wrap the
mailbox name in the LIST command in quotes just in case the folder
has spaces in the name.
(imap_create): Again, wrap folder name in quotes.
(check_current_folder): Same...
* providers/imap/camel-imap-utils.c (imap_parse_list_response):
Update to unquote mailbox if it's quoted (allows us to get folders
with spaces in the name).
svn path=/trunk/; revision=5556
* providers/imap/camel-imap-folder.c
(imap_get_subfolder_info_internal): The root folder's name is "",
not the namespace.
(camel_imap_folder_new): constify folder_name.
* providers/imap/camel-imap-store.c (get_folder): Create the
folder with folder_name, not folder_path.
(camel_imap_command_preliminary): Don't free cmdid here.
svn path=/trunk/; revision=5552
* providers/imap/camel-imap-utils.c (imap_create_flag_list): New
function to convert Camel flags to an IMAP flag_list.
(imap_parse_flag_list): Contrariwise.
* providers/imap/camel-imap-store.c (camel_imap_command_*): Make
the @ret arg actually optional, as (mostly) documented.
(various): Don't pass "&result" to camel_imap_command_* if we're
just going to immediately free it. Don't record status if we're
not going to look at it.
* providers/imap/camel-imap-folder.c: Likewise.
(imap_summary_free): Use camel_folder_info_free.
(imap_sync): Use imap_create_flag_list. Clear
CAMEL_MESSAGE_FOLDER_FLAGGED after syncing so we don't keep
re-syncing.
(imap_append_message): Use imap_create_flag_list. Don't leak the
memstream if the append fails.
(imap_move_message_to): Use camel_folder_delete_message rather
than doing it by hand.
(imap_get_summary_internal, imap_get_message_info_internal): Use
imap_parse_flag_list and header_raw_clear.
(camel_imap_folder_changed): Use camel_message_info_free.
svn path=/trunk/; revision=5544
* providers/imap/camel-imap-store.c (get_folder_name): INBOX is
case-insensitive.
(get_root_folder_name): Make the root folder "" rather than "/".
(get_folder): Update for root folder name change.
(camel_imap_store_get_toplevel_dir): Removed. (Unused, unneeded.)
(camel_imap_store_folder_path): New function to turn a Camel
folder name into the corresponding namespaced IMAP path.
(imap_folder_exists): Make this take a store and a path rather
than a folder.
(imap_create): Likewise
(get_folder): Update for camel_imap_store_folder_path and other
changes.
(check_current_folder): Likewise.
* providers/imap/camel-imap-folder.c: Change a bunch of CamelStore
variables to CamelImapStore (and add a few more) to prevent excess
gratuitous casting. Use camel_imap_store_folder_path where
appropriate.
(camel_imap_folder_new): Update for root folder name change.
svn path=/trunk/; revision=5541
2000-09-19 Jeffrey Stedfast <fejj@helixcode.com>
* providers/smtp/camel-smtp-transport.c (smtp_data): Use the
linewrap filter to achieve full RFC0821 compliance.
* camel-mime-filter-linewrap.[c,h]: New mime-filter to word-wrap.
svn path=/trunk/; revision=5510
2000-09-19 Jeffrey Stedfast <fejj@helixcode.com>
* camel-internet-address.c (internet_encode): When encoding the
internet address, quote the name as the name may have commas or
any other token which may later confuse our address parser.
svn path=/trunk/; revision=5506
* providers/imap/camel-imap-folder.c
(imap_get_subfolder_info_internal): Fix the case where INBOX
isn't returned in the folder listing.
svn path=/trunk/; revision=5505