Traversal a huge directory with smb_stat_list_at() is too slow. Add a new function smb_stat_list_next() to reduce traversal to O(N). Signed-off-by: Zhai Zhaoxuan <zhaizhaoxuan@xiaomi.com> Signed-off-by: Hugo Beauzée-Luyssen <hugo@beauzee.fr>
@@ -109,6 +109,7 @@ void smb_stat_destroy(smb_stat stat);
*/
size_t smb_stat_list_count(smb_stat_list list);
+smb_stat smb_stat_list_next(smb_stat_list stat);
/**
* @brief Get the element at the given position.
*
@@ -36,6 +36,7 @@ smb_stat_destroy
smb_stat_fd
smb_stat_get
smb_stat_list_at
+smb_stat_list_next
smb_stat_list_count
smb_stat_list_destroy
smb_stat_name
@@ -72,6 +72,11 @@ void smb_stat_list_destroy(smb_stat_list list)
}
+smb_stat smb_stat_list_next(smb_stat_list list)
+{
+ return list->next;
+}
+
smb_stat smb_stat_list_at(smb_stat_list list, size_t index)
{
size_t pos = 0;