Whamcloud - gitweb
Many files:
[tools/e2fsprogs.git] / lib / ext2fs / icount.c
index 84d0a97..543187c 100644 (file)
@@ -9,15 +9,18 @@
  * %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"
 
 /*
@@ -62,12 +65,12 @@ void ext2fs_free_icount(ext2_icount_t icount)
 
        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,
@@ -84,9 +87,9 @@ 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, 
@@ -121,8 +124,8 @@ errcode_t ext2fs_create_icount2(ext2_filsys fs, int flags, int size,
        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);
 
@@ -163,27 +166,30 @@ errcode_t ext2fs_create_icount(ext2_filsys fs, int flags, int size,
 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)
@@ -279,14 +285,14 @@ errcode_t ext2fs_icount_validate(ext2_icount_t icount, FILE *out)
 
        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;
@@ -299,7 +305,7 @@ errcode_t ext2fs_icount_fetch(ext2_icount_t icount, ino_t ino, __u16 *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;
@@ -327,7 +333,7 @@ errcode_t ext2fs_icount_increment(ext2_icount_t icount, ino_t ino,
        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)) {
                /*
@@ -336,7 +342,7 @@ errcode_t ext2fs_icount_increment(ext2_icount_t icount, ino_t 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) {
@@ -349,7 +355,7 @@ errcode_t ext2fs_icount_increment(ext2_icount_t icount, ino_t ino,
                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 {
                        /*
@@ -374,7 +380,7 @@ errcode_t ext2fs_icount_increment(ext2_icount_t icount, ino_t ino,
                }
                el = get_icount_el(icount, ino, 1);
                if (!el)
-                       return EXT2_NO_MEMORY;
+                       return EXT2_ET_NO_MEMORY;
                el->count++;
        }
        if (icount->multiple)
@@ -390,7 +396,7 @@ errcode_t ext2fs_icount_decrement(ext2_icount_t icount, ino_t ino,
        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);
 
@@ -410,11 +416,11 @@ errcode_t ext2fs_icount_decrement(ext2_icount_t icount, ino_t ino,
 
        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)
@@ -433,7 +439,7 @@ errcode_t ext2fs_icount_store(ext2_icount_t icount, ino_t ino,
        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);
 
@@ -464,7 +470,7 @@ errcode_t ext2fs_icount_store(ext2_icount_t icount, ino_t ino,
         */
        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)