diff options
author | Theodore Ts'o <tytso@mit.edu> | 1997-10-26 03:41:24 +0000 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 1997-10-26 03:41:24 +0000 |
commit | 7b4e4534f9361b21d3fafdd88a58f133decee38c (patch) | |
tree | db28490bbca280ffd8d74dcfa64ed7cba508cbbf /lib/ext2fs/get_pathname.c | |
parent | 78d8f90ffae45808096133c461ef1ee0e65de937 (diff) | |
download | android_external_e2fsprogs-7b4e4534f9361b21d3fafdd88a58f133decee38c.tar.gz android_external_e2fsprogs-7b4e4534f9361b21d3fafdd88a58f133decee38c.tar.bz2 android_external_e2fsprogs-7b4e4534f9361b21d3fafdd88a58f133decee38c.zip |
Many files:
Added definition of ext2fs_get_mem, ext2fs_free_mem, and
ext2fs_resize_mem in ext2fs.h, and changed all library routines to use
these wrapper functions.
Diffstat (limited to 'lib/ext2fs/get_pathname.c')
-rw-r--r-- | lib/ext2fs/get_pathname.c | 40 |
1 files changed, 21 insertions, 19 deletions
diff --git a/lib/ext2fs/get_pathname.c b/lib/ext2fs/get_pathname.c index f4f6db75..9b5ce261 100644 --- a/lib/ext2fs/get_pathname.c +++ b/lib/ext2fs/get_pathname.c @@ -46,6 +46,7 @@ static int get_pathname_proc(struct ext2_dir_entry *dirent, void *private) { struct get_pathname_struct *gp; + errcode_t retval; gp = (struct get_pathname_struct *) private; @@ -53,7 +54,8 @@ static int get_pathname_proc(struct ext2_dir_entry *dirent, !strncmp(dirent->name, "..", 2)) gp->parent = dirent->inode; if (dirent->inode == gp->search_ino) { - gp->name = malloc(dirent->name_len + 1); + retval = ext2fs_get_mem(dirent->name_len + 1, + (void **) &gp->name); if (!gp->name) { gp->errcode = EXT2_NO_MEMORY; return DIRENT_ABORT; @@ -73,17 +75,17 @@ static errcode_t ext2fs_get_pathname_int(ext2_filsys fs, ino_t dir, ino_t ino, errcode_t retval; if (dir == ino) { - *name = malloc(2); - if (!*name) - return EXT2_NO_MEMORY; + retval = ext2fs_get_mem(2, (void **)name); + if (retval) + return retval; strcpy(*name, (dir == EXT2_ROOT_INO) ? "/" : "."); return 0; } if (!dir || (maxdepth < 0)) { - *name = malloc(4); - if (!*name) - return EXT2_NO_MEMORY; + retval = ext2fs_get_mem(4, (void **)name); + if (retval) + return retval; strcpy(*name, "..."); return 0; } @@ -111,14 +113,14 @@ static errcode_t ext2fs_get_pathname_int(ext2_filsys fs, ino_t dir, ino_t ino, } if (gp.name) - ret = malloc(strlen(parent_name)+strlen(gp.name)+2); + retval = ext2fs_get_mem(strlen(parent_name)+strlen(gp.name)+2, + (void **) &ret); else - ret = malloc(strlen(parent_name)+5); /* strlen("???") + 2 */ - - if (!ret) { - retval = EXT2_NO_MEMORY; + retval = ext2fs_get_mem(strlen(parent_name)+5, + (void **) &ret); + if (retval) goto cleanup; - } + ret[0] = 0; if (parent_name[1]) strcat(ret, parent_name); @@ -128,12 +130,12 @@ static errcode_t ext2fs_get_pathname_int(ext2_filsys fs, ino_t dir, ino_t ino, else strcat(ret, "???"); *name = ret; - free(parent_name); + ext2fs_free_mem((void **) &parent_name); retval = 0; cleanup: if (gp.name) - free(gp.name); + ext2fs_free_mem((void **) &gp.name); return retval; } @@ -145,13 +147,13 @@ errcode_t ext2fs_get_pathname(ext2_filsys fs, ino_t dir, ino_t ino, EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS); - buf = malloc(fs->blocksize); - if (!buf) - return EXT2_NO_MEMORY; + retval = ext2fs_get_mem(fs->blocksize, (void **) &buf); + if (retval) + return retval; if (dir == ino) ino = 0; retval = ext2fs_get_pathname_int(fs, dir, ino, 32, buf, name); - free(buf); + ext2fs_free_mem((void **) &buf); return retval; } |