119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/*
219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/usr/src/ext2ed/blockbitmap_com.c
419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source ProjectA part of the extended file system 2 disk editor.
619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project-------------------------
819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source ProjectHandles the block bitmap.
919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project-------------------------
1019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
1119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source ProjectThis file implements the commands which are specific to the blockbitmap type.
1219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
1319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source ProjectFirst written on: July 5 1995
1419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
1519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source ProjectCopyright (C) 1995 Gadi Oxman
1619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
1719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project*/
1819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
1919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#include <stdio.h>
2019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#include <stdlib.h>
2119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#include <string.h>
2219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
2319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#include "ext2ed.h"
2419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
2519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/*
2619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
2719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source ProjectThe functions in this file use the flobal structure block_bitmap_info. This structure contains the current
2819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectposition in the bitmap.
2919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
3019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project*/
3119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
3219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectvoid type_ext2_block_bitmap___entry (char *command_line)
3319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
3419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/*
3519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
3619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source ProjectThis function changes the current entry in the bitmap. It just changes the entry_num variable in block_bitmap_info
3719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectand dispatches a show command to show the new entry.
3819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
3919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project*/
4019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
4119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project{
4219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	unsigned long entry_num;
4319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	char *ptr,buffer [80];
443984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
453984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
463984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
4719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	ptr=parse_word (command_line,buffer);					/* Get the requested entry */
4819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	if (*ptr==0) {
4919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		wprintw (command_win,"Error - No argument specified\n");
5019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		refresh_command_win ();	return;
5119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	}
5219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	ptr=parse_word (ptr,buffer);
5319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
5419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	entry_num=atol (buffer);
5519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
563984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
5719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	if (entry_num >= file_system_info.super_block.s_blocks_per_group) {	/* Check if it is a valid entry number */
5819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
5919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		wprintw (command_win,"Error - Entry number out of bounds\n");
6019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		refresh_command_win ();return;
6119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	}
623984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
633984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
643984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
6519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	block_bitmap_info.entry_num=entry_num;					/* If it is, just change entry_num and */
6619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	strcpy (buffer,"show");dispatch (buffer);				/* dispatch a show command */
6719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project}
6819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
6919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectvoid type_ext2_block_bitmap___next (char *command_line)
7019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
7119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/*
7219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
7319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source ProjectThis function passes to the next entry in the bitmap. We just call the above entry command.
7419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
7519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project*/
7619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
7719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project{
7819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	long entry_offset=1;
7919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	char *ptr,buffer [80];
803984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
8119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	ptr=parse_word (command_line,buffer);
8219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	if (*ptr!=0) {
8319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		ptr=parse_word (ptr,buffer);
8419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		entry_offset=atol (buffer);
8519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	}
8619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
8719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	sprintf (buffer,"entry %ld",block_bitmap_info.entry_num+entry_offset);
8819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	dispatch (buffer);
8919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project}
9019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
9119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectvoid type_ext2_block_bitmap___prev (char *command_line)
9219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
9319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project{
9419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	long entry_offset=1;
9519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	char *ptr,buffer [80];
963984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
9719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	ptr=parse_word (command_line,buffer);
9819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	if (*ptr!=0) {
9919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		ptr=parse_word (ptr,buffer);
10019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		entry_offset=atol (buffer);
10119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	}
10219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
10319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	sprintf (buffer,"entry %ld",block_bitmap_info.entry_num-entry_offset);
10419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	dispatch (buffer);
10519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project}
10619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
10719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectvoid type_ext2_block_bitmap___allocate (char *command_line)
10819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
10919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/*
11019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
11119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source ProjectThis function starts allocating block from the current position. Allocating involves setting the correct bits
11219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectin the bitmap. This function is a vector version of allocate_block below - We just run on the blocks that
11319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectwe need to allocate, and call allocate_block for each one.
11419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
11519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project*/
11619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
11719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project{
11819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	long entry_num,num=1;
11919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	char *ptr,buffer [80];
1203984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
12119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	ptr=parse_word (command_line,buffer);					/* Get the number of blocks to allocate */
12219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	if (*ptr!=0) {
12319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		ptr=parse_word (ptr,buffer);
12419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		num=atol (buffer);
12519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	}
1263984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
12719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	entry_num=block_bitmap_info.entry_num;
12819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project										/* Check for limits */
12919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	if (num > file_system_info.super_block.s_blocks_per_group-entry_num) {
1303984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt		wprintw (command_win,"Error - There aren't that much blocks in the group\n");
1313984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt		refresh_command_win ();return;
13219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	}
1333984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
13419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	while (num) {								/* And call allocate_block */
13519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		allocate_block (entry_num);					/* for each block */
13619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		num--;entry_num++;
13719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	}
1383984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
13919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	dispatch ("show");							/* Show the result */
14019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project}
14119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
14219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectvoid type_ext2_block_bitmap___deallocate (char *command_line)
14319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
14419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* This is the opposite of the above function - We call deallocate_block instead of allocate_block */
14519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
14619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project{
14719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	long entry_num,num=1;
14819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	char *ptr,buffer [80];
1493984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
15019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	ptr=parse_word (command_line,buffer);
15119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	if (*ptr!=0) {
15219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		ptr=parse_word (ptr,buffer);
15319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		num=atol (buffer);
15419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	}
1553984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
15619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	entry_num=block_bitmap_info.entry_num;
15719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	if (num > file_system_info.super_block.s_blocks_per_group-entry_num) {
1583984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt		wprintw (command_win,"Error - There aren't that much blocks in the group\n");
1593984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt		refresh_command_win ();return;
16019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	}
1613984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
16219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	while (num) {
16319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		deallocate_block (entry_num);
16419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		num--;entry_num++;
16519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	}
1663984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
16719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	dispatch ("show");
16819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project}
16919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
17019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
17119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectvoid allocate_block (long entry_num)
17219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
17319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* In this function we convert the bit number into the right byte and inner bit positions. */
17419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
17519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project{
17619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	unsigned char bit_mask=1;
17719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	int byte_offset,j;
1783984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
17919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	byte_offset=entry_num/8;					/* Find the correct byte - entry_num/8 */
18019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project									/* The position inside the byte is entry_num %8 */
18119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	for (j=0;j<entry_num%8;j++)
18219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		bit_mask*=2;						/* Generate the or mask - 1 at the right place */
18319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	type_data.u.buffer [byte_offset] |= bit_mask;			/* And apply it */
18419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project}
18519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
18619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectvoid deallocate_block (long entry_num)
18719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
18819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* This is the opposite of allocate_block above. We use an and mask instead of an or mask. */
18919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
19019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project{
19119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	unsigned char bit_mask=1;
19219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	int byte_offset,j;
1933984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
19419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	byte_offset=entry_num/8;
19519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	for (j=0;j<entry_num%8;j++)
19619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		bit_mask*=2;
19719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	bit_mask^=0xff;
1983984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
19919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	type_data.u.buffer [byte_offset] &= bit_mask;
20019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project}
20119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
20219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectvoid type_ext2_block_bitmap___show (char *command_line)
20319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
20419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/*
20519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
20619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source ProjectWe show the bitmap as a series of bits, grouped at 8-bit intervals. We display 8 such groups on each line.
20719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source ProjectThe current position (as known from block_bitmap_info.entry_num) is highlighted.
20819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
20919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project*/
21019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
21119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project{
21219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	int i,j;
21319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	unsigned char *ptr;
21419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	unsigned long block_num,entry_num;
21519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
21619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	ptr=type_data.u.buffer;
21719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	show_pad_info.line=0;show_pad_info.max_line=-1;
2183984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
21919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	wmove (show_pad,0,0);
22019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	for (i=0,entry_num=0;i<file_system_info.super_block.s_blocks_per_group/8;i++,ptr++) {
22119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		for (j=1;j<=128;j*=2) {						/* j contains the and bit mask */
22219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project			if (entry_num==block_bitmap_info.entry_num) {		/* Highlight the current entry */
22319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project				wattrset (show_pad,A_REVERSE);
22419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project				show_pad_info.line=show_pad_info.max_line-show_pad_info.display_lines/2;
22519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project			}
22619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
22719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project			if ((*ptr) & j)						/* Apply the mask */
22819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project				wprintw (show_pad,"1");
22919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project			else
23019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project				wprintw (show_pad,"0");
23119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
23219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project			if (entry_num==block_bitmap_info.entry_num)
23319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project				wattrset (show_pad,A_NORMAL);
23419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
23519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project			entry_num++;						/* Pass to the next entry */
23619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		}
23719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		wprintw (show_pad," ");
23819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		if (i%8==7) {							/* Display 8 groups in a row */
23919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project			wprintw (show_pad,"\n");
24019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project			show_pad_info.max_line++;
24119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		}
24219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	}
2433984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
2443984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt	refresh_show_pad ();
24519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	show_info ();								/* Show the usual information */
24619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
24719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project										/* Show the group number */
24819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	wmove (show_win,1,0);
24919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	wprintw (show_win,"Block bitmap of block group %ld\n",block_bitmap_info.group_num);
25019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project										/* Show the block number */
2513984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
25219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	block_num=block_bitmap_info.entry_num+block_bitmap_info.group_num*file_system_info.super_block.s_blocks_per_group;
2533984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt	block_num+=file_system_info.super_block.s_first_data_block;
25419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
25519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	wprintw (show_win,"Status of block %ld - ",block_num);			/* and the allocation status */
25619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	ptr=type_data.u.buffer+block_bitmap_info.entry_num/8;
25719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	j=1;
25819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	for (i=block_bitmap_info.entry_num % 8;i>0;i--)
25919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		j*=2;
2603984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt	if ((*ptr) & j)
26119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		wprintw (show_win,"Allocated\n");
26219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	else
26319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		wprintw (show_win,"Free\n");
26419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	refresh_show_win ();
26519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project}
266