Home | History | Annotate | Download | only in ext2fs

Lines Matching defs:dblist

2  * dblist.c -- directory block list functions
60 ext2_dblist dblist;
66 if ((ret_dblist == 0) && fs->dblist &&
67 (fs->dblist->magic == EXT2_ET_MAGIC_DBLIST))
70 retval = ext2fs_get_mem(sizeof(struct ext2_struct_dblist), &dblist);
73 memset(dblist, 0, sizeof(struct ext2_struct_dblist));
75 dblist->magic = EXT2_ET_MAGIC_DBLIST;
76 dblist->fs = fs;
78 dblist->size = size;
80 retval = ext2fs_get_num_dirs(fs, &dblist->size);
83 dblist->size = (dblist->size * 2) + 12;
85 len = (size_t) sizeof(struct ext2_db_entry) * dblist->size;
86 dblist->count = count;
87 retval = ext2fs_get_array(dblist->size, sizeof(struct ext2_db_entry),
88 &dblist->list);
93 memcpy(dblist->list, list, len);
95 memset(dblist->list, 0, len);
97 *ret_dblist = dblist;
99 fs->dblist = dblist;
102 if (dblist)
103 ext2fs_free_mem(&dblist);
112 ext2_dblist dblist;
115 retval = make_dblist(fs, 0, 0, 0, &dblist);
119 dblist->sorted = 1;
121 *ret_dblist = dblist;
123 fs->dblist = dblist;
133 ext2_dblist dblist;
137 &dblist);
140 dblist->sorted = src->sorted;
141 *dest = dblist;
155 errcode_t ext2fs_add_dir_block(ext2_dblist dblist, ext2_ino_t ino, blk_t blk,
162 EXT2_CHECK_MAGIC(dblist, EXT2_ET_MAGIC_DBLIST);
164 if (dblist->count >= dblist->size) {
165 old_size = dblist->size * sizeof(struct ext2_db_entry);
166 dblist->size += dblist->size > 200 ? dblist->size / 2 : 100;
167 retval = ext2fs_resize_mem(old_size, (size_t) dblist->size *
169 &dblist->list);
171 dblist->size -= 100;
175 new_entry = dblist->list + ( (int) dblist->count++);
180 dblist->sorted = 0;
188 errcode_t ext2fs_set_dir_block(ext2_dblist dblist, ext2_ino_t ino, blk_t blk,
193 EXT2_CHECK_MAGIC(dblist, EXT2_ET_MAGIC_DBLIST);
195 for (i=0; i < dblist->count; i++) {
196 if ((dblist->list[i].ino != ino) ||
197 (dblist->list[i].blockcnt != blockcnt))
199 dblist->list[i].blk = blk;
200 dblist->sorted = 0;
206 void ext2fs_dblist_sort(ext2_dblist dblist,
212 qsort(dblist->list, (size_t) dblist->count,
214 dblist->sorted = 1;
220 errcode_t ext2fs_dblist_iterate(ext2_dblist dblist,
229 EXT2_CHECK_MAGIC(dblist, EXT2_ET_MAGIC_DBLIST);
231 if (!dblist->sorted)
232 ext2fs_dblist_sort(dblist, 0);
233 for (i=0; i < dblist->count; i++) {
234 ret = (*func)(dblist->fs, &dblist->list[(int)i], priv_data);
257 int ext2fs_dblist_count(ext2_dblist dblist)
259 return (int) dblist->count;
262 errcode_t ext2fs_dblist_get_last(ext2_dblist dblist,
265 EXT2_CHECK_MAGIC(dblist, EXT2_ET_MAGIC_DBLIST);
267 if (dblist->count == 0)
271 *entry = dblist->list + ( (int) dblist->count-1);
275 errcode_t ext2fs_dblist_drop_last(ext2_dblist dblist)
277 EXT2_CHECK_MAGIC(dblist, EXT2_ET_MAGIC_DBLIST);
279 if (dblist->count == 0)
282 dblist->count--;