e2fsprogs/debugfs/debugfs.h
Robert Yang 9aa3aa8dae debugfs: use the functions in misc/create_inode.c
* Use the functions in misc/create_inode.c, and remove the duplicated
  code.

* The CREATE_INODE_DEPS in the debugfs/Makefile.in is used for recording
  create_inode.o's depends which is from misc/Makefile.in, we have to
  recompile create_inode.o because we need it to print more messages when
  it is used by debugfs, just like we recompile e2freefrag.o, but it seems
  that the e2freefrag.o's depends in debugfs/Makefile.in is incorrect, it
  would not rebuild when its depends (e.g.: lib/config.h) is changed,
  which would cause unexpected errors. Make duplicated code in
  debugfs/Makefile.in and misc/Makefile.in is not a good idea, maybe we'd
  better define CREATE_INODE_DEPS in the top Makefile, I'd like to send
  another patch and fix the e2freefrag if you are fine with it.

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Reviewed-by: Darren Hart <dvhart@linux.intel.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2014-03-06 11:00:25 -05:00

181 lines
6.5 KiB
C

/*
* debugfs.h --- header file for the debugfs program
*/
#include "ss/ss.h"
#include "ext2fs/ext2_fs.h"
#include "ext2fs/ext2fs.h"
#include "../misc/create_inode.h"
#ifdef __STDC__
#define NOARGS void
#else
#define NOARGS
#define const
#endif
/*
* Flags used by the common argument processing functions
*/
#define CHECK_FS_RW 0x0001
#define CHECK_FS_BITMAPS 0x0002
#define CHECK_FS_NOTOPEN 0x0004
extern ext2_filsys current_fs;
extern ext2_ino_t root, cwd;
extern int sci_idx;
extern ss_request_table debug_cmds, extent_cmds;
extern void reset_getopt(void);
extern FILE *open_pager(void);
extern void close_pager(FILE *stream);
extern int check_fs_open(char *name);
extern int check_fs_not_open(char *name);
extern int check_fs_read_write(char *name);
extern int check_fs_bitmaps(char *name);
extern ext2_ino_t string_to_inode(char *str);
extern char *time_to_string(__u32);
extern time_t string_to_time(const char *);
extern unsigned long parse_ulong(const char *str, const char *cmd,
const char *descr, int *err);
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,
int max_argc, const char *cmd,
const char *usage, int flags);
extern int common_inode_args_process(int argc, char *argv[],
ext2_ino_t *inode, int flags);
extern int common_block_args_process(int argc, char *argv[],
blk64_t *block, blk64_t *count);
extern int debugfs_read_inode(ext2_ino_t ino, struct ext2_inode * inode,
const char *cmd);
extern int debugfs_read_inode_full(ext2_ino_t ino, struct ext2_inode * inode,
const char *cmd, int bufsize);
extern int debugfs_write_inode(ext2_ino_t ino, struct ext2_inode * inode,
const char *cmd);
extern int debugfs_write_inode_full(ext2_ino_t ino, struct ext2_inode * inode,
const char *cmd, int bufsize);
extern int debugfs_write_new_inode(ext2_ino_t ino, struct ext2_inode * inode,
const char *cmd);
extern int ext2_file_type(unsigned int mode);
/* ss command functions */
/* dump.c */
extern void do_dump(int argc, char **argv);
extern void do_cat(int argc, char **argv);
extern void do_rdump(int argc, char **argv);
/* extent_inode.c */
extern void do_extent_open(int argc, char **argv);
extern void do_extent_close(int argc, char **argv);
extern void do_current_node(int argc, char **argv);
extern void do_root_node(int argc, char **argv);
extern void do_last_leaf(int argc, char **argv);
extern void do_first_sib(int argc, char **argv);
extern void do_last_sib(int argc, char **argv);
extern void do_next_sib(int argc, char **argv);
extern void do_prev_sib(int argc, char **argv);
extern void do_next_leaf(int argc, char **argv);
extern void do_prev_leaf(int argc, char **argv);
extern void do_next(int argc, char **argv);
extern void do_prev(int argc, char **argv);
extern void do_up(int argc, char **argv);
extern void do_down(int argc, char **argv);
extern void do_delete_node(int argc, char **argv);
extern void do_replace_node(int argc, char **argv);
extern void do_split_node(int argc, char **argv);
extern void do_insert_node(int argc, char **argv);
extern void do_set_bmap(int argc, char **argv);
extern void do_print_all(int argc, char **argv);
extern void do_fix_parents(int argc, char **argv);
extern void do_info(int argc, char **argv);
extern void do_goto_block(int argc, char **argv);
/* htree.c */
extern void do_htree_dump(int argc, char **argv);
extern void do_dx_hash(int argc, char **argv);
extern void do_dirsearch(int argc, char **argv);
/* logdump.c */
extern void do_logdump(int argc, char **argv);
/* lsdel.c */
extern void do_lsdel(int argc, char **argv);
/* icheck.c */
extern void do_icheck(int argc, char **argv);
/* ncheck.c */
extern void do_ncheck(int argc, char **argv);
/* set_fields.c */
extern void do_set_super(int argc, char **);
extern void do_set_inode(int argc, char **);
extern void do_set_block_group_descriptor(int argc, char **);
/* unused.c */
extern void do_dump_unused(int argc, char **argv);
/* debugfs.c */
extern void internal_dump_inode(FILE *, const char *, ext2_ino_t,
struct ext2_inode *, int);
extern void do_dirty_filesys(int argc, char **argv);
extern void do_open_filesys(int argc, char **argv);
extern void do_close_filesys(int argc, char **argv);
extern void do_lcd(int argc, char **argv);
extern void do_init_filesys(int argc, char **argv);
extern void do_show_super_stats(int argc, char **argv);
extern void do_kill_file(int argc, char **argv);
extern void do_rm(int argc, char **argv);
extern void do_link(int argc, char **argv);
extern void do_undel(int argc, char **argv);
extern void do_unlink(int argc, char **argv);
extern void do_find_free_block(int argc, char **argv);
extern void do_find_free_inode(int argc, char **argv);
extern void do_stat(int argc, char **argv);
extern void do_dump_extents(int argc, char **argv);
extern void do_blocks(int argc, char *argv[]);
extern void do_chroot(int argc, char **argv);
extern void do_clri(int argc, char **argv);
extern void do_freei(int argc, char **argv);
extern void do_seti(int argc, char **argv);
extern void do_testi(int argc, char **argv);
extern void do_freeb(int argc, char **argv);
extern void do_setb(int argc, char **argv);
extern void do_testb(int argc, char **argv);
extern void do_modify_inode(int argc, char **argv);
extern void do_list_dir(int argc, char **argv);
extern void do_change_working_dir(int argc, char **argv);
extern void do_print_working_directory(int argc, char **argv);
extern void do_write(int argc, char **argv);
extern void do_mknod(int argc, char **argv);
extern void do_mkdir(int argc, char **argv);
extern void do_rmdir(int argc, char **argv);
extern void do_show_debugfs_params(int argc, char **argv);
extern void do_expand_dir(int argc, char **argv);
extern void do_features(int argc, char **argv);
extern void do_bmap(int argc, char **argv);
extern void do_imap(int argc, char **argv);
extern void do_set_current_time(int argc, char **argv);
extern void do_supported_features(int argc, char **argv);
extern void do_punch(int argc, char **argv);
extern void do_symlink(int argc, char **argv);
extern void do_dump_mmp(int argc, char **argv);
extern void do_set_mmp_value(int argc, char **argv);
extern void do_freefrag(int argc, char **argv);
extern void do_filefrag(int argc, char *argv[]);
/* util.c */
extern time_t string_to_time(const char *arg);
/* zap.c */
extern void do_zap_block(int argc, char **argv);
extern void do_block_dump(int argc, char **argv);