]>
git.ipfire.org Git - thirdparty/e2fsprogs.git/blob - ext2ed/super_com.c
3 /usr/src/ext2ed/super_com.c
5 A part of the extended file system 2 disk editor.
11 First written on: April 9 1995
13 Copyright (C) 1995 Gadi Oxman
24 void type_ext2_super_block___show (char *command_line
)
27 struct ext2_super_block
*super
;
28 super
=&type_data
.u
.t_ext2_super_block
;
32 if (ext2fs_blocks_count(super
) != 0) {
33 wmove (show_pad
,2,40);wprintw (show_pad
,"%2.2f%%",100*(float) ext2fs_r_blocks_count(super
)/ (float) ext2fs_blocks_count(super
));
34 wmove (show_pad
,3,40);wprintw (show_pad
,"%2.2f%%",100*(float) ext2fs_free_blocks_count(super
)/ (float) ext2fs_blocks_count(super
));
37 if (super
->s_inodes_count
!= 0) {
38 wmove (show_pad
,4,40);wprintw (show_pad
,"%2.2f%%",100*(float) super
->s_free_inodes_count
/ (float) super
->s_inodes_count
);
41 wmove (show_pad
,6,40);
42 switch (super
->s_log_block_size
) {
43 case 0: wprintw (show_pad
,"1024 bytes");break;
44 case 1: wprintw (show_pad
,"2048 bytes");break;
45 case 2: wprintw (show_pad
,"4096 bytes");break;
47 wmove (show_pad
,11,40);wprintw (show_pad
,"%s",ctime ((time_t *) &type_data
.u
.t_ext2_super_block
.s_mtime
));
48 wmove (show_pad
,12,40);wprintw (show_pad
,"%s",ctime ((time_t *) &type_data
.u
.t_ext2_super_block
.s_wtime
));
49 wmove (show_pad
,19,40);wprintw (show_pad
,"%s",ctime ((time_t *) &type_data
.u
.t_ext2_super_block
.s_lastcheck
));
50 wmove (show_pad
,15,40);
52 switch (type_data
.u
.t_ext2_super_block
.s_magic
) {
53 case EXT2_SUPER_MAGIC
:
54 wprintw (show_pad
,"ext2 >= 0.2B");
56 case EXT2_PRE_02B_MAGIC
:
57 wprintw (show_pad
,"ext2 < 0.2B (not supported)");
60 wprintw (show_pad
,"Unknown");
64 wmove (show_pad
,16,40);
65 if (type_data
.u
.t_ext2_super_block
.s_state
& 0x1)
66 wprintw (show_pad
,"clean ");
68 wprintw (show_pad
,"not clean ");
70 if (type_data
.u
.t_ext2_super_block
.s_state
& 0x2)
71 wprintw (show_pad
,"with errors ");
73 wprintw (show_pad
,"with no errors");
75 wmove (show_pad
,17,40);
77 switch (type_data
.u
.t_ext2_super_block
.s_errors
) {
78 case EXT2_ERRORS_CONTINUE
:
79 wprintw (show_pad
,"Continue");
82 wprintw (show_pad
,"Remount read only");
84 case EXT2_ERRORS_PANIC
:
85 wprintw (show_pad
,"Issue kernel panic");
88 wprintw (show_pad
,"Unknown");
92 wmove (show_pad
,21,40);
94 switch (type_data
.u
.t_ext2_super_block
.s_creator_os
) {
97 wprintw (show_pad
,"Linux :-)");
101 wprintw (show_pad
,"Hurd");
105 wprintw (show_pad
,"Unknown");
111 wmove (show_win
,1,0);wprintw (show_win
,"\n");wmove (show_win
,2,0);
112 wprintw (show_win
,"Superblock copy %ld ",super_info
.copy_num
);
113 if (super_info
.copy_num
==0)
114 wprintw (show_win
,"(main copy)");
115 wprintw (show_win
,"\n");
119 void type_ext2_super_block___gocopy (char *command_line
)
122 unsigned long copy_num
,offset
;
123 char *ptr
,buffer
[80];
125 ptr
=parse_word (command_line
,buffer
);
127 wprintw (command_win
,"Error - No argument specified\n");refresh_command_win ();return;
129 ptr
=parse_word (ptr
,buffer
);
131 copy_num
=atol (buffer
);
133 offset
=file_system_info
.super_block_offset
+copy_num
*file_system_info
.no_blocks_in_group
*file_system_info
.block_size
;
135 if (offset
> file_system_info
.file_system_size
) {
136 wprintw (command_win
,"Error - Copy number out of bounds\n");refresh_command_win ();return;
139 super_info
.copy_num
=copy_num
;
140 device_offset
=offset
;
142 sprintf (buffer
,"setoffset %ld",device_offset
);dispatch (buffer
);
143 strcpy (buffer
,"show");dispatch (buffer
);
146 void type_ext2_super_block___setactivecopy (char *command_line
)
149 struct ext2_super_block sb
;
151 sb
=type_data
.u
.t_ext2_super_block
;
152 dispatch ("gocopy 0");
153 type_data
.u
.t_ext2_super_block
=sb
;