adfvolinfo.c
上传用户:hy_wanghao
上传日期:2007-01-08
资源大小:279k
文件大小:3k
源码类别:

Shell编程

开发平台:

Visual C++

  1. // An ADFLib function for Windows which displays a dialogue box containing details about
  2. // the current disk file. 
  3. // Converted from adfVolumeInfo(), part of ADFLib by Laurent Clevy.
  4. //
  5. // Gary Harris
  6. // 30/8/00
  7. #include "../ADF_raw.h"
  8. #include "../ADF_Util.h"
  9. void adfVolumeInfoWin(HWND hWnd, struct Volume *vol)
  10. // Windows version of adfVolumeInfo().
  11. // Input:  Receives a handle to the window on which to display the dialogue and a pointer
  12. //         to a ADFLib Volume structure.
  13. // Output: Nil. Displays a windows dialogue containing the disk file data.
  14. {
  15. char szTemp[50], szAdfInfo[500]; // Info string.
  16. struct bRootBlock root;
  17. char diskName[35];
  18. int days,month,year;
  19. if (adfReadRootBlock(vol, vol->rootBlock, &root)!=RC_OK)
  20. return;
  21. memset(diskName, 0, 35);
  22. memcpy(diskName, root.diskName, root.nameLen);
  23. sprintf(szAdfInfo, "Name : %-30sn", vol->volName);
  24. strcat(szAdfInfo, "Type : ");
  25. switch(vol->dev->devType) {
  26. case DEVTYPE_FLOPDD:
  27. strcat(szAdfInfo, "Floppy Double Density : 880 KBytesn");
  28. break;
  29. case DEVTYPE_FLOPHD:
  30. strcat(szAdfInfo, "Floppy High Density : 1760 KBytesn");
  31. break;
  32. case DEVTYPE_HARDDISK:
  33. sprintf(szTemp, "Hard Disk partition : %3.1f KBytesn", 
  34. (vol->lastBlock - vol->firstBlock +1) * 512.0/1024.0);
  35. strcat(szAdfInfo, szTemp);
  36. break;
  37. case DEVTYPE_HARDFILE:
  38. sprintf(szTemp, "HardFile : %3.1f KBytesn", 
  39. (vol->lastBlock - vol->firstBlock +1) * 512.0/1024.0);
  40. strcat(szAdfInfo, szTemp);
  41. break;
  42. default:
  43. strcat(szAdfInfo, "Unknown devType!n");
  44. }
  45. strcat(szAdfInfo, "Filesystem : ");
  46. sprintf(szTemp, "%s ",isFFS(vol->dosType) ? "FFS" : "OFS");
  47. strcat(szAdfInfo, szTemp);
  48. if (isINTL(vol->dosType))
  49. strcat(szAdfInfo, "INTL ");
  50. if (isDIRCACHE(vol->dosType))
  51. strcat(szAdfInfo, "DIRCACHE ");
  52. strcat(szAdfInfo, "n");
  53.     sprintf(szTemp, "Free blocks = %ldn", adfCountFreeBlocks(vol));
  54. strcat(szAdfInfo, szTemp);
  55. if (vol->readOnly)
  56. strcat(szAdfInfo, "Read onlyn");
  57.     else
  58. strcat(szAdfInfo, "Read/Writen");
  59.  
  60.     /* created */
  61. adfDays2Date(root.coDays, &year, &month, &days);
  62. sprintf(szTemp, "created %d/%02d/%02d %ld:%02ld:%02ldn",days,month,year,
  63.     root.coMins/60,root.coMins%60,root.coTicks/50);
  64. strcat(szAdfInfo, szTemp);
  65. adfDays2Date(root.days, &year, &month, &days);
  66. sprintf(szTemp, "last access %d/%02d/%02d %ld:%02ld:%02ld,   ",days,month,year,
  67.     root.mins/60,root.mins%60,root.ticks/50);
  68. strcat(szAdfInfo, szTemp);
  69. adfDays2Date(root.cDays, &year, &month, &days);
  70. sprintf(szTemp, "%d/%02d/%02d %ld:%02ld:%02ldn",days,month,year,
  71.     root.cMins/60,root.cMins%60,root.cTicks/50);
  72. strcat(szAdfInfo, szTemp);
  73. MessageBox(hWnd, szAdfInfo, "Adf Info", MB_OK);
  74. }