Whamcloud - gitweb
Use MKINSTALLDIRS macro so that the Makefiles can find the script
[tools/e2fsprogs.git] / lib / ext2fs / namei.c
index 576a99f..13d13ad 100644 (file)
 #if HAVE_UNISTD_H
 #include <unistd.h>
 #endif
-#include <stdlib.h>
 
 /* #define NAMEI_DEBUG */
 
-#include <linux/ext2_fs.h>
-
+#include "ext2_fs.h"
 #include "ext2fs.h"
 
-static errcode_t open_namei(ext2_filsys fs, ino_t root, ino_t base,
+static errcode_t open_namei(ext2_filsys fs, ext2_ino_t root, ext2_ino_t base,
                            const char *pathname, size_t pathlen, int follow,
-                           int link_count, char *buf, ino_t *res_inode);
+                           int link_count, char *buf, ext2_ino_t *res_inode);
 
-static errcode_t follow_link(ext2_filsys fs, ino_t root, ino_t dir,
-                            ino_t inode, int link_count,
-                            char *buf, ino_t *res_inode)
+static errcode_t follow_link(ext2_filsys fs, ext2_ino_t root, ext2_ino_t dir,
+                            ext2_ino_t inode, int link_count,
+                            char *buf, ext2_ino_t *res_inode)
 {
        char *pathname;
        char *buffer = 0;
@@ -49,13 +47,13 @@ static errcode_t follow_link(ext2_filsys fs, ino_t root, ino_t dir,
        if (link_count++ > 5) {
                return EXT2_ET_SYMLINK_LOOP;
        }
-       if (ei.i_blocks) {
-               retval = ext2fs_get_mem(fs->blocksize, (void **) &buffer);
+       if (ext2fs_inode_data_blocks(fs,&ei)) {
+               retval = ext2fs_get_mem(fs->blocksize, &buffer);
                if (retval)
                        return retval;
                retval = io_channel_read_blk(fs->io, ei.i_block[0], 1, buffer);
                if (retval) {
-                       ext2fs_free_mem((void **) &buffer);
+                       ext2fs_free_mem(&buffer);
                        return retval;
                }
                pathname = buffer;
@@ -64,7 +62,7 @@ static errcode_t follow_link(ext2_filsys fs, ino_t root, ino_t dir,
        retval = open_namei(fs, root, dir, pathname, ei.i_size, 1,
                            link_count, buf, res_inode);
        if (buffer)
-               ext2fs_free_mem((void **) &buffer);
+               ext2fs_free_mem(&buffer);
        return retval;
 }
 
@@ -74,15 +72,16 @@ static errcode_t follow_link(ext2_filsys fs, ino_t root, ino_t dir,
  * containing directory, and a pointer to the filename of the file
  * (pointing into the pathname) and the length of the filename.
  */
-static errcode_t dir_namei(ext2_filsys fs, ino_t root, ino_t dir,
+static errcode_t dir_namei(ext2_filsys fs, ext2_ino_t root, ext2_ino_t dir,
                           const char *pathname, int pathlen,
                           int link_count, char *buf,
-                          const char **name, int *namelen, ino_t *res_inode)
+                          const char **name, int *namelen,
+                          ext2_ino_t *res_inode)
 {
        char c;
        const char *thisname;
        int len;
-       ino_t inode;
+       ext2_ino_t inode;
        errcode_t retval;
 
        if ((c = *pathname) == '/') {
@@ -111,13 +110,13 @@ static errcode_t dir_namei(ext2_filsys fs, ino_t root, ino_t dir,
        return 0;
 }
 
-static errcode_t open_namei(ext2_filsys fs, ino_t root, ino_t base,
+static errcode_t open_namei(ext2_filsys fs, ext2_ino_t root, ext2_ino_t base,
                            const char *pathname, size_t pathlen, int follow,
-                           int link_count, char *buf, ino_t *res_inode)
+                           int link_count, char *buf, ext2_ino_t *res_inode)
 {
        const char *basename;
        int namelen;
-       ino_t dir, inode;
+       ext2_ino_t dir, inode;
        errcode_t retval;
 
 #ifdef NAMEI_DEBUG
@@ -148,59 +147,59 @@ static errcode_t open_namei(ext2_filsys fs, ino_t root, ino_t base,
        return 0;
 }
 
-errcode_t ext2fs_namei(ext2_filsys fs, ino_t root, ino_t cwd,
-                      const char *name, ino_t *inode)
+errcode_t ext2fs_namei(ext2_filsys fs, ext2_ino_t root, ext2_ino_t cwd,
+                      const char *name, ext2_ino_t *inode)
 {
        char *buf;
        errcode_t retval;
        
        EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
 
-       retval = ext2fs_get_mem(fs->blocksize, (void **) &buf);
+       retval = ext2fs_get_mem(fs->blocksize, &buf);
        if (retval)
                return retval;
        
        retval = open_namei(fs, root, cwd, name, strlen(name), 0, 0,
                            buf, inode);
 
-       ext2fs_free_mem((void **) &buf);
+       ext2fs_free_mem(&buf);
        return retval;
 }
 
-errcode_t ext2fs_namei_follow(ext2_filsys fs, ino_t root, ino_t cwd,
-                             const char *name, ino_t *inode)
+errcode_t ext2fs_namei_follow(ext2_filsys fs, ext2_ino_t root, ext2_ino_t cwd,
+                             const char *name, ext2_ino_t *inode)
 {
        char *buf;
        errcode_t retval;
        
        EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
 
-       retval = ext2fs_get_mem(fs->blocksize, (void **) &buf);
+       retval = ext2fs_get_mem(fs->blocksize, &buf);
        if (retval)
                return retval;
        
        retval = open_namei(fs, root, cwd, name, strlen(name), 1, 0,
                            buf, inode);
 
-       ext2fs_free_mem((void **) &buf);
+       ext2fs_free_mem(&buf);
        return retval;
 }
 
-extern errcode_t ext2fs_follow_link(ext2_filsys fs, ino_t root, ino_t cwd,
-                       ino_t inode, ino_t *res_inode)
+errcode_t ext2fs_follow_link(ext2_filsys fs, ext2_ino_t root, ext2_ino_t cwd,
+                       ext2_ino_t inode, ext2_ino_t *res_inode)
 {
        char *buf;
        errcode_t retval;
        
        EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
 
-       retval = ext2fs_get_mem(fs->blocksize, (void **) &buf);
+       retval = ext2fs_get_mem(fs->blocksize, &buf);
        if (retval)
                return retval;
 
        retval = follow_link(fs, root, cwd, inode, 0, buf, res_inode);
 
-       ext2fs_free_mem((void **) &buf);
+       ext2fs_free_mem(&buf);
        return retval;
 }