#if HAVE_UNISTD_H
#include <unistd.h>
#endif
-#include <stdlib.h>
#include <time.h>
#include <string.h>
-#ifdef HAVE_ERRNO_H
-#include <errno.h>
-#endif
-
-#include <linux/ext2_fs.h>
+#include "ext2_fs.h"
#include "ext2fsP.h"
errcode_t ext2fs_dup_handle(ext2_filsys src, ext2_filsys *dest)
EXT2_CHECK_MAGIC(src, EXT2_ET_MAGIC_EXT2FS_FILSYS);
- fs = (ext2_filsys) malloc(sizeof(struct struct_ext2_filsys));
- if (!fs)
- return ENOMEM;
+ retval = ext2fs_get_mem(sizeof(struct struct_ext2_filsys),
+ (void **) &fs);
+ if (retval)
+ return retval;
*fs = *src;
fs->device_name = 0;
if (fs->icache)
fs->icache->refcount++;
- retval = ENOMEM;
- fs->device_name = malloc(strlen(src->device_name)+1);
- if (!fs->device_name)
+ retval = ext2fs_get_mem(strlen(src->device_name)+1,
+ (void **) &fs->device_name);
+ if (retval)
goto errout;
strcpy(fs->device_name, src->device_name);
- fs->super = malloc(SUPERBLOCK_SIZE);
- if (!fs->super)
+ retval = ext2fs_get_mem(SUPERBLOCK_SIZE, (void **) &fs->super);
+ if (retval)
goto errout;
memcpy(fs->super, src->super, SUPERBLOCK_SIZE);
- fs->group_desc = malloc(fs->desc_blocks * fs->blocksize);
- if (!fs->group_desc)
+ retval = ext2fs_get_mem((size_t) fs->desc_blocks * fs->blocksize,
+ (void **) &fs->group_desc);
+ if (retval)
goto errout;
memcpy(fs->group_desc, src->group_desc,
- fs->desc_blocks * fs->blocksize);
+ (size_t) fs->desc_blocks * fs->blocksize);
if (src->inode_map) {
retval = ext2fs_copy_bitmap(src->inode_map, &fs->inode_map);