X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=e2fsck%2Fe2fsck.h;h=1c7ecf97b47bc2aaeec9d15358696b263eaa964d;hb=d051521278790e5fc7d97d59bb3be6b662a76365;hp=d83c8cb8c9a1448efce0487d334674be5c2fc268;hpb=f8188fff23dc2d9c9f858fb21264e46b17672825;p=tools%2Fe2fsprogs.git diff --git a/e2fsck/e2fsck.h b/e2fsck/e2fsck.h index d83c8cb..1c7ecf9 100644 --- a/e2fsck/e2fsck.h +++ b/e2fsck/e2fsck.h @@ -8,8 +8,11 @@ #include #include +#ifdef HAVE_UNISTD_H #include +#endif #include +#include #ifdef HAVE_SYS_TYPES_H #include #endif @@ -20,15 +23,31 @@ #include #endif -#ifdef HAVE_LINUX_FS_H -#include -#endif +#if EXT2_FLAT_INCLUDES +#include "ext2_fs.h" +#include "ext2fs.h" +#else #include - #include "ext2fs/ext2fs.h" +#endif -/* Everything is STDC, these days */ -#define NOARGS void +#ifdef ENABLE_NLS +#include +#include +#define _(a) (gettext (a)) +#ifdef gettext_noop +#define N_(a) gettext_noop (a) +#else +#define N_(a) (a) +#endif +/* FIXME */ +#define NLS_CAT_NAME "e2fsprogs" +#define LOCALEDIR "/usr/share/locale" +/* FIXME */ +#else +#define _(a) (a) +#define N_(a) a +#endif /* * Exit codes used by fsck-type programs @@ -53,9 +72,9 @@ * directory information. */ struct dir_info { - ino_t ino; /* Inode number */ - ino_t dotdot; /* Parent according to '..' */ - ino_t parent; /* Parent according to treewalk */ + ext2_ino_t ino; /* Inode number */ + ext2_ino_t dotdot; /* Parent according to '..' */ + ext2_ino_t parent; /* Parent according to treewalk */ }; #ifdef RESOURCE_TRACK @@ -88,11 +107,14 @@ struct resource_track { */ #define E2F_FLAG_ABORT 0x0001 /* Abort signaled */ #define E2F_FLAG_CANCEL 0x0002 /* Cancel signaled */ +#define E2F_FLAG_SIGNAL_MASK 0x0003 #define E2F_FLAG_RESTART 0x0004 /* Restart signaled */ -#define E2F_FLAG_SIGNAL_MASK 0x000F #define E2F_FLAG_SETJMP_OK 0x0010 /* Setjmp valid for abort */ +#define E2F_FLAG_PROG_BAR 0x0020 /* Progress bar on screen */ +#define E2F_FLAG_PROG_SUPPRESS 0x0040 /* Progress suspended */ + /* * Defines for indicating the e2fsck pass number */ @@ -124,17 +146,18 @@ struct e2fsck_struct { #endif unsigned long abort_code; - void (*progress)(e2fsck_t ctx, int pass, unsigned long cur, - unsigned long max); + int (*progress)(e2fsck_t ctx, int pass, unsigned long cur, + unsigned long max); ext2fs_inode_bitmap inode_used_map; /* Inodes which are in use */ ext2fs_inode_bitmap inode_bad_map; /* Inodes which are bad somehow */ ext2fs_inode_bitmap inode_dir_map; /* Inodes which are directories */ ext2fs_inode_bitmap inode_bb_map; /* Inodes which are in bad blocks */ + ext2fs_inode_bitmap inode_imagic_map; /* AFS inodes */ + ext2fs_inode_bitmap inode_reg_map; /* Inodes which are regular files*/ ext2fs_block_bitmap block_found_map; /* Blocks which are in use */ ext2fs_block_bitmap block_dup_map; /* Blks referenced more than once */ - ext2fs_block_bitmap block_illegal_map; /* Meta-data blocks */ /* * Inode count arrays @@ -159,7 +182,7 @@ struct e2fsck_struct { /* * For pass1_check_directory and pass1_get_blocks */ - ino_t stashed_ino; + ext2_ino_t stashed_ino; struct ext2_inode *stashed_inode; /* @@ -182,6 +205,14 @@ struct e2fsck_struct { struct resource_track global_rtrack; #endif + /* + * How we display the progress update (for unix) + */ + int progress_fd; + int progress_pos; + int progress_last_percent; + unsigned int progress_last_time; + /* File counts */ int fs_directory_count; int fs_regular_count; @@ -198,6 +229,13 @@ struct e2fsck_struct { int fs_dind_count; int fs_tind_count; int fs_fragmented; + int large_files; + + /* + * For the use of callers of the e2fsck functions; not used by + * e2fsck functions themselves. + */ + void *priv_data; }; @@ -219,23 +257,14 @@ extern void e2fsck_free_context(e2fsck_t ctx); extern int e2fsck_run(e2fsck_t ctx); -/* pass1.c */ -extern errcode_t pass1_check_directory(ext2_filsys fs, ino_t ino); -extern errcode_t pass1_get_blocks(ext2_filsys fs, ino_t ino, blk_t *blocks); -extern errcode_t pass1_read_inode(ext2_filsys fs, ino_t ino, - struct ext2_inode *inode); -extern errcode_t pass1_write_inode(ext2_filsys fs, ino_t ino, - struct ext2_inode *inode); -extern int e2fsck_pass1_check_device_inode(struct ext2_inode *inode); - /* badblock.c */ extern void read_bad_blocks_file(e2fsck_t ctx, const char *bad_blocks_file, int replace_bad_blocks); extern void test_disk(e2fsck_t ctx); /* dirinfo.c */ -extern void e2fsck_add_dir_info(e2fsck_t ctx, ino_t ino, ino_t parent); -extern struct dir_info *e2fsck_get_dir_info(e2fsck_t ctx, ino_t ino); +extern void e2fsck_add_dir_info(e2fsck_t ctx, ext2_ino_t ino, ext2_ino_t parent); +extern struct dir_info *e2fsck_get_dir_info(e2fsck_t ctx, ext2_ino_t ino); extern void e2fsck_free_dir_info(e2fsck_t ctx); extern int e2fsck_get_num_dirs(e2fsck_t ctx); extern int e2fsck_get_num_dirinfo(e2fsck_t ctx); @@ -245,8 +274,23 @@ extern struct dir_info *e2fsck_dir_info_iter(e2fsck_t ctx, int *control); extern const char *ehandler_operation(const char *op); extern void ehandler_init(io_channel channel); +/* journal.c */ +extern int e2fsck_check_ext3_journal(e2fsck_t ctx); +extern int e2fsck_run_ext3_journal(e2fsck_t ctx); + +/* pass1.c */ +extern void e2fsck_use_inode_shortcuts(e2fsck_t ctx, int bool); +extern int e2fsck_pass1_check_device_inode(struct ext2_inode *inode); + +/* pass2.c */ +extern int e2fsck_process_bad_inode(e2fsck_t ctx, ext2_ino_t dir, ext2_ino_t ino); + +/* pass3.c */ +extern int e2fsck_reconnect_file(e2fsck_t ctx, ext2_ino_t inode); + /* super.c */ void check_super_block(e2fsck_t ctx); +errcode_t e2fsck_get_device_size(e2fsck_t ctx); /* swapfs.c */ void swap_filesys(e2fsck_t ctx); @@ -274,8 +318,7 @@ extern void e2fsck_write_inode(e2fsck_t ctx, unsigned long ino, extern void mtrace_print(char *mesg); #endif extern blk_t get_backup_sb(ext2_filsys fs); +extern int ext2_file_type(unsigned int mode); -/* - * pass3.c - */ -extern int e2fsck_reconnect_file(e2fsck_t ctx, ino_t inode); +/* unix.c */ +extern void e2fsck_clear_progbar(e2fsck_t ctx);