bool Interface_Filesystem::get_directory(void* kodiBase, const char *path, const char* mask, VFSDirEntry** items, unsigned int* num_items) { CAddonDll* addon = static_cast<CAddonDll*>(kodiBase); if (addon == nullptr || path == nullptr || mask == nullptr|| items == nullptr || num_items == nullptr) { CLog::Log(LOGERROR, "Interface_Filesystem::%s - invalid data (addon='%p', path='%p', mask='%p', " "items='%p', num_items='%p'", __FUNCTION__, kodiBase, path, mask, static_cast<void*>(items), static_cast<void*>(num_items)); return false; } CFileItemList fileItems; if (!CDirectory::GetDirectory(path, fileItems, mask, DIR_FLAG_NO_FILE_DIRS)) return false; if (fileItems.Size() > 0) { *num_items = static_cast<unsigned int>(fileItems.Size()); *items = new VFSDirEntry[fileItems.Size()]; CFileItemListToVFSDirEntries(*items, fileItems); } else { *num_items = 0; *items = nullptr; } return true; }
bool CAddonCallbacksAddon::GetDirectory(const void* addonData, const char *strPath, const char* mask, VFSDirEntry** items, unsigned int* num_items) { CAddonInterfaces* helper = (CAddonInterfaces*) addonData; if (!helper) return false; CFileItemList fileItems; if (!CDirectory::GetDirectory(strPath, fileItems, mask, DIR_FLAG_NO_FILE_DIRS)) return false; if (fileItems.Size() > 0) { *num_items = static_cast<unsigned int>(fileItems.Size()); *items = new VFSDirEntry[fileItems.Size()]; } else { *num_items = 0; *items = nullptr; } CFileItemListToVFSDirEntries(*items, *num_items, fileItems); return true; }