Changeset 2000
- Timestamp:
- 05/17/07 16:30:45
- Files:
-
- trunk/docs/building.txt (modified) (1 diff)
- trunk/libtinymail-camel/camel-lite/camel/providers/imap/camel-imap-command.c (modified) (2 diffs)
- trunk/libtinymail-camel/camel-lite/camel/providers/imap/camel-imap-store.h (modified) (1 diff)
- trunk/libtinymail-camel/tny-camel-folder.c (modified) (4 diffs)
- trunk/libtinymail-camel/tny-camel-store-account.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/docs/building.txt
r1185 r2000 128 128 Read requirements.txt 129 129 130 For debugging 131 ------------- 132 CFLAGS="-D_GNU_SOURCE -O0 -Wstrict-prototypes -Wall -g -ggdb" PKG_CONFIG_PATH=/opt/asyncworker/lib/pkgconfig \ 133 ./autogen.sh --prefix=/opt/tinymail --enable-asyncworker --enable-tests && make && sudo make install 134 trunk/libtinymail-camel/camel-lite/camel/providers/imap/camel-imap-command.c
r1943 r2000 112 112 113 113 store->current_folder = folder; 114 //store->current_folder = NULL; 114 115 if (store->capabilities & IMAP_CAPABILITY_CONDSTORE) 115 116 cmd = imap_command_strdup_printf (store, "SELECT %F (CONDSTORE)", folder->full_name); … … 275 276 len = strlen (full_cmd); 276 277 277 /* printf ("-> %s\n", full_cmd); */ 278 278 279 279 nwritten = camel_stream_write (store->ostream, full_cmd, len); 280 281 imap_debug ("(%d, %d) -> %s\n", len, nwritten, full_cmd); 280 282 281 283 /* g_mutex_unlock (store->stream_lock); */ trunk/libtinymail-camel/camel-lite/camel/providers/imap/camel-imap-store.h
r1951 r2000 26 26 #define CAMEL_IMAP_STORE_H 1 27 27 28 /* #define IDLE_DEBUG 1 */ 29 /* #define IMAP_DEBUG 1 */ 28 #ifdef DEBUG 29 #define IDLE_DEBUG 1 30 #define IMAP_DEBUG 1 31 #endif 30 32 31 33 #ifdef IDLE_DEBUG 32 #define idle_debug (o) printf ("%s\n", o)34 #define idle_debug g_print 33 35 #else 34 #define idle_debug(o )36 #define idle_debug(o, ...) 35 37 #endif 36 38 37 39 #ifdef IMAP_DEBUG 38 #define imap_debug (o) printf ("%s\n", o)40 #define imap_debug g_print 39 41 #else 40 #define imap_debug(o )42 #define imap_debug(o, ...) 41 43 #endif 42 44 trunk/libtinymail-camel/tny-camel-folder.c
r1997 r2000 1550 1550 TnyFolderStore *a_store=NULL; 1551 1551 TnyFolder *retval = NULL; 1552 TnyStoreAccount *acc_to , *acc_from;1552 TnyStoreAccount *acc_to; 1553 1553 TnyCamelFolderPriv *fpriv = TNY_CAMEL_FOLDER_GET_PRIVATE (folder); 1554 1554 TnyList *headers; … … 2766 2766 2767 2767 static void 2768 tny_camel_folder_remove_folder (TnyFolderStore *self, TnyFolder *folder, GError **err) 2769 { 2770 TNY_CAMEL_FOLDER_GET_CLASS (self)->remove_folder_func (self, folder, err); 2771 return; 2772 } 2773 2774 static void 2775 tny_camel_folder_remove_folder_default (TnyFolderStore *self, TnyFolder *folder, GError **err) 2768 tny_camel_folder_remove_folder_actual (TnyFolderStore *self, TnyFolder *folder, GError **err) 2776 2769 { 2777 2770 TnyCamelFolderPriv *priv = TNY_CAMEL_FOLDER_GET_PRIVATE (self); … … 2782 2775 CamelException ex = CAMEL_EXCEPTION_INITIALISER; 2783 2776 gboolean changed = FALSE; 2784 2785 if (!_tny_session_check_operation (TNY_FOLDER_PRIV_GET_SESSION(priv), err,2786 TNY_FOLDER_STORE_ERROR, TNY_FOLDER_STORE_ERROR_REMOVE_FOLDER))2787 return;2788 2789 if (!cpriv->folder_name || !priv->folder_name)2790 {2791 _tny_session_stop_operation (TNY_FOLDER_PRIV_GET_SESSION (priv));2792 return;2793 }2794 2777 2795 2778 g_static_rec_mutex_lock (priv->folder_lock); … … 2857 2840 } 2858 2841 2842 return; 2843 } 2844 2845 static void 2846 recurse_remove (TnyFolderStore *from, TnyFolder *folder, GError **err) 2847 { 2848 TnyCamelFolderPriv *fpriv = TNY_CAMEL_FOLDER_GET_PRIVATE (from); 2849 GError *nerr = NULL; 2850 2851 g_static_rec_mutex_lock (fpriv->folder_lock); 2852 2853 if (TNY_IS_FOLDER_STORE (folder)) 2854 { 2855 TnyList *folders = tny_simple_list_new (); 2856 TnyIterator *iter; 2857 2858 tny_folder_store_get_folders (TNY_FOLDER_STORE (folder), 2859 folders, NULL, &nerr); 2860 2861 if (nerr != NULL) 2862 { 2863 g_object_unref (folders); 2864 goto exception; 2865 } 2866 2867 iter = tny_list_create_iterator (folders); 2868 while (!tny_iterator_is_done (iter)) 2869 { 2870 TnyFolder *cur = TNY_FOLDER (tny_iterator_get_current (iter)); 2871 2872 recurse_remove (TNY_FOLDER_STORE (folder), cur, &nerr); 2873 2874 if (nerr != NULL) 2875 { 2876 g_object_unref (cur); 2877 g_object_unref (iter); 2878 g_object_unref (folders); 2879 goto exception; 2880 } 2881 2882 g_object_unref (cur); 2883 tny_iterator_next (iter); 2884 } 2885 g_object_unref (iter); 2886 g_object_unref (folders); 2887 } 2888 2889 tny_debug ("tny_folder_store_remove: actual removal of %s\n", 2890 tny_folder_get_name (folder)); 2891 2892 tny_camel_folder_remove_folder_actual (from, folder, &nerr); 2893 2894 2895 exception: 2896 2897 if (nerr != NULL) 2898 g_propagate_error (err, nerr); 2899 2900 g_static_rec_mutex_unlock (fpriv->folder_lock); 2901 2902 return; 2903 } 2904 2905 static void 2906 tny_camel_folder_remove_folder (TnyFolderStore *self, TnyFolder *folder, GError **err) 2907 { 2908 TNY_CAMEL_FOLDER_GET_CLASS (self)->remove_folder_func (self, folder, err); 2909 } 2910 2911 static void 2912 tny_camel_folder_remove_folder_default (TnyFolderStore *self, TnyFolder *folder, GError **err) 2913 { 2914 TnyCamelFolderPriv *priv = TNY_CAMEL_FOLDER_GET_PRIVATE (self); 2915 GError *nerr = NULL; 2916 2917 if (!_tny_session_check_operation (TNY_FOLDER_PRIV_GET_SESSION(priv), err, 2918 TNY_FOLDER_STORE_ERROR, TNY_FOLDER_STORE_ERROR_REMOVE_FOLDER)) 2919 return; 2920 2921 recurse_remove (self, folder, &nerr); 2922 2923 if (nerr != NULL) 2924 g_propagate_error (err, nerr); 2925 2859 2926 _tny_session_stop_operation (TNY_FOLDER_PRIV_GET_SESSION (priv)); 2860 2927 2861 2928 return; 2862 2929 } 2930 2863 2931 2864 2932 void trunk/libtinymail-camel/tny-camel-store-account.c
r1997 r2000 396 396 397 397 static void 398 tny_camel_store_account_remove_folder_ default(TnyFolderStore *self, TnyFolder *folder, GError **err)398 tny_camel_store_account_remove_folder_actual (TnyFolderStore *self, TnyFolder *folder, GError **err) 399 399 { 400 400 TnyCamelAccountPriv *apriv = TNY_CAMEL_ACCOUNT_GET_PRIVATE (self); … … 408 408 409 409 /* TNY TODO: Support non-TnyCamelFolder TnyFolder implementations too */ 410 411 412 store = CAMEL_STORE (apriv->service); 413 414 if (camel_exception_is_set (&ex)) 415 { 416 g_set_error (err, TNY_FOLDER_STORE_ERROR, 417 TNY_FOLDER_STORE_ERROR_REMOVE_FOLDER, 418 camel_exception_get_description (&ex)); 419 camel_exception_clear (&ex); 420 421 if (store && CAMEL_IS_OBJECT (store)) 422 camel_object_unref (CAMEL_OBJECT (store)); 423 _tny_session_stop_operation (apriv->session); 424 425 return; 426 } 427 428 g_assert (CAMEL_IS_STORE (store)); 429 g_assert (cpriv->folder_name != NULL); 430 431 g_static_rec_mutex_lock (cpriv->obs_lock); 432 if (cpriv->observers) { 433 g_object_unref (G_OBJECT (cpriv->observers)); 434 cpriv->observers = NULL; 435 } 436 if (cpriv->sobservers) { 437 g_object_unref (G_OBJECT (cpriv->sobservers)); 438 cpriv->sobservers = NULL; 439 } 440 g_static_rec_mutex_unlock (cpriv->obs_lock); 441 442 if (camel_store_supports_subscriptions (store)) 443 camel_store_subscribe_folder (store, cpriv->folder_name, &subex); 444 445 camel_store_delete_folder (store, cpriv->folder_name, &ex); 446 447 if (camel_exception_is_set (&ex)) 448 { 449 g_set_error (err, TNY_FOLDER_STORE_ERROR, 450 TNY_FOLDER_STORE_ERROR_REMOVE_FOLDER, 451 camel_exception_get_description (&ex)); 452 camel_exception_clear (&ex); 453 } else 454 { 455 if (camel_store_supports_subscriptions (store)) 456 camel_store_unsubscribe_folder (store, cpriv->folder_name, &subex); 457 458 TnyFolderStoreChange *change; 459 change = tny_folder_store_change_new (self); 460 tny_folder_store_change_add_removed_folder (change, folder); 461 notify_folder_store_observers_about (self, change); 462 g_object_unref (G_OBJECT (change)); 463 } 464 465 g_free (cpriv->folder_name); 466 cpriv->folder_name = NULL; 467 468 camel_object_unref (CAMEL_OBJECT (store)); 469 470 return; 471 } 472 473 474 static void 475 recurse_remove (TnyFolderStore *from, TnyFolder *folder, GError **err) 476 { 477 TnyCamelFolderPriv *fpriv = TNY_CAMEL_FOLDER_GET_PRIVATE (from); 478 GError *nerr = NULL; 479 480 g_static_rec_mutex_lock (fpriv->folder_lock); 481 482 if (TNY_IS_FOLDER_STORE (folder)) 483 { 484 TnyList *folders = tny_simple_list_new (); 485 TnyIterator *iter; 486 487 tny_folder_store_get_folders (TNY_FOLDER_STORE (folder), 488 folders, NULL, &nerr); 489 490 if (nerr != NULL) 491 { 492 g_object_unref (folders); 493 goto exception; 494 } 495 496 iter = tny_list_create_iterator (folders); 497 while (!tny_iterator_is_done (iter)) 498 { 499 TnyFolder *cur = TNY_FOLDER (tny_iterator_get_current (iter)); 500 501 recurse_remove (TNY_FOLDER_STORE (folder), cur, &nerr); 502 503 if (nerr != NULL) 504 { 505 g_object_unref (cur); 506 g_object_unref (iter); 507 g_object_unref (folders); 508 goto exception; 509 } 510 511 g_object_unref (cur); 512 tny_iterator_next (iter); 513 } 514 g_object_unref (iter); 515 g_object_unref (folders); 516 } 517 518 tny_debug ("tny_folder_store_remove: actual removal of %s\n", 519 tny_folder_get_name (folder)); 520 521 tny_camel_store_account_remove_folder_actual (from, folder, &nerr); 522 523 524 exception: 525 526 if (nerr != NULL) 527 g_propagate_error (err, nerr); 528 529 g_static_rec_mutex_unlock (fpriv->folder_lock); 530 531 return; 532 } 533 534 static void 535 tny_camel_store_account_remove_folder_default (TnyFolderStore *self, TnyFolder *folder, GError **err) 536 { 537 TnyCamelAccountPriv *apriv = TNY_CAMEL_ACCOUNT_GET_PRIVATE (self); 538 GError *nerr = NULL; 410 539 411 540 if (!_tny_session_check_operation (apriv->session, err, … … 424 553 } 425 554 426 store = CAMEL_STORE (apriv->service); 427 428 if (camel_exception_is_set (&ex)) 429 { 430 g_set_error (err, TNY_FOLDER_STORE_ERROR, 431 TNY_FOLDER_STORE_ERROR_REMOVE_FOLDER, 432 camel_exception_get_description (&ex)); 433 camel_exception_clear (&ex); 434 435 if (store && CAMEL_IS_OBJECT (store)) 436 camel_object_unref (CAMEL_OBJECT (store)); 437 _tny_session_stop_operation (apriv->session); 438 439 return; 440 } 441 442 g_assert (CAMEL_IS_STORE (store)); 443 g_assert (cpriv->folder_name != NULL); 444 445 g_static_rec_mutex_lock (cpriv->obs_lock); 446 if (cpriv->observers) { 447 g_object_unref (G_OBJECT (cpriv->observers)); 448 cpriv->observers = NULL; 449 } 450 if (cpriv->sobservers) { 451 g_object_unref (G_OBJECT (cpriv->sobservers)); 452 cpriv->sobservers = NULL; 453 } 454 g_static_rec_mutex_unlock (cpriv->obs_lock); 455 456 if (camel_store_supports_subscriptions (store)) 457 camel_store_subscribe_folder (store, cpriv->folder_name, &subex); 458 459 camel_store_delete_folder (store, cpriv->folder_name, &ex); 460 461 if (camel_exception_is_set (&ex)) 462 { 463 g_set_error (err, TNY_FOLDER_STORE_ERROR, 464 TNY_FOLDER_STORE_ERROR_REMOVE_FOLDER, 465 camel_exception_get_description (&ex)); 466 camel_exception_clear (&ex); 467 } else 468 { 469 if (camel_store_supports_subscriptions (store)) 470 camel_store_unsubscribe_folder (store, cpriv->folder_name, &subex); 471 472 TnyFolderStoreChange *change; 473 change = tny_folder_store_change_new (self); 474 tny_folder_store_change_add_removed_folder (change, folder); 475 notify_folder_store_observers_about (self, change); 476 g_object_unref (G_OBJECT (change)); 477 } 478 479 g_free (cpriv->folder_name); 480 cpriv->folder_name = NULL; 481 482 camel_object_unref (CAMEL_OBJECT (store)); 555 recurse_remove (self, folder, &nerr); 556 557 if (nerr != NULL) 558 g_propagate_error (err, nerr); 559 483 560 484 561 _tny_session_stop_operation (apriv->session); 562 485 563 486 564 return;
