| 1390 | } |
| 1391 | |
| 1392 | static Array * resultsWithError(int r, clist * list, ErrorCode * pError) |
| 1393 | { |
| 1394 | clistiter * cur; |
| 1395 | Array * result; |
| 1396 | |
| 1397 | result = Array::array(); |
| 1398 | if (r == MAILIMAP_ERROR_STREAM) { |
| 1399 | * pError = ErrorConnection; |
| 1400 | return NULL; |
| 1401 | } |
| 1402 | else if (r == MAILIMAP_ERROR_PARSE) { |
| 1403 | * pError = ErrorParse; |
| 1404 | return NULL; |
| 1405 | } |
| 1406 | else if (hasError(r)) { |
| 1407 | * pError = ErrorNonExistantFolder; |
| 1408 | return NULL; |
| 1409 | } |
| 1410 | |
| 1411 | for(cur = clist_begin(list) ; cur != NULL ; cur = cur->next) { |
| 1412 | struct mailimap_mailbox_list * mb_list; |
| 1413 | IMAPFolderFlag flags; |
| 1414 | IMAPFolder * folder; |
| 1415 | String * path; |
| 1416 | |
| 1417 | mb_list = (struct mailimap_mailbox_list *) cur->data; |
| 1418 | |
| 1419 | flags = IMAPFolderFlagNone; |
| 1420 | if (mb_list->mb_flag != NULL) |
| 1421 | flags = (IMAPFolderFlag) imap_mailbox_flags_to_flags(mb_list->mb_flag); |
| 1422 | |
| 1423 | folder = new IMAPFolder(); |
| 1424 | path = String::stringWithUTF8Characters(mb_list->mb_name); |
| 1425 | if (path->uppercaseString()->isEqual(MCSTR("INBOX"))) { |
| 1426 | folder->setPath(MCSTR("INBOX")); |
| 1427 | } |
| 1428 | else { |
| 1429 | folder->setPath(path); |
| 1430 | } |
| 1431 | folder->setDelimiter(mb_list->mb_delimiter); |
| 1432 | folder->setFlags(flags); |
| 1433 | |
| 1434 | result->addObject(folder); |
| 1435 | |
| 1436 | folder->release(); |
| 1437 | } |
| 1438 | |
| 1439 | mailimap_list_result_free(list); |
| 1440 | |
| 1441 | * pError = ErrorNone; |
| 1442 | return result; |
| 1443 | } |
| 1444 | |
| 1445 | // Deprecated |
| 1446 | char IMAPSession::fetchDelimiterIfNeeded(char defaultDelimiter, ErrorCode * pError) |
no test coverage detected