| 3769 | } |
| 3770 | |
| 3771 | HashMap * IMAPSession::fetchNamespace(ErrorCode * pError) |
| 3772 | { |
| 3773 | HashMap * result; |
| 3774 | struct mailimap_namespace_data * namespace_data; |
| 3775 | int r; |
| 3776 | |
| 3777 | loginIfNeeded(pError); |
| 3778 | if (* pError != ErrorNone) |
| 3779 | return NULL; |
| 3780 | |
| 3781 | result = HashMap::hashMap(); |
| 3782 | r = mailimap_namespace(mImap, &namespace_data); |
| 3783 | if (r == MAILIMAP_ERROR_STREAM) { |
| 3784 | mShouldDisconnect = true; |
| 3785 | * pError = ErrorConnection; |
| 3786 | return NULL; |
| 3787 | } |
| 3788 | else if (r == MAILIMAP_ERROR_PARSE) { |
| 3789 | mShouldDisconnect = true; |
| 3790 | * pError = ErrorParse; |
| 3791 | return NULL; |
| 3792 | } |
| 3793 | else if (hasError(r)) { |
| 3794 | * pError = ErrorNamespace; |
| 3795 | return NULL; |
| 3796 | } |
| 3797 | |
| 3798 | IMAPNamespace * ns; |
| 3799 | |
| 3800 | if (namespace_data->ns_personal != NULL) { |
| 3801 | ns = new IMAPNamespace(); |
| 3802 | ns->importIMAPNamespace(namespace_data->ns_personal); |
| 3803 | result->setObjectForKey(IMAPNamespacePersonal, ns); |
| 3804 | ns->release(); |
| 3805 | } |
| 3806 | |
| 3807 | if (namespace_data->ns_other != NULL) { |
| 3808 | ns = new IMAPNamespace(); |
| 3809 | ns->importIMAPNamespace(namespace_data->ns_other); |
| 3810 | result->setObjectForKey(IMAPNamespaceOther, ns); |
| 3811 | ns->release(); |
| 3812 | } |
| 3813 | |
| 3814 | if (namespace_data->ns_shared != NULL) { |
| 3815 | ns = new IMAPNamespace(); |
| 3816 | ns->importIMAPNamespace(namespace_data->ns_shared); |
| 3817 | result->setObjectForKey(IMAPNamespaceShared, ns); |
| 3818 | ns->release(); |
| 3819 | } |
| 3820 | |
| 3821 | mailimap_namespace_data_free(namespace_data); |
| 3822 | * pError = ErrorNone; |
| 3823 | |
| 3824 | return result; |
| 3825 | } |
| 3826 | |
| 3827 | void IMAPSession::storeFlagsByUID(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags, ErrorCode * pError) |
| 3828 | { |
no test coverage detected