home *** CD-ROM | disk | FTP | other *** search
/ PC-Online 1998 February / PCOnline_02_1998.iso / filesbbs / win95 / ext2tool.exe / SRC / E2PART.C < prev    next >
C/C++ Source or Header  |  1995-05-14  |  2KB  |  91 lines

  1. /***************************************************************************
  2.  * e2part - List hard disk partitions
  3.  *
  4.  * Copyright (C) 1995 Claus Tondering, ct@login.dknet.dk
  5.  * This file may be redistributed under the terms of the GNU Public License.
  6.  ***************************************************************************/
  7.  
  8. #include <stdio.h>
  9. #include <unistd.h>
  10. #include <stdlib.h>
  11. #include <time.h>
  12. #include <errno.h>
  13. #include <sys/types.h>
  14.  
  15. #include "e2err.h"
  16. #include "part.h"
  17. #include "diskio.h"
  18. #include "ldisk.h"
  19. #include "ext2_fs.h"
  20.  
  21.  
  22.  
  23.  
  24. /**********************************************************************
  25.  * usage prints usage information and exits
  26.  **********************************************************************/
  27.  
  28. void
  29. usage()
  30. {
  31.     fprintf(stderr, "usage: e2part disk_number\n");
  32.     exit(1);
  33. }
  34.  
  35.  
  36.  
  37. /**********************************************************************
  38.  * main routine
  39.  **********************************************************************/
  40.  
  41.  
  42. main(int argc, char **argv)
  43. {
  44.     int i, err, fstype, diskno;
  45.     struct part_desc pl[16];
  46.  
  47.     if (argc!=2)
  48.         usage();
  49.  
  50.     diskno=atoi(argv[1]);
  51.     if (!(diskno&0x80)) {
  52.         fprintf(stderr,"Disk %d is not a hard disk\n",diskno);
  53.         exit(1);
  54.     }
  55.  
  56.     err=get_part(diskno, pl);
  57.     if (err)
  58.         e2_err("Cannot read disk partitions",err);
  59.  
  60.     printf("PARTITION  LENGTH  FILE SYSTEM TYPE\n");
  61.  
  62.     for (i=0; i<16; i++)
  63.         if (pl[i].start && !pl[i].is_extended) {
  64.             fstype=getfstype(diskno, pl[i].parttype, pl[i].start);
  65.             if (fstype<0)
  66.                 e2_err("Disk error",-fstype);
  67.             
  68.             printf("%7d  %5d MB  ", i+1, (pl[i].length + 1024)/2048);
  69.                                 /* 1024 was added above to make division round instead
  70.                                    of truncate */
  71.             switch (fstype) {
  72.              case EXT2FS:
  73.                 printf("Linux ext2\n");
  74.                 break;
  75.  
  76.              case MSDOSFS:
  77.                 printf("MS-DOS (FAT)\n");
  78.                 break;
  79.  
  80.              case SWAP:
  81.                 printf("Linux swap space\n");
  82.                 break;
  83.  
  84.              default:
  85.                 printf("Unknown\n");
  86.                 break;
  87.             }
  88.         }
  89.     return 0;
  90. }
  91.