Whamcloud - gitweb
Add support for the half-MD4 HTREE hash.
[tools/e2fsprogs.git] / debugfs / dump.c
index e946437..98088d6 100644 (file)
@@ -94,23 +94,18 @@ static void fix_perms(const char *cmd, const struct ext2_inode *inode,
                com_err(cmd, errno, "while setting times of %s", name);
 }
 
-static void dump_file(char *cmdname, ino_t ino, int fd, int preserve,
-                     char *outname)
+static void dump_file(const char *cmdname, ext2_ino_t ino, int fd,
+                     int preserve, char *outname)
 {
        errcode_t retval;
        struct ext2_inode       inode;
-       struct utimbuf  ut;
        char            buf[8192];
        ext2_file_t     e2_file;
        int             nbytes;
        unsigned int    got;
        
-       retval = ext2fs_read_inode(current_fs, ino, &inode);
-       if (retval) {
-               com_err(cmdname, retval,
-                       "while reading inode %u in dump_file", ino);
+       if (debugfs_read_inode(ino, &inode, cmdname))
                return;
-       }
 
        retval = ext2fs_file_open(current_fs, ino, 0, &e2_file);
        if (retval) {
@@ -143,12 +138,12 @@ static void dump_file(char *cmdname, ino_t ino, int fd, int preserve,
 
 void do_dump(int argc, char **argv)
 {
-       ino_t   inode;
-       int     fd;
-       int     c;
-       int     preserve = 0;
+       ext2_ino_t      inode;
+       int             fd;
+       int             c;
+       int             preserve = 0;
        const char *dump_usage = "Usage: dump_inode [-p] <file> <output_file>";
-       char    *in_fn, *out_fn;
+       char            *in_fn, *out_fn;
        
        optind = 0;
 #ifdef HAVE_OPTRESET
@@ -191,7 +186,7 @@ void do_dump(int argc, char **argv)
        return;
 }
 
-static void rdump_symlink(ino_t ino, struct ext2_inode *inode,
+static void rdump_symlink(ext2_ino_t ino, struct ext2_inode *inode,
                          const char *fullname)
 {
        ext2_file_t e2_file;
@@ -245,11 +240,10 @@ errout:
 
 static int rdump_dirent(struct ext2_dir_entry *, int, int, char *, void *);
 
-static void rdump_inode(ino_t ino, struct ext2_inode *inode,
+static void rdump_inode(ext2_ino_t ino, struct ext2_inode *inode,
                        const char *name, const char *dumproot)
 {
        char *fullname;
-       struct utimbuf ut;
 
        /* There are more efficient ways to do this, but this method
         * requires only minimal debugging. */
@@ -302,18 +296,14 @@ static int rdump_dirent(struct ext2_dir_entry *dirent, int offset,
        int thislen;
        const char *dumproot = private;
        struct ext2_inode inode;
-       errcode_t retval;
 
        thislen = ((dirent->name_len & 0xFF) < EXT2_NAME_LEN
                   ? (dirent->name_len & 0xFF) : EXT2_NAME_LEN);
        strncpy(name, dirent->name, thislen);
        name[thislen] = 0;
 
-       retval = ext2fs_read_inode(current_fs, dirent->inode, &inode);
-       if (retval) {
-               com_err("rdump", retval, "while dumping %s/%s", dumproot, name);
+       if (debugfs_read_inode(dirent->inode, &inode, name))
                return 0;
-       }
 
        rdump_inode(dirent->inode, &inode, name, dumproot);
 
@@ -322,19 +312,14 @@ static int rdump_dirent(struct ext2_dir_entry *dirent, int offset,
 
 void do_rdump(int argc, char **argv)
 {
-       ino_t ino;
+       ext2_ino_t ino;
        struct ext2_inode inode;
-       errcode_t retval;
        struct stat st;
        int i;
        char *p;
 
-       if (argc != 3) {
-               com_err(argv[0], 0, "Usage: rdump <directory> <native directory>");
-               return;
-       }
-
-       if (check_fs_open(argv[0]))
+       if (common_args_process(argc, argv, 3, 3, "rdump",
+                               "<directory> <native directory>", 0))
                return;
 
        ino = string_to_inode(argv[1]);
@@ -352,11 +337,8 @@ void do_rdump(int argc, char **argv)
                return;
        }
 
-       retval = ext2fs_read_inode(current_fs, ino, &inode);
-       if (retval) {
-               com_err("rdump", retval, "while dumping %s", argv[1]);
+       if (debugfs_read_inode(ino, &inode, argv[1]))
                return;
-       }
 
        p = strrchr(argv[1], '/');
        if (p)
@@ -369,18 +351,9 @@ void do_rdump(int argc, char **argv)
 
 void do_cat(int argc, char **argv)
 {
-       ino_t   inode;
-
-       if (argc != 2) {
-               com_err(argv[0], 0, "Usage: cat <file>");
-               return;
-       }
+       ext2_ino_t      inode;
 
-       if (check_fs_open(argv[0]))
-               return;
-
-       inode = string_to_inode(argv[1]);
-       if (!inode) 
+       if (common_inode_args_process(argc, argv, &inode, 0))
                return;
 
        fflush(stdout);