#
# Copyright (C) 1993 Theodore Ts'o.  This file may be redistributed
# under the terms of the GNU Public License.
#
command_table debug_cmds;

request do_show_debugfs_params, "Show debugfs parameters",
	show_debugfs_params, params;

request do_open_filesys, "Open a filesystem",
	open_filesys, open;

request do_close_filesys, "Close the filesystem",
	close_filesys, close;

request do_features, "Set/print superblock features",
	feature, features;

request do_dirty_filesys, "Mark the filesystem as dirty",
	dirty_filesys, dirty;

request do_init_filesys, "Initalize a filesystem (DESTROYS DATA)",
	init_filesys;

request do_show_super_stats, "Show superblock statistics",
	show_super_stats, stats;

request do_ncheck, "Do inode->name translation",
	ncheck;

request do_icheck, "Do block->inode translation",
	icheck;

request do_chroot, "Change root directory",
	change_root_directory, chroot;

request do_change_working_dir, "Change working directory",
	change_working_directory, cd;

request do_list_dir, "List directory",
	list_directory, ls;

request do_stat, "Show inode information ",
	show_inode_info, stat;

request do_link, "Create directory link",
	link, ln;

request do_unlink, "Delete a directory link",
	unlink;

request do_mkdir, "Create a directory",
	mkdir;

request do_rmdir, "Remove a directory",
	rmdir;

request do_rm, "Remove a file (unlink and kill_file, if appropriate)",
	rm;

request do_kill_file, "Deallocate an inode and its blocks",
	kill_file;

request do_clri, "Clear an inode's contents",
	clri;

request do_freei, "Clear an inode's in-use flag",
	freei;

request do_seti, "Set an inode's in-use flag",
	seti;

request do_testi, "Test an inode's in-use flag",
	testi;

request do_freeb, "Clear a block's in-use flag",
	freeb;

request do_setb, "Set a block's in-use flag",
	setb;

request do_testb, "Test a block's in-use flag",
	testb;

request do_modify_inode, "Modify an inode by structure",
	modify_inode, mi;

request do_find_free_block, "Find free block(s)",
	find_free_block, ffb;

request do_find_free_inode, "Find free inode(s)",
	find_free_inode, ffi;

request	do_print_working_directory, "Print current working directory",
	print_working_directory, pwd; 

request	do_expand_dir, "Expand directory",
	expand_dir, expand;

request do_mknod, "Create a special file",
	mknod;

request do_lsdel, "List deleted inodes",
	list_deleted_inodes, lsdel;

request do_undel, "Undelete file",
	undelete, undel;

request do_write, "Copy a file from your native filesystem",
	write;

request do_dump, "Dump an inode out to a file",
	dump_inode, dump;

request do_cat, "Dump an inode out to stdout",
	cat;

request do_lcd, "Change the current directory on your native filesystem",
	lcd;

request do_rdump, "Recursively dump a directory to the native filesystem",
	rdump;

request do_set_super, "Set superblock value",
	set_super_value, ssv;

request do_set_inode, "Set inode field",
	set_inode_field, sif;

request do_set_block_group_descriptor, "Set block group descriptor field",
	set_block_group, set_bg;

request do_logdump, "Dump the contents of the journal",
	logdump;

request do_htree_dump, "Dump a hash-indexed directory",
	htree_dump, htree;

request do_dx_hash, "Calculate the directory hash of a filename",
	dx_hash, hash;

request do_dirsearch, "Search a directory for a particular filename",
	dirsearch;

request do_bmap, "Calculate the logical->physical block mapping for an inode",
	bmap;

request do_imap, "Calculate the location of an inode",
	imap;

request	do_dump_unused, "Dump unused blocks",
	dump_unused;

request do_set_current_time, "Set current time to use when setting filesystme fields",
	set_current_time;

request do_supported_features, "Print features supported by this version of e2fsprogs",
	supported_features;

end;

