* %End-Header%
*/
-#include <et/com_err.h>
#if HAVE_UNISTD_H
#include <unistd.h>
#endif
-#include <stdlib.h>
#include <string.h>
#include <stdio.h>
+#if EXT2_FLAT_INCLUDES
+#include "ext2_fs.h"
+#else
#include <linux/ext2_fs.h>
+#endif
+
#include "ext2fs.h"
/*
icount->magic = 0;
if (icount->list)
- free(icount->list);
+ ext2fs_free_mem((void **) &icount->list);
if (icount->single)
ext2fs_free_inode_bitmap(icount->single);
if (icount->multiple)
ext2fs_free_inode_bitmap(icount->multiple);
- free(icount);
+ ext2fs_free_mem((void **) &icount);
}
errcode_t ext2fs_create_icount2(ext2_filsys fs, int flags, int size,
size = (size_t) hint->size;
}
- icount = malloc(sizeof(struct ext2_icount));
- if (!icount)
- return EXT2_NO_MEMORY;
+ retval = ext2fs_get_mem(sizeof(struct ext2_icount), (void **) &icount);
+ if (retval)
+ return retval;
memset(icount, 0, sizeof(struct ext2_icount));
retval = ext2fs_allocate_inode_bitmap(fs, 0,
printf("Icount allocated %d entries, %d bytes.\n",
icount->size, bytes);
#endif
- icount->list = malloc(bytes);
- if (!icount->list)
+ retval = ext2fs_get_mem(bytes, (void **) &icount->list);
+ if (retval)
goto errout;
memset(icount->list, 0, bytes);
static struct ext2_icount_el *insert_icount_el(ext2_icount_t icount,
ino_t ino, int pos)
{
- struct ext2_icount_el *el, *new_list;
+ struct ext2_icount_el *el;
+ errcode_t retval;
ino_t new_size = 0;
int num;
if (icount->count >= icount->size) {
if (icount->count) {
new_size = icount->list[(unsigned)icount->count-1].ino;
- new_size = icount->count *
- ((float) new_size / icount->num_inodes);
+ new_size = (ino_t) (icount->count *
+ ((float) new_size / icount->num_inodes));
}
if (new_size < (icount->size + 100))
new_size = icount->size + 100;
#if 0
printf("Reallocating icount %d entries...\n", new_size);
#endif
- new_list = realloc(icount->list, (size_t) new_size *
- sizeof(struct ext2_icount_el));
- if (!new_list)
+ retval = ext2fs_resize_mem((size_t) icount->size *
+ sizeof(struct ext2_icount_el),
+ (size_t) new_size *
+ sizeof(struct ext2_icount_el),
+ (void **) &icount->list);
+ if (retval)
return 0;
icount->size = new_size;
- icount->list = new_list;
}
num = (int) icount->count - pos;
if (num < 0)
if (icount->count > icount->size) {
fprintf(out, "%s: count > size\n", bad);
- return EXT2_INVALID_ARGUMENT;
+ return EXT2_ET_INVALID_ARGUMENT;
}
for (i=1; i < icount->count; i++) {
if (icount->list[i-1].ino >= icount->list[i].ino) {
fprintf(out, "%s: list[%d].ino=%ld, list[%d].ino=%ld\n",
bad, i-1, icount->list[i-1].ino,
i, icount->list[i].ino);
- ret = EXT2_INVALID_ARGUMENT;
+ ret = EXT2_ET_INVALID_ARGUMENT;
}
}
return ret;
EXT2_CHECK_MAGIC(icount, EXT2_ET_MAGIC_ICOUNT);
if (!ino || (ino > icount->num_inodes))
- return EXT2_INVALID_ARGUMENT;
+ return EXT2_ET_INVALID_ARGUMENT;
if (ext2fs_test_inode_bitmap(icount->single, ino)) {
*ret = 1;
EXT2_CHECK_MAGIC(icount, EXT2_ET_MAGIC_ICOUNT);
if (!ino || (ino > icount->num_inodes))
- return EXT2_INVALID_ARGUMENT;
+ return EXT2_ET_INVALID_ARGUMENT;
if (ext2fs_test_inode_bitmap(icount->single, ino)) {
/*
*/
el = get_icount_el(icount, ino, 1);
if (!el)
- return EXT2_NO_MEMORY;
+ return EXT2_ET_NO_MEMORY;
ext2fs_unmark_inode_bitmap(icount->single, ino);
el->count = 2;
} else if (icount->multiple) {
if (ext2fs_test_inode_bitmap(icount->multiple, ino)) {
el = get_icount_el(icount, ino, 1);
if (!el)
- return EXT2_NO_MEMORY;
+ return EXT2_ET_NO_MEMORY;
el->count++;
} else {
/*
}
el = get_icount_el(icount, ino, 1);
if (!el)
- return EXT2_NO_MEMORY;
+ return EXT2_ET_NO_MEMORY;
el->count++;
}
if (icount->multiple)
struct ext2_icount_el *el;
if (!ino || (ino > icount->num_inodes))
- return EXT2_INVALID_ARGUMENT;
+ return EXT2_ET_INVALID_ARGUMENT;
EXT2_CHECK_MAGIC(icount, EXT2_ET_MAGIC_ICOUNT);
if (icount->multiple &&
!ext2fs_test_inode_bitmap(icount->multiple, ino))
- return EXT2_INVALID_ARGUMENT;
+ return EXT2_ET_INVALID_ARGUMENT;
el = get_icount_el(icount, ino, 0);
if (!el || el->count == 0)
- return EXT2_INVALID_ARGUMENT;
+ return EXT2_ET_INVALID_ARGUMENT;
el->count--;
if (el->count == 1)
struct ext2_icount_el *el;
if (!ino || (ino > icount->num_inodes))
- return EXT2_INVALID_ARGUMENT;
+ return EXT2_ET_INVALID_ARGUMENT;
EXT2_CHECK_MAGIC(icount, EXT2_ET_MAGIC_ICOUNT);
*/
el = get_icount_el(icount, ino, 1);
if (!el)
- return EXT2_NO_MEMORY;
+ return EXT2_ET_NO_MEMORY;
el->count = count;
ext2fs_unmark_inode_bitmap(icount->single, ino);
if (icount->multiple)