2002-11-15 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-store.c (imap_connect_online): If the
namespace is at/below INBOX, check for the INBOX explicitly (since
it obviously won't show up in a LSUB INBOX.*). If either INBOX is
not returned in the response or if the folder flags contain
\NoSelect, subscribe to INBOX and then try LSUB again.
svn path=/trunk/; revision=18824
2002-11-11 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-filter-tohtml.c (html_convert): Rewritten. Much much
much cleaner implementation now, though uses malloc/free more
often than I'd like.
svn path=/trunk/; revision=18691
2002-11-11 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-folder.c (get_message_simple): Use
g_strerror when setting an exception string (we need it to be in
UTF-8).
* providers/pop3/camel-pop3-store.c (pop3_try_authenticate): Use
g_strerror when setting an exception string (we need it to be in
UTF-8).
* providers/pop3/camel-pop3-folder.c (pop3_refresh_info): Use
g_strerror when setting an exception string (we need it to be in
UTF-8).
(pop3_get_message): Same.
svn path=/trunk/; revision=18690
2002-11-11 Jeffrey Stedfast <fejj@ximian.com>
* providers/local/camel-spool-summary.c (spool_summary_sync_full):
Use g_strerror when setting an exception string (we need it to be
in UTF-8).
(spool_summary_check): Here too.
* providers/local/camel-spool-store.c (construct): Use g_strerror
when setting an exception string (we need it to be in UTF-8).
(get_folder): Same.
(scan_dir): Here too.
* providers/local/camel-spool-folder.c (spool_lock): Use
g_strerror when setting an exception string (we need it to be in
UTF-8).
* providers/local/camel-mh-summary.c (mh_summary_check): Use
g_strerror when setting an exception string (we need it to be in
UTF-8).
* providers/local/camel-mh-store.c (delete_folder): Use g_strerror
when setting an exception string (we need it to be in UTF-8).
* providers/local/camel-mbox-summary.c (summary_update): Use
g_strerror when setting an exception string (we need it to be in
UTF-8).
(mbox_summary_sync_full): Here too.
(mbox_summary_sync_quick): Same.
(mbox_summary_sync): Also here.
(camel_mbox_summary_sync_mbox): Again here.
* providers/local/camel-mbox-folder.c (mbox_lock): Use g_strerror
when setting an exception string (we need it to be in UTF-8).
(mbox_append_message): Same.
(mbox_get_message): Here too.
* providers/local/camel-maildir-summary.c (maildir_summary_load):
Use g_strerror when setting an exception string (we need it to be
in UTF-8).
(maildir_summary_check): Same.
* providers/local/camel-maildir-store.c (get_folder): Use
g_strerror when setting an exception string (we need it to be in
UTF-8).
(delete_folder): Same.
(delete_folder): Here too.
* providers/local/camel-local-summary.c (local_summary_sync): Use
g_strerror when setting an exception string (we need it to be in
UTF-8).
* providers/local/camel-local-store.c (get_folder): Use g_strerror
when setting an exception string (we need it to be in UTF-8).
(create_folder): Same.
(xrename): Here too.
(rename_folder): And here.
(delete_folder): Also here.
* camel-provider.c (camel_provider_init): For debugging printfs,
we want to use normal strerror (we want locale charset, not
UTF-8).
* camel-movemail.c (camel_movemail): Use g_strerror when setting
an exception string (we need it to be in UTF-8).
(movemail_external): Same.
(camel_movemail_copy_file): Here too.
(camel_movemail_solaris): Also here.
* camel-mime-utils.c (rfc2047_decode_word): For debugging printfs,
we want to use normal strerror (we want locale charset, not
UTF-8).
(header_encode_param): Same.
* camel-mime-part-utils.c (convert_buffer): For debugging printfs,
we want to use normal strerror (we want locale charset, not
UTF-8).
* camel-lock-client.c (camel_lock_helper_init): Use g_strerror
when setting an exception string (we need it to be in UTF-8).
* camel-data-cache.c (camel_data_cache_remove): Use g_strerror
when setting an exception string (we need it to be in UTF-8).
* camel-tcp-stream-raw.c (flaky_tcp_write): For debugging printfs,
we want to use normal strerror (we want locale charset, not
UTF-8).
(flaky_tcp_read): Same.
* camel-gpg-context.c (gpg_ctx_op_step): For debugging printfs, we
want to use normal strerror (we want locale charset, not UTF-8).
* camel-service.c (camel_gethostbyname): Use g_strerror when
setting an exception string (we need it to be in UTF-8).
* camel-lock.c (camel_lock_dot): Use g_strerror when setting an
exception string (we need it to be in UTF-8).
(camel_lock_fcntl): Same.
svn path=/trunk/; revision=18689
2002-11-05 Not Zed <NotZed@Ximian.com>
* Makefile.am (camel_lock_helper_LDADD): Created temporary link
list, we need to link with something for gettext.
* camel.h: Remove gstring-util.h and hash-table-utils.h.
* camel-text-index.c:
(text_index_normalise): Changed for g_utf8_strdown api change.
* camel-search-private.c:
* camel-mime-utils.c:
* camel-mime-part-utils.c:
* camel-html-parser.c:
* camel-charset-map.c: Include glib/gunicode.h from glib instead
of gal.
* camel-filter-driver.c: Remove include of gtk/gtk.h, should never
have been there.
svn path=/trunk/; revision=18542
2002-11-01 Jeffrey Stedfast <fejj@ximian.com>
* camel-uid-cache.c (camel_uid_cache_new): Use g_path_get_dirname
since g_dirname has been deprecated.
svn path=/trunk/; revision=18497
2002-10-31 Jeffrey Stedfast <fejj@ximian.com>
* camel-gpg-context.c (camel_gpg_context_class_init): Set the
virtual method pointers to the import/export methods.
(camel_gpg_context_init): Set the key_protocol string.
(gpg_hash_to_id): Handle 2 more hash types.
(gpg_id_to_hash): Same.
(gpg_ctx_op_step): Slight fixes to support import/export.
(gpg_ctx_parse_status): Fix to hack around the fact that importing
keys doesn't write to stdout.
(gpg_import_keys): Implemented.
(gpg_export_keys): Implemented.
* camel-cipher-context.c (camel_cipher_context_class_init): Hook
up default virtual methods for import/export.
(camel_cipher_import_keys): Implemented.
(camel_cipher_export_keys): Implemented.
svn path=/trunk/; revision=18475
2002-10-31 Jeffrey Stedfast <fejj@ximian.com>
* Makefile.am: Removed hash-table-utils.[c,h] from the build.
* hash-table-utils.[c,h]: Removed.
* string-util.c: Imported g_strcase[hash,equal] into here so we
can remove hash-table-utils.[c,h].
* camel-medium.c: Removed #include "hash-table-utils.h"
* camel-mime-message.c: Same here.
* camel-mime-part.c: And here.
* camel-session.c: Here too.
* providers/imap/camel-imap-store-summary.c: #include
string-utils.h instead of hash-table-utils.h
* camel-charset-map.c: Same.
* camel-folder-summary.c: Here too.
* camel-provider.c: Again here.
* camel-store-summary.c: And again...
svn path=/trunk/; revision=18473
2002-10-25 Jeffrey Stedfast <fejj@ximian.com>
* camel-gpg-context.c (gpg_ctx_parse_status): Don't prematurely
set gpg->complete to TRUE. Let gpg_ctx_op_step () set it to TRUE
when gpg closes the status-fd instead.
svn path=/trunk/; revision=18448
2002-10-24 Not Zed <NotZed@Ximian.com>
** For bug #31647 and bug #31456.
* camel-store-summary.c (store_info_string): for STORE_INFO_NAME,
skip the leading /.
* providers/imap/camel-imap-store.c
(parse_list_response_as_folder_info): Remove jeff's last patch,
and use the store summary to create the name and path of the
folderinfo so it manages namespace issues.
(get_folder_info_online): Just pass @top directly to
build_folder_info always, since namespace is mapped to 1 tree
level.
(imap_build_folder_info): Remove jeff's last patch, dont strip
leading /'s, they shouldn't exist.
(imap_connect_online): Remove adding the INBOX here, we add it
later.
(get_subscribed_folders): Make sure INBOX is always in the list.
some imap servers dont seem to let you subscribe to it(?), so
always have it act as subscribed.
* camel-store.c (camel_folder_info_build): back out the last 2
patches from Jeff (for #31456) to get the original behaviour.
(camel_folder_info_build): When creating a fake
parent, dont strip the namespace from the full_name. malloc keys
in hash since we dont have them anymore.
(free_name): Helper to free names.
* providers/imap/camel-imap-store-summary.c
(camel_imap_store_summary_namespace_new): Canonicalise the
namespace (strip trailing dir_sep), and change the path to remove
any /'s.
(camel_imap_store_summary_namespace_find_path):
(camel_imap_store_summary_namespace_find_full): new, find
namespace by path/full name.
(camel_imap_store_summary_full_from_path): Changed to a simple
wrapper around path_to_full, after checking namespace.
(camel_imap_store_summary_add_from_full): map the namespace if
present.
(camel_imap_store_summary_path_to_full): If namespace exists,
unmap it.
svn path=/trunk/; revision=18424
2002-10-18 Jeffrey Stedfast <fejj@ximian.com>
* camel-filter-driver.c (camel_filter_driver_filter_folder):
Canonicalise the source_uri to not have a path. Fixes bug #32268.
2002-10-17 Jeffrey Stedfast <fejj@ximian.com>
Possible fix for bug #32270
* providers/pop3/camel-pop3-store.c (try_sasl): If we get an I/O
error, we should not be setting the CANT_AUTH exception but should
instead be setting the SYSTEM exception. Also check for EINTR
which signifies a USER_CANCEL exception.
(pop3_try_authenticate): If the auth mechanism isn't supported,
don't set the CANT_AUTH exception since then we will loop and try
again with the same data which will just cause an infinite loop.
(pop3_connect): Simplified a bit.
svn path=/trunk/; revision=18412
2002-10-03 Not Zed <NotZed@Ximian.com>
* camel-folder.c
(filter_filter): Do the filtering ourselves. This is so a problem
like a missing uid (which can happen legitemitely) doesn't
prematurely abort filtering. Stop on all other errors. See
#31667.
svn path=/trunk/; revision=18392
2002-10-15 Not Zed <NotZed@Ximian.com>
* camel-tcp-stream-ssl.c (cert_fingerprint): helper, build
fingerprint.
(camel_certdb_nss_cert_get): Helper for nss certs. Lookup cert.
As well as fingerprint, the whole raw cert is checked for
validity.
(camel_certdb_nss_cert_add): Add an nss cert to a certdb, also
saves the cert by fingerprint in ~/.camel_certs/.
(ssl_bad_cert): Changed to use above functions to simplify logic.
(ssl_bad_cert): Also added non-compiled code which mimics what
mozilla does, but it doesn't work right :-/
(camel_certdb_nss_cert_set): Save the raw cert associated with a
cert.
* camel-certdb.c (certdb_cert_free): Free the raw cert data if
set.
2002-10-14 Not Zed <NotZed@Ximian.com>
* camel-file-utils.c (camel_file_util_encode_string): Encode a
length of 0 as 1, not 0, to match the decode code.
svn path=/trunk/; revision=18385
2002-10-16 Jeffrey Stedfast <fejj@ximian.com>
* camel-gpg-context.c (camel_gpg_context_new): No longer takes a
path argument.
(camel_gpg_context_fianlise): No need to free ctx->path.
(gpg_ctx_new): No longer takes a path argument either.
(gpg_ctx_free): No need to free ctx->path, it's no longer used.
(gpg_ctx_op_start): Don't stat the path anymore and change the
first arg to execvp to "gpg" so that we use the shell's
environment to find gpg.
(gpg_sign): Updated.
(gpg_verify): Updated.
(gpg_encrypt): Updated.
(gpg_decrypt): Updated.
(gpg_ctx_get_argv): Removed some debug printfs.
svn path=/trunk/; revision=18383
2002-10-08 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-command.c (imap_read_response): If the
response from the IMAP server is "No", don't set the
SERVICE_UNAVAILABLE exception, this makes error reporting in the
UI for deleting IMAP folders that cannot be deleted inaccurate
(ie, it reports "Cannot delete in offline mode" which is not the
problem).
svn path=/trunk/; revision=18356
2002-10-07 Jeffrey Stedfast <fejj@ximian.com>
Fixes bug #31752
* providers/smtp/camel-smtp-transport.c (connect_to_server): Don't
forget to send another EHLO command to the server once we toggle
into STARTTLS mode.
(smtp_helo): Reset any flags set using the EHLO response and also
any authtypes.
svn path=/trunk/; revision=18334
2002-10-06 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c: Fix all mailing list regex patterns to allow
any number of spaces *or* tabs as pre-padding for the header
values.
svn path=/trunk/; revision=18333
2002-10-03 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-part.c (write_to_stream): Use the content-object's
rawtext flag to decide if it needs to be filtered through the
charset filter instead of using the mime part's rawtext flag since
this will never be set. Partial fix for bug #31655.
svn path=/trunk/; revision=18323
2002-10-03 Not Zed <NotZed@Ximian.com>
* camel-folder.c (folder_changed): Dont get the filter driver
inside the change_lock. Its not necessary, and can cause deadlock
with the way the mailer gets the filter driver via g_mainloop.
Should fix#31572.
svn path=/trunk/; revision=18321
2002-10-02 Not Zed <NotZed@Ximian.com>
* providers/imap/camel-imap-folder.c (get_matching): Set *set to
NULL if we dont get any matches.
(imap_sync_online): If we get no matches, skip any work, also
reorder some code to make it easier to skip. See #31031.
* providers/imap/camel-imap-store.c
(imap_check_folder_still_extant): Default to "TRUE", if the list
command failed, it probably means a server problem, assume the
worst. This makes imap_refresh_info not clear the exception and
crash. Fixes crash of #31000.
2002-10-01 Not Zed <NotZed@Ximian.com>
* providers/imap/camel-imap-folder.c (imap_refresh_info): Make
sure we pass the exception to imap_folder_selected(), otherwise
failures can be lost. See bug #31000.
2002-10-01 Not Zed <NotZed@Ximian.com>
* camel-folder.c (thaw): Add an assertion that the frozen count>0.
(freeze): Same for >= 0.
* camel-vee-folder.c (camel_vee_folder_remove_folder): Use the
unmatched freeze_count when thawing folders removed from
unmatched, rather than the folder's freeze_count. Might be
related to #27391.
svn path=/trunk/; revision=18314
2002-10-01 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-folder.c (decode_internaldate): Use
strtol when decoding the timezone (since it can be negative) and
don't forget to increment inptr to the start of the time (ie,
don't leave inptr pointing to the year when decoding the
hour:min:sec).
svn path=/trunk/; revision=18283
2002-09-30 Jeffrey Stedfast <fejj@ximian.com>
Fixes bug #31456.
* providers/imap/camel-imap-store.c (imap_connect_online): Don't
LSUB "" "*", instead get both an LSUB containing the subfolders of
the namespace and an LSUB of INBOX (assuming namespace was
non-empty). This fix really has nothing to do with bug #31456 but
is what should have been done in the first place.
(parse_list_response_as_folder_info): Simplify a tad and strip
extra leading /'s from fi->path.
(imap_build_folder_info): Strip extra leading /'s from fi->path.
* camel-store.c (camel_folder_info_build): Don't strip the
namespace from the fi->full_name when hashing or creating fake
parent folder-infos. Fixes a bug I found while trying to reproduce
bug #31456.
(camel_folder_info_build_path): Strip off extra leading dir_sep
chars from the path.
svn path=/trunk/; revision=18273
2002-09-30 Jeffrey Stedfast <fejj@ximian.com>
* camel-store.c (camel_folder_info_build): Don't strip the
namespace from the fi->full_name when hasing or creating fake
parent folders. Fixes a bug I found while trying to reproduce bug
#31456.
svn path=/trunk/; revision=18270
2002-09-30 Not Zed <NotZed@Ximian.com>
* providers/imap/camel-imap-folder.c (imap_get_message): Remove
debug content_info_dump, could cause a crash, and not really
needed anymore.
* camel-folder-summary.c (camel_content_info_dump): Check ci->type
!= NULL before dereferencing it. Should fix crash #31331.
svn path=/trunk/; revision=18259
2002-09-27 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-folder.c (decode_internaldate): New
function to decode the INTERNALDATE response from an IMAP server
so we don't have to use my broken-date-parser routines.
2002-09-27 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-store.c (connect_to_server):
NULL-check the streams before unreffing them in the case of a
failure during ssl negotiations.
* camel-tcp-stream-ssl.c (camel_tcp_stream_ssl_enable_ssl): Check
SSL_ResetHandshake() for errors. Also force a handshake after
we've reset the handshake state on the socket.
svn path=/trunk/; revision=18252
2002-09-27 Not Zed <NotZed@Ximian.com>
* providers/imap/camel-imap-folder.c (imap_update_summary): Use
the summary's last uid as the one to fetch from, ignoring the
cache. Use strotul instead of atoi as well.
* providers/imap/camel-imap-store.c (get_folder_counts): If we
have the folder open, and the unread count has changed, refresh
it. Should fix#30399 enough. Also in non-check-all mode, if we
have the folder open, use it anyway.
svn path=/trunk/; revision=18242
2002-09-26 Not Zed <NotZed@Ximian.com>
* tests/folder/test2.c (main): Treat spool as a local folder, so
the ref checks work right.
* providers/local/camel-spool-store.c
(get_folder): Use creat() instead of open() to create file.
svn path=/trunk/; revision=18231
2002-09-26 Not Zed <NotZed@Ximian.com>
* providers/local/camel-spool-store.c (get_folder): Implement
FOLDER_CREATE flag.
(scan_dir): Dont free name on exception, its alloca'd.
(scan_dir): If we start scanning from a file, just add that
directly.
(scan_dir): Allow empty files to also show up in folder list, as
well as files starting with "From ".
* providers/local/camel-spool-folder.c (camel_spool_folder_new):
Check folder != NULL before writing to it.
* providers/local/camel-local-store.c (create_folder): Handle a
parent of NULL for creating top-level dirs. Part of #31186.
svn path=/trunk/; revision=18230
2002-09-26 Not Zed <NotZed@Ximian.com>
* providers/imap/camel-imap-store.c
(parse_list_response_as_folder_info): Store the folder flags in
the store summary.
(get_one_folder_offline): Set the noselect url parameter if this
is a noselect folder, from the stored summary flags. #30877.
svn path=/trunk/; revision=18229
2002-09-23 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-filter-charset.c (complete): Handle EILSEQ by eating
bytes in the input buffer until conversion is successful. The old
behaviour aborted when it got EILSEQ and just dumped the raw data.
(filter): Same. Fixes bug #30873.
svn path=/trunk/; revision=18228
2002-09-24 Not Zed <NotZed@Ximian.com>
* camel-mime-utils.c (mail_list_magic[]): Changed the Mailing-List
rule to get the complete domain (* in wrong spot). #31087.
svn path=/trunk/; revision=18192
2002-09-24 Not Zed <NotZed@Ximian.com>
* camel-text-index.c (text_index_compress_nosync): If we have no
data written to a key, dont add it, or its partition header.
2002-09-23 Not Zed <NotZed@Ximian.com>
* camel-block-file.c (sync_nolock): Mark root block dirty if we're
going to sync it.
(camel_key_file_finalise): de-count the active list if we close
it.
* camel-text-index.c (text_index_delete): Implement.
(text_index_compress_nosync): Use index_delete when we're finished
with the old one, so it is properly deactivated.
* camel-index.c (camel_index_delete): Remove api call. Mark index
deleted in new state variable.
(camel_index_*): Wrap all calls in check for deleted state.
svn path=/trunk/; revision=18189
2002-09-23 Jeffrey Stedfast <fejj@ximian.com>
* camel-folder.c (transfer_message_to): If the original message is
deleted, reset the deleted flag when we're done. Fixes bug #30876.
svn path=/trunk/; revision=18181
2002-09-23 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-folder.c (add_message_from_data):
Decode the INTERNALDATE if we've got one.
(imap_update_summary): Instead of requesting a list of specific
headers, request HEADER.FIELDS.NOT (RECEIVED) to reduce bandwidth
usage even more.
(parse_fetch_response): Change slightly to allow HEADER.FIELDS or
HEADER.FIELDS.NOT so that we can make changes in
imap_update_summary and not need to keep changing this function to
match. Also parse an INTERNALDATE response.
svn path=/trunk/; revision=18178