Source/PBHGetVInfo.c

//
// MPW Tool by im.
// Usage : PBHGetVInfo [-i index] [-v volumeName:] [-r vRefNum]
// 
 
#include    <Files.h>
#include    <stdio.h>
#include    <StdLib.h>
#include    <string.h>
#include    <strings.h>
#include    <Quickdraw.h>
#include    <TextUtils.h>
 
HParamBlockRec  pb;
Str255          volName;
 
void main (int argc, char *argv[], char *envp[]) {
#pragma unused (envp)
    
        auto    OSErr   osErr;
        auto    short   index;
        auto    char    *option, *parameter;
        auto    Str255  string;
        
        InitGraf(&qd.thePort);
 
        pb.volumeParam.ioNamePtr        = volName;
        pb.volumeParam.ioVRefNum        = 0;
        pb.volumeParam.ioVolIndex       = 0;
 
        index = 1;
        while (index < argc) {
        
            option = argv[index++];
            parameter = argv[index++];
            
            if ('-' != option[0] || (! strchr("ivr", option[1])) || index > argc) {
                printf("PBHGetVInfo [-i index] [-v volumeName:] [-r vRefNum]\n");
                exit(1);
            } else {
                switch (option[1]) {
                    case 'i' :
                        sscanf(parameter, "%hd", &pb.volumeParam.ioVolIndex);
                        break;
                    case 'v' :
                        parameter = (char *) c2pstr(parameter);
                        pb.volumeParam.ioNamePtr = (StringPtr) parameter;
                        break;
                    case 'r' :
                        sscanf(parameter, "%hd", &pb.volumeParam.ioVRefNum);
                        break;
                        break;
                }
            }           
        }
        
    //  printf("ioNamePtr       = %P\n",    pb.volumeParam.ioNamePtr);
    //  printf("ioVRefNum       = %hd\n",   pb.volumeParam.ioVRefNum);
    //  printf("ioVolIndex      = %hd\n",   pb.volumeParam.ioVolIndex);
        
        osErr = PBHGetVInfoAsync(&pb);
        
        if (noErr != osErr) {
            printf("osErr           = %d\n",    osErr);
        } else {
            printf("ioResult        = %hd\n",   pb.volumeParam.ioResult);
            printf("ioNamePtr       = %P\n",    pb.volumeParam.ioNamePtr);
            printf("ioVRefNum       = %hd\n",   pb.volumeParam.ioVRefNum);
            
            printf("ioVolIndex      = %hd\n",   pb.volumeParam.ioVolIndex);
            
            IUDateString(pb.volumeParam.ioVCrDate, shortDate, string);
            printf("ioVCrDate       = %P  ",    string);
            IUTimeString(pb.volumeParam.ioVCrDate, false, string);
            printf("%P\n",  string);
            
            IUDateString(pb.volumeParam.ioVLsMod, shortDate, string);
            printf("ioVLsMod        = %P  ", string);
            IUTimeString(pb.volumeParam.ioVLsMod, false, string);
            printf("%P\n",  string);
            
            printf("ioVAtrb         = %hd\n",   pb.volumeParam.ioVAtrb);
            printf("ioVNmFls        = %hu\n",   pb.volumeParam.ioVNmFls);
            printf("ioVBitMap       = %hd\n",   pb.volumeParam.ioVBitMap);
            printf("ioAllocPtr      = %hd\n",   pb.volumeParam.ioAllocPtr);
            printf("ioVNmAlBlks     = %hu\n",   pb.volumeParam.ioVNmAlBlks);
            printf("ioVAlBlkSiz     = %ld\n",   pb.volumeParam.ioVAlBlkSiz);
            printf("ioVClpSiz       = %ld\n",   pb.volumeParam.ioVClpSiz);
            printf("ioAlBlSt        = %hd\n",   pb.volumeParam.ioAlBlSt);
            printf("ioVNxtCNID      = %ld\n",   pb.volumeParam.ioVNxtCNID);
            printf("ioVFrBlk        = %hu\n",   pb.volumeParam.ioVFrBlk);
            
            printf("ioVSigWord      = %hu\n",   pb.volumeParam.ioVSigWord);
            printf("ioVDrvInfo      = %hd\n",   pb.volumeParam.ioVDrvInfo);
            printf("ioVDRefNum      = %hd\n",   pb.volumeParam.ioVDRefNum);
            printf("ioVFSID         = %hd\n",   pb.volumeParam.ioVFSID);
            
            IUDateString(pb.volumeParam.ioVBkUp, shortDate, string);
            printf("ioVBkUp         = %P  ", string);
            IUTimeString(pb.volumeParam.ioVBkUp, false, string);
            printf("%P\n",  string);
 
            printf("ioVSeqNum       = %hu\n",   pb.volumeParam.ioVSeqNum);
            printf("ioVWrCnt        = %ld\n",   pb.volumeParam.ioVWrCnt);
            printf("ioVFilCnt       = %ld\n",   pb.volumeParam.ioVFilCnt);
            printf("ioVDirCnt       = %ld\n",   pb.volumeParam.ioVDirCnt);
            
            printf("ioVFndrInfo[0]  = %ld\n",   pb.volumeParam.ioVFndrInfo[0]);
            printf("ioVFndrInfo[0]  = %ld\n",   pb.volumeParam.ioVFndrInfo[1]);
            printf("ioVFndrInfo[0]  = %ld\n",   pb.volumeParam.ioVFndrInfo[2]);
            printf("ioVFndrInfo[0]  = %ld\n",   pb.volumeParam.ioVFndrInfo[3]);
            printf("ioVFndrInfo[0]  = %ld\n",   pb.volumeParam.ioVFndrInfo[4]);
            printf("ioVFndrInfo[0]  = %ld\n",   pb.volumeParam.ioVFndrInfo[5]);
            printf("ioVFndrInfo[0]  = %ld\n",   pb.volumeParam.ioVFndrInfo[6]);
            printf("ioVFndrInfo[0]  = %ld\n",   pb.volumeParam.ioVFndrInfo[7]);
        }
}