X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=macosx%2FHBDVDDetector.m;h=81a854597343eec37db18910cb0ac5abeed808b7;hb=240cf3308bf21be4d1918a71a5510d07e7d6d85b;hp=7360c0a9db0ee9ec5cf5d13006a091aaacaa3881;hpb=d3b5ec255ae93261a1cb80656a56991306024fb3;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/macosx/HBDVDDetector.m b/macosx/HBDVDDetector.m index 7360c0a9..81a85459 100644 --- a/macosx/HBDVDDetector.m +++ b/macosx/HBDVDDetector.m @@ -3,7 +3,7 @@ * 8/17/2007 * * This file is part of the HandBrake source code. - * Homepage: . + * Homepage: . * It may be used under the terms of the GNU General Public License. */ @@ -83,10 +83,10 @@ - (NSString *)bsdNameForPath { OSStatus err; - FSRef ref; - err = FSPathMakeRef( (const UInt8 *) [path fileSystemRepresentation], + FSRef ref; + err = FSPathMakeRef( (const UInt8 *) [path fileSystemRepresentation], &ref, NULL ); - if( err != noErr ) + if( err != noErr ) { return nil; } @@ -101,22 +101,29 @@ } FSVolumeRefNum volRefNum = catalogInfo.volume; - // Mow let's get the device name - GetVolParmsInfoBuffer volumeParms; - HParamBlockRec pb; - pb.ioParam.ioNamePtr = NULL; - pb.ioParam.ioVRefNum = volRefNum; - pb.ioParam.ioBuffer = (Ptr) &volumeParms; - pb.ioParam.ioReqCount = sizeof( volumeParms ); - err = PBHGetVolParmsSync( &pb ); + // Now let's get the device name + GetVolParmsInfoBuffer volumeParms; + err = FSGetVolumeParms ( volRefNum, &volumeParms, sizeof( volumeParms ) ); + if( err != noErr ) { return nil; } - // A version 4 GetVolParmsInfoBuffer contains the BSD node name in the vMDeviceID field. - // It is actually a char * value. This is mentioned in the header CoreServices/CarbonCore/Files.h. - return [NSString stringWithCString:(char *)volumeParms.vMDeviceID]; + // A version 4 GetVolParmsInfoBuffer contains the BSD node name in the vMDeviceID field. + // It is actually a char * value. This is mentioned in the header CoreServices/CarbonCore/Files.h. + if( volumeParms.vMVersion < 4 ) + { + return nil; + } + + // vMDeviceID might be zero as is reported with experimental ZFS (zfs-119) support in Leopard. + if( !volumeParms.vMDeviceID ) + { + return nil; + } + + return [NSString stringWithUTF8String:(const char *)volumeParms.vMDeviceID]; }