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