Home | History | Annotate | Download | only in ext2fs

Lines Matching refs:dblist

2  * dblist.c -- directory block list functions
36 ext2_dblist dblist = NULL;
43 if ((ret_dblist == 0) && fs->dblist &&
44 (fs->dblist->magic == EXT2_ET_MAGIC_DBLIST))
47 retval = ext2fs_get_mem(sizeof(struct ext2_struct_dblist), &dblist);
50 memset(dblist, 0, sizeof(struct ext2_struct_dblist));
52 dblist->magic = EXT2_ET_MAGIC_DBLIST;
53 dblist->fs = fs;
55 dblist->size = size;
60 dblist->size = (num_dirs * 2) + 12;
62 len = (size_t) sizeof(struct ext2_db_entry2) * dblist->size;
63 dblist->count = count;
64 retval = ext2fs_get_array(dblist->size, sizeof(struct ext2_db_entry2),
65 &dblist->list);
70 memcpy(dblist->list, list, len);
72 memset(dblist->list, 0, len);
74 *ret_dblist = dblist;
76 fs->dblist = dblist;
79 if (dblist)
80 ext2fs_free_mem(&dblist);
89 ext2_dblist dblist;
92 retval = make_dblist(fs, 0, 0, 0, &dblist);
96 dblist->sorted = 1;
98 *ret_dblist = dblist;
100 fs->dblist = dblist;
110 ext2_dblist dblist;
114 &dblist);
117 dblist->sorted = src->sorted;
118 *dest = dblist;
132 errcode_t ext2fs_add_dir_block2(ext2_dblist dblist, ext2_ino_t ino,
139 EXT2_CHECK_MAGIC(dblist, EXT2_ET_MAGIC_DBLIST);
141 if (dblist->count >= dblist->size) {
142 old_size = dblist->size * sizeof(struct ext2_db_entry2);
143 dblist->size += dblist->size > 200 ? dblist->size / 2 : 100;
144 retval = ext2fs_resize_mem(old_size, (size_t) dblist->size *
146 &dblist->list);
148 dblist->size = old_size / sizeof(struct ext2_db_entry2);
152 new_entry = dblist->list + ( dblist->count++);
157 dblist->sorted = 0;
165 errcode_t ext2fs_set_dir_block2(ext2_dblist dblist, ext2_ino_t ino,
170 EXT2_CHECK_MAGIC(dblist, EXT2_ET_MAGIC_DBLIST);
172 for (i=0; i < dblist->count; i++) {
173 if ((dblist->list[i].ino != ino) ||
174 (dblist->list[i].blockcnt != blockcnt))
176 dblist->list[i].blk = blk;
177 dblist->sorted = 0;
183 void ext2fs_dblist_sort2(ext2_dblist dblist,
189 qsort(dblist->list, (size_t) dblist->count,
191 dblist->sorted = 1;
197 errcode_t ext2fs_dblist_iterate3(ext2_dblist dblist,
208 EXT2_CHECK_MAGIC(dblist, EXT2_ET_MAGIC_DBLIST);
211 if (!dblist->sorted)
212 ext2fs_dblist_sort2(dblist, 0);
213 if (end > dblist->count)
214 end = dblist->count;
216 ret = (*func)(dblist->fs, &dblist->list[i], priv_data);
223 errcode_t ext2fs_dblist_iterate2(ext2_dblist dblist,
229 return ext2fs_dblist_iterate3(dblist, func, 0, dblist->count,
249 blk64_t ext2fs_dblist_count2(ext2_dblist dblist)
251 return dblist->count;
254 errcode_t ext2fs_dblist_get_last2(ext2_dblist dblist,
257 EXT2_CHECK_MAGIC(dblist, EXT2_ET_MAGIC_DBLIST);
259 if (dblist->count == 0)
263 *entry = dblist->list + ( dblist->count-1);
267 errcode_t ext2fs_dblist_drop_last(ext2_dblist dblist)
269 EXT2_CHECK_MAGIC(dblist, EXT2_ET_MAGIC_DBLIST);
271 if (dblist->count == 0)
274 dblist->count--;
285 errcode_t ext2fs_add_dir_block(ext2_dblist dblist, ext2_ino_t ino, blk_t blk,
288 return ext2fs_add_dir_block2(dblist, ino, blk, blockcnt);
294 errcode_t ext2fs_set_dir_block(ext2_dblist dblist, ext2_ino_t ino, blk_t blk,
297 return ext2fs_set_dir_block2(dblist, ino, blk, blockcnt);
300 void ext2fs_dblist_sort(ext2_dblist dblist,
309 qsort(dblist->list, (size_t) dblist->count,
311 dblist->sorted = 1;
342 errcode_t ext2fs_dblist_iterate(ext2_dblist dblist,
350 EXT2_CHECK_MAGIC(dblist, EXT2_ET_MAGIC_DBLIST);
354 return ext2fs_dblist_iterate2(dblist, passthrough_func, &pass);
375 int ext2fs_dblist_count(ext2_dblist dblist)
377 return dblist->count;
380 errcode_t ext2fs_dblist_get_last(ext2_dblist dblist,
386 EXT2_CHECK_MAGIC(dblist, EXT2_ET_MAGIC_DBLIST);
388 if (dblist->count == 0)
394 last = dblist->list + dblist->count -1;