X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=macosx%2FHBDVDDetector.m;h=81a854597343eec37db18910cb0ac5abeed808b7;hb=240cf3308bf21be4d1918a71a5510d07e7d6d85b;hp=49e192ce7e85d87cda0f1d88d16f94efde5f863f;hpb=0019d232363aaf8dbdad11261d734198d3f9eafb;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/macosx/HBDVDDetector.m b/macosx/HBDVDDetector.m index 49e192ce..81a85459 100644 --- a/macosx/HBDVDDetector.m +++ b/macosx/HBDVDDetector.m @@ -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,29 +101,29 @@ } FSVolumeRefNum volRefNum = catalogInfo.volume; - // Now let's get the device name - GetVolParmsInfoBuffer volumeParms; - // PBHGetVolParmsSync is deprecated, but still needed for 10.4 compatibility - #if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4 - HParamBlockRec pb; - pb.ioParam.ioNamePtr = NULL; - pb.ioParam.ioVRefNum = volRefNum; - pb.ioParam.ioBuffer = (Ptr) &volumeParms; - pb.ioParam.ioReqCount = sizeof( volumeParms ); - err = PBHGetVolParmsSync( &pb ); - #else - // Let's use FSGetVolumeParms + // Now let's get the device name + GetVolParmsInfoBuffer volumeParms; err = FSGetVolumeParms ( volRefNum, &volumeParms, sizeof( volumeParms ) ); - #endif 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]; }