Re: [evolution-patches] 63189. camel, imap folder deleting
- From: Jeffrey Stedfast <fejj ximian com>
- To: Not Zed <notzed ximian com>
- Cc: evolution-patches lists ximian com
- Subject: Re: [evolution-patches] 63189. camel, imap folder deleting
- Date: Mon, 23 Aug 2004 09:38:53 -0400
looks good
Jeff
On Mon, 2004-08-23 at 05:47, Not Zed wrote:
> fixed get_folder_info to actually return what you ask for.
>
> --
>
> Michael Zucchi <notzed ximian com>
> "born to die, live to work, it's
> all downhill from here"
> Novell's Evolution and Free
> Software Developer
>
> ______________________________________________________________________
> ? camel/19564.diff
> ? camel/README.debug
> ? camel/all.txt
> ? camel/buildtable
> ? camel/c.diff
> ? camel/camel-f.c
> ? camel/camel-service.2.c
> ? camel/camel-stream-ssl.c
> ? camel/camel-stream-ssl.h
> ? camel/camel-stream.0.html
> ? camel/camel-stream.1.html
> ? camel/camel-thread.h
> ? camel/cia.diff
> ? camel/cvf.c
> ? camel/diff
> ? camel/filter.diff
> ? camel/foo.c
> ? camel/g.diff
> ? camel/gpg.txt
> ? camel/imap.cplug
> ? camel/log
> ? camel/merged.msg
> ? camel/mt.diff
> ? camel/mylock
> ? camel/names.txt
> ? camel/new.c
> ? camel/old.c
> ? camel/out.ps
> ? camel/out.txt
> ? camel/outbox
> ? camel/plugin
> ? camel/plugin.c
> ? camel/plugin.txt
> ? camel/race.txt
> ? camel/search.txt
> ? camel/sig
> ? camel/test-from.c
> ? camel/test-ssl
> ? camel/test-ssl.c
> ? camel/test.c
> ? camel/trash.diff
> ? camel/typescript
> ? camel/vfolder.txt
> ? camel/vfolders.xml
> ? camel/devel-docs/camel-folder-summary.txt
> ? camel/providers/cache
> ? camel/providers/file
> ? camel/providers/g.diff
> ? camel/providers/imap/a.diff
> ? camel/providers/imap/callgraph.ps
> ? camel/providers/imap/camel-imap-command.c.00.rtl
> ? camel/providers/imap/camel-imap-folder.c.00.rtl
> ? camel/providers/imap/camel-imap-message-cache.c.00.rtl
> ? camel/providers/imap/camel-imap-provider.c.00.rtl
> ? camel/providers/imap/camel-imap-search.c.00.rtl
> ? camel/providers/imap/camel-imap-store-summary.c.00.rtl
> ? camel/providers/imap/camel-imap-store.c.00.rtl
> ? camel/providers/imap/camel-imap-summary.c.00.rtl
> ? camel/providers/imap/camel-imap-utils.c.00.rtl
> ? camel/providers/imap/camel-imap-wrapper.c.00.rtl
> ? camel/providers/imapp/camel-imapp-driver.c.00.rtl
> ? camel/providers/imapp/camel-imapp-engine.c.00.rtl
> ? camel/providers/imapp/camel-imapp-folder.c.00.rtl
> ? camel/providers/imapp/camel-imapp-part-stream.c
> ? camel/providers/imapp/camel-imapp-part-stream.h
> ? camel/providers/imapp/camel-imapp-provider.c.00.rtl
> ? camel/providers/imapp/camel-imapp-store-summary.c.00.rtl
> ? camel/providers/imapp/camel-imapp-store.c.00.rtl
> ? camel/providers/imapp/camel-imapp-stream.c.00.rtl
> ? camel/providers/imapp/camel-imapp-summary.c.00.rtl
> ? camel/providers/imapp/camel-imapp-utils.c.00.rtl
> ? camel/providers/imapp/cmc-imap.c
> ? camel/providers/imapp/cmc-session.c
> ? camel/providers/imapp/cmc-session.h
> ? camel/providers/imapp/imap-tokens.txt
> ? camel/providers/imapp/imapp-callgraph.ps
> ? camel/providers/imapp/imapp.txt
> ? camel/providers/imapp/test-2.c
> ? camel/providers/imapp/test-driver.c
> ? camel/providers/imapp/test-engine.c
> ? camel/providers/imapp/tok.c
> ? camel/providers/local/camel-mbox-provider.c
> ? camel/providers/local/cm.diff
> ? camel/providers/local/swummary.txt
> ? camel/providers/mbox/Makefile
> ? camel/providers/mbox/Makefile.in
> ? camel/providers/mbox/an
> ? camel/providers/mh/Makefile
> ? camel/providers/mh/Makefile.in
> ? camel/providers/pop3/camel-pop3-engine.c.00.rtl
> ? camel/providers/pop3/camel-pop3-folder.c.00.rtl
> ? camel/providers/pop3/camel-pop3-provider.c.00.rtl
> ? camel/providers/pop3/camel-pop3-store.c.00.rtl
> ? camel/providers/pop3/camel-pop3-stream.c.00.rtl
> ? camel/providers/vee/Makefile
> ? camel/providers/vee/Makefile.in
> ? camel/providers/vee/camel-vee-folder.c.save
> ? camel/providers/vee/camel-vee-folder.c.save2
> ? camel/providers/vee/diff
> ? camel/providers/vee/libcamelvee.urls
> ? camel/tests/a.out
> ? camel/tests/camel-mime-tests.tar.gz
> ? camel/tests/test.c
> ? camel/tests/data/addr.txt
> ? camel/tests/data/bg_BG.cp1251.windows-1251.txt
> ? camel/tests/data/ca.iso-8859-1.txt
> ? camel/tests/data/cs.ISO-8859-2.txt
> ? camel/tests/data/da.ISO-8859-1.txt
> ? camel/tests/data/de.ISO-8859-1.txt
> ? camel/tests/data/el.iso-8859-7.txt
> ? camel/tests/data/en_GB.iso-8859-1.txt
> ? camel/tests/data/es.iso-8859-1.txt
> ? camel/tests/data/et.iso-8859-1.txt
> ? camel/tests/data/eu.iso-8859-1.txt
> ? camel/tests/data/fi.iso-8859-15.txt
> ? camel/tests/data/fr.ISO-8859-1.txt
> ? camel/tests/data/ga.iso-8859-1.txt
> ? camel/tests/data/gl.iso-8859-1.txt
> ? camel/tests/data/hu.iso-8859-2.txt
> ? camel/tests/data/it.iso-8859-1.txt
> ? camel/tests/data/ja.euc-jp.txt
> ? camel/tests/data/ko.euc-kr.txt
> ? camel/tests/data/lt.iso-8859-13.txt
> ? camel/tests/data/messages
> ? camel/tests/data/nl.iso-8859-1.txt
> ? camel/tests/data/no.iso-8859-1.txt
> ? camel/tests/data/pl.iso-8859-2.txt
> ? camel/tests/data/pt.iso-8859-1.txt
> ? camel/tests/data/pt_BR.iso-8859-1.txt
> ? camel/tests/data/ru.koi8-r.txt
> ? camel/tests/data/sk.iso-8859-2.txt
> ? camel/tests/data/sl.iso-8859-2.txt
> ? camel/tests/data/sp.iso-8859-5.txt
> ? camel/tests/data/sr.iso-8859-2.txt
> ? camel/tests/data/sv.iso-8859-1.txt
> ? camel/tests/data/ta.TSCII.txt
> ? camel/tests/data/test-lines.h
> ? camel/tests/data/tr.iso-8859-9.txt
> ? camel/tests/data/uk.koi8-u.txt
> ? camel/tests/data/wa.iso-8859-1.txt
> ? camel/tests/data/zh_CN.GB2312.gb2312.txt
> ? camel/tests/data/zh_TW.Big5.big5.txt
> ? camel/tests/folder/trace
> ? camel/tests/message/t.diff
> ? camel/tests/message/test4
> ? camel/tests/message/uni.txt
> ? camel/tests/mime-filter/test-html.c
> ? camel/tests/misc/a
> ? camel/tests/misc/test1
> ? camel/tests/misc/test1.c
> ? camel/tests/misc/test2
> ? camel/tests/stream/readwrite.c
> Index: camel/ChangeLog
> ===================================================================
> RCS file: /cvs/gnome/evolution/camel/ChangeLog,v
> retrieving revision 1.2246
> diff -u -3 -r1.2246 ChangeLog
> --- camel/ChangeLog 21 Aug 2004 06:58:22 -0000 1.2246
> +++ camel/ChangeLog 23 Aug 2004 07:41:15 -0000
> @@ -1,3 +1,12 @@
> +2004-08-23 Not Zed <NotZed Ximian com>
> +
> + ** See bug #63189.
> +
> + * providers/imap/camel-imap-store.c (get_subscribed_folders): only
> + LSUB folders we're interested in, and check full name of each path
> + element.
> + (imap_is_subfolder): helper for above.
> +
> 2004-08-21 Sivaiah Nallagatla <snallagatla novell com>
>
> * providers/groupwise/camel-gw-listener.c (account_changed) :
> Index: camel/providers/imap/camel-imap-store.c
> ===================================================================
> RCS file: /cvs/gnome/evolution/camel/providers/imap/camel-imap-store.c,v
> retrieving revision 1.298
> diff -u -3 -r1.298 camel-imap-store.c
> --- camel/providers/imap/camel-imap-store.c 21 Jul 2004 15:55:00 -0000 1.298
> +++ camel/providers/imap/camel-imap-store.c 23 Aug 2004 07:41:15 -0000
> @@ -2435,12 +2435,36 @@
> return fi;
> }
>
> +/* returns true if full_name is a sub-folder of top, or is top */
> +static int
> +imap_is_subfolder(const char *full_name, const char *top)
> +{
> + size_t len = strlen(top);
> +
> + /* Looks for top being a full-path subset of full_name.
> + Handle IMAP Inbox case insensitively */
> +
> + if (g_ascii_strncasecmp(top, "inbox", 5) == 0
> + && (top[5] == 0 || top[5] == '/')
> + && g_ascii_strncasecmp(full_name, "inbox", 5) == 0
> + && (full_name[5] == 0 || full_name[5] == '/')) {
> + full_name += 5;
> + top += 5;
> + len -= 5;
> + }
> +
> + return top[0] == 0
> + || (strncmp(full_name, top, len) == 0
> + && (full_name[len] == 0
> + || full_name[len] == '/'));
> +}
> +
> /* this is used when lsub doesn't provide very useful information */
> static GPtrArray *
> get_subscribed_folders (CamelImapStore *imap_store, const char *top, CamelException *ex)
> {
> GPtrArray *names, *folders;
> - int i, toplen = strlen (top);
> + int i;
> CamelStoreInfo *si;
> CamelImapResponse *response;
> CamelFolderInfo *fi;
> @@ -2453,7 +2477,8 @@
> folders = g_ptr_array_new ();
> names = g_ptr_array_new ();
> for (i=0;(si = camel_store_summary_index((CamelStoreSummary *)imap_store->summary, i));i++) {
> - if (si->flags & CAMEL_STORE_INFO_FOLDER_SUBSCRIBED) {
> + if (si->flags & CAMEL_STORE_INFO_FOLDER_SUBSCRIBED
> + && imap_is_subfolder(camel_store_info_path(imap_store->summary, si), top)) {
> g_ptr_array_add(names, (char *)camel_imap_store_info_full_name(imap_store->summary, si));
> haveinbox = haveinbox || strcasecmp(camel_imap_store_info_full_name(imap_store->summary, si), "INBOX") == 0;
> }
> @@ -2482,8 +2507,8 @@
> g_free (result);
> if (!fi)
> continue;
> -
> - if (strncmp (top, fi->full_name, toplen) != 0) {
> +
> + if (!imap_is_subfolder(fi->full_name, top)) {
> camel_folder_info_free (fi);
> continue;
> }
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]