Whamcloud - gitweb
Add inherit flags for project quota
[tools/e2fsprogs.git] / lib / ext2fs / dblist.c
index 3503615..bbdb221 100644 (file)
@@ -194,20 +194,25 @@ void ext2fs_dblist_sort2(ext2_dblist dblist,
 /*
  * This function iterates over the directory block list
  */
-errcode_t ext2fs_dblist_iterate2(ext2_dblist dblist,
+errcode_t ext2fs_dblist_iterate3(ext2_dblist dblist,
                                 int (*func)(ext2_filsys fs,
                                             struct ext2_db_entry2 *db_info,
                                             void       *priv_data),
+                                unsigned long long start,
+                                unsigned long long count,
                                 void *priv_data)
 {
-       unsigned long long      i;
+       unsigned long long      i, end;
        int             ret;
 
        EXT2_CHECK_MAGIC(dblist, EXT2_ET_MAGIC_DBLIST);
 
+       end = start + count;
        if (!dblist->sorted)
                ext2fs_dblist_sort2(dblist, 0);
-       for (i=0; i < dblist->count; i++) {
+       if (end > dblist->count)
+               end = dblist->count;
+       for (i = start; i < end; i++) {
                ret = (*func)(dblist->fs, &dblist->list[i], priv_data);
                if (ret & DBLIST_ABORT)
                        return 0;
@@ -215,6 +220,16 @@ errcode_t ext2fs_dblist_iterate2(ext2_dblist dblist,
        return 0;
 }
 
+errcode_t ext2fs_dblist_iterate2(ext2_dblist dblist,
+                                int (*func)(ext2_filsys fs,
+                                            struct ext2_db_entry2 *db_info,
+                                            void       *priv_data),
+                                void *priv_data)
+{
+       return ext2fs_dblist_iterate3(dblist, func, 0, dblist->count,
+                                     priv_data);
+}
+
 static EXT2_QSORT_TYPE dir_block_cmp2(const void *a, const void *b)
 {
        const struct ext2_db_entry2 *db_a =
@@ -365,10 +380,11 @@ int ext2fs_dblist_count(ext2_dblist dblist)
 errcode_t ext2fs_dblist_get_last(ext2_dblist dblist,
                                 struct ext2_db_entry **entry)
 {
-       EXT2_CHECK_MAGIC(dblist, EXT2_ET_MAGIC_DBLIST);
        static struct ext2_db_entry ret_entry;
        struct ext2_db_entry2 *last;
 
+       EXT2_CHECK_MAGIC(dblist, EXT2_ET_MAGIC_DBLIST);
+
        if (dblist->count == 0)
                return EXT2_ET_DBLIST_EMPTY;