| 1462 | } |
| 1463 | |
| 1464 | BOOLEAN DirIterNext(IN OUT REFIT_DIR_ITER *DirIter, IN UINTN FilterMode, IN CONST CHAR16 *FilePattern OPTIONAL, |
| 1465 | OUT EFI_FILE_INFO **DirEntry) |
| 1466 | { |
| 1467 | if (DirIter->LastFileInfo != NULL) { |
| 1468 | FreePool(DirIter->LastFileInfo); |
| 1469 | DirIter->LastFileInfo = NULL; |
| 1470 | } |
| 1471 | |
| 1472 | if (EFI_ERROR(DirIter->LastStatus)) |
| 1473 | return FALSE; // stop iteration |
| 1474 | |
| 1475 | for (;;) { |
| 1476 | DirIter->LastStatus = DirNextEntry(DirIter->DirHandle, &(DirIter->LastFileInfo), FilterMode); |
| 1477 | if (EFI_ERROR(DirIter->LastStatus)) |
| 1478 | return FALSE; |
| 1479 | if (DirIter->LastFileInfo == NULL) // end of listing |
| 1480 | return FALSE; |
| 1481 | if (FilePattern != NULL) { |
| 1482 | if ((DirIter->LastFileInfo->Attribute & EFI_FILE_DIRECTORY)) |
| 1483 | break; |
| 1484 | if (MetaiMatch(DirIter->LastFileInfo->FileName, FilePattern)) |
| 1485 | break; |
| 1486 | // else continue loop |
| 1487 | } else |
| 1488 | break; |
| 1489 | } |
| 1490 | |
| 1491 | *DirEntry = DirIter->LastFileInfo; |
| 1492 | return TRUE; |
| 1493 | } |
| 1494 | |
| 1495 | EFI_STATUS DirIterClose(IN OUT REFIT_DIR_ITER *DirIter) |
| 1496 | { |
no test coverage detected