Whamcloud - gitweb
Align function prototypes for libss's request handler function
authorTheodore Ts'o <tytso@mit.edu>
Tue, 23 Apr 2024 21:11:26 +0000 (17:11 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Tue, 23 Apr 2024 22:47:25 +0000 (18:47 -0400)
Clang 17's Undefined Behaviour Sanitizer will throw run-time warnings
if a function pointer is dereferenced with a different function
signature than one in the pointer --- even if the difference is a
missing const qualifier.  To fix regression test failures, change
declarations of argv to use ss_argv_t instead of an inconsistently
open-coded type.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
33 files changed:
debugfs/debugfs.c
debugfs/debugfs.h
debugfs/do_journal.c
debugfs/dump.c
debugfs/extent_inode.c
debugfs/filefrag.c
debugfs/htree.c
debugfs/icheck.c
debugfs/logdump.c
debugfs/ls.c
debugfs/lsdel.c
debugfs/ncheck.c
debugfs/quota.c
debugfs/set_fields.c
debugfs/unused.c
debugfs/util.c
debugfs/xattrs.c
debugfs/zap.c
lib/ext2fs/tst_bitmaps.c
lib/ss/execute_cmd.c
lib/ss/help.c
lib/ss/list_rqs.c
lib/ss/listen.c
lib/ss/requests.c
lib/ss/ss.h
lib/ss/ss_internal.h
lib/ss/test_ss.c
misc/e2freefrag.c
tests/progs/Makefile.in
tests/progs/test_icount.c
tests/progs/test_icount.h
tests/progs/test_rel.c
tests/progs/test_rel.h

index b17576e..16a03d4 100644 (file)
@@ -222,7 +222,7 @@ errout:
                com_err(device, retval, "while trying to close filesystem");
 }
 
-void do_open_filesys(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_open_filesys(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                     void *infop EXT2FS_ATTR((unused)))
 {
        int     c, err;
@@ -305,7 +305,7 @@ print_usage:
                "<device>\n", argv[0]);
 }
 
-void do_lcd(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_lcd(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
            void *infop EXT2FS_ATTR((unused)))
 {
        if (argc != 2) {
@@ -343,7 +343,7 @@ static void close_filesystem(NOARGS)
        return;
 }
 
-void do_close_filesys(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_close_filesys(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                      void *infop EXT2FS_ATTR((unused)))
 {
        int     c;
@@ -372,7 +372,7 @@ void do_close_filesys(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
 }
 
 #ifndef READ_ONLY
-void do_init_filesys(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_init_filesys(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                     void *infop EXT2FS_ATTR((unused)))
 {
        struct ext2_super_block param;
@@ -433,7 +433,7 @@ static void print_bg_opts(ext2_filsys fs, dgrp_t group, int mask,
        }
 }
 
-void do_show_super_stats(int argc, char *argv[],
+void do_show_super_stats(int argc, ss_argv_t argv,
                         int sci_idx EXT2FS_ATTR((unused)),
                         void *infop EXT2FS_ATTR((unused)))
 {
@@ -531,7 +531,7 @@ print_usage:
 
 #ifndef READ_ONLY
 void do_dirty_filesys(int argc EXT2FS_ATTR((unused)),
-                     char **argv EXT2FS_ATTR((unused)),
+                     ss_argv_t argv EXT2FS_ATTR((unused)),
                      int sci_idx EXT2FS_ATTR((unused)),
                      void *infop EXT2FS_ATTR((unused)))
 {
@@ -996,7 +996,7 @@ static void dump_inode(ext2_ino_t inode_num, struct ext2_inode *inode)
        close_pager(out);
 }
 
-void do_stat(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_stat(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
             void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      inode;
@@ -1028,7 +1028,7 @@ void do_stat(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        return;
 }
 
-void do_dump_extents(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_dump_extents(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                     void *infop EXT2FS_ATTR((unused)))
 {
        struct ext2_inode inode;
@@ -1100,7 +1100,7 @@ static int print_blocks_proc(ext2_filsys fs EXT2FS_ATTR((unused)),
        return 0;
 }
 
-void do_blocks(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_blocks(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
               void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      inode;
@@ -1118,7 +1118,7 @@ void do_blocks(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        return;
 }
 
-void do_chroot(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_chroot(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
               void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t inode;
@@ -1136,7 +1136,7 @@ void do_chroot(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
 }
 
 #ifndef READ_ONLY
-void do_clri(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_clri(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
             void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t inode;
@@ -1152,7 +1152,7 @@ void do_clri(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
                return;
 }
 
-void do_freei(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_freei(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
              void *infop EXT2FS_ATTR((unused)))
 {
        unsigned int    len = 1;
@@ -1183,7 +1183,7 @@ void do_freei(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        ext2fs_mark_ib_dirty(current_fs);
 }
 
-void do_seti(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_seti(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
             void *infop EXT2FS_ATTR((unused)))
 {
        unsigned int    len = 1;
@@ -1215,7 +1215,7 @@ void do_seti(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
 }
 #endif /* READ_ONLY */
 
-void do_testi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_testi(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
              void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t inode;
@@ -1230,7 +1230,7 @@ void do_testi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
 }
 
 #ifndef READ_ONLY
-void do_freeb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_freeb(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
              void *infop EXT2FS_ATTR((unused)))
 {
        blk64_t block;
@@ -1250,7 +1250,7 @@ void do_freeb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        ext2fs_mark_bb_dirty(current_fs);
 }
 
-void do_setb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_setb(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
             void *infop EXT2FS_ATTR((unused)))
 {
        blk64_t block;
@@ -1271,7 +1271,7 @@ void do_setb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
 }
 #endif /* READ_ONLY */
 
-void do_testb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_testb(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
              void *infop EXT2FS_ATTR((unused)))
 {
        blk64_t block;
@@ -1358,7 +1358,7 @@ static void modify_u32(char *com, const char *prompt,
 }
 
 
-void do_modify_inode(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_modify_inode(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                     void *infop EXT2FS_ATTR((unused)))
 {
        struct ext2_inode inode;
@@ -1436,7 +1436,7 @@ void do_modify_inode(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
 }
 #endif /* READ_ONLY */
 
-void do_change_working_dir(int argc, char *argv[],
+void do_change_working_dir(int argc, ss_argv_t argv,
                           int sci_idx EXT2FS_ATTR((unused)),
                           void *infop EXT2FS_ATTR((unused)))
 {
@@ -1455,7 +1455,7 @@ void do_change_working_dir(int argc, char *argv[],
        return;
 }
 
-void do_print_working_directory(int argc, char *argv[],
+void do_print_working_directory(int argc, ss_argv_t argv,
                                int sci_idx EXT2FS_ATTR((unused)),
                                void *infop EXT2FS_ATTR((unused)))
 {
@@ -1546,7 +1546,7 @@ static void make_link(char *sourcename, char *destname)
 }
 
 
-void do_link(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_link(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
             void *infop EXT2FS_ATTR((unused)))
 {
        if (common_args_process(argc, argv, 3, 3, "link",
@@ -1569,7 +1569,7 @@ static int mark_blocks_proc(ext2_filsys fs, blk64_t *blocknr,
        return 0;
 }
 
-void do_undel(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_undel(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
              void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      ino;
@@ -1633,7 +1633,7 @@ static void unlink_file_by_name(char *filename)
        return;
 }
 
-void do_unlink(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_unlink(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
               void *infop EXT2FS_ATTR((unused)))
 {
        if (common_args_process(argc, argv, 2, 2, "link",
@@ -1643,7 +1643,7 @@ void do_unlink(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        unlink_file_by_name(argv[1]);
 }
 
-void do_copy_inode(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_copy_inode(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                   void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      src_ino, dest_ino;
@@ -1672,7 +1672,7 @@ void do_copy_inode(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
 
 #endif /* READ_ONLY */
 
-void do_find_free_block(int argc, char *argv[],
+void do_find_free_block(int argc, ss_argv_t argv,
                        int sci_idx EXT2FS_ATTR((unused)),
                        void *infop EXT2FS_ATTR((unused)))
 {
@@ -1726,7 +1726,7 @@ void do_find_free_block(int argc, char *argv[],
        printf("\n");
 }
 
-void do_find_free_inode(int argc, char *argv[],
+void do_find_free_inode(int argc, ss_argv_t argv,
                        int sci_idx EXT2FS_ATTR((unused)),
                        void *infop EXT2FS_ATTR((unused)))
 {
@@ -1768,7 +1768,7 @@ void do_find_free_inode(int argc, char *argv[],
 }
 
 #ifndef READ_ONLY
-void do_write(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_write(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
              void *infop EXT2FS_ATTR((unused)))
 {
        errcode_t       retval;
@@ -1782,7 +1782,7 @@ void do_write(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
                com_err(argv[0], retval, 0);
 }
 
-void do_mknod(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_mknod(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
              void *infop EXT2FS_ATTR((unused)))
 {
        unsigned long   major, minor;
@@ -1817,9 +1817,12 @@ void do_mknod(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        }
 
        if (nr == 5) {
-               major = strtoul(argv[3], argv+3, 0);
-               minor = strtoul(argv[4], argv+4, 0);
-               if (major > 65535 || minor > 65535 || argv[3][0] || argv[4][0])
+               char *end1 = NULL, *end2 = NULL;
+
+               major = strtoul(argv[3], &end1, 0);
+               minor = strtoul(argv[4], &end2, 0);
+               if (major > 65535 || minor > 65535 ||
+                   (end1 && *end1) || (end2 && *end2))
                        nr = 0;
        }
 
@@ -1833,7 +1836,7 @@ void do_mknod(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
                com_err(argv[0], retval, 0);
 }
 
-void do_mkdir(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_mkdir(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
              void *infop EXT2FS_ATTR((unused)))
 {
        errcode_t retval;
@@ -1887,7 +1890,7 @@ static void kill_file_by_inode(ext2_ino_t inode)
 }
 
 
-void do_kill_file(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_kill_file(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                  void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t inode_num;
@@ -1898,7 +1901,7 @@ void do_kill_file(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        kill_file_by_inode(inode_num);
 }
 
-void do_rm(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_rm(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
           void *infop EXT2FS_ATTR((unused)))
 {
        int retval;
@@ -1960,7 +1963,7 @@ static int rmdir_proc(ext2_ino_t dir EXT2FS_ATTR((unused)),
        return 0;
 }
 
-void do_rmdir(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_rmdir(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
              void *infop EXT2FS_ATTR((unused)))
 {
        int retval;
@@ -2019,7 +2022,7 @@ void do_rmdir(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
 #endif /* READ_ONLY */
 
 void do_show_debugfs_params(int argc EXT2FS_ATTR((unused)),
-                           char *argv[] EXT2FS_ATTR((unused)),
+                           ss_argv_t argv EXT2FS_ATTR((unused)),
                            int sci_idx EXT2FS_ATTR((unused)),
                            void *infop EXT2FS_ATTR((unused)))
 {
@@ -2031,7 +2034,7 @@ void do_show_debugfs_params(int argc EXT2FS_ATTR((unused)),
 }
 
 #ifndef READ_ONLY
-void do_expand_dir(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_expand_dir(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                    void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t inode;
@@ -2046,7 +2049,7 @@ void do_expand_dir(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        return;
 }
 
-void do_features(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_features(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                 void *infop EXT2FS_ATTR((unused)))
 {
        int     i;
@@ -2068,7 +2071,7 @@ void do_features(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
 }
 #endif /* READ_ONLY */
 
-void do_bmap(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_bmap(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
             void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      ino;
@@ -2133,7 +2136,7 @@ void do_bmap(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        fputc('\n', stdout);
 }
 
-void do_imap(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_imap(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
             void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      ino;
@@ -2165,7 +2168,7 @@ void do_imap(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
 
 }
 
-void do_idump(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_idump(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
              void *infop EXT2FS_ATTR((unused)))
 {
        struct ext2_inode_large *inode;
@@ -2236,7 +2239,7 @@ err:
 }
 
 #ifndef READ_ONLY
-void do_set_current_time(int argc, char *argv[],
+void do_set_current_time(int argc, ss_argv_t argv,
                         int sci_idx EXT2FS_ATTR((unused)),
                         void *infop EXT2FS_ATTR((unused)))
 {
@@ -2297,7 +2300,7 @@ static int find_supp_feature(__u32 *supp, int feature_type, char *name)
        return 0;
 }
 
-void do_supported_features(int argc, char *argv[],
+void do_supported_features(int argc, ss_argv_t argv,
                           int sci_idx EXT2FS_ATTR((unused)),
                           void *infop EXT2FS_ATTR((unused)))
 {
@@ -2327,7 +2330,7 @@ void do_supported_features(int argc, char *argv[],
 }
 
 #ifndef READ_ONLY
-void do_punch(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_punch(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
              void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      ino;
@@ -2363,7 +2366,7 @@ void do_punch(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        }
 }
 
-void do_fallocate(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_fallocate(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                  void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      ino;
@@ -2400,7 +2403,7 @@ void do_fallocate(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        }
 }
 
-void do_symlink(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_symlink(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                void *infop EXT2FS_ATTR((unused)))
 {
        errcode_t       retval;
@@ -2417,7 +2420,7 @@ void do_symlink(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
 #endif /* READ_ONLY */
 
 #if CONFIG_MMP
-void do_dump_mmp(int argc EXT2FS_ATTR((unused)), char *argv[],
+void do_dump_mmp(int argc EXT2FS_ATTR((unused)), ss_argv_t argv,
                 int sci_idx EXT2FS_ATTR((unused)),
                 void *infop EXT2FS_ATTR((unused)))
 {
@@ -2483,7 +2486,7 @@ void do_dump_mmp(int argc EXT2FS_ATTR((unused)), char *argv[],
 }
 #else
 void do_dump_mmp(int argc EXT2FS_ATTR((unused)),
-                char *argv[] EXT2FS_ATTR((unused)),
+                ss_argv_t argv EXT2FS_ATTR((unused)),
                 int sci_idx EXT2FS_ATTR((unused)),
                 void *infop EXT2FS_ATTR((unused)))
 {
index 85c82b9..88d929c 100644 (file)
@@ -44,12 +44,12 @@ extern unsigned long long parse_ulonglong(const char *str, const char *cmd,
                                          const char *descr, int *err);
 extern int strtoblk(const char *cmd, const char *str, const char *errmsg,
                    blk64_t *ret);
-extern int common_args_process(int argc, char *argv[], int min_argc,
+extern int common_args_process(int argc, ss_argv_t argv, int min_argc,
                               int max_argc, const char *cmd,
                               const char *usage, int flags);
-extern int common_inode_args_process(int argc, char *argv[],
+extern int common_inode_args_process(int argc, ss_argv_t argv,
                                     ext2_ino_t *inode, int flags);
-extern int common_block_args_process(int argc, char *argv[],
+extern int common_block_args_process(int argc, ss_argv_t argv,
                                     blk64_t *block, blk64_t *count);
 extern int debugfs_read_inode(ext2_ino_t ino, struct ext2_inode * inode,
                              const char *cmd);
@@ -66,60 +66,60 @@ extern int ext2_file_type(unsigned int mode);
 /* ss command functions */
 
 /* dump.c */
-extern void do_dump(int argc, char **argv, int sci_idx, void *infop);
-extern void do_cat(int argc, char **argv, int sci_idx, void *infop);
-extern void do_rdump(int argc, char **argv, int sci_idx, void *infop);
+extern void do_dump(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_cat(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_rdump(int argc, ss_argv_t argv, int sci_idx, void *infop);
 
 /* extent_inode.c */
-extern void do_extent_open(int argc, char **argv, int sci_idx, void *infop);
-extern void do_extent_close(int argc, char **argv, int sci_idx, void *infop);
-extern void do_current_node(int argc, char **argv, int sci_idx, void *infop);
-extern void do_root_node(int argc, char **argv, int sci_idx, void *infop);
-extern void do_last_leaf(int argc, char **argv, int sci_idx, void *infop);
-extern void do_first_sib(int argc, char **argv, int sci_idx, void *infop);
-extern void do_last_sib(int argc, char **argv, int sci_idx, void *infop);
-extern void do_next_sib(int argc, char **argv, int sci_idx, void *infop);
-extern void do_prev_sib(int argc, char **argv, int sci_idx, void *infop);
-extern void do_next_leaf(int argc, char **argv, int sci_idx, void *infop);
-extern void do_prev_leaf(int argc, char **argv, int sci_idx, void *infop);
-extern void do_next(int argc, char **argv, int sci_idx, void *infop);
-extern void do_prev(int argc, char **argv, int sci_idx, void *infop);
-extern void do_up(int argc, char **argv, int sci_idx, void *infop);
-extern void do_down(int argc, char **argv, int sci_idx, void *infop);
-extern void do_delete_node(int argc, char **argv, int sci_idx, void *infop);
-extern void do_replace_node(int argc, char **argv, int sci_idx, void *infop);
-extern void do_split_node(int argc, char **argv, int sci_idx, void *infop);
-extern void do_insert_node(int argc, char **argv, int sci_idx, void *infop);
-extern void do_set_bmap(int argc, char **argv, int sci_idx, void *infop);
-extern void do_print_all(int argc, char **argv, int sci_idx, void *infop);
-extern void do_fix_parents(int argc, char **argv, int sci_idx, void *infop);
-extern void do_info(int argc, char **argv, int sci_idx, void *infop);
-extern void do_goto_block(int argc, char **argv, int sci_idx, void *infop);
+extern void do_extent_open(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_extent_close(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_current_node(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_root_node(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_last_leaf(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_first_sib(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_last_sib(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_next_sib(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_prev_sib(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_next_leaf(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_prev_leaf(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_next(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_prev(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_up(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_down(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_delete_node(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_replace_node(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_split_node(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_insert_node(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_set_bmap(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_print_all(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_fix_parents(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_info(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_goto_block(int argc, ss_argv_t argv, int sci_idx, void *infop);
 
 /* htree.c */
-extern void do_htree_dump(int argc, char **argv, int sci_idx, void *infop);
-extern void do_dx_hash(int argc, char **argv, int sci_idx, void *infop);
-extern void do_dirsearch(int argc, char **argv, int sci_idx, void *infop);
+extern void do_htree_dump(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_dx_hash(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_dirsearch(int argc, ss_argv_t argv, int sci_idx, void *infop);
 
 /* logdump.c */
-extern void do_logdump(int argc, char **argv, int sci_idx, void *infop);
+extern void do_logdump(int argc, ss_argv_t argv, int sci_idx, void *infop);
 
 /* lsdel.c */
-extern void do_lsdel(int argc, char **argv, int sci_idx, void *infop);
+extern void do_lsdel(int argc, ss_argv_t argv, int sci_idx, void *infop);
 
 /* icheck.c */
-extern void do_icheck(int argc, char **argv, int sci_idx, void *infop);
+extern void do_icheck(int argc, ss_argv_t argv, int sci_idx, void *infop);
 
 /* ncheck.c */
-extern void do_ncheck(int argc, char **argv, int sci_idx, void *infop);
+extern void do_ncheck(int argc, ss_argv_t argv, int sci_idx, void *infop);
 
 /* set_fields.c */
-extern void do_set_super(int argc, char **, int sci_idx, void *infop);
-extern void do_set_inode(int argc, char **, int sci_idx, void *infop);
-extern void do_set_block_group_descriptor(int argc, char **, int sci_idx, void *infop);
+extern void do_set_super(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_set_inode(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_set_block_group_descriptor(int argc, ss_argv_t argv, int sci_idx, void *infop);
 
 /* unused.c */
-extern void do_dump_unused(int argc, char **argv, int sci_idx, void *infop);
+extern void do_dump_unused(int argc, ss_argv_t argv, int sci_idx, void *infop);
 
 /* debugfs.c */
 extern ss_request_table *extra_cmds;
@@ -127,68 +127,68 @@ extern const char *debug_prog_name;
 extern void internal_dump_inode(FILE *, const char *, ext2_ino_t,
                                struct ext2_inode *, int);
 
-extern void do_dirty_filesys(int argc, char **argv, int sci_idx, void *infop);
-extern void do_open_filesys(int argc, char **argv, int sci_idx, void *infop);
-extern void do_close_filesys(int argc, char **argv, int sci_idx, void *infop);
-extern void do_lcd(int argc, char **argv, int sci_idx, void *infop);
-extern void do_init_filesys(int argc, char **argv, int sci_idx, void *infop);
-extern void do_show_super_stats(int argc, char **argv, int sci_idx, void *infop);
-extern void do_kill_file(int argc, char **argv, int sci_idx, void *infop);
-extern void do_rm(int argc, char **argv, int sci_idx, void *infop);
-extern void do_link(int argc, char **argv, int sci_idx, void *infop);
-extern void do_undel(int argc, char **argv, int sci_idx, void *infop);
-extern void do_unlink(int argc, char **argv, int sci_idx, void *infop);
-extern void do_copy_inode(int argc, char *argv[], int sci_idx, void *infop);
-extern void do_find_free_block(int argc, char **argv, int sci_idx, void *infop);
-extern void do_find_free_inode(int argc, char **argv, int sci_idx, void *infop);
-extern void do_stat(int argc, char **argv, int sci_idx, void *infop);
-extern void do_dump_extents(int argc, char **argv, int sci_idx, void *infop);
-extern void do_blocks(int argc, char *argv[], int sci_idx, void *infop);
-
-extern void do_chroot(int argc, char **argv, int sci_idx, void *infop);
-extern void do_clri(int argc, char **argv, int sci_idx, void *infop);
-extern void do_freei(int argc, char **argv, int sci_idx, void *infop);
-extern void do_seti(int argc, char **argv, int sci_idx, void *infop);
-extern void do_testi(int argc, char **argv, int sci_idx, void *infop);
-extern void do_freeb(int argc, char **argv, int sci_idx, void *infop);
-extern void do_setb(int argc, char **argv, int sci_idx, void *infop);
-extern void do_testb(int argc, char **argv, int sci_idx, void *infop);
-extern void do_modify_inode(int argc, char **argv, int sci_idx, void *infop);
-extern void do_list_dir(int argc, char **argv, int sci_idx, void *infop);
-extern void do_change_working_dir(int argc, char **argv, int sci_idx, void *infop);
-extern void do_print_working_directory(int argc, char **argv, int sci_idx, void *infop);
-extern void do_write(int argc, char **argv, int sci_idx, void *infop);
-extern void do_mknod(int argc, char **argv, int sci_idx, void *infop);
-extern void do_mkdir(int argc, char **argv, int sci_idx, void *infop);
-extern void do_rmdir(int argc, char **argv, int sci_idx, void *infop);
-extern void do_show_debugfs_params(int argc, char **argv, int sci_idx, void *infop);
-extern void do_expand_dir(int argc, char **argv, int sci_idx, void *infop);
-extern void do_features(int argc, char **argv, int sci_idx, void *infop);
-extern void do_bmap(int argc, char **argv, int sci_idx, void *infop);
-extern void do_imap(int argc, char **argv, int sci_idx, void *infop);
-extern void do_idump(int argc, char *argv[], int sci_idx, void *infop);
-extern void do_set_current_time(int argc, char **argv, int sci_idx, void *infop);
-extern void do_supported_features(int argc, char **argv, int sci_idx, void *infop);
-extern void do_punch(int argc, char **argv, int sci_idx, void *infop);
-extern void do_fallocate(int argc, char **argv, int sci_idx, void *infop);
-extern void do_symlink(int argc, char **argv, int sci_idx, void *infop);
-
-extern void do_dump_mmp(int argc, char **argv, int sci_idx, void *infop);
-extern void do_set_mmp_value(int argc, char **argv, int sci_idx, void *infop);
-
-extern void do_freefrag(int argc, char **argv, int sci_idx, void *infop);
-extern void do_filefrag(int argc, char *argv[], int sci_idx, void *infop);
+extern void do_dirty_filesys(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_open_filesys(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_close_filesys(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_lcd(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_init_filesys(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_show_super_stats(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_kill_file(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_rm(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_link(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_undel(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_unlink(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_copy_inode(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_find_free_block(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_find_free_inode(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_stat(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_dump_extents(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_blocks(int argc, ss_argv_t argv, int sci_idx, void *infop);
+
+extern void do_chroot(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_clri(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_freei(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_seti(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_testi(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_freeb(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_setb(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_testb(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_modify_inode(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_list_dir(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_change_working_dir(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_print_working_directory(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_write(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_mknod(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_mkdir(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_rmdir(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_show_debugfs_params(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_expand_dir(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_features(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_bmap(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_imap(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_idump(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_set_current_time(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_supported_features(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_punch(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_fallocate(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_symlink(int argc, ss_argv_t argv, int sci_idx, void *infop);
+
+extern void do_dump_mmp(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_set_mmp_value(int argc, ss_argv_t argv, int sci_idx, void *infop);
+
+extern void do_freefrag(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_filefrag(int argc, ss_argv_t argv, int sci_idx, void *infop);
 
 /* do_journal.c */
 
-extern void do_journal_write(int argc, char *argv[], int sci_idx, void *infop);
-extern void do_journal_open(int argc, char *argv[], int sci_idx, void *infop);
-extern void do_journal_close(int argc, char *argv[], int sci_idx, void *infop);
-extern void do_journal_run(int argc, char *argv[], int sci_idx, void *infop);
+extern void do_journal_write(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_journal_open(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_journal_close(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_journal_run(int argc, ss_argv_t argv, int sci_idx, void *infop);
 
 /* quota.c */
-extern void do_list_quota(int argc, char *argv[], int sci_idx, void *infop);
-extern void do_get_quota(int argc, char *argv[], int sci_idx, void *infop);
+extern void do_list_quota(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_get_quota(int argc, ss_argv_t argv, int sci_idx, void *infop);
 
 /* util.c */
 extern __s64 string_to_time(const char *arg);
@@ -197,13 +197,13 @@ extern void do_byte_hexdump(FILE *fp, unsigned char *buf, size_t bufsize);
 
 /* xattrs.c */
 void dump_inode_attributes(FILE *out, ext2_ino_t ino);
-void do_get_xattr(int argc, char **argv, int sci_idx, void *infop);
-void do_set_xattr(int argc, char **argv, int sci_idx, void *infop);
-void do_rm_xattr(int argc, char **argv, int sci_idx, void *infop);
-void do_list_xattr(int argc, char **argv, int sci_idx, void *infop);
+void do_get_xattr(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void do_set_xattr(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void do_rm_xattr(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void do_list_xattr(int argc, ss_argv_t argv, int sci_idx, void *infop);
 void raw_inode_xattr_dump(FILE *f, unsigned char *buf, unsigned int len);
 void block_xattr_dump(FILE *f, unsigned char *buf, unsigned int len);
 
 /* zap.c */
-extern void do_zap_block(int argc, char **argv, int sci_idx, void *infop);
-extern void do_block_dump(int argc, char **argv, int sci_idx, void *infop);
+extern void do_zap_block(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_block_dump(int argc, ss_argv_t argv, int sci_idx, void *infop);
index 38439c6..116ca84 100644 (file)
@@ -534,7 +534,7 @@ error:
        return err;
 }
 
-void do_journal_write(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_journal_write(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                      void *infop EXT2FS_ATTR((unused)))
 {
        blk64_t *blist = NULL, *rlist = NULL;
@@ -862,7 +862,7 @@ static void update_64bit_flag(journal_t *journal)
        jbd2_set_feature_64bit(journal);
 }
 
-void do_journal_open(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_journal_open(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                     void *infop EXT2FS_ATTR((unused)))
 {
        int opt, enable_csum = 0, csum_ver = 3;
@@ -933,7 +933,7 @@ void do_journal_open(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
 }
 
 void do_journal_close(int argc EXT2FS_ATTR((unused)),
-                     char *argv[] EXT2FS_ATTR((unused)),
+                     ss_argv_t argv EXT2FS_ATTR((unused)),
                      int sci_idx EXT2FS_ATTR((unused)),
                      void *infop EXT2FS_ATTR((unused)))
 {
@@ -945,7 +945,7 @@ void do_journal_close(int argc EXT2FS_ATTR((unused)),
        ext2fs_close_journal(current_fs, &current_journal);
 }
 
-void do_journal_run(int argc EXT2FS_ATTR((unused)), char *argv[],
+void do_journal_run(int argc EXT2FS_ATTR((unused)), ss_argv_t argv,
                    int sci_idx EXT2FS_ATTR((unused)),
                    void *infop EXT2FS_ATTR((unused)))
 {
index 42f5204..4ab7cad 100644 (file)
@@ -144,7 +144,7 @@ static void dump_file(const char *cmdname, ext2_ino_t ino, int fd,
        return;
 }
 
-void do_dump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_dump(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
             void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      inode;
@@ -323,7 +323,7 @@ static int rdump_dirent(struct ext2_dir_entry *dirent,
        return 0;
 }
 
-void do_rdump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_rdump(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
              void *infop EXT2FS_ATTR((unused)))
 {
        struct stat st;
@@ -368,7 +368,7 @@ void do_rdump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
        }
 }
 
-void do_cat(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_cat(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
            void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      inode;
index e4e815e..6ef054d 100644 (file)
@@ -48,7 +48,7 @@ static void dbg_print_extent(char *desc, struct ext2fs_extent *extent)
 
 }
 
-static int common_extent_args_process(int argc, char *argv[], int min_argc,
+static int common_extent_args_process(int argc, ss_argv_t argv, int min_argc,
                                      int max_argc, const char *cmd,
                                      const char *usage, int flags)
 {
@@ -65,7 +65,7 @@ static int common_extent_args_process(int argc, char *argv[], int min_argc,
 
 static char *orig_prompt, *extent_prompt;
 
-void do_extent_open(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_extent_open(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                    void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      inode;
@@ -115,7 +115,7 @@ void do_extent_open(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        return;
 }
 
-void do_extent_close(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_extent_close(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                     void *infop EXT2FS_ATTR((unused)))
 {
        int ret;
@@ -139,7 +139,7 @@ void do_extent_close(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
 }
 
 static void generic_goto_node(const char *my_name, int argc,
-                             char **argv, int op)
+                             ss_argv_t argv, int op)
 {
        struct ext2fs_extent    extent;
        errcode_t               retval;
@@ -161,85 +161,85 @@ static void generic_goto_node(const char *my_name, int argc,
        dbg_print_extent(0, &extent);
 }
 
-void do_current_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_current_node(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                     void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("current_node", argc, argv, EXT2_EXTENT_CURRENT);
 }
 
-void do_root_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_root_node(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                  void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("root_node", argc, argv, EXT2_EXTENT_ROOT);
 }
 
-void do_last_leaf(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_last_leaf(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                  void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("last_leaf", argc, argv, EXT2_EXTENT_LAST_LEAF);
 }
 
-void do_first_sib(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_first_sib(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                  void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("first_sib", argc, argv, EXT2_EXTENT_FIRST_SIB);
 }
 
-void do_last_sib(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_last_sib(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                 void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("next_sib", argc, argv, EXT2_EXTENT_LAST_SIB);
 }
 
-void do_next_sib(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_next_sib(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                 void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("next_sib", argc, argv, EXT2_EXTENT_NEXT_SIB);
 }
 
-void do_prev_sib(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_prev_sib(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                 void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("prev_sib", argc, argv, EXT2_EXTENT_PREV_SIB);
 }
 
-void do_next_leaf(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_next_leaf(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                 void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("next_leaf", argc, argv, EXT2_EXTENT_NEXT_LEAF);
 }
 
-void do_prev_leaf(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_prev_leaf(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                  void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("prev_leaf", argc, argv, EXT2_EXTENT_PREV_LEAF);
 }
 
-void do_next(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_next(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
             void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("next", argc, argv, EXT2_EXTENT_NEXT);
 }
 
-void do_prev(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_prev(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
             void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("prev", argc, argv, EXT2_EXTENT_PREV);
 }
 
-void do_up(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_up(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
           void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("up", argc, argv, EXT2_EXTENT_UP);
 }
 
-void do_down(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_down(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
             void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("down", argc, argv, EXT2_EXTENT_DOWN);
 }
 
-void do_delete_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_delete_node(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                    void *infop EXT2FS_ATTR((unused)))
 {
        struct ext2fs_extent extent;
@@ -262,7 +262,7 @@ void do_delete_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        dbg_print_extent(0, &extent);
 }
 
-void do_replace_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_replace_node(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                     void *infop EXT2FS_ATTR((unused)))
 {
        const char      *usage = "[--uninit] <lblk> <len> <pblk>";
@@ -307,7 +307,7 @@ void do_replace_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        generic_goto_node(NULL, argc, argv, EXT2_EXTENT_CURRENT);
 }
 
-void do_split_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_split_node(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                   void *infop EXT2FS_ATTR((unused)))
 {
        errcode_t       retval;
@@ -324,7 +324,7 @@ void do_split_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        generic_goto_node(NULL, argc, argv, EXT2_EXTENT_CURRENT);
 }
 
-void do_insert_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_insert_node(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                    void *infop EXT2FS_ATTR((unused)))
 {
        const char      *usage = "[--after] [--uninit] <lblk> <len> <pblk>";
@@ -383,7 +383,7 @@ void do_insert_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        generic_goto_node(NULL, argc, argv, EXT2_EXTENT_CURRENT);
 }
 
-void do_set_bmap(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_set_bmap(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                 void *infop EXT2FS_ATTR((unused)))
 {
        const char      *usage = "[--uninit] <lblk> <pblk>";
@@ -432,7 +432,7 @@ void do_set_bmap(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
        dbg_print_extent(0, &extent);
 }
 
-void do_print_all(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_print_all(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                  void *infop EXT2FS_ATTR((unused)))
 {
        const char      *usage = "[--leaf-only|--reverse|--reverse-leaf]";
@@ -484,7 +484,7 @@ void do_print_all(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
        }
 }
 
-void do_fix_parents(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_fix_parents(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                    void *infop EXT2FS_ATTR((unused)))
 {
        errcode_t               retval;
@@ -500,7 +500,7 @@ void do_fix_parents(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
        }
 }
 
-void do_info(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_info(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
             void *infop EXT2FS_ATTR((unused)))
 {
        struct ext2fs_extent    extent;
@@ -535,7 +535,7 @@ void do_info(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
               info.max_uninit_len);
 }
 
-void do_goto_block(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_goto_block(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                   void *infop EXT2FS_ATTR((unused)))
 {
        errcode_t               retval;
index 31c1440..9bda65d 100644 (file)
@@ -264,7 +264,7 @@ static void dir_iterate(ext2_ino_t ino, struct filefrag_struct *fs)
        }
 }
 
-void do_filefrag(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_filefrag(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                 void *infop EXT2FS_ATTR((unused)))
 {
        struct filefrag_struct fs;
index 73a68e9..a100815 100644 (file)
@@ -245,7 +245,7 @@ errout:
 
 
 
-void do_htree_dump(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_htree_dump(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                   void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      ino;
@@ -329,7 +329,7 @@ errout:
 /*
  * This function prints the hash of a given file.
  */
-void do_dx_hash(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_dx_hash(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                void *infop EXT2FS_ATTR((unused)))
 {
        ext2_dirhash_t hash, minor_hash;
@@ -425,7 +425,7 @@ static int search_dir_block(ext2_filsys fs, blk64_t *blocknr,
                            e2_blkcnt_t blockcnt, blk64_t ref_blk,
                            int ref_offset, void *priv_data);
 
-void do_dirsearch(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_dirsearch(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                  void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      inode;
index ed6e950..175d12c 100644 (file)
@@ -53,7 +53,7 @@ static int icheck_proc(ext2_filsys fs EXT2FS_ATTR((unused)),
        return 0;
 }
 
-void do_icheck(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_icheck(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
               void *infop EXT2FS_ATTR((unused)))
 {
        struct block_walk_struct bw;
index c4d4664..324ed42 100644 (file)
@@ -86,7 +86,7 @@ static void do_hexdump (FILE *, char *, int);
                wrapped_flag = true;                                    \
        }
 
-void do_logdump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_logdump(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                    void *infop EXT2FS_ATTR((unused)))
 {
        int             c;
index 525f084..613ad73 100644 (file)
@@ -179,7 +179,7 @@ static int list_dir_proc(ext2_ino_t dir EXT2FS_ATTR((unused)),
        return 0;
 }
 
-void do_list_dir(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_list_dir(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                 void *infop EXT2FS_ATTR((unused)))
 {
        struct ext2_inode inode;
index 52c7419..a09fa83 100644 (file)
@@ -71,7 +71,7 @@ static int lsdel_proc(ext2_filsys fs,
        return 0;
 }
 
-void do_lsdel(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_lsdel(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
              void *infop EXT2FS_ATTR((unused)))
 {
        struct lsdel_struct     lsd;
index 963b3a1..1410e7c 100644 (file)
@@ -90,7 +90,7 @@ static int ncheck_proc(struct ext2_dir_entry *dirent,
        return 0;
 }
 
-void do_ncheck(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_ncheck(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
               void *infop EXT2FS_ATTR((unused)))
 {
        struct inode_walk_struct iw;
index 1da1e03..7d8e82f 100644 (file)
@@ -102,7 +102,7 @@ static int list_quota_callback(struct dquot *dq,
        return 0;
 }
 
-void do_list_quota(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_list_quota(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                   void *infop EXT2FS_ATTR((unused)))
 {
        errcode_t       retval;
@@ -132,7 +132,7 @@ void do_list_quota(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        }
 }
 
-void do_get_quota(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_get_quota(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                  void *infop EXT2FS_ATTR((unused)))
 {
        int             err, type;
index 4980a63..bfe8a13 100644 (file)
@@ -844,7 +844,7 @@ static void print_possible_fields(struct field_set_info *fields)
 }
 
 
-void do_set_super(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_set_super(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                  void *infop EXT2FS_ATTR((unused)))
 {
        const char *usage = "<field> <value>\n"
@@ -872,7 +872,7 @@ void do_set_super(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        }
 }
 
-void do_set_inode(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_set_inode(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                  void *infop EXT2FS_ATTR((unused)))
 {
        const char *usage = "<inode> <field> <value>\n"
@@ -914,7 +914,7 @@ void do_set_inode(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        }
 }
 
-void do_set_block_group_descriptor(int argc, char *argv[],
+void do_set_block_group_descriptor(int argc, ss_argv_t argv,
                                   int sci_idx EXT2FS_ATTR((unused)),
                                   void *infop EXT2FS_ATTR((unused)))
 {
@@ -994,7 +994,7 @@ static errcode_t parse_mmp_clear(struct field_set_info *info,
 }
 
 #ifdef CONFIG_MMP
-void do_set_mmp_value(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_set_mmp_value(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                      void *infop EXT2FS_ATTR((unused)))
 {
        const char *usage = "<field> <value>\n"
@@ -1054,7 +1054,7 @@ void do_set_mmp_value(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
 }
 #else
 void do_set_mmp_value(int argc EXT2FS_ATTR((unused)),
-                     char *argv[] EXT2FS_ATTR((unused)),
+                     ss_argv_t argv EXT2FS_ATTR((unused)),
                      int sci_idx EXT2FS_ATTR((unused)),
                      void *infop EXT2FS_ATTR((unused)))
 {
index 08191a0..3d97cc4 100644 (file)
@@ -25,7 +25,7 @@ extern char *optarg;
 
 #include "debugfs.h"
 
-void do_dump_unused(int argc EXT2FS_ATTR((unused)), char **argv,
+void do_dump_unused(int argc EXT2FS_ATTR((unused)), ss_argv_t argv,
                    int sci_idx EXT2FS_ATTR((unused)),
                    void *infop EXT2FS_ATTR((unused)))
 {
index d3ef63c..00ab6f6 100644 (file)
@@ -347,7 +347,7 @@ int strtoblk(const char *cmd, const char *str, const char *errmsg,
  * This is a common helper function used by the command processing
  * routines
  */
-int common_args_process(int argc, char *argv[], int min_argc, int max_argc,
+int common_args_process(int argc, ss_argv_t argv, int min_argc, int max_argc,
                        const char *cmd, const char *usage, int flags)
 {
        if (argc < min_argc || argc > max_argc) {
@@ -373,7 +373,7 @@ int common_args_process(int argc, char *argv[], int min_argc, int max_argc,
  * do_testi, etc.  Basically, any command which takes a single
  * argument which is a file/inode number specifier.
  */
-int common_inode_args_process(int argc, char *argv[],
+int common_inode_args_process(int argc, ss_argv_t argv,
                              ext2_ino_t *inode, int flags)
 {
        if (common_args_process(argc, argv, 2, 2, argv[0], "<file>", flags))
@@ -388,7 +388,7 @@ int common_inode_args_process(int argc, char *argv[],
 /*
  * This is a helper function used by do_freeb, do_setb, and do_testb
  */
-int common_block_args_process(int argc, char *argv[],
+int common_block_args_process(int argc, ss_argv_t argv,
                              blk64_t *block, blk64_t *count)
 {
        int     err;
index cd042bc..b518941 100644 (file)
@@ -117,7 +117,7 @@ out:
        err = ext2fs_xattrs_close(&h);
 }
 
-void do_list_xattr(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_list_xattr(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                   void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t ino;
@@ -138,7 +138,7 @@ void do_list_xattr(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
        dump_inode_attributes(stdout, ino);
 }
 
-void do_get_xattr(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_get_xattr(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                  void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t ino;
@@ -236,7 +236,7 @@ out2:
                fclose(fp);
 }
 
-void do_set_xattr(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_set_xattr(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                  void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t ino;
@@ -320,7 +320,7 @@ out2:
        }
 }
 
-void do_rm_xattr(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_rm_xattr(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                 void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t ino;
index f862482..8d1e842 100644 (file)
@@ -25,7 +25,7 @@ extern char *optarg;
 
 #include "debugfs.h"
 
-void do_zap_block(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_zap_block(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                    void *infop EXT2FS_ATTR((unused)))
 {
        unsigned long   pattern = 0;
@@ -171,7 +171,7 @@ errout:
        return;
 }
 
-void do_block_dump(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_block_dump(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                    void *infop EXT2FS_ATTR((unused)))
 {
        unsigned char   *buf;
index cb3c70d..eaf2c59 100644 (file)
@@ -140,7 +140,7 @@ unsigned long parse_ulong(const char *str, const char *cmd,
 }
 
 
-int check_fs_open(char *name)
+int check_fs_open(const char *name)
 {
        if (!test_fs) {
                com_err(name, 0, "Filesystem not open");
@@ -190,7 +190,8 @@ errout:
        ext2fs_close_free(&test_fs);
 }
 
-void setup_cmd(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void setup_cmd(int argc, ss_argv_t argv,
+              int sci_idx EXT2FS_ATTR((unused)),
               void *infop EXT2FS_ATTR((unused)))
 {
        int             c, err;
@@ -271,7 +272,7 @@ void dump_bitmap(ext2fs_generic_bitmap bmap, unsigned int start, unsigned num)
        free(buf);
 }
 
-void dump_inode_bitmap_cmd(int argc, char **argv,
+void dump_inode_bitmap_cmd(int argc, ss_argv_t argv,
                           int sci_idx EXT2FS_ATTR((unused)),
                           void *infop EXT2FS_ATTR((unused)))
 {
@@ -282,7 +283,7 @@ void dump_inode_bitmap_cmd(int argc, char **argv,
        dump_bitmap(test_fs->inode_map, 1, test_fs->super->s_inodes_count);
 }
        
-void dump_block_bitmap_cmd(int argc, char **argv,
+void dump_block_bitmap_cmd(int argc, ss_argv_t argv,
                           int sci_idx EXT2FS_ATTR((unused)),
                           void *infop EXT2FS_ATTR((unused)))
 {
@@ -294,7 +295,8 @@ void dump_block_bitmap_cmd(int argc, char **argv,
                    test_fs->super->s_blocks_count);
 }
        
-void do_setb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_setb(int argc, ss_argv_t argv,
+            int sci_idx EXT2FS_ATTR((unused)),
             void *infop EXT2FS_ATTR((unused)))
 {
        unsigned int block, num;
@@ -333,7 +335,8 @@ void do_setb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
                        test_result, op_result);
 }
 
-void do_clearb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_clearb(int argc, ss_argv_t argv,
+              int sci_idx EXT2FS_ATTR((unused)),
               void *infop EXT2FS_ATTR((unused)))
 {
        unsigned int block, num;
@@ -372,7 +375,8 @@ void do_clearb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
                        test_result, op_result);
 }
 
-void do_testb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_testb(int argc, ss_argv_t argv,
+             int sci_idx EXT2FS_ATTR((unused)),
              void *infop EXT2FS_ATTR((unused)))
 {
        unsigned int block, num;
@@ -408,7 +412,8 @@ void do_testb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        printf("Block %u is %s\n", block, test_result ? "set" : "clear");
 }
 
-void do_ffzb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_ffzb(int argc, ss_argv_t argv,
+            int sci_idx EXT2FS_ATTR((unused)),
             void *infop EXT2FS_ATTR((unused)))
 {
        unsigned int start, end;
@@ -442,7 +447,8 @@ void do_ffzb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        printf("First unmarked block is %llu\n", (unsigned long long) out);
 }
 
-void do_ffsb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_ffsb(int argc, ss_argv_t argv,
+            int sci_idx EXT2FS_ATTR((unused)),
             void *infop EXT2FS_ATTR((unused)))
 {
        unsigned int start, end;
@@ -477,7 +483,8 @@ void do_ffsb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
 }
 
 
-void do_zerob(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_zerob(int argc, ss_argv_t argv,
+             int sci_idx EXT2FS_ATTR((unused)),
              void *infop EXT2FS_ATTR((unused)))
 {
        if (check_fs_open(argv[0]))
@@ -487,7 +494,8 @@ void do_zerob(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        ext2fs_clear_block_bitmap(test_fs->block_map);
 }
 
-void do_seti(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_seti(int argc, ss_argv_t argv,
+            int sci_idx EXT2FS_ATTR((unused)),
             void *infop EXT2FS_ATTR((unused)))
 {
        unsigned int inode;
@@ -517,7 +525,8 @@ void do_seti(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        }
 }
 
-void do_cleari(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_cleari(int argc, ss_argv_t argv,
+              int sci_idx EXT2FS_ATTR((unused)),
               void *infop EXT2FS_ATTR((unused)))
 {
        unsigned int inode;
@@ -547,7 +556,8 @@ void do_cleari(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        }
 }
 
-void do_testi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_testi(int argc, ss_argv_t argv,
+             int sci_idx EXT2FS_ATTR((unused)),
              void *infop EXT2FS_ATTR((unused)))
 {
        unsigned int inode;
@@ -570,7 +580,8 @@ void do_testi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        printf("Inode %u is %s\n", inode, test_result ? "set" : "clear");
 }
 
-void do_ffzi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_ffzi(int argc, ss_argv_t argv,
+            int sci_idx EXT2FS_ATTR((unused)),
             void *infop EXT2FS_ATTR((unused)))
 {
        unsigned int start, end;
@@ -604,7 +615,8 @@ void do_ffzi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        printf("First unmarked inode is %u\n", out);
 }
 
-void do_ffsi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_ffsi(int argc, ss_argv_t argv,
+            int sci_idx EXT2FS_ATTR((unused)),
             void *infop EXT2FS_ATTR((unused)))
 {
        unsigned int start, end;
@@ -638,7 +650,8 @@ void do_ffsi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
        printf("First marked inode is %u\n", out);
 }
 
-void do_zeroi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_zeroi(int argc, ss_argv_t argv,
+             int sci_idx EXT2FS_ATTR((unused)),
              void *infop EXT2FS_ATTR((unused)))
 {
        if (check_fs_open(argv[0]))
index d092134..1f43990 100644 (file)
@@ -100,7 +100,7 @@ static int check_request_table(register ss_request_table *rqtbl, int argc,
        for (name = request->command_names; *name; name++)
            if (!strcmp(*name, string)) {
                info->current_request = request->command_names[0];
-               (request->function)(argc, (const char *const *) argv,
+               (request->function)(argc, (ss_argv_t) argv,
                                    sci_idx,info->info_ptr);
                info->current_request = (char *)NULL;
                return(0);
index 54c78f2..d3319b6 100644 (file)
@@ -34,7 +34,7 @@
 #endif
 #include "ss_internal.h"
 
-void ss_help(int argc, char const * const *argv, int sci_idx, pointer info_ptr)
+void ss_help(int argc, ss_argv_t argv, int sci_idx, pointer info_ptr)
 {
     char *buffer;
     char const *request_name;
index 89e37bb..408d3ac 100644 (file)
@@ -22,7 +22,7 @@
 typedef void sigret_t;
 
 void ss_list_requests(int argc __SS_ATTR((unused)),
-                     const char * const *argv __SS_ATTR((unused)),
+                     ss_argv_t argv __SS_ATTR((unused)),
                      int sci_idx, void *infop __SS_ATTR((unused)))
 {
     ss_request_entry *entry;
index 9578c3e..df1311d 100644 (file)
@@ -135,7 +135,7 @@ void ss_abort_subsystem(int sci_idx, int code)
 }
 
 void ss_quit(int argc __SS_ATTR((unused)),
-            const char * const *argv __SS_ATTR((unused)),
+            ss_argv_t argv __SS_ATTR((unused)),
             int sci_idx, pointer infop __SS_ATTR((unused)))
 {
     ss_abort_subsystem(sci_idx, 0);
index 33ce5d2..6a8d00b 100644 (file)
@@ -24,7 +24,7 @@
  * ss_self_identify -- assigned by default to the "." request
  */
 void ss_self_identify(int argc __SS_ATTR((unused)),
-                     const char * const *argv __SS_ATTR((unused)),
+                     ss_argv_t argv __SS_ATTR((unused)),
                      int sci_idx, void *infop __SS_ATTR((unused)))
 {
      register ss_data *info = ss_info(sci_idx);
@@ -36,7 +36,7 @@ void ss_self_identify(int argc __SS_ATTR((unused)),
  * ss_subsystem_name -- print name of subsystem
  */
 void ss_subsystem_name(int argc __SS_ATTR((unused)),
-                      const char * const *argv __SS_ATTR((unused)),
+                      ss_argv_t argv __SS_ATTR((unused)),
                       int sci_idx,
                       void *infop __SS_ATTR((unused)))
 {
@@ -47,7 +47,7 @@ void ss_subsystem_name(int argc __SS_ATTR((unused)),
  * ss_subsystem_version -- print version of subsystem
  */
 void ss_subsystem_version(int argc __SS_ATTR((unused)),
-                         const char * const *argv __SS_ATTR((unused)),
+                         ss_argv_t argv __SS_ATTR((unused)),
                          int sci_idx,
                          void *infop __SS_ATTR((unused)))
 {
@@ -59,7 +59,7 @@ void ss_subsystem_version(int argc __SS_ATTR((unused)),
  * set up as (dont_list,dont_summarize))
  */
 void ss_unimplemented(int argc __SS_ATTR((unused)),
-                     const char * const *argv __SS_ATTR((unused)),
+                     ss_argv_t argv __SS_ATTR((unused)),
                      int sci_idx, void *infop __SS_ATTR((unused)))
 {
      ss_perror(sci_idx, SS_ET_UNIMPLEMENTED, "");
index 7333ffc..e53da50 100644 (file)
@@ -26,7 +26,8 @@
 #include <ss/ss_err.h>
 
 #define __SS_CONST const
-#define __SS_PROTO (int, const char * const *, int, void *)
+typedef char * const *ss_argv_t;
+#define __SS_PROTO (int, ss_argv_t, int, void *)
 
 #ifdef __GNUC__
 #define __SS_ATTR(x) __attribute__(x)
@@ -79,14 +80,11 @@ int ss_execute_line(int, char *);
 void ss_add_request_table(int, ss_request_table *, int, int *);
 void ss_delete_request_table(int, ss_request_table *, int *);
 void ss_abort_subsystem(int sci_idx, int code);
-void ss_quit(int argc, const char * const *argv, int sci_idx, void *infop);
-void ss_self_identify(int argc, const char * const *argv, int sci_idx, void *infop);
-void ss_subsystem_name(int argc, const char * const *argv,
-                      int sci_idx, void *infop);
-void ss_subsystem_version(int argc, const char * const *argv,
-                         int sci_idx, void *infop);
-void ss_unimplemented(int argc, const char * const *argv,
-                     int sci_idx, void *infop);
+void ss_quit(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void ss_self_identify(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void ss_subsystem_name(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void ss_subsystem_version(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void ss_unimplemented(int argc, ss_argv_t argv, int sci_idx, void *infop);
 void ss_set_prompt(int sci_idx, char *new_prompt);
 char *ss_get_prompt(int sci_idx);
 void ss_get_readline(int sci_idx);
index 7b1d23b..e2a8d75 100644 (file)
@@ -86,7 +86,7 @@ int ss_execute_line(int sci_idx, char *line_ptr);
 char **ss_parse(int sci_idx, char *line_ptr, int *argc_ptr);
 ss_abbrev_info *ss_abbrev_initialize(char *, int *);
 void ss_page_stdin(void) __SS_ATTR((noreturn));
-void ss_list_requests(int, char const * const *, int, pointer);
+void ss_list_requests(int argc, ss_argv_t argv, int sci_idex, void *infop);
 int ss_execute_command(int sci_idx, char *argv[]);
 int ss_pager_create(void);
 char *ss_safe_getenv(const char *arg);
index 53ca99f..a382673 100644 (file)
@@ -136,9 +136,9 @@ int main(int argc, char **argv)
 }
 
 
-void test_cmd (argc, argv)
-    int argc;
-    char **argv;
+void test_cmd(int argc, const char * const *argv,
+             int sci_idx __SS_ATTR((unused)),
+             void *infop __SS_ATTR((unused)))
 {
     printf("Hello, world!\n");
     printf("Args: ");
index 04f155b..63a3d43 100644 (file)
@@ -377,7 +377,7 @@ static void open_device(char *device_name, ext2_filsys *fs)
 #ifdef DEBUGFS
 #include "debugfs.h"
 
-void do_freefrag(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_freefrag(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                 void *infop EXT2FS_ATTR((unused)))
 #else
 int main(int argc, char *argv[])
index e1325c6..47d7adf 100644 (file)
@@ -20,7 +20,8 @@ TEST_REL_OBJS=        test_rel.o test_rel_cmds.o
 
 TEST_ICOUNT_OBJS=      test_icount.o test_icount_cmds.o
 
-SRCS=  $(srcdir)/test_rel.c 
+SRCS=  $(srcdir)/test_icount.c \
+       $(srcdir)/test_rel.c
 
 LIBS= $(LIBEXT2FS) $(LIBSS) $(LIBCOM_ERR) $(SYSLIBS)
 DEPLIBS= $(LIBEXT2FS) $(DEPLIBSS) $(DEPLIBCOM_ERR)
index 6ebb100..c1005c6 100644 (file)
@@ -61,7 +61,7 @@ static int parse_inode(const char *request, const char *desc,
        return 0;
 }
 
-void do_create_icount(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_create_icount(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                      void *infop EXT2FS_ATTR((unused)))
 {
        errcode_t       retval;
@@ -92,7 +92,7 @@ void do_create_icount(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
        }
 }
 
-void do_free_icount(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_free_icount(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                    void *infop EXT2FS_ATTR((unused)))
 {
        if (argc != 1) {
@@ -106,7 +106,7 @@ void do_free_icount(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
        test_icount = 0;
 }
 
-void do_fetch(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_fetch(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                    void *infop EXT2FS_ATTR((unused)))
 {
        errcode_t       retval;
@@ -129,7 +129,7 @@ void do_fetch(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
        printf("Count is %u\n", count);
 }
 
-void do_increment(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_increment(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                    void *infop EXT2FS_ATTR((unused)))
 {
        errcode_t       retval;
@@ -153,7 +153,7 @@ void do_increment(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
        printf("Count is now %u\n", count);
 }
 
-void do_decrement(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_decrement(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                    void *infop EXT2FS_ATTR((unused)))
 {
        errcode_t       retval;
@@ -177,7 +177,7 @@ void do_decrement(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
        printf("Count is now %u\n", count);
 }
 
-void do_store(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_store(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                    void *infop EXT2FS_ATTR((unused)))
 {
        errcode_t       retval;
@@ -206,7 +206,7 @@ void do_store(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
        }
 }
 
-void do_dump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_dump(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                    void *infop EXT2FS_ATTR((unused)))
 {
        errcode_t       retval;
@@ -231,7 +231,7 @@ void do_dump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
        }
 }
 
-void do_validate(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_validate(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                    void *infop EXT2FS_ATTR((unused)))
 {
        errcode_t       retval;
@@ -250,7 +250,7 @@ void do_validate(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
        printf("Icount structure successfully validated\n");
 }
 
-void do_get_size(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_get_size(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
                    void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      size;
index 29d56ab..b086547 100644 (file)
@@ -1,10 +1,21 @@
-void do_create_icount(int argc, char **argv, int sci_idx, void *infop);
-void do_free_icount(int argc, char **argv, int sci_idx, void *infop);
-void do_fetch(int argc, char **argv, int sci_idx, void *infop);
-void do_increment(int argc, char **argv, int sci_idx, void *infop);
-void do_decrement(int argc, char **argv, int sci_idx, void *infop);
-void do_store(int argc, char **argv, int sci_idx, void *infop);
-void do_get_size(int argc, char **argv, int sci_idx, void *infop);
-void do_dump(int argc, char **argv, int sci_idx, void *infop);
-void do_validate(int argc, char **argv, int sci_idx, void *infop);
+/*
+ * test_icount.h
+ *
+ * Copyright (C) 1997 Theodore Ts'o.
+ *
+ * %Begin-Header%
+ * This file may be redistributed under the terms of the GNU Public
+ * License.
+ * %End-Header%
+ */
+
+void do_create_icount(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void do_free_icount(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void do_fetch(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void do_increment(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void do_decrement(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void do_store(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void do_get_size(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void do_dump(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void do_validate(int argc, ss_argv_t argv, int sci_idx, void *infop);
 
index 8f7280c..6666b73 100644 (file)
@@ -141,7 +141,7 @@ static void display_irel_entry(ext2_ino_t old,
 /*
  * These are the actual command table procedures
  */
-void do_brel_ma_create(int argc, char **argv)
+void do_brel_ma_create(int argc, ss_argv_t argv)
 {
        const char *usage = "Usage: %s name max_blocks\n";
        errcode_t       retval;
@@ -161,7 +161,7 @@ void do_brel_ma_create(int argc, char **argv)
        return;
 }
 
-void do_brel_free(int argc, char **argv)
+void do_brel_free(int argc, ss_argv_t argv)
 {
        if (check_brel(argv[0]))
                return;
@@ -170,7 +170,7 @@ void do_brel_free(int argc, char **argv)
        return;
 }
 
-void do_brel_put(int argc, char **argv)
+void do_brel_put(int argc, ss_argv_t argv)
 {
        const char *usage = "usage: %s old_block new_block [owner] [offset]";
        errcode_t retval;
@@ -211,7 +211,7 @@ void do_brel_put(int argc, char **argv)
        return;
 }
 
-void do_brel_get(int argc, char **argv)
+void do_brel_get(int argc, ss_argv_t argv)
 {
        const char *usage = "%s block";
        errcode_t retval;
@@ -235,7 +235,7 @@ void do_brel_get(int argc, char **argv)
        return;
 }
 
-void do_brel_start_iter(int argc, char **argv)
+void do_brel_start_iter(int argc, ss_argv_t argv)
 {
        errcode_t retval;
 
@@ -250,7 +250,7 @@ void do_brel_start_iter(int argc, char **argv)
        return;
 }
 
-void do_brel_next(int argc, char **argv)
+void do_brel_next(int argc, ss_argv_t argv)
 {
        errcode_t retval;
        struct ext2_block_relocate_entry ent;
@@ -272,7 +272,7 @@ void do_brel_next(int argc, char **argv)
        return;
 }
 
-void do_brel_dump(int argc, char **argv)
+void do_brel_dump(int argc, ss_argv_t argv)
 {
        errcode_t retval;
        struct ext2_block_relocate_entry ent;
@@ -301,7 +301,7 @@ void do_brel_dump(int argc, char **argv)
        return;
 }
 
-void do_brel_move(int argc, char **argv)
+void do_brel_move(int argc, ss_argv_t argv)
 {
        const char *usage = "%s old_block new_block";
        errcode_t retval;
@@ -326,7 +326,7 @@ void do_brel_move(int argc, char **argv)
        return;
 }
 
-void do_brel_delete(int argc, char **argv)
+void do_brel_delete(int argc, ss_argv_t argv)
 {
        const char *usage = "%s block";
        errcode_t retval;
@@ -348,7 +348,7 @@ void do_brel_delete(int argc, char **argv)
        }
 }
 
-void do_irel_ma_create(int argc, char **argv)
+void do_irel_ma_create(int argc, ss_argv_t argv)
 {
        const char      *usage = "Usage: %s name max_inode\n";
        errcode_t       retval;
@@ -368,7 +368,7 @@ void do_irel_ma_create(int argc, char **argv)
        return;
 }
 
-void do_irel_free(int argc, char **argv)
+void do_irel_free(int argc, ss_argv_t argv)
 {
        if (check_irel(argv[0]))
                return;
@@ -378,7 +378,7 @@ void do_irel_free(int argc, char **argv)
        return;
 }
 
-void do_irel_put(int argc, char **argv)
+void do_irel_put(int argc, ss_argv_t argv)
 {
        const char      *usage = "%s old new max_refs";
        errcode_t       retval;
@@ -414,7 +414,7 @@ void do_irel_put(int argc, char **argv)
        return;
 }
 
-void do_irel_get(int argc, char **argv)
+void do_irel_get(int argc, ss_argv_t argv)
 {
        const char      *usage = "%s inode";
        errcode_t       retval;
@@ -440,7 +440,7 @@ void do_irel_get(int argc, char **argv)
        return;
 }
 
-void do_irel_get_by_orig(int argc, char **argv)
+void do_irel_get_by_orig(int argc, ss_argv_t argv)
 {
        const char      *usage = "%s orig_inode";
        errcode_t       retval;
@@ -466,7 +466,7 @@ void do_irel_get_by_orig(int argc, char **argv)
        return;
 }
 
-void do_irel_start_iter(int argc, char **argv)
+void do_irel_start_iter(int argc, ss_argv_t argv)
 {
        errcode_t retval;
 
@@ -481,7 +481,7 @@ void do_irel_start_iter(int argc, char **argv)
        return;
 }
 
-void do_irel_next(int argc, char **argv)
+void do_irel_next(int argc, ss_argv_t argv)
 {
        errcode_t       retval;
        ext2_ino_t      old;
@@ -503,7 +503,7 @@ void do_irel_next(int argc, char **argv)
        return;
 }
 
-void do_irel_dump(int argc, char **argv)
+void do_irel_dump(int argc, ss_argv_t argv)
 {
        errcode_t       retval;
        ext2_ino_t      ino;
@@ -532,7 +532,7 @@ void do_irel_dump(int argc, char **argv)
        return;
 }
 
-void do_irel_add_ref(int argc, char **argv)
+void do_irel_add_ref(int argc, ss_argv_t argv)
 {
        const char      *usage = "%s inode block offset";
        errcode_t       retval;
@@ -569,7 +569,7 @@ void do_irel_add_ref(int argc, char **argv)
        return;
 }
 
-void do_irel_start_iter_ref(int argc, char **argv)
+void do_irel_start_iter_ref(int argc, ss_argv_t argv)
 {
        const char      *usage = "%s inode";
        errcode_t       retval;
@@ -593,7 +593,7 @@ void do_irel_start_iter_ref(int argc, char **argv)
        return;
 }
 
-void do_irel_next_ref(int argc, char **argv)
+void do_irel_next_ref(int argc, ss_argv_t argv)
 {
        struct ext2_inode_reference ref;
        errcode_t retval;
@@ -610,7 +610,7 @@ void do_irel_next_ref(int argc, char **argv)
        return;
 }
 
-void do_irel_move(int argc, char **argv)
+void do_irel_move(int argc, ss_argv_t argv)
 {
        const char      *usage = "%s old new";
        errcode_t       retval;
@@ -636,7 +636,7 @@ void do_irel_move(int argc, char **argv)
        return;
 }
 
-void do_irel_delete(int argc, char **argv)
+void do_irel_delete(int argc, ss_argv_t argv)
 {
        const char      *usage = "%s inode";
        errcode_t       retval;
index 47c4d09..62267ba 100644 (file)
 
 
 
-void do_brel_ma_create(int argc, char **argv);
-void do_brel_free(int argc, char **argv);
-void do_brel_put(int argc, char **argv);
-void do_brel_get(int argc, char **argv);
-void do_brel_start_iter(int argc, char **argv);
-void do_brel_next(int argc, char **argv);
-void do_brel_dump(int argc, char **argv);
-void do_brel_move(int argc, char **argv);
-void do_brel_delete(int argc, char **argv);
-void do_irel_ma_create(int argc, char **argv);
-void do_irel_free(int argc, char **argv);
-void do_irel_put(int argc, char **argv);
-void do_irel_get(int argc, char **argv);
-void do_irel_get_by_orig(int argc, char **argv);
-void do_irel_start_iter(int argc, char **argv);
-void do_irel_next(int argc, char **argv);
-void do_irel_dump(int argc, char **argv);
-void do_irel_add_ref(int argc, char **argv);
-void do_irel_start_iter_ref(int argc, char **argv);
-void do_irel_next_ref(int argc, char **argv);
-void do_irel_move(int argc, char **argv);
-void do_irel_delete(int argc, char **argv);
+void do_brel_ma_create(int argc, ss_argv_t argv);
+void do_brel_free(int argc, ss_argv_t argv);
+void do_brel_put(int argc, ss_argv_t argv);
+void do_brel_get(int argc, ss_argv_t argv);
+void do_brel_start_iter(int argc, ss_argv_t argv);
+void do_brel_next(int argc, ss_argv_t argv);
+void do_brel_dump(int argc, ss_argv_t argv);
+void do_brel_move(int argc, ss_argv_t argv);
+void do_brel_delete(int argc, ss_argv_t argv);
+void do_irel_ma_create(int argc, ss_argv_t argv);
+void do_irel_free(int argc, ss_argv_t argv);
+void do_irel_put(int argc, ss_argv_t argv);
+void do_irel_get(int argc, ss_argv_t argv);
+void do_irel_get_by_orig(int argc, ss_argv_t argv);
+void do_irel_start_iter(int argc, ss_argv_t argv);
+void do_irel_next(int argc, ss_argv_t argv);
+void do_irel_dump(int argc, ss_argv_t argv);
+void do_irel_add_ref(int argc, ss_argv_t argv);
+void do_irel_start_iter_ref(int argc, ss_argv_t argv);
+void do_irel_next_ref(int argc, ss_argv_t argv);
+void do_irel_move(int argc, ss_argv_t argv);
+void do_irel_delete(int argc, ss_argv_t argv);