home *** CD-ROM | disk | FTP | other *** search
/ PC-Online 1998 February / PCOnline_02_1998.iso / filesbbs / dos / lread10.exe / GROUP.C < prev    next >
Encoding:
C/C++ Source or Header  |  1995-05-23  |  1.8 KB  |  73 lines

  1. /* group.c
  2.  * David Lutz
  3.  * Modified and debugged by Jason Hunter
  4.  *
  5.  * This file contains routines for handling the ext2 groups
  6.  */
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #define _GROUP_C_
  11. #include "ext2.h"
  12. #include "proto.h"
  13.  
  14. /*
  15.  * Group Global Variables
  16.  */
  17. group_desc *gt;
  18. int num_groups;
  19.  
  20. /* load_groups
  21.  *
  22.  * Load the group descriptors into memory and set some
  23.  * global variables.
  24.  *
  25.  * returns -1 for failure
  26.  *          1 for success
  27.  */
  28. int load_groups( void )
  29. {
  30.   size_t size;
  31.  
  32.   /* How many groups are there? */
  33.   /* Funky math insures interger divide will round up */
  34.   num_groups = (sb.s_blocks_count - sb.s_first_data_block +
  35.         sb.s_blocks_per_group - 1) / sb.s_blocks_per_group;
  36.  
  37.   size = sizeof(group_desc) * num_groups;
  38.   if( (gt = (group_desc *)malloc( size )) == NULL )
  39.   {
  40.     fprintf( stderr, "Memory problem in load_groups.\n");
  41.     return( -1 );        /* Memory problem, signal failure */
  42.   }
  43.  
  44.   if( readdisk( (byte *)gt, BLOCK_SIZE*2, size ) != size )
  45.   {
  46.     fprintf( stderr, "Disk problem in load_groups.\n");
  47.     return( -1 );        /* Disk problem, signal failure */
  48.   }
  49.  
  50.   return( 1 );            /* Otherwise everything is OK */
  51. }
  52.  
  53. /* print_groups
  54.  *
  55.  * print out group information (useful for debugging)
  56.  */
  57. void print_groups( void )
  58. {
  59.   int i;
  60.  
  61.   for( i=0; i < num_groups; i++ )
  62.     {
  63.       printf( "----------------------------\n" );
  64.       printf( "Group Number: %d\n", i );
  65.       printf( "Blocks Bitmap Block: %lu\n", gt[i].bg_block_bitmap );
  66.       printf( "Inodes Bitmap Block: %lu\n", gt[i].bg_inode_bitmap );
  67.       printf( "Inodes Table Block: %lu\n", gt[i].bg_inode_table );
  68.       printf( "Free Blocks: %u\n", gt[i].bg_free_blocks_count );
  69.       printf( "Free Inodes: %u\n", gt[i].bg_free_inodes_count );
  70.       printf( "Used Directories: %u\n", gt[i].bg_used_dirs_count );
  71.     }
  72. }
  73.