]>
git.ipfire.org Git - thirdparty/e2fsprogs.git/blob - ext2ed/group_com.c
3 /usr/src/ext2ed/group_com.c
5 A part of the extended file system 2 disk editor.
9 First written on: April 17 1995
11 Copyright (C) 1995 Gadi Oxman
21 void type_ext2_group_desc___next (char *command_line
)
25 char *ptr
,buffer
[80];
27 ptr
=parse_word (command_line
,buffer
);
29 ptr
=parse_word (ptr
,buffer
);
30 entry_offset
=atol (buffer
);
33 sprintf (buffer
,"entry %ld",group_info
.group_num
+entry_offset
);
37 void type_ext2_group_desc___prev (char *command_line
)
41 char *ptr
,buffer
[80];
43 ptr
=parse_word (command_line
,buffer
);
45 ptr
=parse_word (ptr
,buffer
);
46 entry_offset
=atol (buffer
);
49 sprintf (buffer
,"entry %ld",group_info
.group_num
-entry_offset
);
53 void type_ext2_group_desc___entry (char *command_line
)
57 char *ptr
,buffer
[80];
59 ptr
=parse_word (command_line
,buffer
);
61 wprintw (command_win
,"Error - No argument specified\n");refresh_command_win ();return;
63 ptr
=parse_word (ptr
,buffer
);
65 group_num
=atol (buffer
);
67 if (group_num
< 0 || group_num
>= file_system_info
.groups_count
) {
68 wprintw (command_win
,"Error - Entry number out of bounds\n");refresh_command_win ();return;
71 device_offset
=file_system_info
.first_group_desc_offset
+group_num
*sizeof (struct ext2_group_desc
);
73 sprintf (buffer
,"setoffset %ld",device_offset
);dispatch (buffer
);
74 strcpy (buffer
,"show");dispatch (buffer
);
75 group_info
.group_num
=group_num
;
79 void type_ext2_group_desc___gocopy (char *command_line
)
82 unsigned long copy_num
,offset
;
83 char *ptr
,buffer
[80];
85 ptr
=parse_word (command_line
,buffer
);
87 wprintw (command_win
,"Error - No argument specified\n");refresh_command_win ();return;
89 ptr
=parse_word (ptr
,buffer
);
91 copy_num
=atol (buffer
);
93 offset
=file_system_info
.first_group_desc_offset
+copy_num
*file_system_info
.super_block
.s_blocks_per_group
*file_system_info
.block_size
;
95 if (offset
> file_system_info
.file_system_size
) {
96 wprintw (command_win
,"Error - Copy number out of bounds\n");refresh_command_win ();return;
99 group_info
.copy_num
=copy_num
;
100 device_offset
=offset
+group_info
.group_num
*sizeof (struct ext2_group_desc
);
102 sprintf (buffer
,"setoffset %ld",device_offset
);dispatch (buffer
);
103 strcpy (buffer
,"show");dispatch (buffer
);
107 void type_ext2_group_desc___show (char *command_line
)
112 temp
=(device_offset
-file_system_info
.first_group_desc_offset
) % (file_system_info
.super_block
.s_blocks_per_group
*file_system_info
.block_size
);
113 group_num
=temp
/sizeof (struct ext2_group_desc
);
117 wmove (show_win
,1,0);wprintw (show_win
,"\n");wmove (show_win
,2,0);
118 wprintw (show_win
,"Group %ld of %ld ",group_num
,file_system_info
.groups_count
-1);
119 wprintw (show_win
,"in copy %ld ",group_info
.copy_num
);
120 if (group_info
.copy_num
==0) wprintw (show_win
,"(Main copy)");
121 wprintw (show_win
,"\n");refresh_show_win ();
124 wprintw (command_win
,"Reached first group descriptor\n");
125 wrefresh (command_win
);
128 if (group_num
==file_system_info
.groups_count
-1) {
129 wprintw (command_win
,"Reached last group descriptor\n");
130 wrefresh (command_win
);
134 void type_ext2_group_desc___inode (char *command_line
)
140 inode_offset
=type_data
.u
.t_ext2_group_desc
.bg_inode_table
;
141 sprintf (buffer
,"setoffset block %ld",inode_offset
);dispatch (buffer
);
142 sprintf (buffer
,"settype ext2_inode");dispatch (buffer
);
145 void type_ext2_group_desc___blockbitmap (char *command_line
)
148 long block_bitmap_offset
;
151 block_bitmap_info
.entry_num
=0;
152 block_bitmap_info
.group_num
=group_info
.group_num
;
154 block_bitmap_offset
=type_data
.u
.t_ext2_group_desc
.bg_block_bitmap
;
155 sprintf (buffer
,"setoffset block %ld",block_bitmap_offset
);dispatch (buffer
);
156 sprintf (buffer
,"settype block_bitmap");dispatch (buffer
);
159 void type_ext2_group_desc___inodebitmap (char *command_line
)
162 long inode_bitmap_offset
;
165 inode_bitmap_info
.entry_num
=0;
166 inode_bitmap_info
.group_num
=group_info
.group_num
;
168 inode_bitmap_offset
=type_data
.u
.t_ext2_group_desc
.bg_inode_bitmap
;
169 sprintf (buffer
,"setoffset block %ld",inode_bitmap_offset
);dispatch (buffer
);
170 sprintf (buffer
,"settype inode_bitmap");dispatch (buffer
);
173 void type_ext2_group_desc___setactivecopy (char *command_line
)
176 struct ext2_group_desc gd
;
178 gd
=type_data
.u
.t_ext2_group_desc
;
179 dispatch ("gocopy 0");
180 type_data
.u
.t_ext2_group_desc
=gd
;